checkpoint
[bachelor-thesis/written-stuff.git] / Ausarbeitung / experiment1.tex
index 05f7345..fd46738 100644 (file)
@@ -1,6 +1,14 @@
 \chapter{Experiment 1: Original Movement Behaviour}
-\section{Setup}
 
+In the first experiment, the Roomba's original movement behaviour is
+measured to get an overview of the errors that occur while moving, and to
+establish a pool of data for correction approaches to work on later.
+There was no error correction involved (apart from any possible error
+correction the Roomba itself implements in its underlying logic, and which is
+not known to anyone except iRobot). To achieve this, the Wiselib Roomba Control
+is used to access the Roomba over the \ac{ROI}\index{\acs{ROI}}.
+
+\section{Setup}
 \begin{figure}[htbp]
  \centering
  \includegraphics[width=0.45\textwidth]{./images/IMAGE_00079.jpg}
  \caption{Measuring turn angles with laser pointer\label{fig:laserpointer}}
 \end{figure}
 
-The test equipment consisted of a small x86 \index{netbook} which was
-mounted on
-an iRobot Roomba~500\index{Roomba} robot. The netbook controlled the Roomba
-over a
+The test equipment consisted of a small x86 \index{netbook} netbook which was
+mounted on an iRobot Roomba~530\index{Roomba} robot, as seen in
+Figure~\ref{fig:roombasetup}. The netbook controlled the Roomba over a
 \acs{USB}-to-serial converter plugged into the Open Interface \index{\acs{ROI}}
-port on the
-Roomba, and hosted as the environment for executing the Wiselib \index{Wiselib}
-code (see Figure~\ref{fig:roombasetup}).
-
-In the first experiment, the original movement behaviour of the Roomba was
-measured to establish a pool of data for correction approaches to work on.
-There was no error correction involved, and the Roomba started right off with
-the full velocity the movement was executed with; so there was no control to
-adhere a constant acceleration when starting or stopping the movement. Due to
-limitations in the iRobot Roomba Open Interface\index{iRobot Roomba Open
-Interface} it is only
-possible to explicitly start and stop the Roomba's movements at different times,
-so the Wiselib's implementation of the Roomba control code first starts the
-Roomba's movement, calculates the time needed until the movement should be
-finished, and then stops the Roomba.
-
-The tests were done in two atomic drive modes: letting the Roomba drive a
+port on the Roomba, and hosted as the environment for executing the Wiselib
+\index{Wiselib} code.
+
+In this experiment, the Roomba started right off with the full velocity the
+movement was executed with; so there was no control to adhere a constant
+acceleration when starting or stopping the movement. As mentioned before, due to
+limitations in the \acs{ROI}\index{\acs{ROI}} it is only possible to explicitly
+start and stop the Roomba's movements at different times, so the Wiselib's
+implementation of the Roomba control code first starts the Roomba's movement,
+keeps track of the turned angle and dcovered distance, and then stops
+the Roomba if these values exceed the target values.
+
+The tests were done in two atomic drive modes: letting the Roomba walk a
 specific straight distance with a specific velocity in its viewing direction and
 letting it turn on the spot with a specific velocity about a specific angle.
 Each of the two modes was carried out on two different floor types\index{floor
 type}, a laminated floor and a carpet floor, to see if the movement behaviour
-significantly depended on the floor type.
+significantly depended on the floor type. The side brush was removed, since the
+Roomba tends to turn slightly towards the left when driving straight on a
+carpet floor. Without the side brush, this was not the case.
 
 The actual travelled distance of the straight drive tests were determined using
 a measuring tape with an accuracy of 1~mm. Only the distance in the Roomba's
-original viewing direction was considered, as the offset perpendicular to the
-viewing direction and a possible shift in orientation were too small to be
-measured precisely.
-
-The actual turn angles of the turn tests were determined using a DIN~A0 sheet
-of paper with a printed polar coordinate system in which a circular hole was cut
-in the center to let the Roomba's wheels touch the floor. The sheet was fixed
-on the floor, and the Roomba was aligned in the center of the paper. A laser
-pointer\index{laser pointer} attached to the Roomba pointed to the current
-orientation on the paper, as shown in Fig.~\ref{fig:laserpointer}. The accuracy
-for these tests was 1~degree.
+original viewing direction was considered, as it turned out that the offset
+perpendicular to the viewing direction and a possible shift in orientation were
+too small to be measured precisely.
+
+The actual turn angles of the turn tests were determined using a
+\acs{ISO}/\acs{DIN}~A0 sheet of paper with a printed polar coordinate system in
+which a circular hole was cut in the center to let the Roomba's wheels touch the
+floor. The sheet was fixed on the floor, and the Roomba was aligned in the
+center of the paper. A laser pointer\index{laser pointer} attached to the Roomba
+pointed to the current orientation on the paper, as shown in
+Fig.~\ref{fig:laserpointer}. The accuracy for these tests was 1~degree.
 
 After the initial setup, the application \prog{roomba\_tests} (see
 section~\ref{sec:impl:measuring}) was started on the netbook for half-automatic
This page took 0.044607 seconds and 4 git commands to generate.