X-Git-Url: https://git.rohieb.name/bachelor-thesis/written-stuff.git/blobdiff_plain/faa5617bc3710376a8f96709750183f40c826057..e1b31bbb160bcdaeef79f2c60f2b69d173876ff1:/Ausarbeitung/preliminaries.tex diff --git a/Ausarbeitung/preliminaries.tex b/Ausarbeitung/preliminaries.tex index 64b8e4f..1796dcb 100644 --- a/Ausarbeitung/preliminaries.tex +++ b/Ausarbeitung/preliminaries.tex @@ -1,54 +1,8 @@ \chapter{Preliminaries} +In the following, basic concepts used in this thesis are described. In +particular, there is a description of the iRobot Roomba, its hardware +and software, and an overview of the Wiselib algorithm library that is used to +control the Roomba. -\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} - +\input{roomba} +\input{wiselib}