X-Git-Url: http://git.rohieb.name/bachelor-thesis/written-stuff.git/blobdiff_plain/df75c351fb7b1deeb49fa444b1bef90e13c76290..656ed2ada1064d9874a45e1f55bba8cea4d01d6f:/Ausarbeitung/experiment1.tex diff --git a/Ausarbeitung/experiment1.tex b/Ausarbeitung/experiment1.tex index bea1dc6..ca605b9 100644 --- a/Ausarbeitung/experiment1.tex +++ b/Ausarbeitung/experiment1.tex @@ -1,57 +1,140 @@ \chapter{Experiment 1: Original Movement Behaviour} -\todo \section{Setup} -\begin{figure}[htp] +\begin{figure}[htbp] \centering \includegraphics[width=0.45\textwidth]{./images/IMAGE_00079.jpg} - \caption{Roomba with netbook} + \caption{Roomba with netbook\label{fig:roombasetup}} \end{figure} -\begin{figure}[htp] +\begin{figure}[htbp] \centering \includegraphics[width=0.6\textwidth]{./images/IMAGE_00148.jpg} - \caption{Measuring turn angles with laser pointer} + \caption{Measuring turn angles with laser pointer\label{fig:laserpointer}} \end{figure} -Description of experiment setup: netbook on Roomba, application -"`roomba\_tests"' started which took care of the input values, user was asked -to measure \& input the data. there were Turn tests and straight drive tests, -different floor types: laminate and carpet floor. +The test equipment consisted of a small Intel Atom \index{netbook} which was +mounted on +an iRobot Roomba~500\index{Roomba~500} robot. The netbook controlled the Roomba +over a +\acs{USB}-to-serial converter plugged into the Open Interface \index{Open +Interface|see {iRobot Roomba Open Interface}} port on the +Roomba, and hosted as the environment for executing the Wiselib \index{Wiselib} +code (see fig.~\ref{fig:roombasetup}). -drive tests: measuring was done with measuring tape. error perpendicular to -roomba's viewing direction was too small to be measured. +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{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. -velocities = 20, 50, 70, 100, 150, 200, 300, 400 mm/s \\ -distances = 20, 50, 100, 200, 500, 1000, 2000, 4000 mm +The tests were done in two atomic drive modes: letting the Roomba drive 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. -turn tests: measuring with polar coordinate system of about 1~m diameter, roomba -in the center, laser pointer points to measured value. +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. + +After the initial setup, the application \cmd{roomba\_tests} (see +section~\ref{sec:impl:measuring}) was started on the netbook for half-automatic +testing. It used a predefined array of nominal distances, angles and velocities +and for each pair of distance (for straight drive tests) or angle (for turn +tests) and velocity it used the Wiselib implementation to move the Roomba. Then +it asked the user to input the measured distance or angle the Roomba had moved +and repeated the process until each combination of distance/angle and velocity +was used. The nominal and input values were written to a log file, as well as +the floor type, the Roomba ID, the \ac{SVN} revision the program was built +from, the battery status\index{battery status}, and other internal +implementation-specific values. + +For the straight drive tests, the arrays with predefined values were:\\ +\begin{tabular}[h!]{ll} + Distances: & 20, 50, 100, 200, 500, 1000, 2000, and 4000~mm \\ + Velocities: & 20, 50, 70, 100, 150, 200, 300, and 400~mm/s \\ +\end{tabular} + +For the turn tests, the arrays with predefined values were:\\ +\begin{tabular}[h!]{ll} + Turn angles: & 5, 15, 30, 45, 90, 120, 180, 360, 530, and 720~degree \\ + Velocities: & 20, 50, 70, 100, 150, 200, 300, and 400~mm/s \\ +\end{tabular} +According to the implementation of the Wiselib Roomba control, +the velocities were given in mm/sec and referred to the distance the wheels +travelled when the Roomba turned on the spot, which was a circle of 230~mm in +diameter. -velocities = 20, 50, 70, 100, 150, 200, 300, 400 mm/s\\ -turn angles = 5, 15, 30, 45, 90, 120, 180, 360, 530, 720 degree \section{Results} -\begin{figure} +\label{exp1:results} +The following graphs show the difference from the measured value to the input +value for driving or turning with different velocities. Positive values mean +that the Roomba had turned too much or travelled more than the target value, +negative values mean that the Roomba had turned or travelled too less. The +plots show multiple test runs; given are the minimum, the maximum and the +arithmetic mean\index{arithmetic mean} of all results for a data point. + +\todo{clearpage, cleardoublepage?} +%\clearpage +\begin{figure}[p!] \centering \includegraphics[width=\textwidth]{images/iz250flur_drive_data.pdf} - \caption{foo} + \caption{Original behaviour on laminated floor, straight drive tests + \label{fig:orig:lam:drive}} \end{figure} -\begin{figure} +\begin{figure}[p!] \centering \includegraphics[width=\textwidth]{images/iz250flur_turn_data.pdf} - \caption{foo} + \caption{Original behaviour on laminated floor, turn tests + \label{fig:orig:lam:turn}} \end{figure} -\begin{figure} +\begin{figure}[p!] \centering \includegraphics[width=\textwidth]{images/seminarraum_drive_data.pdf} - \caption{foo} + \caption{Original behaviour on carpet floor, straight drive tests + \label{fig:orig:carpet:drive}} \end{figure} -\begin{figure} +\begin{figure}[p!] \centering \includegraphics[width=\textwidth]{images/seminarraum_turn_data.pdf} - \caption{foo} + \caption{Original behaviour on carpet floor, straight drive tests + \label{fig:orig:carpet:turn}} \end{figure} -Absolute error becomes greater with increasing velocity and input value, but -error is smaller on carpet floor. +Figure~\ref{fig:orig:lam:drive} shows that the error becomes greater +with increasing input distance when driving straight on the +laminated floor, however, in fig.~\ref{fig:orig:carpet:drive} we see the +opposite effect on the carpet floor, the error decreases with greater input +distance. This could happen due to imprecise measurement of distances in either +the Roomba's sensors or the Wiselib implementation that controls the Roomba, or +both, adding up over the time the movement continues. Also slippage of the +wheels on the laminated floor could be possible, as well as slowdown through +the carpet floor, explaining why the error increases on the laminated floor, but +decreases into negative values on the carpet floor when the distance grows. + +On the other hand, rising the velocity always seems to cause the +error to increase. + +The same effects also apply for turn tests. Additionally, there could be errors +resulting from false assumptions about the Roomba's wheelbase\index{wheelbase} +diameter, resulting in false calculations of the circle the Roomba's wheels +describe while turning, and therefore leading to false results. + \todo{statistical values, stddev?}