bf488d6628e9f34961689c7411be752358f0139b
[bachelor-thesis/written-stuff.git] / Ausarbeitung / experiment1.tex
1 \chapter{Experiment 1: Original Movement Behaviour}
2 \todo{}
3 \section{Setup}
4
5 \begin{figure}[htbp]
6 \centering
7 \includegraphics[width=0.45\textwidth]{./images/IMAGE_00079.jpg}
8 \caption{Roomba with netbook\label{fig:roombasetup}}
9 \end{figure}
10 \begin{figure}[htbp]
11 \centering
12 \includegraphics[width=0.6\textwidth]{./images/IMAGE_00148.jpg}
13 \caption{Measuring turn angles with laser pointer\label{fig:laserpointer}}
14 \end{figure}
15
16 The test equipment consisted of a small Intel Atom netbook which was mounted on
17 an iRobot Roomba~500 robot. The netbook controlled the Roomba over a
18 \acs{USB}-to-serial converter plugged into the Open Interface port on the
19 Roomba, and hosted as the environment for executing the Wiselib code (see
20 fig.~\ref{fig:roombasetup}).
21
22 In the first experiment, the original movement behaviour of the Roomba was
23 measured to establish a pool of data for correction approaches to work on.
24 There was no error correction involved, and the Roomba started right off with
25 the full velocity the movement was executed with; so there was no control to
26 adhere a constant acceleration when starting or stopping the movement.
27
28 The tests were done in two atomic drive modes: letting the Roomba drive a
29 specific straight distance with a specific velocity in its viewing direction and
30 letting it turn on the spot with a specific velocity about a specific angle.
31 Each of the two modes was carried out on two different floor types, a laminated
32 floor and a carpet floor, to see if the movement behaviour significantly
33 depended on the floor type.
34
35 The actual travelled distance of the straight drive tests were determined using
36 a measuring tape with an accuracy of 1~mm. Only the distance in the Roomba's
37 original viewing direction was considered, as the offset perpendicular to the
38 viewing direction and a possible shift in orientation were too small to be
39 measured precisely.
40
41 The actual turn angles of the turn tests were determined using a DIN~A0 sheet
42 of paper with a printed polar coordinate system in which a circular hole was cut
43 in the center to let the Roomba's wheels touch the floor. The sheet was fixed
44 on the floor, and the Roomba was aligned in the center of the paper. A laser
45 pointer attached to the Roomba pointed to the current orientation on the paper,
46 as shown in fig.~\ref{fig:laserpointer}. The accuracy for these tests was
47 1~degree.
48
49 After the initial setup, the application \definition{\cmd{roomba\_tests}} (see
50 section~\ref{sec:impl:measuring}) was started on the netbook for half-automatic
51 testing. It used a predefined array of nominal distances, angles and velocities
52 and for each pair of distance (for straight drive tests) or angle (for turn
53 tests) and velocity it used the Wiselib implementation to move the Roomba. Then
54 it asked the user to input the measured distance or angle the Roomba had moved
55 and repeated the process until each combination of distance/angle and velocity
56 was used. The nominal and input values were written to a log file, as well as
57 the floor type, the Roomba ID, the \ac{SVN} revision the program was built
58 from, the battery status, and other internal implementation-specific values.
59
60 For the straight drive tests, the arrays with predefined values were:\\
61 \begin{tabular}[h!]{ll}
62 Distances: & 20, 50, 100, 200, 500, 1000, 2000, and 4000~mm \\
63 Velocities: & 20, 50, 70, 100, 150, 200, 300, and 400~mm/s \\
64 \end{tabular}
65
66 For the turn tests, the arrays with predefined values were:\\
67 \begin{tabular}[h!]{ll}
68 Turn angles: & 5, 15, 30, 45, 90, 120, 180, 360, 530, and 720~degree \\
69 Velocities: & 20, 50, 70, 100, 150, 200, 300, and 400~mm/s \\
70 \end{tabular}
71 According to the implementation of the Wiselib Roomba control, the velocities
72 were given in mm/sec and referred to the distance the wheels travelled when
73 the Roomba turned on the spot, which was a circle of 230~mm in diameter.
74
75
76 \section{Results}
77
78 The following graphs show the difference from the measured value to the input
79 value for driving or turning with different velocities. Positive values mean
80 that the Roomba had turned too much or travelled more than the target value,
81 negative values mean that the Roomba had turned or travelled less.
82
83 \begin{figure}[pt!]
84 \centering
85 \includegraphics[width=\textwidth]{images/iz250flur_drive_data.pdf}
86 \caption{Original behaviour on laminated floor, straight drive tests
87 \label{fig:orig:lam:drive}}
88 \end{figure}
89 \begin{figure}[pb!]
90 \centering
91 \includegraphics[width=\textwidth]{images/iz250flur_turn_data.pdf}
92 \caption{Original behaviour on laminated floor, turn tests
93 \label{fig:orig:lam:turn}}
94 \end{figure}
95 \begin{figure}[pt!]
96 \centering
97 \includegraphics[width=\textwidth]{images/seminarraum_drive_data.pdf}
98 \caption{Original behaviour on carpet floor, straight drive tests
99 \label{fig:orig:carpet:drive}}
100 \end{figure}
101 \begin{figure}[pb!]
102 \centering
103 \includegraphics[width=\textwidth]{images/seminarraum_turn_data.pdf}
104 \caption{Original behaviour on carpet floor, straight drive tests
105 \label{fig:orig:carpet:turn}}
106 \end{figure}
107
108 Figure~\ref{fig:orig:lam:drive} shows that the error becomes greater
109 with increasing input distance when driving straight on the
110 laminated floor, however, in fig.~\ref{fig:orig:carpet:drive} we see the
111 opposite effect on the carpet floor, the error decreases with greater input
112 distance. This could happen due to imprecise measurement of distances in either
113 the Roomba's sensors or the Wiselib implementation that controls the Roomba, or
114 both. Also slippage of the wheels on the laminated floor could be possible,
115 explaining the descending
116 On the other hand, rising the velocity always seems to cause the
117 error to increase.
118
119 \todo{statistical values, stddev?}
This page took 0.044931 seconds and 3 git commands to generate.