checkpoint
[bachelor-thesis/written-stuff.git] / Ausarbeitung / roomba.tex
index 819d034..f7dd0b7 100644 (file)
@@ -5,9 +5,28 @@ currently represents the third generation of iRobot's cleaning robots, and the
 first generation of robots controllable over an external interface.
 
 \subsection{Hardware design}
+\begin{SCfigure}
+  \centering
+  \includegraphics[width=.5\textwidth]{images/Roomba-Diagram.pdf}
+  \caption[Diagram of the Roomba 500 series]{Diagram of the Roomba 500 series,
+    view from below\label{fig:roomba-diagram} \\
+    1:~front~caster, 2:~battery, 3:~side~brush, 4:~main~wheels, 5:~main~brush,
+    6:~vacuum~bin, 7:~front~bumper, 8:~cliff~sensors}
+\end{SCfigure}
+
 The Roomba lives in a cylindrical case with diameter of about 34~cm and height
-of about 7~cm, so it can crawl easily under furniture for cleaning.
-\todo{diagram?}
+of about 8~cm, so it can crawl easily under furniture for cleaning.
+Figure~\ref{fig:roomba-diagram} shows a diagram of the Roomba seen from below.
+
+The top side features several buttons which vary between the different models,
+most notably the ``Clean'' and ``Spot'' buttons for manual control of the
+cleaning routine, and the ``Dock'' button to send the Roomba to its home base.
+The cover on the top side can be removed, and covers the connector for
+the \ac{ROI} which is discussed in Section~\ref{sec:roi}.
+
+On the side, a socket for a coaxial \acs{DC} power connector can be found, which
+is used for external charging.
+
 \paragraph{Wheels}
 The Roomba has two rubberized main wheels which are positioned slightly behind
 the centerline, so the Roomba leans forward due to gravity, and a small caster
@@ -81,11 +100,12 @@ comes to cleaning rooms, but cleaning time is not neccessarily the constraining
 factor, and the robot still saves the human some time.
 
 \paragraph{Roomba Open Interface}
+\label{sec:roi}
 However, robots of the Roomba 500 series are also easily controllable over a
-serial port, which provides a two-way communication at 5~V TTL levels over a
-Mini-DIN connector, with a speed of either 19,200 or 115,200 Baud, in mode 8N1
-(8 data bits, no parity, 1 stop bit). Over this serial port, the Roomba speaks a
-specified protocol, called the \ignoreoutput{\ac{ROI}}\definition{\acl{ROI}}
+serial port, which provides a two-way communication at 5~V~\acs{TTL} levels over
+a 7-pin mini-\acs{DIN} connector, with a speed of either 19,200 or 115,200 Baud,
+in mode \acused{8N1} \ac{8N1} (\acl{8N1}). Over this serial port, the Roomba
+speaks a specified protocol, called the \acused{ROI}\definition{\acl{ROI}}
 (\acs{ROI})~\cite{irobot-oi}, which allows the user to interact with the robot's
 internal logic, reading its sensor values, and control its movements and
 cleaning behaviour.
@@ -213,6 +233,23 @@ The Roomba then would return a packet with the following format every
 0xb6        // checksum: 0x5 + 0x1d + 0x2 + 0x19 + 0xd + 0x0 + 0xb6 = 0x100
 \end{verbatim}
 
+\paragraph{Latency}
+On the connection, there is a certain latency between the time the command is
+sent to the Roomba and the time the Roomba receives this command and carries out
+the motion. At 19,200 baud, mode \ac{8N1}, the transfer of a 5-byte \cmd{Drive}
+command needs $(5 \times 9) \div 19200 = 2.3$~ms. The time the Roomba
+logic needs to process the command is not mentioned in the \ac{ROI}
+Specification, and there was no way to measure it sufficiently. It is however
+short enough that a human would describe it as ``instant''.
+
+The same latency of course also exists in the opposite directions when the
+Roomba is sending sensor data to the user. However, the sensor data are sent by
+the Roomba every 15~ms (which is the internal speed at which the data is
+updated from the sensors) and according to the wheel's maximum velocity of
+500~mm/s (which means that a sensor data packet is received every $0.03$~mm when
+driving at this speed), this is acceptible for real-time evaluation of the data.
+
+
 In our setup, an iRobot Roomba~530 is used as an instance of an autonomous,
 mobile robot to conduct the experiments described afterwards. For that, the
 Roomba's movements are controlled over a netbook mounted on top of the Roomba
This page took 0.071959 seconds and 4 git commands to generate.