Roboter mit ROS. Murat Calis
main, universe, restricted und multiverse kein Kommentarzeichen2 am Anfang enthalten. Standardmäßig ist bereits alles richtig eingestellt und eine Änderung in dieser Datei nicht notwendig.
1.1.2Freiburg Mirror als Quelle angeben
sudo sh -c '. /etc/lsb-release && echo "deb http://packages.ros.org.ros.informatik.uni-freiburg.de/ros/ubuntu $DISTRIB_CODENAME main" > /etc/apt/sources.
list.d/ros-latest.list'
1.1.3Schlüssel importieren
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key
Wenn der obige Befehl fehlschlägt, gibt es die Möglichkeit, den Schlüssel mit folgendem Befehl manuell herunterzuladen und zu installieren.
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
1.1.4Installation
Bevor wir ROS installieren, lassen wir das System auf Aktualisierungen prüfen und ggf. installieren.
sudo apt update
sudo apt upgrade
Auf dem Entwicklungsrechner benötigen wir eine vollständige Desktopumgebung mit grafischen Werkzeugen.
sudo apt install ros-kinetic-desktop-full
Da wir auf dem Roboter keine grafischen Benutzeroberflächen benötigen, installieren wir die Basisausrüstung von ROS auf dem Intel NUC und dem Odroid XU4.
sudo apt install ros-kinetic-ros-base
1.1.5Initialisierung mit rosdep
Im Folgenden wird für das aktuelle Benutzerkonto der versteckte Ordner .ros im Heimatverzeichnis angelegt – meist ist das /home/benutzername/.ros. Dort befinden sich später auch sämtliche log-Dateien, die von ROS während der Ausführung erstellt werden. Mit rosclean purge lassen sich alle log-Dateien im Ordner .ros löschen.
sudo rosdep init
rosdep update
Neues Benutzerkonto und ROS
Wenn ein neuer Benutzer angelegt wird, der auf dem Rechner ROS verwenden soll, muss dieser rosdep update ausführen und die ROS-Verzeichnisse, welche setup.bash-Skripte enthalten, in seine .bashrc eintragen.
1.1.6Umgebungsvariablen setzen
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.1.7rosinstall, Werkzeug für die Arbeitsbereichverwaltung
sudo apt install python-rosinstall python-rosinstall-generator python-wstool
build-essential
1.1.8ROS-Arbeitsbereich erstellen
Als Nächstes erstellen wir einen Arbeitsbereich, der unsere eigenen Robotik-Werke enthalten wird, also unsere selbstgeschriebenen Programme. Aber auch Git-Repositorien von anderen Anbietern können wir dorthin herunterladen und verwenden. Obligatorisch ist der Name des Quelltextordners »src«, aber nicht der übergeordnete Ordner, dessen Namen ich gerne anders wähle, als er in wiki.ros.org mit »catkin_ws« vorgegeben wird. Der Grund dafür ist, dass ich oft zwischen Roboter-Computer und Entwicklungs-Computer hin und her kopiere. Wenn aber die Ordnernamen auf beiden Computern identisch sind, kann es passieren, dass man Quelle und Ziel verwechselt, was ärgerlich sein kann, wenn man vorher kein Backup gemacht hat.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
Der Befehl catkin_make erzeugt eine Datei CMakeLists.txt, wenn diese noch nicht existiert, und darüber hinaus die Ordner build und devel. Im devel-Verzeichnis befinden sich die setup-Dateien, die dem ROS-System bekanntgeben, wo es nach ROS-Paketen suchen soll.
Mit catkin_make install, dem Äquivalent zu make install, wird zusätzlich der Ordner install mit ausführbaren Binärdateien angelegt. Ansonsten macht catkin_make das, was make auch macht – es baut alle Programme, die im Arbeitsbereich vorliegen. Dieser Vorgang kann, abhängig von der Anzahl der ROS-Pakete im aktuellen Arbeitsbereich, sehr lange dauern.
Wer in unterschiedlichen Roboterprojekten arbeitet, hat die Möglichkeit, mehrere getrennte Arbeitsbereiche anzulegen. Das reduziert die Arbeit von catkin_make auf das, was der aktuelle Arbeitsbereich an ROS-Paketen enthält. Sie erstellen dazu wie oben beschrieben ein neues Verzeichnis mit einem Unterverzeichnis src. Im neuen Verzeichnis wird der Befehl catkin_make weitere benötigte Dateien und Verzeichnisse generieren, sodass Sie nur noch die setup-Datei im Verzeichnis devel ausführen müssen, um den neuen Arbeitsbereich zu verwenden. Das Ausführen der setup-Datei eines Arbeitsbereichs blendet alle anderen Arbeitsbereiche für die Kompilierung auf dem System aus. Die anderen Arbeitsbereiche sind mit dem Befehl roscd dennoch erreichbar. Die Arbeit mit mehreren Arbeitsbereichen wird in ROS als Überlagerung (engl. overlay) bezeichnet.
build, devel und install werden von src generiert
Es kann vorkommen, dass die Ordner build, devel oder install inkonsistent werden. Diese Ordner außer src sollten Sie löschen und mit catkin_make wird aus dem Ordner src ein neuer build und devel generiert.
Abschließend tragen wir unseren Arbeitsbereich in unsere Terminalkonfiguration ein. Dadurch wird nach jedem Neustart der gewünschte Arbeitsbereich in jeder Konsole mit dem Befehl roscd erreichbar sein. Falls Sie den Ordnernamen von catkin_ws verändert haben, muss der entsprechende Name verwendet werden.
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
Ob unsere Installation erfolgreich war, testen wir mit folgendem Befehl und beenden ihn anschließend mit
roscore
Abb. 1–3roscore startet den ROS-Master auf port 11311 und erstellt die zugehörige log-Datei in ~/.ros.
Wer mehr über den Entstehungs- und Beendigungsprozess erfahren möchte, startet ein separates Fenster mit netstat -tulpanc. So kann man die einzelnen Prozesse beim Öffnen und Schließen der Ports beobachten.
1.1.9Roboter Modell A installieren
Dieses Buch befasst sich mit zwei unterschiedlichen Robotern, Modell A und B. Der größte Unterschied zwischen beiden ist, dass Modell B zusätzlich eine motorisierte Kamera hat. Wir werden Modell A als Nächstes in unseren Arbeitsbereich herunterladen. Anschließend lernen wir ROS anhand dieses Roboter-Modells kennen.
Wir installieren die Roboter-Programme im src-Verzeichnis