Introduction to Ros (Robot Operating System) for Beginners
Table of Contents
Robotics est devenu un domaine dynamique et accessible, et le Robot Operating System (ROS) se distingue comme un outil essentiel pour les développeurs et les passionnés. ROS fournit un cadre flexible et distribué pour écrire des logiciels robots, vous permettant de construire des comportements complexes, d'intégrer divers composants matériels et de réutiliser le code à travers les projets. Que vous soyez étudiant, amateur ou ingénieur professionnel, la compréhension ROS permet de créer des systèmes robotiques sophistiqués avec moins de frais généraux et plus de focalisation sur la logique de haut niveau. Ce guide présente le ROS depuis le début, couvrant ses idées fondamentales, les étapes pratiques de configuration et les voies pour approfondir votre expertise.
Qu'est-ce que ROS ?
ROS est un système de méta-exploitation open source conçu spécialement pour le développement de logiciels robots. Il n'est pas un système d'exploitation en temps réel comme FreeRTOS ou une plate-forme à part entière comme Android; il se situe plutôt entre le système d'exploitation et votre code d'application, fournissant des services que vous attendez d'un OS, comme l'abstraction matérielle, le contrôle des appareils de faible niveau, la communication interprocessus et la gestion de paquets.
Les principales caractéristiques du ROS sont les suivantes :
- Communication entre pairs – Les nœuds (processus individuels) communiquent à l'aide d'un modèle de publication/abonnement et de demande/réponse, permettant des architectures décentralisées et évolutives.
- Écosystèmes fondés sur des outils – Une riche collection d'outils en ligne de commande, tels que , et , pour l'introspection, le débogage et la visualisation.
- Indépendance linguistique – ROS prend en charge plusieurs langages de programmation, principalement C++ et Python, mais aussi Java, Lisp, et d'autres, via des définitions de messages langage-agnostiques.
- Léger et modulaire – L'ensemble du système est construit autour de petits exécutables ciblés qui peuvent être développés, testés et réutilisés individuellement sur différents robots.
- Organisation fondée sur des ensembles – Code est organisé en paquets qui regroupent les nœuds, les bibliothèques, les fichiers de configuration et la documentation, rendant le partage et la collaboration simple.
Il existe deux versions majeures : ROS 1 (la version classique, avec des distributions comme Noetic Ninjemys) et ROS 2 (une version repensée traitant des contraintes en temps réel, de la sécurité et du support multiplateforme). Pour les débutants, en commençant par ROS 1 est encore commun en raison de ressources abondantes, mais ROS 2 est l'avenir et mérite d'être appris une fois les fondamentaux clairs.
Concepts fondamentaux du ROS
Pour écrire efficacement les programmes ROS, vous devez internaliser quelques abstractions fondamentales. Ces concepts forment l'épine dorsale de la communication et définissent la façon dont les robots perçoivent et agissent.
Noeuds
A noeud Dans un système robotisé typique, vous pouvez avoir un traitement d'image par un noeud de manipulation, un autre contrôle le bras robot, et un troisième édition de données d'odométrie. Les nœuds sont indépendants et communiquent entre eux par des sujets, des services ou des actions. Chaque noeud est compilé et exécuté séparément, de sorte que le système peut être distribué sur plusieurs machines et processeurs. Les nœuds peuvent être écrits dans n'importe quelle langue prise en charge et sont généralement définis dans un paquet.
Thèmes
Les sujets sont appelés bus sur lesquels les nœuds échangent messages. Le modèle éditeur/abonné est utilisé : un nœud qui veut envoyer des données (par exemple, lectures de balayage laser) publie sur un sujet comme , tandis que les nœuds qui ont besoin que des données s'abonnent sur le même sujet. Les sujets sont asynchrones et multiples, ce qui signifie que plusieurs éditeurs et abonnés peuvent coexister. Les messages ont une structure prédéfinie définie dans des fichiers qui sont compilés en code spécifique à la langue.
Messages
Les messages sont les structures de données envoyées sur des sujets différents. ROS définit les types de messages standard pour les données communes (par exemple, , , ), mais vous pouvez également créer des types de messages personnalisés pour votre application. Un message contient des champs dactylographiés, tels que des entiers, des flotteurs, des tableaux et des messages imbriqués.
Services
Un service est défini par une paire de structures de messages : une pour la demande et une pour la réponse. Par exemple, un noeud peut offrir un service qui, lorsqu'il est appelé, retourne la charge courante. Les services sont utiles pour les tâches qui nécessitent une rétroaction immédiate, comme la mise en place d'un paramètre ou le déclenchement d'une action à une prise. Ils sont couramment utilisés pour la configuration ou pour des opérations nécessitant une confirmation.
Serveur maître et paramètre
Les Maître ROS est un registre central qui permet aux nœuds de se trouver et de se connecter. Il maintient des informations sur les sujets, les services et les paramètres disponibles. Sans le Maître, les nœuds ne se découvriraient pas. Serveur de paramètres fait partie du Master et stocke les valeurs de configuration (comme les dimensions du robot ou les gains PID) auxquelles on peut accéder par n'importe quel noeud au moment de l'exécution. Les paramètres sont globaux et peuvent être mis à jour dynamiquement, ce qui en fait une façon flexible d'ajuster le comportement du robot sans recompiler le code.
Sacs
Un sac est un format de fichier utilisé pour enregistrer et lire les données de messages ROS. Pendant le développement, vous pouvez enregistrer les données de capteur d'un vrai robot dans un fichier et le rejouer plus tard comme si le robot était à nouveau en cours d'exécution. Ceci est inestimable pour le débogage, l'accordage algorithme et les tests hors ligne sans avoir besoin du robot physique. Rosbag prend également en charge le filtrage et la conversion, en faisant un outil clé pour la robotique axée sur les données.
Actions
Les actions étendent le modèle de service pour des tâches à plus long terme qui nécessitent une rétroaction périodique. Par exemple, le déplacement d'un bras robot vers une position cible peut prendre plusieurs secondes et vous voulez des mises à jour d'état intermédiaire. Les actions utilisent un protocole objectif, de rétroaction et de résultat, vous permettant d'annuler ou de surveiller les progrès.
ROS 1 vs ROS 2 : Quel choix choisir ?
La ROS 1 (la version classique) est l'épine dorsale de la recherche robotique depuis plus de dix ans. Sa dernière distribution officielle est Noetic Ninjemys, qui sera supportée jusqu'en 2025. La ROS 2 a été introduite pour remédier aux limitations de performance en temps réel, de sécurité et de support multiplateforme. Construit sur DDS (Data Distribution Service), ROS 2 offre un meilleur support pour les systèmes multirobots, les appareils embarqués et les environnements de production.
Commencer par le ROS
La première étape pratique est d'installer ROS sur votre ordinateur. Bien que ROS supporte macOS, Windows et diverses distributions Linux, la plate-forme recommandée pour les débutants est Ubuntu Linux (20.04 pour ROS Noetic, dernière distribution ROS 1). Le processus d'installation consiste généralement à configurer vos sources, à ajouter la clé de dépôt ROS et à exécuter une commande comme :
Ceci installe la suite complète du bureau, y compris les bibliothèques de base, les outils et les logiciels de visualisation comme RViz et Gazebo. Après l'installation, vous devez source le script d'environnement ROS (ajoutez-le à ) pour utiliser les outils en ligne de commande:
Pour ROS 2, choisissez une distribution comme Humble Hawksbill (Ubuntu 22.04) et suivez le guide d'installation officiel.
Création d'un espace de travail
ROS organise le code en un espace de travail pour les chatons (pour le ROS 1) ou espace de travail du colcon (pour ROS 2). Un espace de travail est un répertoire où vous construisez et exécutez vos paquets. Pour en créer un pour ROS 1:
- Créer un dossier :
- Naviguez vers la racine de l'espace de travail et lancez
- Source du fichier de configuration :
Pour ROS 2, utilisez plutôt . Les espaces de travail vous permettent d'organiser plusieurs paquets et de gérer facilement les dépendances.
Commandes ROS de base
Une fois le ROS installé, vous pouvez interagir avec le système en utilisant ces commandes essentielles:
- le rouge – Démarre le ROS Master, le serveur de paramètres et un noeud de logage. Doit être lancé avant tout autre noeud ROS.
- les produits de la pêche, – Lance un seul nœud d'un paquet donné. Par exemple, lance un simple simulateur de tortue qui est parfait pour apprendre.
- Lancé par le biais de <package> <launchfile> – Lance plusieurs nœuds et leurs configurations telles que définies dans un fichier de lancement. Lancer des fichiers simplifient les configurations complexes.
- Liste des sujets – Liste tous les sujets actifs.
- l'écho rostopique et l'écho;topique et le gt; – Imprime les messages publiés sur un sujet.
- Les données suivantes sont disponibles: – Publie un message sur un sujet directement depuis la ligne de commande.
- Liste des services – Liste des services disponibles.
- call de service et de service et de service; etlt; args et gt; – Appelle un service.
- Informations sur les rosnodes, Liste des rosnodes – Obtenez des informations sur l'exécution des nœuds.
Ces commandes vous donnent une façon puissante d'inspecter, de diagnostiquer et de contrôler votre système robot sans écrire de code. Passez du temps à jouer avec le paquet pour vous mettre à l'aise avec les outils en ligne de commande.
Construire une application robotisée simple
Pour renforcer votre compréhension, vous créerez une paire minimale d'éditeurs/abonnés. Cet exemple se compose de deux nœuds : un qui publie un message de comptoir à chaque seconde (parleur) et un autre qui imprime le message (afficheur).
D'abord, créez un nouveau paquet appelé dans votre dossier :
Dans le paquet, écrivez un script Python :
Alors l'auditeur :
Faites les deux scripts exécutables () et puis construisez l'espace de travail avec . Enfin, allumez dans un terminal, lancez dans un autre, et dans un troisième. Vous verrez les messages du conférencier imprimés par l'auditeur. Cette communication simple démontre le mécanisme de publication/abonnement central qui alimente des interactions robot beaucoup plus complexes.
Outils essentiels pour le développement du ROS
ROS fournit plusieurs outils graphiques qui accélèrent considérablement le développement et le débogage :
- RViz – Un outil de visualisation 3D pour afficher les données des capteurs, les modèles de robots et les informations de navigation. Vous pouvez voir des balayages laser, des nuages point, des images de caméras et transformer des arbres.
- , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , – Un cadre basé sur Qt pour le développement de l'interface graphique, offrant des plugins comme (visualise les connexions node/topic), (plots data through), et (spectateur de messages de journal).
- Sac à dos – Outil de ligne de commande pour enregistrer et lire les fichiers de sac. Utilisez pour saisir tous les sujets, puis pour rejouer. C'est une pierre angulaire de la recherche robotique reproductible.
- Tf2 – La bibliothèque de transformation qui garde une trace des cadres de coordonnées au fil du temps. Vous pouvez utiliser pour inspecter les transformations et pour vérifier les taux de publication.
Maîtriser ces outils tôt vous permettra d'économiser des heures de débogage et vous laisser concentrer sur la fonctionnalité de construction.
Apprentissage et ressources communautaires
ROS possède l'une des communautés les plus actives et les plus solidaires en robotique. Pour accélérer votre apprentissage, utilisez ces excellentes ressources :
- Tutoriels officiels ROS – Les Réseau de la société ROS fournit des tutoriels étape par étape pour les débutants, couvrant tout, de la création d'espace de travail aux piles de navigation avancées.
- Réponses du ROS – Un forum de questions et réponses où vous pouvez poser des questions techniques spécifiques et rechercher des solutions. réponses.ros.org- Oui.
- Discours de ROS – Le forum officiel de discussion pour les annonces, les projets de démonstration et les conversations plus longues. discours.ros.org- Oui.
- Cours en ligne – Des plateformes comme Udemy, Coursera et EdX proposent des cours ROS structurés. La série "ROS for Beginners" d'Anis Koubaa est particulièrement populaire.
- Livres – Programmation de robots avec ROS par Morgan Quigley et Brian Gerkey fournit une introduction complète, tandis que Système d'exploitation robot (ROS) pour débutants absolus par Lentin Joseph est excellent pour les novices.
- Chaînes YouTube – Rechercher le « tutoriel ROS » – des chaînes comme The Construct, Robotis et le laboratoire robotique de l'IIT Kharagpur offrent des vidéos à travers et des démonstrations de projet.
- Installation du ROS sur Ubuntu – Le fonctionnaire Guide d'installation ROS est la référence canonique.
N'hésitez pas à expérimenter des outils de simulation comme Gazebo avant de vous diriger vers un robot physique. La communauté ROS a des paquets pour presque n'importe quel capteur, actionneur ou algorithme, de sorte que vous pouvez souvent éviter de réinventer la roue.
Sujets avancés pour une exploration plus approfondie
Une fois que vous êtes à l'aise avec les bases, vous pouvez vous aventurer dans des domaines plus avancés:
- ROS 2 – La prochaine génération de ROS, construite sur DDS pour des performances en temps réel, la sécurité et le support multiplateforme. De nombreux nouveaux robots et projets adoptent ROS 2.
- Piége de navigation – Une collection de paquets pour la navigation robot autonome, y compris SLAM (localisation simultanée et cartographie), planification de trajectoire globale, et évite les obstacles.
- Déplacez-le – Un cadre puissant pour la planification et la manipulation des mouvements, notamment pour les bras robotiques.
- URDF – Unified Robot Description Format, une spécification XML pour décrire la cinématique, l'apparence visuelle et les modèles de collision d'un robot.
- Gazebo Intégration – Simulation de vos nœuds ROS dans un environnement physique réaliste avant de se déployer sur un vrai robot.
- Arbres de comportement – Une façon modulaire de définir des comportements robotisés complexes, de plus en plus utilisés dans le ROS 2 pour la planification des tâches.
Meilleures pratiques pour le développement du ROS
Lorsque vous commencez à construire de vrais projets, gardez ces pratiques exemplaires à l'esprit :
- Utiliser les fichiers de lancement – Au lieu de lancer plusieurs terminaux, définissez votre configuration de nœud dans un fichier . Cela rend votre système reproductible et plus facile à déboguer.
- Gérer les espaces de noms – Lors de l'exécution de plusieurs robots ou composants, utilisez des espaces de noms pour éviter les collisions de noms de sujets. Cela maintient votre système modulaire.
- Se connecter de manière significative – Utiliser , et avec des niveaux de verbosité appropriés. Éviter d'imprimer des données brutes sur console; utiliser pour le filtrage.
- Contrôle de la version – Utilisez toujours Git pour vos paquets. Inclure un et un avec des dépendances appropriées.
- Essai avec simulations – Avant de fonctionner sur le matériel, simuler avec Gazebo ou scène. Cela réduit les risques et accélère le développement.
- Respecter les limites des ressources – Définir les taux de publication et les tailles de file d'attente appropriés. Évitez les sujets d'inondation avec des données à haute fréquence sauf si nécessaire.
Conclusion
En maîtrisant ses concepts fondamentaux, vous ouvrez la porte à la création de tout, des simples robots de téléprésence aux systèmes autonomes avancés. Commencez petit, pratiquez avec le tortuesim, construisez votre première paire d'éditeurs-abonnés, et incorporez progressivement des paquets plus complexes. Le voyage en robotique avec le ROS est difficile mais extrêmement enrichissant. Restez curieux, construisez de petits projets itératifs et engagez-vous avec la communauté mondiale. Votre premier robot attend.