+\chapter{Preliminaries}
+
+\section{Dead reckoning}
+The process of \definition{dead reckoning} describes an inexpensive method for
+relative positioning by computing a vehicle's position from an initial
+starting position and the covered distance and course it has moved. In the case
+of mobile robots, the covered distance can be simply computed in real time from
+the revolution of its wheels, or by accelerometers the robot may be equipped
+with. However, since the vehicle's current position is based on its previous
+position, and the distance measurement may be imprecise, dead reckoning has the
+disadvantage that errors in position calculation can cumulate and the error
+of the calculated position grows with time.
+
+Another approach to determine a vehicle's position is absolute positioning, for
+example satellite-based, over navigation beacons or by map matching. Still,
+these techniques are rather expensive to deploy, cannot (yet) be used in real
+time, or are even impreciser than relative approaches\cite{umbmark}, so dead
+reckoning can still be useful for the time being.
+
+\section{iRobot Roomba 500}
+Originally, the \definition{Roomba 500} is an autonomous vacuum cleaning robot,
+manufactured by the US-based company \definition{iRobot}. It has the size of a
+disc of about 34~cm in diameter and 9~cm in height; and normally follows its
+own, non-customizable logic to detect dirt and clean rooms. However, it is also
+easily controllable over a serial port, which provides a two-way
+communication at 5~V TTL levels over a Mini-DIN connector, with a speed of
+either 19,200 or 115,200 Baud. Over this serial port, the Roomba speaks a
+specified protocol, called the iRobot Roomba Open Interface \cite{irobot-oi},
+which allows the user to interact with the robot's internal logic, reading its
+sensor values, and control its movements and cleaning behaviour.
+
+In our setup, the iRobot Roomba 500 is used as an instance of an autonomous,
+mobile robot to conduct the experiments described afterwards. For that, the
+Open Interface is used to control the Roomba's movements from a netbook which is
+running Wiselib code.
+
+\todo{picture of Roomba/netbook setup}
+
+\section{Wiselib}
+The \definition{Wiselib}\cite{wiselib} is a C++ algorithm library for sensor
+networks, containing for example algorithms for routing, localization and time
+synchronization, and is strongly focused on portability and cross-platform
+development. In particular, it allows the user to develop applications that run
+on different hardware platforms without the need to change the code, and it
+strongly uses C++ templates to achieve that feature. Amongst the supported
+platforms are diverse sensor node platforms, like iSense, Contiki and TinyOS,
+but there are as well implementations for the diverse x86-compatible Personal
+Computer platforms, and the Shawn sensor network simulator.
+
+Moreover, the Wiselib includes code to control the iRobot Roomba over a
+serial interface, and getting access to its internal sensor data, using the
+iRobot Roomba Open Interface mentioned earlier. \todo{cite Wisebed book
+chapter on Roomba code}
+