"hacked" version, now with graphics
[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 robot,
22 manufactured by the US-based company \definition{iRobot}. It has the size of a
23 disc of about 34~cm in diameter and 9~cm in height; and normally follows its
24 own, non-customizable logic to detect dirt and clean rooms. However, it is also
25 easily controllable over a serial port, which provides a two-way
26 communication at 5~V TTL levels over a Mini-DIN connector, with a speed of
27 either 19,200 or 115,200 Baud. Over this serial port, the Roomba speaks a
28 specified protocol, called the iRobot Roomba Open Interface \cite{irobot-oi},
29 which allows the user to interact with the robot's internal logic, reading its
30 sensor values, and control its movements and cleaning behaviour.
31
32 In our setup, the iRobot Roomba 500 is used as an instance of an autonomous,
33 mobile robot to conduct the experiments described afterwards. For that, the
34 Open Interface is used to control the Roomba's movements from a netbook which is
35 running Wiselib code.
36
37 \section{Wiselib}
38 The \definition{Wiselib}\cite{wiselib} is a C++ algorithm library for sensor
39 networks, containing for example algorithms for routing, localization and time
40 synchronization, and is strongly focused on portability and cross-platform
41 development. In particular, it allows the user to develop applications that run
42 on different hardware platforms without the need to change the code, and it
43 strongly uses C++ templates to achieve that feature. Amongst the supported
44 platforms are diverse sensor node platforms, like iSense, Contiki and TinyOS,
45 but there are as well implementations for the diverse x86-compatible Personal
46 Computer platforms, and the Shawn sensor network simulator.
47
48 Moreover, the Wiselib includes code to control the iRobot Roomba over a
49 serial interface, and getting access to its internal sensor data, using the
50 iRobot Roomba Open Interface mentioned earlier. \todo{cite Wisebed book
51 chapter on Roomba code}
52
This page took 0.042476 seconds and 5 git commands to generate.