\section{Wiselib}
-The \definition{Wiselib}\cite{wiselib} is a C++\index{C++} algorithm library for
+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
\end{figure}
Besides algorithms, and basic concepts and models, the Wiselib also consists of
two other main parts: the internal interface and the external interface (see
-Figure \ref{fig:wiselib-arch}).
+Figure~\ref{fig:wiselib-arch}).
\paragraph{External Interface}
The \definition{External Interface} provides access to the underlying \ac{OS},
management can use a static implementation of lists and other containers,
whereas a full-grown desktop can use the dynamic implementation provided by the
C++ \ac{STL}. For this purpose, the Wiselib also contains the
-\acused{pSTL}\definition{\acl{pSTL}} (\acs{pSTL}) which implements a
-subset of the \ac{STL} without the use of dynamic memory allocation.
+\acused{pSTL}\definition{pico Standard Template Library} (\acs{pSTL}) which
+implements a subset of the \ac{STL} without the use of dynamic memory
+allocation.
\paragraph{Stackability}
Another central design principle used in the Wiselib is
\subsection{Roomba Control}
Even more interesting is the fact that the Wiselib includes code to control an
iRobot Roomba\index{Roomba} over a serial interface, and getting access to its
-internal sensor data, using the \acl{ROI}\index{\acl{ROI}} mentioned earlier.
-For this purpose, it defines two concepts for Robot Motion:
+internal sensor data, using the \ac{ROI}\index{Roomba Open Interface} mentioned
+earlier. For this purpose, it defines two concepts for Robot Motion:
\paragraph{TurnWalkMotion concept}\index{TurnWalkMotion (concept)}
This concept represents a simple robot that can turn on the spot and walk
\paragraph{ControlledMotion class}\index{ControlledMotion (class)}
On top of the TurnWalkMotion and Odometer concepts builds the
-\definition{ControlledMotion} model. It takes implementations of each of these
-concepts as template parameters and extends the simple turn-and-walk paradigm by
-a temporal dimension, which let the robot stop after a specific time interval.
-In particular, it provides the following methods:
+\textit{ControlledMotion}\index{ControlledMotion (class)} model. It takes
+implementations of each of these concepts as template parameters and extends the
+simple turn-and-walk paradigm by a temporal dimension, which let the robot stop
+after a specific time interval. In particular, it provides the following
+methods:
\begin{description}
\item[\code{int move\_distance(distance\_t, velocity\_t)}] move the robot
straight by a given distance with a given velocity
values exceed the target values, the robot is stopped.
\paragraph{Underlying Roomba Implementation}
-The actual communication with the Roomba is done in the \definition{RoombaModel}
-class. It implements the aforementioned TurnWalkMotion \index{TurnWalkMotion
-(concept)} and Odometer \index{Odometer (concept)} concepts and therewith allows
-the interaction with a ControlledMotion instance. In particular, it manages the
-serial communication with the Roomba and translates the function calls
-\code{turn()}, \code{move()} and \code{stop()} of the TurnWalkMotion concept to
-the according parameters for the \ac{ROI} \cmd{Drive} command, reads a subset of
-the Roomba's sensors and presents the sensor data to the user, and, while
-implementing the Odometer concept, calculates the covered distance and angle
-from the Roomba's right and left wheel rotations.
+The actual communication with the Roomba is done in the
+\textit{RoombaModel}\index{RoombaModel (class)} class. It implements the
+aforementioned TurnWalkMotion\index{TurnWalkMotion (concept)} and
+Odometer\index{Odometer (concept)} concepts and therewith allows the interaction
+with a ControlledMotion\index{ControlledMotion (class)} instance. In particular,
+it manages the serial communication with the Roomba and translates the function
+calls \code{turn()}, \code{move()} and \code{stop()} of the TurnWalkMotion
+concept to the according parameters for the \ac{ROI} \cmd{Drive} command, reads
+a subset of the Roomba's sensors and presents the sensor data to the user, and,
+while implementing the Odometer concept, calculates the covered distance and
+angle from the Roomba's right and left wheel rotations.
The sensor data is read from the Roomba using the \cmd{Stream} command on the
\ac{ROI}, which results in a sensor data packet (see Section