d47a81b638935f5ea4ccda02d82207f337b1fd98
[bachelor-thesis/written-stuff.git] / Ausarbeitung / preliminaries.tex
1 \chapter{Preliminaries}
2
3 \section{Dead reckoning}
4 The process of \definition{dead reckoning} describes an inexpensive method for
5 relative positioning by computing a vehicle's position from an initial
6 starting position and the covered distance and course it has moved. In the case
7 of mobile robots, the covered distance can be simply computed in real time from
8 the revolution of its wheels, or by accelerometers the robot may be equipped
9 with. However, since the vehicle's current position is based on its previous
10 position, and the distance measurement may be imprecise, dead reckoning has the
11 disadvantage that errors in position calculation can cumulate and the error
12 of the calculated position grows with time.
13
14 Another approach to determine a vehicle's position is absolute positioning, for
15 example satellite-based, over navigation beacons or by map matching. Still,
16 these techniques are rather expensive to deploy, cannot (yet) be used in real
17 time, or are even impreciser than relative approaches\cite{umbmark}, so dead
18 reckoning can still be useful for the time being.
19
20 \section{iRobot Roomba 500}
21 Originally, the \definition{Roomba~500} is an autonomous vacuum cleaning
22 robot,
23 manufactured by the US-based company \definition{iRobot}. It has the size of a
24 disc of about 34~cm in diameter and 9~cm in height; and normally follows its
25 own, non-customizable logic to detect dirt and clean rooms. However, it is also
26 easily controllable over a serial port, which provides a two-way
27 communication at 5~V TTL levels over a Mini-DIN connector, with a speed of
28 either 19,200 or 115,200 Baud. Over this serial port, the Roomba speaks a
29 specified protocol, called the \definition{iRobot Roomba Open
30 Interface}~\cite{irobot-oi}, which allows the user to interact with the robot's
31 internal logic, reading its sensor values, and control its movements and
32 cleaning behaviour.
33
34 In our setup, the iRobot \index{Roomba~500} is used as an instance of an
35 autonomous,
36 mobile robot to conduct the experiments described afterwards. For that, the
37 Open Interface is used to control the Roomba's movements from a netbook which is
38 running Wiselib code.
39
40 \section{Wiselib}
41 The \definition{Wiselib}\cite{wiselib} is a C++ algorithm library for sensor
42 networks, containing for example algorithms for routing, localization and time
43 synchronization, and is strongly focused on portability and cross-platform
44 development. In particular, it allows the user to develop applications that run
45 on different hardware platforms without the need to change the code, and it
46 strongly uses C++ templates to achieve that feature. Amongst the supported
47 platforms are diverse sensor node platforms, like iSense, Contiki and TinyOS,
48 but there are as well implementations for the diverse x86-compatible Personal
49 Computer platforms, and the Shawn sensor network simulator.
50
51 Moreover, the Wiselib includes code to control the iRobot \index{Roomba|see
52 {Roomba~500}} over a
53 serial interface, and getting access to its internal sensor data, using the
54 iRobot Roomba Open Interface mentioned earlier.
55
56 \todo{cite Wisebed book chapter on Roomba code}
This page took 0.036997 seconds and 3 git commands to generate.