{"id":5487,"date":"2018-11-13T12:26:09","date_gmt":"2018-11-13T11:26:09","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=5487"},"modified":"2023-03-29T10:38:23","modified_gmt":"2023-03-29T08:38:23","slug":"tutoriel-turtlebot-controle-android","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/fr\/tutoriel-turtlebot-controle-android\/","title":{"rendered":"Utiliser un smartphone Android pour le contr\u00f4le intuitif du robot Turtlebot 3"},"content":{"rendered":"\n<html>\n <body>\n  <h2 class=\"wp-block-heading\" id=\"h-introduction-tutoriel-turtlebot-etape-par-etape\">\n   Introduction &#8211; Tutoriel Turtlebot \u00e9tape par \u00e9tape\n  <\/h2>\n  \n  \n  <p>\n   Au cours de ce tutoriel, nous utiliserons l&rsquo;IMU d&rsquo;un t\u00e9l\u00e9phone Android standard pour contr\u00f4ler un robot compatible ROS. Nous avons choisi un classique de la robotique ROS, le\n   <a class=\"catalogue\" href=\"\/fr\/402707-turtlebot3-burger.html\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"Achter robot Turtlebot3 Burger\">\n    Turtlebot3 Burger\n   <\/a>\n   , comme plateforme d&rsquo;essai.\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\/IMG_20181009_172541.jpg\">\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   Requis :\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    Un t\u00e9l\u00e9phone Android\n   <\/li>\n   \n   \n   <li>\n    Un robot compatible ROS -pour ce tutoriel, nous utilisons le\n    <a class=\"catalogue\" href=\"\/fr\/402707-turtlebot3-burger.html\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"Robot Turtlebot Burger\">\n     Turtlebot3 Burger\n    <\/a>\n   <\/li>\n   \n   \n   <li>\n    Quelques connaissances de base en Linux et ROS\n   <\/li>\n   \n   \n   <li>\n    Une connexion Wifi\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-preparez-l-application-android\">\n   Pr\u00e9parez l&rsquo;application Android\n  <\/h3>\n  \n  \n  <p>\n   Nous n&rsquo;allons pas r\u00e9inventer la roue : nous utiliserons une appli sp\u00e9cifique, d\u00e9j\u00e0 disponible sur Play Store. Je vous conseille d&rsquo;installer l&rsquo;application d\u00e8s maintenant, car elle est essentielle au d\u00e9roulement du tutoriel.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-connectez-vous-avec-votre-robot\">\n   Connectez-vous avec votre robot\n  <\/h3>\n  \n  \n  <p>\n   Vous devez ouvrir quelques terminaux sur votre robot. Vous pouvez connecter un \u00e9cran et un clavier \u00e0 votre robot, ou d\u00e9marrer un protocole SSH. Toutes les commandes importantes sont ex\u00e9cut\u00e9es sur le robot (Raspberry Pi).\n  <\/p>\n  \n  \n  <p>\n   Si vous travaillez \u00e0 distance, je vous conseille d&rsquo;ajouter votre cl\u00e9 SSH aux h\u00f4tes autoris\u00e9s sur votre robot. Cela vous permettra de vous connecter \u00e0 votre robot en utilisant cette cl\u00e9 et non un mot de passe. Si vous n&rsquo;avez pas encore cr\u00e9\u00e9 de cl\u00e9 SSH, il vous suffit d&rsquo;appeler ssh-keigen dans un terminal pour g\u00e9n\u00e9rer une cl\u00e9 dans votre r\u00e9pertoire personnel\/.ssh. Remplacez le chemin vers YOUR_KEY, USER et HOST par votre configuration actuelle.\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-preparez-l-environnement-facultatif\">\n   Pr\u00e9parez l&rsquo;environnement (facultatif)\n  <\/h3>\n  \n  \n  <p>\n   Ces quelques installations additionnelles peuvent vous faciliter la vie. Nous avons cr\u00e9\u00e9 quelques alias utiles pour les environnements ROS. Il s&rsquo;agit seulement de quelques lignes de script, mais elles vous serviront. Copiez-collez cet outil dans votre r\u00e9pertoire local .bashrc\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   Sauvegardez et fermez le fichier avec Ctrl+O, Ctrl+X.\n  <\/p>\n  \n  \n  <p>\n   Note : Selon le mod\u00e8le de votre\n   <a class=\"catalogue\" href=\"\/fr\/396-robot-mobile-turtlebot\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"robot Turtlebot\">\n    Turtlebot\n   <\/a>\n   , vous devrez remplacer \u00ab\u00a0burger\u00a0\u00bb par \u00ab\u00a0waffle\u00a0\u00bb.\n  <\/p>\n  \n  \n  <p>\n   Note : Ne vous pr\u00e9occupez pas du r\u00e9pertoire ros_ws. Nous allons le cr\u00e9er au cours de la prochaine \u00e9tape.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-preparez-votre-robot\">\n   Pr\u00e9parez votre robot\n  <\/h3>\n  \n  \n  <p>\n   Si votre robot n&rsquo;est pas encore configur\u00e9, je vous conseille de jeter un \u0153il \u00e0 ce\n   <a class=\"catalogue\" href=\"http:\/\/emanual.robotis.com\/docs\/en\/platform\/turtlebot3\/overview\/\" rel=\"noopener noreferrer\" target=\"_blank\" title=\"Tutoriel Turtlebot\">\n    tutoriel\n   <\/a>\n   en premier lieu. Il d\u00e9crit les \u00e9tapes d&rsquo;installation de base d&rsquo;Ubuntu 16.04 et ROS Kinetic pour Turtlebot3.\n  <\/p>\n  \n  \n  <p>\n   Supposons que vous avez install\u00e9 Ubuntu et le ROS et configurons \u00e0 pr\u00e9sent l&rsquo;espace de travail ROS. Nous devons cr\u00e9er un espace de travail baptis\u00e9 \u00ab\u00a0ros_ws\u00a0\u00bb.\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   Si vous avez install\u00e9 rosbash durant l&rsquo;\u00e9tape pr\u00e9c\u00e9dente, il vous faut \u00e0 pr\u00e9sent le sourcer dans tous les terminaux existants avec la commande :\n  <\/p>\n  \n  \n  <p>\n   <em>\n    source ~\/.bashrc\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Pour signaler \u00e0 votre bash que vous souhaitez utiliser le \u00ab\u00a0ros_ws\u00a0\u00bb, tapez simplement \u00ab\u00a0devel\u00a0\u00bb \u00e0 la racine de votre espace de travail. Votre invite de commande devrait changer.\n  <\/p>\n  \n  \n  <p>\n   A pr\u00e9sent, vous devez cloner le Turtlebot3 et notre r\u00e9pertoire de bridge IMU :\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   Vous pouvez maintenant invoquer un catkin_make en \u00e9crivant tout simplement l&rsquo;abr\u00e9viation cm. Sinon, il vous faudrait invoquer catkin_make dans ~\/ros_ws. Si vous notez des d\u00e9pendances manquantes, vous n&rsquo;avez plus qu&rsquo;\u00e0 les installer avec install_deps.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-tester-tous-les-composants-et-tout-assembler\">\n   Tester tous les composants et tout assembler\n  <\/h3>\n  \n  \n  <p>\n   Le moment est venu de v\u00e9rifier que tous les composants fonctionnent.\n  <\/p>\n  \n  \n  <p>\n   D\u00e9marrez le rosmaster :\n  <\/p>\n  \n  \n  <p>\n   <em>\n    roscore\n   <\/em>\n  <\/p>\n  \n  \n  <p>\n   Le contr\u00f4leur teleop_twist_keyboard devrait \u00eatre install\u00e9 par d\u00e9faut avec votre ROS. Si ce n&rsquo;est pas le cas, installez-le de cette mani\u00e8re :\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   Dans un terminal diff\u00e9rent, lancez :\n  <\/p>\n  \n  \n  <p>\n   <i>\n    rostopic echo \/cmd_vel\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   D\u00e9sormais, en appuyant sur les touches I, J, K, L ou espace (avec le terminal qui g\u00e8re les op\u00e9rations \u00e0 distance en fonctionnement), vous devriez voir un signal de sortie sur le terminal d&rsquo;\u00e9cho.\n  <\/p>\n  \n  \n  <p>\n   Maintenant, lan\u00e7ons le contr\u00f4leur de la base robotique dans un autre 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   Testez le clavier d&rsquo;op\u00e9rations \u00e0 distance : le robot devrait se mettre en mouvement. Arr\u00eatez le teleop_keyboard une fois que celui-ci fonctionne (Ctrl+C).\n  <\/p>\n  \n  \n  <p>\n   A pr\u00e9sent, v\u00e9rifiez l&rsquo;adresse IP de votre robot en utilisant ifconfig. Vous devriez obtenir une sortie similaire \u00e0 celle qui vous est montr\u00e9e ci-dessous. Dans mon cas, le robot est connect\u00e9 par Wifi (wlan0) et son adresse est 192.168.0.115. C&rsquo;est l&rsquo;adresse du 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   Lancez l&rsquo;appli sur votre t\u00e9l\u00e9phone. Elle vous demandera d&rsquo;entrer l&rsquo;adresse ma\u00eetresse dans la premi\u00e8re ligne.\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   Entrez :\n   <i>\n    http:\/\/192.168.0.115:11311\n   <\/i>\n   et remplacez\n   <em>\n    192.168.0.115\n   <\/em>\n   par l&rsquo;adresse IP de votre robot. Confirmez avec OK.\n  <\/p>\n  \n  \n  <p>\n   Note : Les c\u0153urs du ROS et du Turtlebot3 doivent encore \u00eatre en cours de fonctionnement sur votre robot. Le t\u00e9l\u00e9phone Android devrait se connecter \u00e0 votre robot et envoyer ses messages sous le nom :\n  <\/p>\n  \n  \n  <p>\n   <i>\n    \/android\/imu\n   <\/i>\n  <\/p>\n  \n  \n  <p>\n   Si vous voulez v\u00e9rifier que vous recevez bien ces messages, entrez :\n   <i>\n    rostopic echo \/android\/imu\n   <\/i>\n   Vous devriez voir les nombreuses valeurs qui sont publi\u00e9es.\n  <\/p>\n  \n  \n  <p>\n   Si tout se passe comme pr\u00e9vu, vous pouvez \u00e0 pr\u00e9sent d\u00e9marrer le bridge reliant l&rsquo;IMU \u00e0 la rubrique de commande de vitesse. Le pont utilise le 1er message du capteur comme r\u00e9f\u00e9rence z\u00e9ro, \u00e0 laquelle le robot ne bouge pas. Posez votre t\u00e9l\u00e9phone \u00e0 plat sur une table. Quand vous le remettrez dans sa position de d\u00e9part, le robot s&rsquo;immobilisera. Le robot s&rsquo;arr\u00eate \u00e9galement quand vous fermez l&rsquo;appli.\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   F\u00e9licitations ! Vous pouvez d\u00e9sormais contr\u00f4ler votre robot en pivotant votre t\u00e9l\u00e9phone. N&rsquo;h\u00e9sitez pas \u00e0 ouvrir\n   <i>\n    ~\/ros_ws\/src\/teleop_imu\/scripts\/teleop_imu_bridge.py\n   <\/i>\n   et \u00e0 le modifier selon vos besoins. Vous souhaiterez probablement changer les valeurs des axes x et y ou l&rsquo;\u00e9chelle, pour obtenir des mouvements plus rapides ou pr\u00e9cis.\n  <\/p>\n  \n  \n  <p>\n   Afin d&rsquo;acc\u00e9l\u00e9rer le d\u00e9marrage, j&rsquo;ai \u00e9galement plac\u00e9 un fichier de lancement dans le dossier de lancement teleop_imu, qui d\u00e9marre le c\u0153ur du Turtlebot et le bridge IMU. Pour l&rsquo;initier :\n  <\/p>\n  \n  \n  <p>\n   <i>\n    roslaunch teleop_imu tb3_core_imu.launch\n   <\/i>\n  <\/p>\n  \n <\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Introduction &#8211; Tutoriel Turtlebot \u00e9tape par \u00e9tape Au cours de ce tutoriel, nous utiliserons l&rsquo;IMU d&rsquo;un t\u00e9l\u00e9phone Android standard pour contr\u00f4ler un robot compatible ROS. Nous avons choisi un classique de la robotique ROS, le Turtlebot3 Burger , comme plateforme d&rsquo;essai. Requis : Pr\u00e9parez l&rsquo;application Android Nous n&rsquo;allons pas r\u00e9inventer la roue : nous utiliserons[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/fr\/tutoriel-turtlebot-controle-android\/\" 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":[10527],"tags":[],"class_list":["post-5487","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides-et-tutoriels"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5487","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=5487"}],"version-history":[{"count":11,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5487\/revisions"}],"predecessor-version":[{"id":13168,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5487\/revisions\/13168"}],"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=5487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=5487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=5487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}