500~mm/s, with negative values implying backwards movement. The radius is
interpreted in mm, ranging from -2000~mm to 2000~mm. Negative values make the
Roomba turn toward the right, whereas positive values make it turn toward the
-left. There are also four special values for the radius: \magicnumber{1} makes
-the Roomba turn on the spot in counter-clockwise direction, \magicnumber{-1}
+left. There are also four special values for the radius: \magicvalue{1} makes
+the Roomba turn on the spot in counter-clockwise direction, \magicvalue{-1}
makes the Roomba turn on the spot in clockwise direction, and
-\magicnumber{0x7fff} and \magicnumber{0x8000} make it drive straight.
+\magicvalue{0x7fff} and \magicvalue{0x8000} make it drive straight.
For example, to drive straight with a velocity of 1000~mm, one would send the
following bytes over the serial interface:
$\sum_{i=1}^n\left(p_1 + v(p_1)\right) + c + n \equiv 0 \mod 256$
\end{description}
Example: The following byte sequence requests data from the left cliff
-signal (packet~ID \magicnumber{0x1d}) and virtual wall sensor (packet~ID
-\magicnumber{0x0d}):
+signal (packet~ID \magicvalue{0x1d}) and virtual wall sensor (packet~ID
+\magicvalue{0x0d}):~\cite{irobot-oi}
\begin{verbatim}
0x94, // Stream command
0x02, // parameter: 2 packets following
0x1d, 0x0d // parameter: request packets 0x1d and 0x0d
\end{verbatim}
The Roomba then would return a packet with the following format every
-15~ms:\label{sec:roi-stream-packet}
+15~ms:\label{sec:roi-stream-packet}~\cite{irobot-oi}
\begin{verbatim}
0x13, // Header byte
0x05, // 5 bytes following, except checksum