Problemstellung und die ersten Unterkapitel der Realisierung geschrieben

This commit is contained in:
Lukas Arnecke 2019-02-09 23:38:22 +01:00
parent 73a6a9d8f0
commit 8359d4f8a1
2 changed files with 26 additions and 3 deletions

View file

@ -76,7 +76,7 @@ Der mobile Forschungsroboter Pioneer 3-DX ist eine Roboterplattform, die für fa
Auf der Plattform ist ein Laser, ein Wlan-Modul und eine Rechner aufgebaut, mit deren Hilfe die Kartierung durchgeführt wird. Auf dem Rechner läuft Ubuntu 18.04 LTS, auf welchem wiederum ROS in der Version Melodic installiert ist.
\subsection{Robot Operating System}
\textit{ROS} ist ein Open Source Framework, welches speziell für auf die Nutzung für autonome Systeme entwickelt wurde. Die Idee von ROS ist die Bereitstellung von wiederverwendbaren Modulen, von denen jedes eine eigene Aufgabe erfüllen kann und die beliebig kombiniert werden können \cite{rosIntro}.
\textit{ROS} ist ein Open Source Framework, welches speziell für auf die Nutzung für autonome Systeme entwickelt wurde. Die Idee von ROS ist die Bereitstellung von wiederverwendbaren Modulen, von denen jedes eine eigene Aufgabe erfüllen kann und die beliebig kombiniert werden können. Um die Module auch gut wiederverwenden zu können bietet ROS durch seine Paketverwaltung die Möglichkeit, von der Hardware zu abstrahieren. Es gibt dann ein Paket, welche für die Ansteuerung der Hardware zuständig ist und die dann über eine Steuerungseinheit wie ein Gamepad oder einen joystick angesteuert werden kann \cite{rosIntro}.
Für ein möglichst einfaches Management liefert ROS eine eigene Paketverwaltung, mit der die benötigten Pakete nachinstalliert werden können. Ein Paket enthält unter Anderem den Quellcode und Launchfiles für die \textit{Nodes}, in denen die Berechnungen stattfinden \cite{rosIntro2}. Jeder Node ist für andere Berechnungen zuständig, so gibt es einen Node für die Koordinatentransformationen zwischen den einzelnen Bauteilen des Roboters, einen für den Laserscanner, einen für die Berechnung der WLAN-Signalstärke und einen für die Ansteuerung des Motors.
@ -90,6 +90,7 @@ Die Kommunikation zwischen Nodes, wie in läuft über ein Publisher/Subscriber
\end{figure}
\subsection{Kartierung}
\label{kartierung}
Für die Kartierung bietet ROS das Package \textit{gmapping}, wenn die Karte mithilfe eines Lasermoduls erstellt werden soll. Dieses Package bietet die Funktionalität, um eine laserbasierte Karte mithilfe des Systems \textit{Simultaneous Localization and Mapping} (SLAM) zu erstellen. Hierbei wird eine 2D Karte aus der Kombination von den Laserdaten und der vermuteten eigenen Position erstellt. Die Daten über die eigene Position kommen aus den Odometriedaten, also der vermuteten Bewegungsrichtung und -distanz anhand der Bewegungen der Räder. Der Node \textit{slam\_gmapping} subscriped die Topics \textit{tf} und \textit{scan}, aus denen es dann die Karte berechnet und unter dem Topic map veröffentlicht. \cite{gmap}. Die Abschätzung des Drehwinkels um die eigene Achse durch Odometrie ist vergleichsweise ungenau, weshalb es zu fehlerhaften Karten kommen kann, wenn der Roboter während der Kartierung zu viele Kurven fährt. Der Abgleich mit den Laserdaten wirkt diesem Effekt entgegen, bei einem erneuten Abfahren des Bereiches können entstandene Verschiebungen erkannt und behoben werden.
\subsection{Wireless Local Area Network}
@ -109,7 +110,7 @@ In dieser Sektion wird folgendes erklärt:
Im Rahmen des Projektes gibt es verschiedene Problemstellungen, welche zwar aufeinander aufbauen, jedoch trotzdem in sich abgeschlossene Vorgaben beinhalten.
\subsection{Inbetriebnahme}
Der Stand des Roboters vor Beginn des Projektes war, dass auf dem aufgebautem Rechner Ubuntu 14.04 LTS installiert war, auf dem wiederum ein Dockersystem lief. ROS lief dann unter Docker, wodurch verschiedene Konfigurationen parallel auf einem Roboter genutzt werden konnten. Da die ROS Version sich mit der Ubuntuversion ändert lief hier entsprechend auch ROS Kinetic.
Der Stand des Roboters vor Beginn des Projektes war, dass auf dem aufgebautem Rechner Ubuntu 14.04 LTS installiert war, auf dem wiederum ein Dockersystem lief. ROS lief dann unter Docker, wodurch verschiedene Konfigurationen parallel auf einem Roboter genutzt werden konnten. Da die ROS Version sich mit der Ubuntuversion ändert lief hier entsprechend auch ROS Indigo.
Ziel ist es, auf eine neuere ROS Version umzusteigen, um auch neu implementierte Funktionen nutzen zu können. Daher muss neben ROS auch Ubuntu neu installiert und in diesem Zuge geprüft werden, ob an dem Ansatz mit Docker festgehalten wird.
@ -126,10 +127,22 @@ Desweiteren soll eine Möglichkeit gefunden werden, die erhobenen Daten als Heat
\subsection{Genutzte Tools}
Für das Projekt wurde der Rechner auf dem Roboter komplett neu aufgesetzt. Für ein möglichst modernes System wurde Ubuntu 18.04 LTS installiert, wofür dann ROS in der Version Melodic vorgesehen ist und aus diesem Grund installiert wurde.
Desweiteren
Als relevante Aufbauten auf dem Roboter ist als Laserscanner der \textit{Sick LMS-200} sowie als WLAN-Modul der \textbf{MODULNAME?} verbaut. Da der Roboter auch schon für andere Projekte benutzt wurde sind noch weitere Aufbauten bereits auf der Plattform verbaut, da sie aber für dieses Projekt nicht relevant sind wird hier nicht weiter darauf eingegangen.
Als bestehende ROS Pakete wurden genutzt:
\paragraph{gmapping}
Wie in Kapitel \ref{kartierung} bereits erwähnt dient das Paket \textit{gmapping} zur Erstellung einer 2D Karte aus einer Kombination von Informationen des Laserscanners und den Bewegungsdaten des Roboters. Diese Karte wird später als Grundlage verwendet, auf welcher dann die Heatmap erstellt wird.
\paragraph{p2os}
Das Paket \textit{p2os} enthält die Treiber und den Steuerungsnode für die Basis des für den Pioneer 3-DX. Er bildet die Schnittstelle zu der Hardware, wodurch wir uns damit nicht weiter auseinandersetzen müssen.
\paragraph{p2os\_teleop}
Um die Steuerung des Pioneer auch mit einem Gerät ansprechen zu können liefert das Paket \textit{p2os\_teleop} die Schnittstelle, um den Roboter auch mit einem Controller fahren zu können.
\subsection{Architektur}
%Löschen? Architektur ist im Grunde durch ROS vorgegeben und dazu gibt es keine Alternative. LA
Wir setzen auf ROS. Was wiederum auf dem Betriebsystem sitzt. Wir nutzen das Messaging-System (Publisher/Subscriber). Wir nutzen p2os was wiederum auf ??? nutzt. Wir schreiben unseren eigenen Knoten.
\subsection{Aufgetretene Probleme}
@ -141,6 +154,9 @@ Auch war das Extrahieren der Signalstärken erwies sich als Problem.
\subsection{Inbetriebnahme und Installation}
% Alles veraltet. Vorhergehende Gruppe hat Docker ansazt gewält, nicht mehr lauffähig. Neues Betriebsystem. Neues ROS. Damit einige Probleme: Selbstcompilieren einiger Pakete nötig.
Wie bereits eingangs erwähnt wurde der Rechner des Roboters komplett neu gemacht. Damit das Betriebssystem möglichst lange laufen kann haben wir uns entschieden, Ubuntu 18.04 LTS zu installieren und darauf ROS Melodic aufzusetzen.
Während der Installation von ROS ist uns aufgefallen, dass diese Version noch nicht fertig implementiert ist. Der Code ist auf GitHub veröffentlicht, also konnten wir uns die Pakete herunterladen und manuell kompilieren. Hierbei sind dann Fehler aufgetaucht, dass einzelne Dateien nicht gefunden wurden. Nach einiger dieser Fehlermeldungen ist uns aufgefallen, dass ganze Unterordner von einem Ordner in einen anderen geschoben wurden und daher die Verweise innerhalb des Codes nicht mehr stimmen. Nach dem Anpassen der Dateien auf den neuen Pfad konnten die Pakete dann kompiliert werden.
\subsection{Simultaneous Localization and Mapping}
@ -151,9 +167,11 @@ Auch war das Extrahieren der Signalstärken erwies sich als Problem.
\subsection{WLAN-Messung}
% Zuständig:Flo
\newpage
\section{Ergebnisse}
%Was ist raus gekommen. Neue Erkenntnisse, Lösungen, Unsere zwei Karten.
\newpage
\section{Zusammenfassung}
\newpage

View file

@ -23,3 +23,8 @@
Lastchecked = {2019-02-09},
Title = {ROS gmapping},
Url = {http://wiki.ros.org/gmapping}}
@online{p2os,
Lastchecked = {2019-02-09},
Title = {ROS p2os},
Url = {http://wiki.ros.org/p2os_driver}}