From: Roland Hieber Date: Tue, 21 Jun 2011 06:54:02 +0000 (+0200) Subject: Ausarbeitung: aktueller Stand mit Kapitel Grundlagen, etwas Struktur X-Git-Url: https://git.rohieb.name/bachelor-thesis/written-stuff.git/commitdiff_plain/faa5617bc3710376a8f96709750183f40c826057?ds=sidebyside Ausarbeitung: aktueller Stand mit Kapitel Grundlagen, etwas Struktur --- diff --git a/Ausarbeitung/biblio.bib b/Ausarbeitung/biblio.bib new file mode 100644 index 0000000..6099fa6 --- /dev/null +++ b/Ausarbeitung/biblio.bib @@ -0,0 +1,64 @@ +@Manual{irobot-oi, + title={iRobot Roomba 500 Open Interface Specification}, + organization={iRobot Corporation}, + note="\url{http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf}", + year=2007 +} + +@inproceedings{wiselib, + author={Tobias Baumgartner and Ioannis Chatzigiannakis and S{\'a}ndor P.~Fekete and Christos Koninis and Alexander Kr{\"o}ller and Apostolos Pyrgelis}, + booktitle={Proceedings of the 7th European Conference on Wireless Sensor Networks (EWSN 2010)}, + editor={J. Sa Silva and B. Krishnamachari and F. Boavida (LNCS 5970)}, + pages={162--177}, + publisher={Springer, Heidelberg}, + title={Wiselib: A Generic Algorithm Library for Heterogeneous Sensor Networks}, + year=2010, +} + +@INPROCEEDINGS{506902, +author={Yamauchi, B.}, +booktitle={Robotics and Automation, 1996. Proceedings., 1996 IEEE International Conference on}, title={Mobile robot localization in dynamic environments using dead reckoning and evidence grids}, +year={1996}, +month={april}, +volume={2}, +number={}, +pages={1401 -1406 vol.2}, +keywords={ELDEN learning system;adaptive place network;dead reckoning;dynamic environments;evidence grids;hill-climbing algorithm;lasting changes;mobile robot localization;navigation;position estimate;transient changes;learning systems;mobile robots;navigation;path planning;position control;sonar;ultrasonic transducer arrays;}, +doi={10.1109/ROBOT.1996.506902}, +ISSN={1050-4729},} + +@INPROCEEDINGS{351095, +author={Borenstein, J.}, +booktitle={Robotics and Automation, 1994. Proceedings., 1994 IEEE International Conference on}, title={The CLAPPER: a dual-drive mobile robot with internal correction of dead-reckoning errors}, +year={1994}, +month={may}, +volume={}, +number={}, +pages={3085 -3090 vol.4}, +keywords={ CLAPPER; Compliant Linkage Autonomous Platform with Position Error Recovery; bearing; compliant linkage; dead-reckoning errors; differential-drive mobile robots; dual-drive mobile robot; internal correction; linear encoder; mobile robots; multi-degree-of-freedom mobile platform; positioning accuracy; relative distance; relative position; rotary encoders; wheel encoders; distance measurement; error correction; mobile robots; path planning; position control;}, +doi={10.1109/ROBOT.1994.351095}, +ISSN={},} + +@MISC{umbmark, + author = {Johann Borenstein and L. Feng}, + title = {UMBmark -- A Method for Measuring, Comparing, and Correcting Dead-reckoning Errors in Mobile Robots}, + year = {1994} +} + +@INPROCEEDINGS{606708, +author={Kok Seng Chong and Kleeman, L.}, +booktitle={Robotics and Automation, 1997. Proceedings., 1997 IEEE International +Conference on}, title={Accurate odometry and error modelling for a mobile +robot}, +year={1997}, +month={apr}, +volume={4}, +number={}, +pages={2783 -2788 vol.4}, +keywords={UMBmark test;calibration;closed-form expressions;consistent error +model;dead-reckoning;dead-reckoning accuracy;error modelling;mobile +robot;odometry;orientation errors;position errors;systematic errors;wheel base +measurement;wheel radius;distance measurement;measurement errors;mobile +robots;}, +doi={10.1109/ROBOT.1997.606708}, +ISSN={},} diff --git a/Ausarbeitung/introduction.tex b/Ausarbeitung/introduction.tex new file mode 100644 index 0000000..fe7fc6f --- /dev/null +++ b/Ausarbeitung/introduction.tex @@ -0,0 +1,2 @@ +\chapter{Introduction} +\todo{motivation, importance of dead reckoning, what was done?} diff --git a/Ausarbeitung/main.kilepr b/Ausarbeitung/main.kilepr new file mode 100644 index 0000000..0c8be1b --- /dev/null +++ b/Ausarbeitung/main.kilepr @@ -0,0 +1,46 @@ +[General] +lastDocument=main.tex + +[document-settings,item:biblio.bib] +Bookmarks= +Encoding=UTF-8 +Highlighting=BibTeX +Indentation Mode=normal +Mode=BibTeX +ReadWrite=true + +[document-settings,item:main.tex] +Bookmarks= +Encoding=UTF-8 +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[item:biblio.bib] +archive=true +column=11 +encoding=UTF-8 +highlight=BibTeX +line=5 +mode=BibTeX +open=false +order=-1 + +[item:main.tex] +archive=true +column=0 +encoding=UTF-8 +highlight=LaTeX +line=43 +mode=LaTeX +open=true +order=0 + +[view-settings,view=0,item:biblio.bib] +CursorColumn=11 +CursorLine=5 + +[view-settings,view=0,item:main.tex] +CursorColumn=0 +CursorLine=43 diff --git a/Ausarbeitung/main.tex b/Ausarbeitung/main.tex new file mode 100644 index 0000000..935b53b --- /dev/null +++ b/Ausarbeitung/main.tex @@ -0,0 +1,88 @@ +\documentclass[a4paper,11pt,bibliography=totoc,twoside]{scrbook} +\usepackage[utf8x]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[ngerman,english]{babel} +\usepackage{hyperref,color,url,acronym} + +% FIXME hyperref setup + +\newcommand{\todo}[1][\ldots]{\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} + +\author{Roland Hieber} +\title{Error modeling of an autonomous, mobile robot} +% \date{July 9, 2011} + +\begin{document} +\begin{titlepage} + \vskip 60pt + \makeatletter + \begin{center} + {\large Braunschweig University of Technology}\\ + {\large Institute of Operating Systems and Computer Networks}\\[2cm] + {\large Bachelor Thesis}\\[2cm] + {\LARGE \@title \par} + \vskip 6em + {\large by}\\[.5em] + {\large \@author}\\[7em] + {\large \bf Thesis Advisor:}\\[.5em] + {\large Prof. Dr. S\'andor Fekete}\\ + \par + \vfill + {\large Braunschweig - \today} + \end{center} + \makeatother +% \par + % thanks? +\end{titlepage} +\cleardoublepage + +\selectlanguage{ngerman} +\vspace*{7cm} +\centerline{\bf Erklärung} +\vspace*{1cm} +Ich versichere, die vorliegende Arbeit selbstständig und nur unter Benutzung +der angegebenen Hilfsmittel angefertigt zu haben. +\vspace*{3cm} +Braunschweig, den \today% +\selectlanguage{english} +\pagestyle{headings} +\cleardoublepage + +% FIXME abstract + +\tableofcontents +\cleardoublepage +% \listoffigures +% \cleardoublepage +% \listoftables +% \cleardoublepage +\pagenumbering{arabic} +\pagestyle{headings} + +\input{introduction} +\input{preliminaries} + +\chapter{Experiment 1: Original Movement Behaviour} +\section{Setup} +\section{Results} +\todo +\chapter{Experiment 2: Movement Behaviour with Mean Correction} +\section{Setup} +\section{Results} +\todo +\chapter{Experiment 3: Movement Behaviour with Constant Starting Accelleration} +\section{Setup} +\section{Results} +\todo +\chapter{Conclusions} +\todo + +\bibliographystyle{plain} +\bibliography{biblio} + +\end{document} diff --git a/Ausarbeitung/preliminaries.tex b/Ausarbeitung/preliminaries.tex new file mode 100644 index 0000000..64b8e4f --- /dev/null +++ b/Ausarbeitung/preliminaries.tex @@ -0,0 +1,54 @@ +\chapter{Preliminaries} + +\section{Dead reckoning} +The process of \definition{dead reckoning} describes an inexpensive method for +relative positioning by computing a vehicle's position from an initial +starting position and the covered distance and course it has moved. In the case +of mobile robots, the covered distance can be simply computed in real time from +the revolution of its wheels, or by accelerometers the robot may be equipped +with. However, since the vehicle's current position is based on its previous +position, and the distance measurement may be imprecise, dead reckoning has the +disadvantage that errors in position calculation can cumulate and the error +of the calculated position grows with time. + +Another approach to determine a vehicle's position is absolute positioning, for +example satellite-based, over navigation beacons or by map matching. Still, +these techniques are rather expensive to deploy, cannot (yet) be used in real +time, or are even impreciser than relative approaches\cite{umbmark}, so dead +reckoning can still be useful for the time being. + +\section{iRobot Roomba 500} +Originally, the \definition{Roomba 500} is an autonomous vacuum cleaning robot, +manufactured by the US-based company \definition{iRobot}. It has the size of a +disc of about 34~cm in diameter and 9~cm in height; and normally follows its +own, non-customizable logic to detect dirt and clean rooms. However, it is also +easily controllable over a serial port, which provides a two-way +communication at 5~V TTL levels over a Mini-DIN connector, with a speed of +either 19,200 or 115,200 Baud. Over this serial port, the Roomba speaks a +specified protocol, called the iRobot Roomba Open Interface \cite{irobot-oi}, +which allows the user to interact with the robot's internal logic, reading its +sensor values, and control its movements and cleaning behaviour. + +In our setup, the iRobot Roomba 500 is used as an instance of an autonomous, +mobile robot to conduct the experiments described afterwards. For that, the +Open Interface is used to control the Roomba's movements from a netbook which is +running Wiselib code. + +\todo{picture of Roomba/netbook setup} + +\section{Wiselib} +The \definition{Wiselib}\cite{wiselib} is a C++ algorithm library for sensor +networks, containing for example algorithms for routing, localization and time +synchronization, and is strongly focused on portability and cross-platform +development. In particular, it allows the user to develop applications that run +on different hardware platforms without the need to change the code, and it +strongly uses C++ templates to achieve that feature. Amongst the supported +platforms are diverse sensor node platforms, like iSense, Contiki and TinyOS, +but there are as well implementations for the diverse x86-compatible Personal +Computer platforms, and the Shawn sensor network simulator. + +Moreover, the Wiselib includes code to control the iRobot Roomba over a +serial interface, and getting access to its internal sensor data, using the +iRobot Roomba Open Interface mentioned earlier. \todo{cite Wisebed book +chapter on Roomba code} +