Tutorial Turtlebot

Utiliser un smartphone Android pour le contrôle intuitif du robot Turtlebot 3

Cette entrée a été publiée dans Tutoriels en robotique, et marquée avec , , , , , le par .

Introduction – Tutoriel Turtlebot étape par étape

Au cours de ce tutoriel, nous utiliserons l’IMU d’un téléphone Android standard pour contrôler un robot compatible ROS. Nous avons choisi un classique de la robotique ROS, le Turtlebot3 Burger, comme plateforme d’essai.

Tutorial Turtlebot Android

Requis :

    • Un téléphone Android
    • Un robot compatible ROS -pour ce tutoriel, nous utilisons le Turtlebot3 Burger
    • Quelques connaissances de base en Linux et ROS
    • Une connexion Wifi

Préparez l’application Android

Nous n’allons pas réinventer la roue : nous utiliserons une appli spécifique, déjà disponible sur Play Store. Je vous conseille d’installer l’application dès maintenant, car elle est essentielle au déroulement du tutoriel. Vous pourrez télécharger cette appli avec le code QR ci-dessous. Vous pouvez également suivre ce lien.

Tutorial Turtlebot QR Code

Connectez-vous avec votre robot

Vous devez ouvrir quelques terminaux sur votre robot. Vous pouvez connecter un écran et un clavier à votre robot, ou démarrer un protocole SSH. Toutes les commandes importantes sont exécutées sur le robot (Raspberry Pi).

Si vous travaillez à distance, je vous conseille d’ajouter votre clé SSH aux hôtes autorisés sur votre robot. Cela vous permettra de vous connecter à votre robot en utilisant cette clé et non un mot de passe. Si vous n’avez pas encore créé de clé SSH, il vous suffit d’appeler ssh-keigen dans un terminal pour générer une clé dans votre répertoire personnel/.ssh. Remplacez le chemin vers YOUR_KEY, USER et HOST par votre configuration actuelle.

cat ~/.ssh/YOUR_KEY.pub | (ssh USER@HOST « cat >> ~/.ssh/authorized_keys »)

Préparez l’environnement (facultatif)

Ces quelques installations additionnelles peuvent vous faciliter la vie. Nous avons créé quelques alias utiles pour les environnements ROS. Il s’agit seulement de quelques lignes de script, mais elles vous serviront. Copiez-collez cet outil dans votre répertoire local .bashrc

cd
git clone https://github.com/generationrobots-lab/rosbash
nano ~/.bashrc
Add following lines to the end of your file:
source $HOME/rosbash/rosbash.bash
source /opt/ros/kinetic/setup.bash
source $HOME/ros_ws/devel/setup.bash
export ROS_MASTER_URI=http://$HOSTNAME:11311
export ROS_HOSTNAME=$HOSTNAME.local
export TURTLEBOT3_MODEL=burger

Sauvegardez et fermez le fichier avec Ctrl+O, Ctrl+X.

Note : Selon le modèle de votre Turtlebot, vous devrez remplacer « burger » par « waffle ».

Note : Ne vous préoccupez pas du répertoire ros_ws. Nous allons le créer au cours de la prochaine étape.

Préparez votre robot

Si votre robot n’est pas encore configuré, je vous conseille de jeter un œil à ce tutoriel en premier lieu. Il décrit les étapes d’installation de base d’Ubuntu 16.04 et ROS Kinetic pour Turtlebot3.

Supposons que vous avez installé Ubuntu et le ROS et configurons à présent l’espace de travail ROS. Nous devons créer un espace de travail baptisé « ros_ws ».

source /opt/ros/kinetic/setup.bash
mkdir – p ~/ros_ws/src
cd ~/ros_ws/src
catkin_init_workspace
cd ..
catkin_make

Si vous avez installé rosbash durant l’étape précédente, il vous faut à présent le sourcer dans tous les terminaux existants avec la commande :

source ~/.bashrc

Pour signaler à votre bash que vous souhaitez utiliser le « ros_ws », tapez simplement « devel » à la racine de votre espace de travail. Votre invite de commande devrait changer.

A présent, vous devez cloner le Turtlebot3 et notre répertoire de bridge IMU :

cd ~/ros_ws/src
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/generationrobots-lab/teleop_imu.git

Vous pouvez maintenant invoquer un catkin_make en écrivant tout simplement l’abréviation cm. Sinon, il vous faudrait invoquer catkin_make dans ~/ros_ws. Si vous notez des dépendances manquantes, vous n’avez plus qu’à les installer avec install_deps.

Tester tous les composants et tout assembler

Le moment est venu de vérifier que tous les composants fonctionnent.

Démarrez le rosmaster :

roscore

Le contrôleur teleop_twist_keyboard devrait être installé par défaut avec votre ROS. Si ce n’est pas le cas, installez-le de cette manière :

sudo apt-get update && sudo apt-get install ros-kinetic-teleop-twist-keyboard
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

Dans un terminal différent, lancez :

rostopic echo /cmd_vel

Désormais, en appuyant sur les touches I, J, K, L ou espace (avec le terminal qui gère les opérations à distance en fonctionnement), vous devriez voir un signal de sortie sur le terminal d’écho.

Maintenant, lançons le contrôleur de la base robotique dans un autre terminal :

roslaunch turtlebot3_bringup turtlebot3_core.launch

Testez le clavier d’opérations à distance : le robot devrait se mettre en mouvement. Arrêtez le teleop_keyboard une fois que celui-ci fonctionne (Ctrl+C).

A présent, vérifiez l’adresse IP de votre robot en utilisant ifconfig. Vous devriez obtenir une sortie similaire à celle qui vous est montrée ci-dessous. Dans mon cas, le robot est connecté par Wifi (wlan0) et son adresse est 192.168.0.115. C’est l’adresse du rosmaster.

Tutorial Turtlebot Android

Lancez l’appli sur votre téléphone. Elle vous demandera d’entrer l’adresse maîtresse dans la première ligne.

Tutorial Turtlebot Android

Entrez : http://192.168.0.115:11311 et remplacez 192.168.0.115 par l’adresse IP de votre robot. Confirmez avec OK.

Note : Les cœurs du ROS et du Turtlebot3 doivent encore être en cours de fonctionnement sur votre robot. Le téléphone Android devrait se connecter à votre robot et envoyer ses messages sous le nom :

/android/imu

Si vous voulez vérifier que vous recevez bien ces messages, entrez : rostopic echo /android/imu Vous devriez voir les nombreuses valeurs qui sont publiées.

Si tout se passe comme prévu, vous pouvez à présent démarrer le bridge reliant l’IMU à la rubrique de commande de vitesse. Le pont utilise le 1er message du capteur comme référence zéro, à laquelle le robot ne bouge pas. Posez votre téléphone à plat sur une table. Quand vous le remettrez dans sa position de départ, le robot s’immobilisera. Le robot s’arrête également quand vous fermez l’appli.

rosrun teleop_imu teleop_imu_bridge.py

Félicitations ! Vous pouvez désormais contrôler votre robot en pivotant votre téléphone. N’hésitez pas à ouvrir ~/ros_ws/src/teleop_imu/scripts/teleop_imu_bridge.py et à le modifier selon vos besoins. Vous souhaiterez probablement changer les valeurs des axes x et y ou l’échelle, pour obtenir des mouvements plus rapides ou précis.

Afin d’accélérer le démarrage, j’ai également placé un fichier de lancement dans le dossier de lancement teleop_imu, qui démarre le cœur du Turtlebot et le bridge IMU. Pour l’initier :

roslaunch teleop_imu tb3_core_imu.launch