Eingesetzte Programme und Bibliotheken

OpenCV

OpenCV ist eine Programmbibliothek mit Funktionen für Computer Vision in Echtzeit und wird hier zur Auswertung der Kamerabilder und der Erkennung der Roboter eingesetzt.

ROS - Robot Operating System

ROS, ausgeschrieben Robot Operating System, der Name ist etwas irreführend, denn es handelt sich hier nicht um ein Betriebssystem, sondern um eine Softwarebibliothek mit nützlichen Funktionen für die Robotik, unter anderem zum Austausch von Nachrichten unter verschiedenen Programmen (Nodes) in einem standardisieren Nachrichtenformat. Weitere Informationen zu ROS sind im Wiki des Projektes:

oder im Wiki der Professur: https://twiki.tu-chemnitz.de/bin/view/Prat/ROS zu finden.

OpenSceneGraph

OpenSceneGraph ist eine Open Source C++ 3D Grafikbibliothek auf Grundlage von OpenGL, die hier für die Visualisierung des 3D-Modells vom Labyrinth mit Laustracker3D eingesetzt wird.

Pygame

Pygame ist ein Python Modul, das plattformunabhängig einfache 2D Zeichenfunktionen zur Verfügung stellt und von Laustracker2D zur grafischen Darstellung genutzt wird.

Sphinx

Die gesamte Dokumention inklusive der PDF Version der Bachelor Arbeit ist mit Sphinx erstellt. Sphinx ist ein Dokumentationssystem, das ursprünglich zur Dokumentation der Programmiersprache Python entwickelt wurde. Inzwischen nutzen es aber auch viele weitere Projekte für die Dokumentation, OpenCV ist eines davon.

Die Nutzung von Sphinx bietet einige Vorteile die ich bisher in dieser Form noch bei keinem anderen Werkzeug gefunden habe:

  • Die Syntax von Sphinx basiert auf reStructuredText, was einige Vorteile bietet:
    • Der Text wird in reine TXT-Dateien geschrieben, die auch ohne Hilfsmittel sehr gut lesbar sind, da reStructuredText auf einen Großteil überflüssigen Markups verzichtet.
    • Im Gegensatz zu normalen Office-Dokumenten lassen sich die Dateien sehr gut in einem Versionskontrollsystem verwalten.
    • Es ist sehr viel übersichtlicher als Latex.
    • Die reStructuredText Syntax ähnelt in der Formatierung Python Code.
  • Sphinx ist in Python geschrieben und somit leicht erweiterbar und anpassbar. Ich nutze es zum Beispiel auch für meinen Blog.
  • Es lässt sich zeitgleich eine gut aussehende HTML-Version der Dokumentation erstellen, in der sich auch einfach YouTube-Videos und Bilder in Originalauflösung einbinden lassen. Ebenso ist die Erstellung von E-Books im EPub Format oder die Erstellung von Windows HTML Help Dateien möglich, siehe hierzu auch http://sphinx-doc.org/latest/builders.html.
  • Man kann sich auch ein PDF erzeugen lassen, das sich über Änderungen an der Latex Vorlage beliebig anpassen lässt.

Sourcecode und Projektverzeichnis

Der Sourcecode wird auf Bitbucket gehostet, da es dort, im Gegensatz zu dem etwas bekannteren GitHub kostenlos möglich ist, private Git Repositorys beliebiger Größe anzulegen und ich so keinen Zugriff mehr auf meinen UNI Account benötige.

Der Sourcecode ist auf die folgenden Repositorys aufgeteilt:

Einige Repositorys sind zwar privat, durch das Hinzufügen eines sogenannten Deployment Keys [1] kann aber jeder, der den RSA Schlüssel besitzt, den Sourcecode herunterladen ohne selbst bei Bitbucket angemeldet zu sein. Nähere Informationen dazu befinden sich in der README Datei im laustracker Verzeichnis auf dem SVN Server der Professur.

[1]http://link.jann.cc/install-a-public-key-bitbucket

Weiteren Nutzern mit eigenem Bitbucket Account kann ich auch noch Lese- oder Schreibrechte zu einem oder allen Repositorys gewähren, dann können sie das Repository auch forken. Änderungen können anschließend durch ein Merge übernommen werden. Vielleicht mache ich auch noch die restlichen Repositorys öffentlich, vorher muss der Inhalt allerdings noch etwas überarbeitet werden.

Die Software aus dem laustracker-main Repository ist dagegen für alle zugänglich und kann einfach mit Git herunter geladen werden:

$ mkdir laustracker-src && cd laustracker-src
$ git clone https://bitbucket.org/christianjann/laustracker-main.git

Unter https://bitbucket.org/christianjann/laustracker-main existiert auch noch ein Webinterface mit Wiki und Issue Tracker.

Die Entwicklung findet hauptsächlich im Git Repository statt, auf dem SVN Server der Professur ist aber noch eine Sicherungskopie verfügbar.

$ svn checkout \
    https://borstel.etit.tu-chemnitz.de/svn/praktikum/laustracker \
    laustracker.svn

Installation

Ein paar Notizen zur Installation unter Ubuntu an den Arbeitsplatz PCs befinden sich auch in der Datei ubuntu_install.txt und meine Odyssee durch die Kompilierung von ROS Groovy unter Fedora ist in der der Datei fedora_install.txt festgehalten.

Installation der Treiber für die uEye Kamera

Treiber für Windows, Linux, Mac sind auf der Herstellerwebsite zum Download verfügbar

Ich habe hier die Datei Linux_uEye_V4.20_64_Bit.zip gewählt, da ich unter einem 64-Bit Fedora Linux System arbeite.

Durch Ausführen der folgenden Befehle kann das Treiberpaket installiert werden:

Downloads]$ unzip Linux_uEye_V4.20_64_Bit.zip
Downloads]$ sudo sh ./ueyesdk-setup-4.20-usb-amd64.gz.run

Die Treiber kann man jetzt mit dem Befehl sudo /etc/init.d/ueyeusbdrc start starten und sich mit dem Programm ueyedemo einen Livestream von der Kamera anzeigen lassen.

alternate text

Abbildung 1: Screenshot ueyedemo-Programm mit Livestream von der Kamera

In Abbildung 1 kann man noch den kompletten Raum sehen. Später wird dann ein AOI (Bereich von Interesse) über die Kamerakonfiguration festgelegt, damit die Kamera nur den Bereich des Labyrinthes überträgt und sich so eine höhere Framerate erzielen lässt.

Leider sind die Treiber proprietär, d.h. der Sourcecode ist nicht verfügbar. Deshalb lässt sich die Kamera auch nicht unter einem ARM-System nutzen und man ist für Updates ständig auf den Hersteller angewiesen. Eine Kamera mit freien Treibern, die im Linux-Kernel enthalten sind, wäre da vorteilhafter.

Installation von ROS

ROS kann einfach über die Website des Projekts [2] herunter geladen werden.

[2]http://www.ros.org

Installation unter Fedora:

Falls noch nicht installiert, dann sollten einige Entwicklungspakete installiert werden:

~]$ sudo yum groupinstall 'Development Tools'
~]$ sudo yum install wget cmake PyYAML \
      python-setuptools-devel python-pip python-vcstools \
      mercurial boost-devel gtest-devel log4cxx-devel \
      apr-util-devel bzip2-devel libyaml-devel
~]$ sudo ln -s /usr/bin/pip-python /usr/bin/pip

Und jetzt eine komplette Installation von ROS:

~]$ sudo pip install -U wstool rospkg rosdep \
      rosinstall catkin-pkg
~]$ sudo mkdir -p /opt/ros/groovy/ros_catkin_ws
~]$ cd /opt/ros/groovy
groovy]$ sudo rosdep init
groovy]$ sudo rosdep update
groovy]$ cd ros_catkin_ws
ros_catkin_ws]$ sudo wstool init src -j3 \
                  http://packages.ros.org/web/rosinstall/\
                  generate/raw/groovy/desktop-full
ros_catkin_ws]$ sudo rosdep install --from-paths src \
                  --ignore-src --rosdistro groovy -y
ros_catkin_ws]$ sudo ./src/catkin/bin/catkin_make_isolated \
                  --install --install-space /opt/ros/groovy \
                  -DSETUPTOOLS_ARG_EXTRA="" \
                  -DSETUPTOOLS_DEB_LAYOUT=OFF
ros_catkin_ws]$ cd ~
~]$ source /opt/ros/groovy/setup.bash
~]$ sudo rosdep init
~]$ rosdep update

Jetzt müssen die ROS Programme noch zum Pfad hinzugefügt werden, damit sie in der Konsole automatisch gefunden werden. Das geschieht durch Hinzufügen der Zeile source /opt/ros/groovy/setup.bash in der Konfigurationsdatei ~/.bashrc.

Installation der Laustracker Software

Notwendige Programme und Bibliotheken:

Die Datei laustracker-src/laustracker/README.rst enthält noch weitere Informationen.

Nach der Installation der Abhängigkeiten wechseln wir in das Verzeichnis mit dem Laustracker Sourcecode und compilieren das Ganze:

Projects]$ cd laustracker-src/laustracker/
laustracker]$ rm -rf build/
laustracker]$ make distclean
laustracker]$ ./configure
laustracker]$ make

Durch das configure Skript wird auch das Laustracker Verzeichnis dem ROS_PACKAGE_PATH in der Datei .bashrc hinzugefügt sowie die Variable LAUSTRACKER_PATH gesetzt.

Einige Programme der Laustracker Bibliothek kann man jetzt schon benutzen, z.B. das Laustracker Kommandozeilenprogramm laustracker-cli. Weitere Informationen befinden sich in der README-Datei im Ordner laustracker/src/cli/. Wenn man allerdings die 2D- und 3D-Visualisierung nutzen möchte, müssen noch die ROS-Programme compiliert werden.

laustracker]$ make ros

Falls beim Compilieren der ROS Programme Fehler auftreten, wirft man am besten erst mal einen Blick in die Datei ROS_Bugs und führt die darin erwähnten Anweisungen aus.

Wenn Doxygen installiert ist, können wir auch gleich noch die API-Dokumentation erzeugen:

laustracker]$ make doxygen

Die erzeugte API-Dokumentation liegt dann unter doxygen/html/index.html.

Siehe auch liblaustracker.