X-Git-Url: https://git.rohieb.name/bachelor-thesis/written-stuff.git/blobdiff_plain/34498d8190651a7dbf969da9b03d01b8cf085ed4..c549bc150a5190197595f96e980f9b4da4a216b1:/Ausarbeitung/wiselib.tex diff --git a/Ausarbeitung/wiselib.tex b/Ausarbeitung/wiselib.tex index 8745d9f..4b84324 100644 --- a/Ausarbeitung/wiselib.tex +++ b/Ausarbeitung/wiselib.tex @@ -1,5 +1,5 @@ \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 @@ -40,7 +40,7 @@ algorithm uses. \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}, @@ -60,8 +60,9 @@ restricted platforms; for instance a wireless sensor node without dynamic memory 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 @@ -77,8 +78,8 @@ de- and encryption over the radio. \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 @@ -127,10 +128,11 @@ guessing of the object's traveled distance and current orientation. \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 @@ -148,16 +150,17 @@ target values given by the user through the functions above, and if the actual 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