Zeus V0: Un premier prototype fonctionnel

Zeus V0 : Un premier prototype fonctionnel 

Zeus V0 : Un premier prototype fonctionnel

L’équipe de projet de fin de baccalauréat en robotique, Zeus, est composée de 10 finissants en génie de l’Université de Sherbrooke. Notre objectif est de construire un astromobile (Rover) dans le but de participer à la Canadian International Rover Challenge.

À ce jour, l’équipe de Zeus est fière de présenter son premier prototype fonctionnel! Les prochaines étapes seront de travailler sur une version plus robuste pour faire des tests plus exhaustifs, et ainsi avoir un Rover prêt pour la compétition au mois d’août. À la suite de la compétition, nous améliorerons davantage notre Rover et le présenterons à l’Expo MegaGénial de la faculté de génie.

Ultimement, l’équipe de Zeus désire assurer la continuité du projet en le léguant aux nouvelles cohortes de Robotique UdeS. En plus de laisser son Rover aux nouveaux étudiants, Zeus prévoit aussi diffuser toute sa démarche de conception. Le but est de transmettre les connaissances acquises durant le projet et d’encourager des futurs ingénieurs et ingénieures qui voudraient entreprendre des projets semblables.

Mars 2021
Prototype V0
Nous avons assemblé une première version de notre Rover afin de faire une première intégration de toutes ses composantes. Cette démarche a été très éducative et nous a permis de décerner des problèmes très tôt dans notre conception.
Mars 2021
Avril 2021
Prototype V1: Améliorations
Suite à une première intégration des composantes, nous travaillons maintenant sur des améliorations pour rendre le tout plus robuste. Une version améliorée sera prête assez vite afin de faire des tests plus exhaustifs.
Avril 2021
Mai 2021
Prototype V2: Prêts pour la CIRC!
Puisque toute l'équipe sera en stage à l'été 2021, nous souhaitons que notre Rover soit prêt pour la compétition CIRC à la fin de la session scolaire, soit avant le début du mois de mai, et ce, même si la compétition a lieu seulement en août. C'est un défi de taille, mais nous croyons être en mesure de le relever.
Mai 2021
Août 2021
Prototype V3: Exposition MégaGéniale
La compétition nous aura permis de détecter les failles dans notre conception. Nous travaillerons pour les améliorer durant l'automne et présenterons une version finale de notre prototype à l'exposition MégaGéniale!
Août 2021

La conception d’un rover est un défi d’ingénierie de taille. Un rover est un système robotique complexe, qui englobe plusieurs domaines, soient la mécanique, l’électrique et l’informatique. Afin de répartir la charge de travail parmi notre équipe multidisciplinaire, nous avons divisé le rover en plusieurs modules. Cette manière de procéder s’est avérée très efficace, nous permettant de travailler en parallèle selon nos expertises. Cependant, il ne faut pas négliger le travail d’intégration qui doit être fait afin de s’assurer que toutes les composantes interagissent de manière harmonieuse. C’est pour cette raison que nous nous sommes fixé plusieurs jalons. Cette démarche itérative nous permet d’avoir des versions complètes du rover périodiquement et de confirmer que les systèmes fonctionnent bien ensemble. Voici les modules qui composent notre rover: Le châssis, la propulsion, le bras, la puissance, le contrôle et les sciences. Dans cet article, nous présentons le rôle de chaque module ainsi que son état actuel à notre V0.

Châssis

Le châssis est le module qui joue en quelque sorte le rôle de squelette du rover, car c’est lui qui contient tous les autres modules en plus de jouer un rôle structurel important. Pour cette version-ci du châssis, la structure a été construite à l’aide d’extrusions d’aluminium. Ce choix apporte comme avantages de bonnes propriétés mécaniques telles que la rigidité ainsi qu’une simplicité à y intégrer les autres modules. Pour les versions subséquentes du rover, l’équipe va miser sur un design qui optimisera la légèreté du châssis en changeant sa géométrie ainsi que les matériaux qui le composent.

Propulsion

Le module propulsion permet au rover de se déplacer et de traverser des obstacles. La propulsion contient un différentiel, une suspension, des roues et des moteurs. La suspension et le différentiel forment un mécanisme rocker-bogie similaire à celui du rover Persévérance récemment envoyé sur Mars par la NASA. Cette suspension permet alors au rover de surmonter des obstacles de 50 cm tout en gardant un contact au sol optimal pour chacune des roues. On cherche à innover au niveau des roues en créant nos propres roues imprimées 3D, déformables et en forme de nid d’abeilles. Les roues, sans air, sont alors insensibles aux crevaisons et possèdent une très bonne adhérence au sol.

Bras

Afin de réaliser des tâches de dextérité et de manipulation, nous avons doté notre rover d’un bras robotique à 5 degrés de liberté. Ce dernier va permettre de soulever une charge utile allant jusqu’à 3kg tout en manipulant des boutons, des leviers et même des touches de clavier. Des caméras vont être positionnées à des endroits stratégiques sur le bras afin de permettre au pilote de téléguider le bras à distance de manière précise. Pour l’accompagner, une simulation en temps réel sera également à sa disposition pour aider la réalisation des différentes tâches de la compétition.

Puissance

Le module de puissance assure l’alimentation électrique des différentes composantes électriques des autres modules. Le rover comporte une douzaine de moteurs DC entre 12V et 24V. Le module de puissance doit aussi alimenter plusieurs composantes électriques reliées à la communication entre le rover et la station de contrôle. Pour assurer notre sécurité et celle des composantes, plusieurs dispositifs de sécurité ont été ajoutés. En effet, la batterie est dotée d’un système de contrôle permettant une stabilisation sécuritaire et toutes les composantes sont protégées par des fusibles. Ces systèmes de protection garantissent un maximum de sécurité.

Contrôle

Le module contrôle englobe toute la programmation du rover ainsi que le système de communication avec la station de contrôle. À présent, nous avons développé toute une infrastructure de téléopération manuelle sur ROS et nous avons mis en place un système de communication sans-fil pour téléopérer et monitorer le rover à distance. Nous débutons présentement le développement de fonctionnalités plus complexes afin d’ajouter de l’autonomie à notre rover. Nous avons également créé une simulation dans le but de pouvoir développer et tester tout ce que nous faisons avant de le faire fonctionner sur le rover réel.

Sciences

Le module sciences permettra au rover de récolter des échantillons du sol lors de ses missions. Ces échantillons pourront également être analysés une fois le rover revenu à la station de contrôle afin d’étudier leur composition et leurs caractéristiques. Pour accomplir ces tâches, le module sciences aura un mécanisme de prise d’échantillons ainsi qu’un moyen de les stocker. Nous avons exploré plusieurs concepts pour réaliser ce module et un premier prototype est encore en développement.

L’intégration de tous ces modules a été un gros défi pour l’équipe et nous sommes très fiers du résultat. Notre version V0 nous a permis d’identifier les lacunes de notre conception très tôt et nous travaillerons maintenant pour les améliorer. Nous avons très hâte de nous rendre à la CIRC pour mettre Zeus à l’épreuve ainsi que de présenter notre prototype final à l’exposition MégaGéniale. Finalement, de la part de toute l’équipe, nous aimerions remercier nos commanditaires, nos mentors, et tous ceux qui nous épaulent dans ce projet de près ou de loin. C’est une expérience énormément enrichissante et formatrice d’avoir la chance de participer à un projet de cette envergure. Merci et à très bientôt!

ROS : Robot Operating System

ROS : Robot Operating System 

ROS : Robot Operating System

Aujourd’hui, lorsqu’on parle de développement robotique, ROS est devenu un incontournable. Cette plateforme open-source facilite l’intégration des différents modules logiciels qui constituent un système robotique et propose un standard pour la communauté de développeurs.

Issu d’un projet du Stanford Artificial Intelligence Laboratory, ROS a initialement été développé en 2007. Le projet est né dans le but de répondre au besoin d’avoir un moyen de relier tous les processus logiciels qu’un système robotique peut contenir. Mais pourquoi est-ce qu’un tel outil est nécessaire?

Typiquement, un robot est composé de 3 principaux types de modules: la perception, la planification et le contrôle.

Perception

Avant de pouvoir interagir avec son environnement, le robot a besoin de le comprendre. Cela peut nécessiter une grande quantité de capteurs, selon la tâche que le robot doit accomplir. Par exemple, une voiture autonome peut utiliser des caméras, des LIDAR, des GPS, des centrales inertielles, etc.

Planification

Ensuite, une fois que le robot comprend ce qu’il se passe autour de lui, il doit prendre des décisions et utiliser l’information qui lui est présentée pour agir de manière optimale. Si on reprend notre voiture autonome, celle-ci doit savoir comment réagir si elle détecte un piéton qui se trouve devant elle!

Contrôle

Finalement, le robot doit être en mesure d'exécuter les actions qu’il a déterminé comme étant optimales. Cela signifie de convertir des commandes abstraites en action concrètes qui auront des conséquences dans le monde réel, comme accélérer et freiner par exemple.

Par contre, ces 3 catégories de tâches englobent souvent une multitude de processus, qui ne fonctionnent pas nécessairement de façon linéaire et qui interagissent tous les uns avec les autres de manière complexe. C’est là que ROS entre en jeu. Il permet de suivre tous les modules (appelés des noeuds) et gère les transferts d’information entre eux.Suite aux premiers développements de ROS, Willow Garage, un incubateur de recherche robotique, a pris en charge le développement de la plateforme et a contribué grandement à sa croissance. La communauté open-source de ROS compte aujourd’hui un grand nombre de contributeurs à travers le monde.

Comment ça fonctionne?

Le nom Robot Operating System peut porter à confusion. En fait, ROS n’est pas un système d’exploitation en soi, comme le sont Windows et Linux par exemple. C’est plutôt un middle-ware, une plateforme qui offre une abstraction pour faciliter l’interaction et la communication entre différents processus qui peuvent être indépendants et même rouler sur des machines différentes.L’idée générale derrière ROS est qu’ils s’agit d’un système distribué. Chaque noeud fonctionne de manière indépendante, mais se rapporte au master, qui coordonne les interactions.

Le master accomplit plusieurs tâches. Il accorde aux noeuds des noms uniques, et garde un registre des canaux de communications entre ceux-ci. Le master met ce registre à la disposition des noeuds, qui sont ensuite capables de communiquer entre eux de manière peer-to-peer une fois qu’un premier contact est établi.

La communication inter-noeuds peut se faire de différentes manières. Les deux mécanismes les plus utilisés sont les topics et les services.

D’une part, les topics sont des canaux de communication ayant chacun un identifiant unique. Ils permettent aux noeuds de se transmettre des messages sous forme de publisher/subscriber. Il n’y a donc pas de notion d’expéditeur ni de destinataire. Tous les noeuds du système ont accès à l’information qui est envoyée par des topics.

D’autre part, il y a les services. Ceux-ci permettent de faire des appels de procédures à distance entre les noeuds. Les données circulent sous forme de messages et ont des formats qui sont préétablis par le noeud qui offre le service en question.

Outils

En plus de ses fonctionnalités de base, ROS offre plusieurs outils pour faciliter le développement de systèmes robotiques.

rqt

L’outil rqt est une interface utilisateur modulable. C’est une plateforme qui gère le déploiement de plugins basés sur Qt. Certains plugins de base sont fournis par ROS et il est aussi possible de développer des modules personnalisés.

rqt_graph

Un des plugins fournis par ROS qui est très utile est rqt_graph. Il s’agit d’une interface qui permet de visualiser les noeuds actifs ainsi que les transferts d’information entre ceux-ci. C’est un excellent outil pour déboguer un programme ROS et valider son bon fonctionnement.

rviz

L’outil rviz (ROS Visualization Tool) est un outil de visualisation 3D très puissant. Il permet de visualiser les données provenant de capteurs, qu’ils soient réels ou simulés, ainsi que le modèle du robot lui-même. Ceci est très utile pour comprendre le comportement du robot selon ce qu’il voit à travers ses capteurs. Par exemple, on peut voir en temps réel des points détectés par un LIDAR en 3D et valider que les actions du robot respectent le comportement désiré.

Gazebo

Gazebo, pour sa part, est un simulateur. Il permet de créer des modèles de robots ainsi que des scénarios et des environnements réalistes qui respectent les lois de la physique. Il est également possible de simuler tous types de capteurs. C’est un outil idéal pour tester ses algorithmes avant de les déployer sur un robot réel.

Installation

Maintenant que vous connaissez ROS, il est temps de commencer à l’utiliser. La plateforme officiellement supportée pour son utilisation est Ubuntu, mais il est également possible de l’installer sur d’autres distributions de Linux. Présentement, la version la plus récente de ROS pour laquelle du support à long terme est offert est ROS Melodic, conçu pour Ubuntu 18.04.

L’installation est très bien détaillée ici et se fait assez facilement. Ensuite, il faut configurer son environement de travail en suivant ces étapes, puis tout est prêt pour commencer à développer. De très bons tutoriels sont également disponibles pour tous les niveaux.

Conclusion

Bien que ROS soit extrêmement utile pour le développement de systèmes robotiques, il peut aussi être difficile à maîtriser au départ. Son utilisation nécessite certainement de bonnes connaissances de base du système d’exploitation Linux, puis, idéalement, des bases du fonctionnement de systèmes réseau. Heureusement, le wiki et les tutoriels offerts sont assez utiles. Et bien sûr, comme pour tout logiciel, il y a aussi beaucoup de ressources disponibles en ligne.J’espère que cet article vous a permis de mieux comprendre ce qu’est ROS et comment il fonctionne. Si les projets de Robotique UdeS vous intéressent, ou si vous voulez simplement discuter de robotique, n’hésitez pas à nous contacter, nous sommes toujours ouverts à de nouveaux défis!

Sources

Nous aimerions remercier tous nos commanditaires, sans qui nos activités ne seraient pas possibles. Nous vous sommes très reconnaissants. Merci de nous permettre de réaliser des projets concrets, d’avoir un impact sur la communauté, et de nous épanouir tout en nous développant personnellement et professionnellement. 

Un merci tout particulier à Merkur grâce à qui nous pouvons redonner davantage a la communauté.