From 0a16958f32cf52f244d57f1627ebde68f1134757 Mon Sep 17 00:00:00 2001 From: Roland Hieber Date: Wed, 6 Jul 2011 00:26:19 +0200 Subject: [PATCH] zwischenstand --- Ausarbeitung/conclusion.tex | 2 +- Ausarbeitung/experiment1.tex | 116 ++++++++++++++++++++++++-------- Ausarbeitung/experiment2.tex | 9 ++- Ausarbeitung/experiment3.tex | 6 +- Ausarbeitung/implementation.tex | 6 +- Ausarbeitung/introduction.tex | 2 +- Ausarbeitung/main.kilepr | 48 +++++++------ Ausarbeitung/main.tex | 19 ++++-- 8 files changed, 148 insertions(+), 60 deletions(-) diff --git a/Ausarbeitung/conclusion.tex b/Ausarbeitung/conclusion.tex index 550809b..ef18d2e 100644 --- a/Ausarbeitung/conclusion.tex +++ b/Ausarbeitung/conclusion.tex @@ -1,2 +1,2 @@ \chapter{Conclusions} -\todo +\todo{. } diff --git a/Ausarbeitung/experiment1.tex b/Ausarbeitung/experiment1.tex index bea1dc6..bf488d6 100644 --- a/Ausarbeitung/experiment1.tex +++ b/Ausarbeitung/experiment1.tex @@ -1,57 +1,119 @@ \chapter{Experiment 1: Original Movement Behaviour} -\todo +\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 netbook which was mounted on +an iRobot Roomba~500 robot. The netbook controlled the Roomba over a +\acs{USB}-to-serial converter plugged into the Open Interface port on the +Roomba, and hosted as the environment for executing the 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. -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, 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 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 \definition{\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, 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} + +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 less. + +\begin{figure}[pt!] \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}[pb!] \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}[pt!] \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}[pb!] \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. Also slippage of the wheels on the laminated floor could be possible, +explaining the descending +On the other hand, rising the velocity always seems to cause the +error to increase. + \todo{statistical values, stddev?} diff --git a/Ausarbeitung/experiment2.tex b/Ausarbeitung/experiment2.tex index c575e4d..4dc3386 100644 --- a/Ausarbeitung/experiment2.tex +++ b/Ausarbeitung/experiment2.tex @@ -1,13 +1,17 @@ \chapter{Experiment 2: Movement Behaviour with Mean Correction} -\todo +\todo{} \section{Setup} Fit function from data in experiment 1; algorithm determined target value for distance from fit function and input distance and input velocity. +approach: correct imprecise measurement + Setup was the same as in experiment 1. Application on netbook was "`mean\_correction\_test"', same procedure as in first experiment. +expectations \& were they fulfilled? + \section{Results} \begin{figure} \centering @@ -31,5 +35,6 @@ Setup was the same as in experiment 1. Application on netbook was \end{figure} results better than in experiment 1, very accurate for laminate floor, carpet -floor more spread but still kind of in the middle and less deviation. +floor more spread but still kind of in the middle and less deviation from ideal +value. \todo{statistical values, stddev?} diff --git a/Ausarbeitung/experiment3.tex b/Ausarbeitung/experiment3.tex index aceee64..b357daf 100644 --- a/Ausarbeitung/experiment3.tex +++ b/Ausarbeitung/experiment3.tex @@ -1,14 +1,18 @@ \chapter{Experiment 3: Movement Behaviour with Constant Start/Stop Acceleration} -\todo +\todo{} \section{Setup} algorithm: slowly accelerate at start over a time of 1 second, deaccelerate at stop. no mean correction. +approach: correct slippage on the floor + setup same as in experiment 1 and 2, application on netbook was "`soft\_start\_test"'. +expectations \& were they fulfilled? + \section{Results} \begin{figure} \centering diff --git a/Ausarbeitung/implementation.tex b/Ausarbeitung/implementation.tex index 0d2c768..764d592 100644 --- a/Ausarbeitung/implementation.tex +++ b/Ausarbeitung/implementation.tex @@ -1,6 +1,8 @@ \chapter{Description of Implementation} \section{Measuring} -\todo +\label{sec:impl:measuring} + +\todo{} C++ code in wiselib/trunk/pc\_apps/roomba\_tests @@ -35,7 +37,7 @@ concept like wiselib::ControlledMotion and takes care of increasing/decreasing velocity via timer. \section{Evaluation} -\todo +\todo{} bash/perl scripts in wiselib/trunk/pc\_apps/roomba\_tests/logs, using gnuplot diff --git a/Ausarbeitung/introduction.tex b/Ausarbeitung/introduction.tex index 0b7b036..578af57 100644 --- a/Ausarbeitung/introduction.tex +++ b/Ausarbeitung/introduction.tex @@ -8,4 +8,4 @@ Yamauchi \cite{yamauchi}: Dead-reckoning with Evidence Grids Chong, Kleeman \cite{chongkleeman}: High-precision odometry -\todo \ No newline at end of file +\todo{} \ No newline at end of file diff --git a/Ausarbeitung/main.kilepr b/Ausarbeitung/main.kilepr index 0d3af10..f5c3ee3 100644 --- a/Ausarbeitung/main.kilepr +++ b/Ausarbeitung/main.kilepr @@ -4,7 +4,7 @@ img_extIsRegExp=false img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif kileprversion=2 kileversion=2.0.85 -lastDocument=main.tex +lastDocument=biblio.bib masterDocument= name=Project pkg_extIsRegExp=false @@ -94,12 +94,12 @@ order=-1 [item:experiment1.tex] archive=true -column=28 +column=0 encoding=UTF-8 highlight=LaTeX -line=0 +line=14 mode=LaTeX -open=true +open=false order=3 [item:experiment2.tex] @@ -109,17 +109,17 @@ encoding=UTF-8 highlight=LaTeX line=35 mode=LaTeX -open=true +open=false order=4 [item:experiment3.tex] archive=true -column=0 +column=66 encoding=UTF-8 highlight=LaTeX -line=35 +line=0 mode=LaTeX -open=true +open=false order=5 [item:images/IMAGE_00079.jpg] @@ -269,15 +269,15 @@ encoding=UTF-8 highlight=LaTeX line=31 mode=LaTeX -open=true +open=false order=6 [item:introduction.tex] archive=true -column=61 +column=0 encoding=UTF-8 highlight=LaTeX -line=1 +line=9 mode=LaTeX open=true order=1 @@ -287,35 +287,45 @@ archive=true column=0 encoding=UTF-8 highlight=LaTeX -line=49 +line=10 mode=LaTeX open=true order=0 +[item:preliminaries.tex] +archive=true +column=0 +encoding= +highlight= +line=0 +mode= +open=false +order=-1 + [view-settings,view=0,item:biblio.bib] CursorColumn=0 CursorLine=39 [view-settings,view=0,item:experiment1.tex] -CursorColumn=28 -CursorLine=0 +CursorColumn=0 +CursorLine=14 [view-settings,view=0,item:experiment2.tex] CursorColumn=0 CursorLine=35 [view-settings,view=0,item:experiment3.tex] -CursorColumn=0 -CursorLine=35 +CursorColumn=66 +CursorLine=0 [view-settings,view=0,item:implementation.tex] CursorColumn=0 CursorLine=31 [view-settings,view=0,item:introduction.tex] -CursorColumn=61 -CursorLine=1 +CursorColumn=0 +CursorLine=9 [view-settings,view=0,item:main.tex] CursorColumn=0 -CursorLine=49 +CursorLine=10 diff --git a/Ausarbeitung/main.tex b/Ausarbeitung/main.tex index 35f51c1..bde1edb 100644 --- a/Ausarbeitung/main.tex +++ b/Ausarbeitung/main.tex @@ -6,18 +6,16 @@ % FIXME hyperref setup -\newcommand{\todo}[1][\ldots]{\textcolor{red}{\index{Todo}\LARGE TODO:~#1}} +\newcommand{\todo}[1]{\textcolor{red}{\index{Todo}\LARGE TODO:~#1}} \newcommand{\definition}[1]{#1} % FIXME: add to glossary and/or index - -% \begin{acronym} -% \acronym{GPS}{Global Positioning System} -% \end{acronym} +\newcommand{\cmd}[1]{\texttt{#1}} % FIXME: add to glossary and/or index \author{Roland Hieber} \title{Error modeling of an autonomous, mobile robot} % \date{July 9, 2011} \begin{document} + \begin{titlepage} \vskip 60pt \makeatletter @@ -59,10 +57,17 @@ Braunschweig, den \today \tableofcontents \cleardoublepage -% \listoffigures -% \cleardoublepage +\listoffigures +\cleardoublepage % \listoftables % \cleardoublepage +\chapter*{Table of Acronyms} +\begin{acronym} + \acro{GPS}{Global Positioning System} + \acro{USB}{Universal Serial Bus} + \acro{SVN}{Subversion} +\end{acronym} + \pagenumbering{arabic} \pagestyle{headings} -- 2.20.1