{"id":5634,"date":"2018-11-13T12:26:09","date_gmt":"2018-11-13T11:26:09","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=5634"},"modified":"2023-03-29T11:50:29","modified_gmt":"2023-03-29T09:50:29","slug":"fernsteuerung-turtlebot-android-telefon","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/de\/fernsteuerung-turtlebot-android-telefon\/","title":{"rendered":"Intuitive Fernsteuerung f\u00fcr den Turtlebot mithilfe eines  Android-Telefons"},"content":{"rendered":"\n<html>\n <body>\n  <h2 class=\"wp-block-heading\" id=\"h-einfuhrung-turtlebot-tutorial-schritt-fur-schritt\">\n   Einf\u00fchrung &#8211; Turtlebot Tutorial Schritt f\u00fcr Schritt\n  <\/h2>\n  \n  \n  <p>\n   In diesem Tutorial nutzen wir die Inertialeinheit (IMU) eines gew\u00f6hnlichen Android-Telefons zur Steuerung eines ROS-kompatiblen Roboters. Als Testplattform haben wir ein klassisches ROS gew\u00e4hlt,\n   <a href=\"\/de\/402707-turtlebot3-burger.html\" rel=\"noopener\" target=\"_blank\">\n    Turtlebot 3 Burger\n   <\/a>\n   .\n  <\/p>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/IMG_20181009_172541.jpg\" rel=\"https:\/\/www.generationrobots.com\/de\/402707-turtlebot3-burger.html noopener\" target=\"_blank\">\n    <img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"225\" alt=\"Tutorial Turtlebot Android\" class=\"wp-image-5607\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/IMG_20181009_172541-300x225.jpg\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/IMG_20181009_172541-300x225.jpg 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/IMG_20181009_172541-768x576.jpg 768w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/IMG_20181009_172541-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   Vorraussetzungen:\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    Android-Mobiltelefon\n   <\/li>\n   \n   \n   <li>\n    ROS-kompatibler Roboter &#8211; in unserem Tutorial verwenden wir den Turtlebot 3 &#8211; Burger\n   <\/li>\n   \n   \n   <li>\n    Grundkenntnisse zu Linux und ROS\n   <\/li>\n   \n   \n   <li>\n    WLAN-Verbindung\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-vorbereitung-der-android-app\">\n   Vorbereitung der Android App\n  <\/h3>\n  \n  \n  <p>\n   Anstatt das Rad neu zu erfinden, verwenden wir eine spezifische App, die auf Androit Market zur Verf\u00fcgung steht. Da die App im Rahmen dieses Tutorials eine wichtige Rolle spielt, sollte sie als erstes installiert werden.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-verbindungsaufbau-zu-ihrem-roboter\">\n   Verbindungsaufbau zu Ihrem Roboter\n  <\/h3>\n  \n  \n  <p>\n   \u00d6ffnen Sie ein paar Terminalfenster auf Ihrem Roboter. Schlie\u00dfen Sie einen Display und eine Tastatur an Ihren Roboter an oder bauen Sie \u00fcber SSH eine direkte Verbindung zum Roboter auf. Alle aufeinander folgenden Befehle werden am Roboter selbst ausgef\u00fchrt (Raspberry Pi).\n  <\/p>\n  \n  \n  <p>\n   Wenn Sie schnurlos arbeiten, empfehle ich Ihnen, einen SSH-Key zu den f\u00fcr den Roboter zugelassenen Hosts hinzuzuf\u00fcgen, um den Zugang zum Roboter mithilfe Ihrer Steuerung zu vereinfachen. Damit f\u00e4llt die l\u00e4stige Eingabe von Passw\u00f6rtern weg. Sollten Sie noch keine SSH-Keys eingerichtet haben, geben Sie einfach ssh-keygen in einen Terminal ein, um den gew\u00fcnschten Key in Ihrem Verzeichnis directory\/.ssh zu erstellen. Ersetzen Sie den Pfad f\u00fcr YOUR_KEY, USER und HOST durch Ihre tats\u00e4chliche Konfiguration.\n  <\/p>\n  \n  \n  <p>\n   <em>\n    cat ~\/.ssh\/YOUR_KEY.pub | (ssh USER@HOST \u00ab\u00a0cat &gt;&gt; ~\/.ssh\/authorized_keys\u00a0\u00bb)\n   <\/em>\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-vorbereitung-der-umgebung-optional\">\n   Vorbereitung der Umgebung (optional)\n  <\/h3>\n  \n  \n  <p>\n   Wir empfehlen einige Zusatzkonfigurationen, die Ihnen das Leben erleichtern. Wir haben ein paar n\u00fctzliche Alias f\u00fcr ROS-Umgebungen erstellt. Es handelt sich um ein kleines Script, das sich als \u00e4u\u00dferst n\u00fctzlich erweist. Clonen Sie das Tool und f\u00fcgen Sie es zu Ihrem lokalen .bashrc hinzu.\n  <\/p>\n  \n  \n  <p>\n   <em>\n    cd\n   <\/em>\n   <br\/>\n   <em>\n    git clone https:\/\/github.com\/generationrobots-lab\/rosbash\n   <\/em>\n   <br\/>\n   <em>\n    nano ~\/.bashrc\n   <\/em>\n   <br\/>\n   <em>\n    Add following lines to the end of your file:\n   <\/em>\n   <br\/>\n   <em>\n    source $HOME\/rosbash\/rosbash.bash\n   <\/em>\n   <br\/>\n   <em>\n    source \/opt\/ros\/kinetic\/setup.bash\n   <\/em>\n   <br\/>\n   <em>\n    source $HOME\/ros_ws\/devel\/setup.bash\n   <\/em>\n   <br\/>\n   <em>\n    export ROS_MASTER_URI=http:\/\/$HOSTNAME:11311\n   <\/em>\n   <br\/>\n   <em>\n    export ROS_HOSTNAME=$HOSTNAME.local\n   <\/em>\n   <br\/>\n   <em>\n    export TURTLEBOT3_MODEL=burger\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Dann speichern und schlie\u00dfen Sie die Datei mithilfe von Ctrl+O , Ctrl+X.\n  <\/p>\n  \n  \n  <p>\n   Hinweis: Je nach Ihrem Turtlebot-Modell m\u00fcssen Sie die Bezeichnung \u201eBurger\u201c eventuell durch \u00ab\u00a0Waffle\u00a0\u00bb ersetzen.\n  <\/p>\n  \n  \n  <p>\n   Hinweis: Um das Verzeichnis ros_ws brauchen Sie sich vorerst nicht zu k\u00fcmmern. Wir legen es im n\u00e4chsten Schritt an.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-vorbereitung-des-roboters\">\n   Vorbereitung des Roboters\n  <\/h3>\n  \n  \n  <p>\n   Sollte Ihr Roboter noch nicht konfiguriert sein, empfehle ich Ihnen, zun\u00e4chst einen Blick auf dieses\n   <a class=\"catalogue\" href=\"http:\/\/emanual.robotis.com\/docs\/en\/platform\/turtlebot3\/overview\/\" rel=\"noopener\" target=\"_blank\" title=\"Tutorial Turtlebot\">\n    Tutorial\n   <\/a>\n   zu werfen, das die Basiskonfiguration von Ubuntu 16.04 und ROS Kinetic f\u00fcr Turtlebot 3 beschreibt.\n  <\/p>\n  \n  \n  <p>\n   Nehmen wir an, Ubuntu und ROS sind bereits installiert. Wir fahren fort mit der Konfiguration eines ROS-Arbeitsbereichs. Dazu erstellen wir zun\u00e4chst eine Arbeitsumgebung mit der Bezeichnung \u201eros_ws\u201c.\n  <\/p>\n  \n  \n  <p>\n   <em>\n    source \/opt\/ros\/kinetic\/setup.bash\n   <\/em>\n   <br\/>\n   <em>\n    mkdir &#8211; p ~\/ros_ws\/src\n   <\/em>\n   <br\/>\n   <em>\n    cd ~\/ros_ws\/src\n   <\/em>\n   <br\/>\n   <em>\n    catkin_init_workspace\n   <\/em>\n   <br\/>\n   <em>\n    cd ..\n   <\/em>\n   <br\/>\n   <em>\n    catkin_make\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Sollten Sie im Laufe des vorigen Schritts rosbash installiert haben, m\u00fcssen Sie dies bei allen vorhandenen Peripherieger\u00e4ten wie folgt angeben:\n  <\/p>\n  \n  \n  <p>\n   <em>\n    source ~\/.bashrc\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Um Ihr Bash anzuweisen, dass Sie \u201eros_ws\u201c verwenden m\u00f6chten, gen\u00fcgt es, im Hauptverzeichnis der Arbeitsumgebung \u201edevel\u201c einzutippen, dadurch sollte sich Ihre Eingabeaufforderung \u00e4ndern.\n  <\/p>\n  \n  \n  <p>\n   Nun clonen wir den Turtlebot 3 sowie unser IMU-Gateway-Verzeichnis:\n  <\/p>\n  \n  \n  <p>\n   <em>\n    cd ~\/ros_ws\/src\n   <\/em>\n   <br\/>\n   <em>\n    git clone https:\/\/github.com\/ROBOTIS-GIT\/turtlebot3.git\n   <\/em>\n   <br\/>\n   <em>\n    git clone https:\/\/github.com\/generationrobots-lab\/teleop_imu.git\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Jetzt k\u00f6nnen Sie einfach durch Eingabe der Abk\u00fcrzung cm ein catkin_make angeben, oder aber Sie geben den catkin_make in ~\/ros_ws ein. Falls fehlende Abh\u00e4ngigkeiten vorhanden sind, k\u00f6nnen diese ganz einfach \u00fcber install_deps installiert werden.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-testen-samtlicher-komponenten-und-montage-aller-teile\">\n   Testen s\u00e4mtlicher Komponenten und Montage aller Teile\n  <\/h3>\n  \n  \n  <p>\n   Jetzt ist es an der Zeit zu sehen, ob alle Komponenten funktionieren.\n  <\/p>\n  \n  \n  <p>\n   Starten Sie rosmaster :\n  <\/p>\n  \n  \n  <p>\n   <em>\n    roscore\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Standardm\u00e4\u00dfig sollten Sie auch einen Controller teleop_twist_keyboard haben, der mit den ROS-Packages installiert wurde. Andernfalls ist dieser \u00fcber folgende Befehle zu installieren:\n  <\/p>\n  \n  \n  <p>\n   <em>\n    sudo apt-get update &amp;&amp; sudo apt-get install ros-kinetic-teleop-twist-keyboard\n   <\/em>\n   <br\/>\n   <em>\n    rosrun teleop_twist_keyboard teleop_twist_keyboard.py\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Starten Sie in einem anderen Terminal:\n  <\/p>\n  \n  \n  <p>\n   <i>\n    rostopic echo \/cmd_vel\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   Wenn Sie jetzt auf eine der Tasten I, J, K, L oder die Leerstelle dr\u00fccken (w\u00e4hrend der Terminal mit ferngesteuerter Tastatur aktiv ist), erhalten Sie eine Ausgangsnachricht am entsprechenden Terminal.\n  <\/p>\n  \n  \n  <p>\n   Starten wir nun den Basistreiber des Roboters in einem anderen Terminal:\n  <\/p>\n  \n  \n  <p>\n   <em>\n    roslaunch turtlebot3_bringup turtlebot3_core.launch\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Wenn Sie jetzt das teleop-Keyboard ausprobieren, sollte der Roboter sich bewegen. Sobald dies funktioniert, stoppen Sie teleop_keyboard (Ctrl+C).\n  <\/p>\n  \n  \n  <p>\n   \u00dcberpr\u00fcfen Sie danach die IP Ihres Roboters mithilfe von ifconfig. Sie erhalten eine Ausgangsnachricht, die der unten stehenden Meldung \u00e4hneln sollte. In meinem Fall ist der Roboter \u00fcber WiFi (wlan0) angeschlossen, seine Adresse lautet 192.168.0.115. Es handelt sich um die Adresse des rosmaster.\n  <\/p>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a class=\"catalogue\" href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/Screenshot-from-2018-10-09-16-27-18.png\">\n    <img decoding=\"async\" width=\"300\" height=\"70\" alt=\"Tutorial Turtlebot Android\" class=\"wp-image-5606\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/Screenshot-from-2018-10-09-16-27-18-300x70.png\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/Screenshot-from-2018-10-09-16-27-18-300x70.png 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/Screenshot-from-2018-10-09-16-27-18.png 565w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   Starten Sie jetzt die App auf Ihrem Telefon. Sie werden aufgefordert, in der ersten Zeile die Master-Adresse einzugeben.\n  <\/p>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a class=\"catalogue\" href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/Screenshot_2018-10-09-16-49-30-388_org.ros_.android.sensors_driver.png\">\n    <img decoding=\"async\" width=\"300\" height=\"169\" alt=\"Tutorial Turtlebot Android\" class=\"wp-image-5608\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/Screenshot_2018-10-09-16-49-30-388_org.ros_.android.sensors_driver-300x169.png\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/Screenshot_2018-10-09-16-49-30-388_org.ros_.android.sensors_driver-300x169.png 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/Screenshot_2018-10-09-16-49-30-388_org.ros_.android.sensors_driver-768x432.png 768w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/Screenshot_2018-10-09-16-49-30-388_org.ros_.android.sensors_driver-1024x576.png 1024w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/Screenshot_2018-10-09-16-49-30-388_org.ros_.android.sensors_driver.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   Geben Sie folgende Adresse ein:\n   <i>\n    http:\/\/192.168.0.115:11311\n   <\/i>\n   und ersetzen Sie\n   <em>\n    192.168.0.115\n   <\/em>\n   durch die IP, die Ihrem Roboter entspricht. Best\u00e4tigen Sie mit OK.\n  <\/p>\n  \n  \n  <p>\n   Hinweis: Roscore und der Turtlebot3 Node sollten nach wie vor auf Ihrem Roboter ausgef\u00fchrt werden.\n   <br\/>\n   Jetzt sollte das Android-Telefon eine Verbindung zu Ihrem Roboter aufbauen und eine Nachricht mit folgendem Betreff senden:\n  <\/p>\n  \n  \n  <p>\n   <i>\n    \/android\/imu\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   Um zu sehen, ob Sie Nachrichten erhalten, gehen Sie zu:\n  <\/p>\n  \n  \n  <p>\n   <i>\n    rostopic echo \/android\/imu\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   Sie sollten hier eine Vielzahl von ver\u00f6ffentlichten Werten sehen.\n  <\/p>\n  \n  \n  <p>\n   Wenn dies korrekt funktioniert, k\u00f6nnen Sie nun das Gateway \u00fcber die Inertialeinheit bis zur Kommandozeile Geschwindigkeit starten. Das Gateway nutzt die erste Sensornachricht als Nullreferenz, der Roboter bewegt sich nicht. Legen Sie Ihr Telefon flach auf den Tisch. Jedes mal wenn Sie das Telefon so ausrichten, bleibt der Roboter stehen. Auch wenn die App komplett geschlossen wird, bleibt der Roboter stehen.\n  <\/p>\n  \n  \n  <p>\n   <em>\n    rosrun teleop_imu teleop_imu_bridge.py\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Herzlichen Gl\u00fcckwunsch, jetzt k\u00f6nnen Sie Ihren Roboter durch Drehen Ihres Telefons steuern. \u00d6ffnen Sie\n  <\/p>\n  \n  \n  <p>\n   <i>\n    ~\/ros_ws\/src\/teleop_imu\/scripts\/teleop_imu_bridge.py\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   und variieren Sie das Script ganz nach Bedarf. Wahrscheinlich m\u00f6chten Sie die x- und y-Achse oder den Ma\u00dfstab \u00e4ndern, um schnellere oder pr\u00e4zisere Bewegungen zu erzielen.\n  <\/p>\n  \n  \n  <p>\n   Um den Start zu beschleunigen, habe ich au\u00dferdem eine Startup-Datei im Verzeichnis teleop_imu\/launch deponiert, mit der der Turtlebot-Node und das IMU-Gateway gestartet werden. Das Starten erfolgt \u00fcber:\n  <\/p>\n  \n  \n  <p>\n   <i>\n    roslaunch teleop_imu tb3_core_imu.launch\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   Viel Spa\u00df!\n  <\/p>\n  \n <\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Einf\u00fchrung &#8211; Turtlebot Tutorial Schritt f\u00fcr Schritt In diesem Tutorial nutzen wir die Inertialeinheit (IMU) eines gew\u00f6hnlichen Android-Telefons zur Steuerung eines ROS-kompatiblen Roboters. Als Testplattform haben wir ein klassisches ROS gew\u00e4hlt, Turtlebot 3 Burger . Vorraussetzungen: Vorbereitung der Android App Anstatt das Rad neu zu erfinden, verwenden wir eine spezifische App, die auf Androit Market[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/de\/fernsteuerung-turtlebot-android-telefon\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":5621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10533],"tags":[],"class_list":["post-5634","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-anleitungen-und-tutorials"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=5634"}],"version-history":[{"count":7,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5634\/revisions"}],"predecessor-version":[{"id":13169,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5634\/revisions\/13169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/5621"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=5634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=5634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=5634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}