X-Git-Url: http://git.rohieb.name/bachelor-thesis/written-stuff.git/blobdiff_plain/62959cd738864c5fc8222f36b5f4927fff6c4318..e29146877ebf1c77b2b31ad1fa804547286b2a21:/Ausarbeitung/experiment1.tex diff --git a/Ausarbeitung/experiment1.tex b/Ausarbeitung/experiment1.tex index 05f7345..fd46738 100644 --- a/Ausarbeitung/experiment1.tex +++ b/Ausarbeitung/experiment1.tex @@ -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} @@ -12,47 +20,44 @@ \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