Skip to main content

Projet OpenWheel sur robot-maker

sytème d'entraînement complet

Bonjour à tous! Pour des robots, il faut souvent des roues. Non satisfait des roues disponibles, j’ai commencé le projet OpenWheel, permettant de créer des roues, engrenages, pneus et chenilles pour robots (le tout sous licences libres) de façon paramétrique et donc ajustable. Je n’ai pas encore écrit de vrais articles dessus sur ce site.

Cependant, j’en ai beaucoup discuté sur un forum ou je participe régulièrement,  robot-maker.com. C’est un forum de passionnés de robotique, avec une communauté très accueillante, en français, avec beaucoup de retours très intéressants dans les sujets.

Je vous invite donc à consulter le sujet sur OpenWheels que j’ai créé sur Robot-Maker.com (et pourquoi pas donner votre avis?) 🙂

OpenWheel en configuration chenilles

OpenWheel en configuration chenilles

En savoir plus

R.Hasika – présentation : un robot Raspberry pi précis et extensible

R.Hasika de profil, avec les câbles rangés

R.Hasika – présentation

R.Hasika est le successeur de R.Cerda, un robot basé sur le Raspberry pi. Si à l’époque mon objectif était simplement de construire un robot basé sur le Raspberry pi, avec R.hasika, je suis plus ambitieux. En effet, il s’agit cette fois de concevoir entièrement le robot, que tout soit correctement pensé, plutôt que de faire certains éléments comme le châssis avec ce qui est disponible sous la main. Cette fois ci, chaque élément du robot aura été pensé. Dans ce billet, je vous propose une rapide présentation de ce robot et de ses objectifs.

J’ai créé une page pour le projet R.Hasika, que je vous invite à consulter pour davantage de détails.

Motorisation et déplacement

moteurs de R.Hasika sans les capteurs de rotation

moteurs de R.Hasika sans les capteurs de rotation

R.Hasika est un robot à conduite différentielle, s’appuyant sur deux moteurs à courant continu. Ces moteurs sont dotés de capteurs de rotation qui permettront un déplacement précis. Ils sont contrôlés par une puce DRV8835, qui permet de les commander facilement en PWM avec seulement 4 GPIO.

Ces moteurs entraînent deux chenilles, mais on peut les remplacer par des roues si on le souhaite. Dans tous les cas, ce choix de propulsion en fait un rover agile, capable de tourner sur lui même sur place, et avec une bonne capacité de franchissement d’obstacles.

Grâce aux capteurs de rotation des moteurs, on sera capable d’ajuster la vitesse de ceux ci pour effectuer des trajectoires parfaitement rectilignes, des rotations d’un angle précis, et même de l’odométrie et ainsi cartographier une zone.

Châssis et éléments structurels

le châssis de R.Hasika dans Openscad

le châssis de R.Hasika dans Openscad

Par rapport à R.Cerda, cette fois, le châssis à été pensé à l’avance. En pratique, la conception a été faite entièrement avec le logiciel libre OpenScad, et le code source (libre) permet à tout un chacun de modifier les paramètres du robot pour l’ajuster à ses besoins. J’ai publié un article détaillé sur le châssis de R.Hasika sur ce blog, comportant plus de détails que la présentation que vous lisez en ce moment.

Le châssis a été pensé pour être fabriqué à l’imprimante 3D d’une seule pièce, avec tous les trous et emplacements de fixation requis pour l’assemblage d’un robot complet. Ce châssis comporte également l’emplacement des batteries, des moteurs, des roues libres et de la plaque de support de l’électronique.

Cette dernière justement est la seconde pièce, sur laquelle viennent se fixer les composants électroniques du robot, les capteurs, etc. Cette plaque se visse simplement sur le châssis, renforçant ainsi davantage sa solidité.

La troisième pièce est la carrosserie, qui vient se visser par dessus, et qui permet de protéger l’électronique, et sert de support à divers autres éléments (voir plus bas dans la section du même nom).

 

Alimentation électrique et autonomie

L’alimentation électrique se fait par le biais de batteries lithium (jusqu’à 4), qui fournissent une capacité de 50Wh, permettant ainsi au robot de dépasser les 24 heures d’autonomie hors déplacement. En déplacement on obtiendra facilement de nombreuses heures d’autonomie.

Un autre point  intéressant avec ces batteries est qu’elles permettent d’intégrer au robot un circuit de charge, permettant de le recharger sans retirer les batteries. Mieux, on peut recharger le robot sans l’éteindre. Encore mieux, cela nous permet de programmer le robot pour qu’il aille se charger seul sur une station dédiée.

Capteurs

Capteur de distance ultrasonique Maxbotix

Capteur de distance ultrasonique Maxbotix

Les capteurs de base embarqués sont deux microswitches à levier, qui servent de capteurs de contact, un capteur de distance à ultrasons maxbotix, et les capteurs de rotation des roues. Si ces derniers permettent des trajectoires et mouvements précis, les deux premiers servent à mettre en oeuvre des algorithmes d’évitement d’obstacles.

D’autres capteurs viendront probablement s’ajouter à ces capteurs, avec par exemple un module accéléromètre, boussole et gyroscope 3D.

Un capteur particulier prendra place à coup sur, en revanche, avec le module caméra du Raspberry pi. Celui ci permet une capture vidéo en fullHD (1920*1080) à 30 images par secondes et des photos à 5Mpixels, voire 8 pour la nouvelle version. Une version infrarouge existe également.

 

Electronique de commande

Pour l’électronique de commande de ce robot, on s’appuie tout d’abord sur un Arduino nano, chargé des tâches de bas niveau (commande des moteurs, lecture des capteurs, contrôle des LEDs et boutons,  etc). Le robot peut être programmé directement via le Arduino, en ignorant le reste.

Le Arduino nano et le DRV8835 de R.hasika sur la plaque électronique. En dessous se trouve le Raspberry pi.

Le Arduino nano et le DRV8835 de R.hasika sur la plaque électronique. En dessous se trouve le Raspberry pi.

 

Mais cet Arduino est connecté par un port série à un Raspberry pi A+, qui permet cette fois de s’intéresser à des tâches plus complexes, telle que la cartographie, le traitement d’information vidéo, les communications wifi, etc. Si on ne souhaite pas s’occuper de la programmation des tâches de bas niveau, il suffit de téléverser le code fourni avec le projet sur l’Arduino et de communiquer avec celui ci depuis le Raspberry pi via un port série pour envoyer des commandes.

Autres éléments

R.Hasika embarque divers autres éléments que nous ne détaillerons pas tous ici. Mais en voici quelques uns :

  • 6 leds RGB adressables, dont on peut définir indépendamment la couleur parmi 65536;
  • un bouton poussoir programmable par l’utilisateur;
  • du wifi embarqué, pour pouvoir commander ou programmer le robot à distance;
  • un écran LCD 2*16 pour afficher des informations textuelles;
  • une ouverture permettant au robot d’être modifié, adapté;
  • des emplacements pour fixer des extensions non planifiées pour le moment.

Dans les prochains billets, nous nous pencherons en détail sur tous ces aspects, et nous nous intéresserons également aux objectifs recherchés pour ce robot, en commençant par détailler la conception du châssis et les fonctionnalités par celui ci. En attendant, voici une galerie de R.hasika :

 

REA – roues ou chenilles : transmission de la puissance

roue pololu de 70mm, avec axe central en D.

Pour notre programme REA, nous développons un Rover d’Exploration Autonome. Dans les précédents billets, nous avons discuté du mode de déplacement du robot, puis des divers types de motorisation exploitables. Maintenant que nous avons sélectionné un type de moteurs, il nous faut un moyen de transformer le mouvement de rotation de l’axe moteur en un mouvement linéaire du robot. On s’appuiera pour cela sur des roues ou chenilles, utilisées dans plusieurs configurations :

  • deux roues motrices et une roue libre omnidirectionnelle;
  • quatre roues motrices (ou N paires de roues motrices);
  • deux roues entraînant des chenilles.

Voyons en détail ces solutions.

Deux roues motrices et une roue libre omnidirectionnelle

cc Jiuguang Wang, Wikimedia commons

Robot à deux roues motrices et une roue omnidirectionnelle. cc Jiuguang Wang, Wikimedia commons

Si nous avons deux roues motrices, alors il nous faut un troisième point de contact avec le sol pour que le robot reste en équilibre. Il existe des robots capables de se contenter de deux roues, en s’équilibrant automatiquement, mais cette approche est plus complexe, et posera d’autres problèmes, sans forcément apporter grand chose à notre rover. Nous devons donc trouver un moyen d’avoir un troisième point de contact qui génère aussi peu de frottement que possible. Pour cela, nous utiliserons une roue omnidirectionnelle. Il s’agit d’une roue capable de rouler dans tous les sens sur sur le plan. Pour cela, il y a deux approches communes :

 

  • les billes ou “ballcaster“;
  • les roues sur un pivot.

Le ballcaster, ou bille

Image IPB

ballcaster en plastique, cc Bomazi, wikimedia commons.

Pour la première solution, on utilise une bille métallique ou en plastique enfermée dans une base ajourée dans sa partie basse. La bille ne peut s’échapper de cette base, mais est libre de tourner dans tous les sens. On fixe alors l’ensemble sur le châssis du robot, et on obtient notre troisième point de contact. Cette solution est peu coûteuse, facile à mettre en œuvre, et on trouvera une grande variété de ballcasters. En contrepartie, on aura davantage de frottement qu’avec une roue classique, et une hauteur de franchissement d’obstacle plus faible, à moins de trouver un ballcaster de très grande taille, ce qui est plus rare.

 

 

La roue sur pivot

La roue sur pivot est une roue classique, fixée sur un support rotatif, qui fait que celle ci peut tourner normalement comme une roue classique, mais également de gauche à droite facilement. On s’en servira de façon totalement passive : les roues motrices feront tourner le robot dans un sens, et la roue libre s’alignera avec le sens de déplacement du robot. On peut toutefois concevoir d’utiliser ce système avec un servomoteur pour tourner cette roue libre, et ainsi avoir une direction par ce biais plutôt que par les roues motrices. C’est une solution plutôt performante, avec peu de frottements. Cependant, il est parfois difficile de trouver de petites roues de ce genre, en dessous d’une certaine taille, on ne trouvera que des ballcasters.

Dans les deux cas, cette solution limite la capacité de franchissement d’obstacle du rover en fonction de la taille de cette roue omnidirectionnelle. Plus elle est petite, plus on sera arrêtés par de petits obstacles. Pour un sol relativement lisse, c’est donc une bonne solution, en milieu accidenté, on sera en revanche plus limités.

Quatre roues motrices (ou 2N roues motrices)

robot K10 - image NASA

robot K10 – image NASA

Pour cette approche, nous aurons 4 roues motrices (ou plus), donc chacune avec un moteur. Cette solution fournira un couple plus important, en contrepartie d’une consommation supérieure. On aura également une bonne capacité de franchissement, avec potentiellement la possibilité de franchir des obstacles plus grands que les roues, si la garde au sol est assez importante. On réduit le risque d’être embourbé, ensablé, ou bloqué à cause d’une roue dans le vide.

Les points négatifs sont qu’il faut 4 moteurs, qui consommeront davantage (en théorie!), et qu’il faudra synchroniser les moteurs pour des performances optimales. Petit point sur la consommation toutefois. Si l’on prend un robot d’une masse donnée équipé de deux moteurs. Les moteurs devront chacun fournir un couple de X g/cm pour faire avancer le robot. Pour toutes autres choses égales par ailleurs, si l’on passe à 4 roues motrices, chaque moteur devra fournir X/2 g/cm de couple pour faire avancer le robot de façon identique. De ce fait on a plus de moteurs, mais chacun sera moins sollicité, donc consommera moins.

En pratique, on aura des pertes, donc il est difficile de donner une règle générale. On peut cependant s’attendre à ce qu’à priori, 4 moteurs consomment un peu plus que 2 sur un robot , mais pas forcément le double, à moins que tous les moteurs ne soient poussés au maximum de leurs capacités.

3 générations de rovers martiens à 6 roues. Domaine public (source Nasa)

3 générations de rovers martiens à 6 roues. Domaine public (source Nasa)

Il est à noter qu’on peut utiliser 6, 8 ou 2N roues motrices si on le souhaite. Tous les rovers envoyés sur Mars par la NASA comportent 6 roues (sojourner, spirit et oportunity, et curiosity)
.

 

 

 

Le premier rover à rouler sur un autre astre que la terre : lunokhod

Image IPB

Le Lunokhod 3 de profil (domaine public)

Le premier robot de l’histoire de l’humanité à se déplacer à la surface d’un autre corps céleste fut le rover Lunokhod,ou le marcheur lunaire, en 1970, ouvrant la voie à l’exploration spatiale robotique. Des chercheurs de l’équipe de Sergueï Korolev, au cœur du programme spatial russe, furent par la suite (après le changement de régime russe en 1989) contactés et recrutés pour le développement du programme de rovers de la NASA. Ces technologies sont donc bien plus anciennes que ce que l’on imagine!
Les Lunokhod avaient quand à eux 8 roues.

 

 

 

Deux roues entraînant une chenille

Robot GROVER, en Islande - image NASA

Robot GROVER, en Islande – image NASA

Une autre solution est d’utiliser des chenilles. Celles ci possèdent en effet de nombreux avantages, avec par exemple une très grande surface de contact avec le sol. Il en découle une excellente adhérence, et une faible pression par unité de surface sur le sol.

Cette technologie réduit donc le risque d’enlisement ou d’ensablement. Du fait de son excellente adhérence, elle permet en outre d’aborder des pentes importantes, pourvu que les moteurs fournissent la puissance nécessaire. Enfin, cette solution permet un franchissement d’obstacle excellent, pouvant dépasser la hauteur de l’engin. Conclusions sur la transmission de la puissance

En effet, si les chenilles dépassent de l’avant du rover, elles pourront agripper l’obstacle, et l’avant se soulèvera pour le franchir. Si les chenilles sont aussi longues que le rover, il n’y aura pas de “zone morte” au milieu. On ne pourra donc pas se retrouver bloqué sur un obstacle entre deux jeux de roues. En revanche, la chenille sera aussi solide que le plus faible de ses maillons. Si la chenille casse, alors il y a peu de chances que le rover puisse se déplacer. Pour de longues missions, il conviendra de choisir des chenilles solides. La seconde contrepartie, c’est que les chenilles génèrent plus de résistance au mouvement, et donc une consommation énergétique supérieure. Selon leur taille et leur qualité, on trouvera diverses gammes de prix pour ces chenilles.
Malgré ces petits inconvénients, les chenilles restent une solution très intéressante, et simple à mettre en œuvre.
Il est à noter que l’on peut très bien utiliser 4 roues motrices entraînant les chenilles, pourvu qu’on synchronise les roues de chaque chenille. C’est en effet un bon moyen d’augmenter le couple disponible, et ainsi la capacité de franchissement du rover. Du fait de la très grande surface de contact entre le sol et la chenille, ce système bénéficiera d’autant plus efficacement de la puissance apportée par des paires de moteurs supplémentaires.

Conclusions sur la transmission de la puissance : roues ou chenilles ?

Dans le contexte d’un rover devant affronter un terrain accidenté, la solution la moins à même de franchir les obstacles sera celle des deux roues motrices avec une roue omnidirectionnelle. Toutefois, puisque la gestion des moteurs et l’algorithme de conduite seront identique à celui des deux roues entraînant des chenilles, et très proches de la version 4 roues motrices (ou plus), nous pourrons utiliser ce système pour des prototypes, ou pour des missions en terrain relativement lisse. On pourra toutefois utiliser deux roues libres non omnidirectionnelles à la place d’une roue omnidirectionnelle, et cela nous permettra une meilleure capacité de franchissement, et une meilleure stabilité, au prix d’un peu plus de frottement, et donc d’une efficacité énergétique plus faible. Cette configuration peut en outre facilement être convertie en une configuration à chenilles, et vice-versa.

Les autres solutions sont toutes deux très intéressantes, la solution des 2N roues motrices étant plus coûteuse en moteurs et en énergie (potentiellement), mais très efficace. Sur un terrain très accidenté ou difficile, la solution la plus efficace sera celle des chenilles. Sur un terrain moins difficile, les 2N roues motrices peuvent fournir une meilleure efficacité énergétique, une vitesse de pointe plus élevée, tout en conservant une bonne capacité de franchissement, mais pour un coût plus élevés, non seulement pour les moteurs, mais aussi pour les capteurs nécessaires pour chaque moteur.

Dans le contexte d’un petit rover, afin de maintenir des coûts acceptables, et une bonne versatilité de l’ensemble, le système final embarquera probablement des chenilles entraînées par deux moteurs.

Maintenant que nous avons déterminé l’architecture globale du système de propulsion du rover, il nous faut nous intéresser à la source d’énergie de celui ci. Nous nous penchons sur ce sujet dans le billet suivant.