Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

ROS2

Back                  << Index >>

Qu’est-ce que ROS2 ?

Pour résumer ROS2 est une surcouche logicielle permettant de formaliser les échanges entre processeurs.
Des outils et des bibliothèques sont fournis afin de faciliter le développement d’applications robotiques.
L’utilisation de ROS2 dans notre application peut paraitre disproportionnée, on s’imposera néanmoins cette contrainte afin d’étudier cette norme dans un contexte simple.

Les NODES sont des instances de programmes exécutées sur un même processeur ou des processeurs différents.
Ces NODES peuvent s’abonner à un TOPIC ( Subscribe ).
Lorsqu’un NODE envoie un message ( Publish ) à un TOPIC, tous les noeuds abonnés à ce topic reçoivent ce message.

Documentation :

https://docs.ros.org/en/humble/index.html

Robot Operating System, Olivier Stasse

Dans ce qui suit, la version humble de ROS2 a été utilisée.


Environnement ROS2

Variables d’Environnement

Il est nécessaire, afin d’utiliser ROS2, de mettre à jour des variables d’environnement, en exécutant la commande :

Il est conseillé d’inclure cette commande dans le fichier ~/.bashrc afin de l’exécuter automatiquement à chaque ouverture d’un terminal :

ROS_DOMAIN_ID

L’identifiant ROS_DOMAIN_ID permet d’identifier le réseau sur lequel communiquent différents noeuds.
Cet identifiant doit être le même pour tous les éléments devant s’échanger des messages.
Chaque Robot a un numéro devant correspondre à ROS_DOMAIN_ID.

Pour mettre à jour la variable d’environnement ROS_DOMAIN_ID pour chaque ouverture du terminal, on peut enrgistrer la commande suiante dans le fichier ~/.bashrc :

PC HOST ENIB : Environnement PYTHON

La cohabitation de plusieurs versions de python peut entrainer une série de warnings voire d’erreurs.
conda permet de gérer des environnements de développement, et les packages associés.

A faire une fois seulement :

Ouvrir à nouveau un terminal :

Pour désactiver conda :

Pour utiliser systématiquement cette configuration pour tout nouveau shell, la commande conda activate E021_3_6 peut être ajoutée au fichier ~/.bashrc ( à enlever pour les autres enseignements )

REMARQUE : Le répertoire de téléchargement des paquets peut devenir volumineux, si nécessaire exécuter :

Fichier .bashrc

Au final, pour que toutes les variables soient définies à l’ouverture d’un terminal :


Commandes de Base

Terminal 1 :

On publie un message toutes les secondes dans un topic ‘boite’.
Les messages sont de type std_msgs/msg/String.

REMARQUE : laisser un espace entre datat: et Hello !.

Pour envoyer un seul message :

Terminal 2 :

On écoute les messages arrivant dans boite :


Types de Messages

Transmission d’un Entier Int32

Transmission d’un Tableau d’entiers UInt8


Back                  << Index >>