1 \chapter{Preliminaries
}
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.
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.
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.
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
37 \todo{picture of Roomba/netbook setup
}
40 The
\definition{Wiselib
}\cite{wiselib
} is a C++ algorithm library for sensor
41 networks, containing for example algorithms for routing, localization and time
42 synchronization, and is strongly focused on portability and cross-platform
43 development. In particular, it allows the user to develop applications that run
44 on different hardware platforms without the need to change the code, and it
45 strongly uses C++ templates to achieve that feature. Amongst the supported
46 platforms are diverse sensor node platforms, like iSense, Contiki and TinyOS,
47 but there are as well implementations for the diverse x86-compatible Personal
48 Computer platforms, and the Shawn sensor network simulator.
50 Moreover, the Wiselib includes code to control the iRobot Roomba over a
51 serial interface, and getting access to its internal sensor data, using the
52 iRobot Roomba Open Interface mentioned earlier.
\todo{cite Wisebed book
53 chapter on Roomba code
}