Robotique modulaire rendue plus facile avec ROS | shoppingmaroc.net


Un robot est composé de nombreux composants matériels dont chacun nécessite son propre logiciel. Même un petit bras de robot avec une poignée de servomoteurs utilise une bibliothèque de servomoteurs

Ajoutez ce bras à un véhicule à roues et vous avez plus de moteurs. Fixez ensuite des capteurs à ultrasons pour éviter les collisions ou une caméra pour la vision. À ce stade, vous avez probablement divisé le logiciel en plusieurs processus: un pour le bras, un autre pour la mobilité, un pour la vision, et un pour agir en tant que cerveau interagissant d'une manière ou d'une autre avec tout le reste. La vision peut faire la reconnaissance d'objet ce qui est exigeant en calcul et vous avez maintenant plusieurs ordinateurs.

Divisez toute cette complexité en modules et vous avez un cas d'utilisation pour ROS, le Robot Operating System. Comme le montre cet article, ROS peut vous aider à concevoir, construire, gérer et même à faire évoluer votre robot

Qu'est-ce que ROS?

ROS est un framework constitué d'un grand nombre de bibliothèques et d'outils spécifiques pour le développement. robots. C'est open source et la plupart du code est sous licence BSD. Il est également supporté par la communauté.

ROS a été principalement testé sur Ubuntu et Mac OS X, bien que la communauté l'ait aussi fait fonctionner sur d'autres distributions Linux et travaille sur Windows. J'ai la version Kinetic de ROS fonctionnant sous Ubuntu 16.04 sur mon Raspberry Pi 3B .

 Simulation de bras de robot dans Gazebo
Simulation de bras de robot dans Gazebo. Photo de La construction

Simulation de votre robot

Avant même de construire votre robot, vous pouvez d'abord le simuler. Pour cela, vous pouvez créer un fichier URDF (Unified Robot Description Format), qui est un fichier XML décrivant votre robot en détail. Il existe même un complément exportateur URDF disponible pour SolidWorks. Vous l'utilisez ensuite avec ROS et le simulateur de robot Gazebo pour voir et manipuler votre robot sur l'écran avant de construire quelque chose.

Structurer les choses dans ROS: Packages

Il est difficile d'expliquer ce qui est disponible pour les ROS. sont structurés.

En haut de la hiérarchie, votre application robot est constituée d'un ou de plusieurs packages. Les packages contiennent généralement du code, des bibliothèques, des ensembles de données et des fichiers de configuration. Tout ce qui est logique d'aller ensemble en tant que module irait dans un paquet. Peut-être avez-vous dédié un Arduino Nano à un contrôleur de servo-moteur. Vous pouvez mettre tous les fichiers pour communiquant avec cet Arduino dans leur propre paquet.

En exécutant la commande ROS, rospack list sur la ligne de commande liste 229 paquets. Joy: un pilote ROS pour un joystick Linux générique

  • serial – une bibliothèque multiplateforme simple à utiliser pour utiliser les ports série
  • tf2 – vous aide à garder une trace des multiples
  • rosout – mécanisme de journalisation à l'échelle du système pour les messages envoyés au sujet / rosout
  • raspicam_node – paquet pour obtenir la vidéo de la caméra Raspberry Pi
  • globe oculaire – Paquet oculaire Pi
  • Le paquet raspicam_node est un que j'ai trouvé en ligne et le paquet globe oculaire est celui que j'ai créé à partir de zéro.

    Les paquets sont apportés par une grande communauté. Par exemple, chez les amateurs, il existe des packs pour les contrôleurs de moteur Pololu populaires et dans le monde industriel, il existe des packs pour les robots KUKA et Baxter. Voici un lien vers une grande liste de paquets disponibles .

    Les processus sont des nœuds

     Les nœuds dans les systèmes ROS

    Un robot suffisamment complexe nécessitera plusieurs processus, peut-être même répartis sur différents ordinateurs. Dans ROS, chaque processus est un nœud. Un paquet contient un ou plusieurs nœuds.

    Pour mon exemple, j'utilise raspicam_node qui lit depuis la caméra Pi et produit un flux compressé de vidéo. Un noeud appelé image_republisher décompresse cette vidéo. Mon nœud oculaire traite ensuite les images de la vidéo. Bien sûr, pour ce faire, ils doivent communiquer d'une manière ou d'une autre

    Communication entre nœuds

    ROS fournit deux mécanismes pour que les nœuds communiquent entre eux.

     Exemple ROS de nœuds et de topiques un mécanisme de publication-abonnement dans lequel un nœud publie qu'il aura des données disponibles. Il publie sous un nom appelé un sujet. Dans l'exemple illustré ici, raspicam_node publie de la vidéo compressée sur le sujet, / raspicam_node / image / compressed. Un noeud qui veut ces données, image_republisher dans notre exemple, s'abonne ensuite à ce sujet. Lorsque l'éditeur a une image vidéo compressée prête, l'éditeur la publie et l'abonné la reçoit.

    L'autre mécanisme de communication est appelé services. Un nœud de serveur fournit un service et un nœud client demande ce service. Comme avec publish-subscribe, le serveur fait connaître son service via un nom de rubrique et le client trouve le service via ce sujet. Contrairement à publish-subscribe, c'est le noeud client qui initie la communication. Il le fait chaque fois qu'il veut le service.

    Notez qu'avec les deux mécanismes, la communication est initiée en utilisant le sujet et non en adressant directement un nœud particulier. Si vous testez différents contrôleurs de moteur, vous pouvez écrire différents nœuds qui tous publient en utilisant le même sujet. Testez un à la fois et l'abonné trouvera ce qui se passe en cours d'exécution puisqu'il fait la recherche en utilisant le sujet et non un contrôleur de moteur spécifique. Ceci est également utile si vous décidez de changer de matériel à une date ultérieure ou si vous utiliserez un stub lorsque le matériel est hors service pour maintenance

    ROS fournit également une certaine indépendance de langage entre les nœuds communicants. ROS prend en charge Python et C ++. L'éditeur peut être écrit en Python et l'abonné peut être écrit en C ++, ou vice versa. Par exemple, un éditeur Python peut collecter des données de capteur alors qu'un abonné C ++ effectue le traitement intensif chaque fois que des données sont disponibles.

    Comment les sujets sont-ils mappés à des nœuds spécifiques?

    Momaro  » width= »400″ height= »231″ />
    Momaro, Photo Les frontières de la robotique et de l'IA

    Les nœuds peuvent communiquer entre eux à travers un réseau de machines. Le maître fonctionne sur une seule machine. Les nœuds de toutes les autres machines trouvent le maître en utilisant une variable d'environnement contenant le nom d'hôte de la machine qui a le maître.

    Lorsque les nœuds demandent à publier ou s'abonner à un sujet, ils donnent uniquement le nom du sujet. Un jour, le noeud de publication peut être sur une machine et le suivant peut être sur une autre machine. Les abonnés ne le sauront pas. Ils s'abonnent simplement au nom du sujet et le maître s'occupe de trouver l'éditeur.

    Imaginez, par exemple, un robot centaure avec un torse pouvant être attaché à différentes plates-formes mobiles. Une fois physiquement connectés, les nœuds dans le torse doivent trouver les nœuds dans la plate-forme mobile. Si les mêmes noms de sujet sont utilisés par toutes les plateformes, les nœuds seront trouvés, quelle que soit la plate-forme utilisée. Le robot, Momaro, est montré ici à des fins d'illustration uniquement car il a une base permanente avec un seul processeur. Toutefois, il utilise ROS.

    Outils de visualisation

    Il existe quelques outils de ligne de commande et graphiques utiles pour gérer et déboguer des paquets, des noeuds, des sujets et des communications. Quelques outils de ligne de commande sont rospack pour packages, rosnode et rostopic

     rqt_graph montrant les nœuds, les sujets et comment ils communiquent
    rqt_graph montrant les nœuds, les sujets et comment ils communiquent

    Rqt_graph donne un graphique affichage des noeuds, des sujets et de la façon dont les noeuds communiquent entre eux. Ici, nous voyons à nouveau que / raspicam_node / image / compressed est le sujet auquel s'abonner pour les images vidéo compressées de raspicam_node et / raspicam_node / image pour les images non compressées. Rqt_console et rqt_logger_level montrant des problèmes possibles avec raspicom_node  » width= »800″ height= »353″ />

    rqt_console et rqt_logger_level montrant des problèmes possibles avec raspicom_node

    rqt_console et rqt_logger_level affichent ensemble des messages enregistrés à partir de nœuds, qu'ils soient strictement informatifs, des avertissements ou des erreurs.

    Modular Robots Welcome

    Et c'est un large échantillon de ce qui est disponible de ROS pour vous aider avec la modularité de vos robots, de la conception et la simulation au débogage et au dépannage.

    vous avez un robot qui utilise ROS? Peut-être voudriez-vous l'inscrire dans le Robotics Challenge du 2018 Hackaday Prize mais dépêchez-vous. la date limite du 4 juin approche à grands pas. Et même si vous ne participez pas au concours, nous aimerions tout de même entendre parler de vos expériences avec ROS. Faites-nous savoir dans les commentaires ci-dessous.

    En attendant, nous vous laisserons avec un montage vidéo montrant des robots qui utilisent ROS.

                


    Arduino Maroc
    Acheter Arduino ICI

    Source

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *