J’ai construit divers robots “comme ça”, sans planifier grand chose, pour apprendre, comme R.Cerda,pour lequel j’ai fait un tuto, ou encore mon projet de robot à haute autonomie. Aujourd’hui, je me dis que je peux progresser de façon plus structurée, plus scientifique, un peu comme un programme de recherche (c’est mon métier après tout ).
Je démarre donc mon programme REA, pour Rover d’Exploration Autonome. Le but est de faire un rover capable de se déplacer seul dans un environnement donné de façon autonome. J’ai déja réalisé certains des objectifs de ce programme dans quelques uns de mes projets précédents. Cependant, je souhaite pour ce projet tout reprendre depuis le début, et mener les évolutions comme un projet de recherche classique (en m’inspirant, sans bien sur prétendre approcher ce niveau, du programme MER –Mars Exploration Rover— de la NASA).
J’aborde ce projet sous deux axes :
- L’axe scientifique;
- L’axe pédagogique.
Objectif Scientifique du programme REA
Pour l’axe scientifique, soyons modeste, je ne vais probablement rien “inventer” de nouveau. Je l’aborde toutefois comme si c’était le cas, comme si j’étais une agence spatiale ou autre, ayant pour objectif de produire un rover autonome pour exploiter divers lieux (sauf que pour moi, ce sera le jardin, ou le toit ). De mon point de vue, cette approche est plus amusante, et sera également plus distrayante pour les lecteurs. Nous prétendrons donc que rien n’a été fait jusqu’ici et nous demanderons comment résoudre chaque problème comme si nous inventions la solution.
Objectif pédagogique
L’axe pédagogique quand à lui existera du fait de ma volonté de tout documenter, pour pouvoir créer des guides, tutoriels, fiches, etc. J’ai en effet créé un club informatique/robotique à ma fac, et j’ai pu intégrer à mes enseignements en Licence 1 quelques séances de programmation de robots (les ZUMO, de pololu). Cette approche de la programmation a beaucoup intéressé les étudiants (étudiants en informatique, je précise. Ils n’ont donc pas de cours ou de connaissances en robotique. Les robots me servent de support pour l’apprentissage à la programmation), et certains s’intéressent aux robots. Je veux donc développer des ressources leur permettant de se lancer dans la partie “hardware” du robot, puisqu’ils n’auront vu que la programmation de ceux ci. D’autre part, je pense que quelques tutoriels complets et explicites sur la réalisation de robots pourront sans doute intéresser les novices, et puisque je suis amené à exploiter pas mal de matériel (j’ai un sacré stock de pièces, probablement de quoi faire entre 10 et 20 robots indépendants en même temps, et beaucoup de variantes), mes tests de tel ou tel équipement pourraient intéresser des personnes moins débutantes.
En bref, je vais donc m’atteler à cette tâche ces temps ci, de façon continue (c’est un projet au long cours), en prenant soin à chaque fois de mettre des explications claires et détaillées, et en justifiant tous mes choix.
Je partirai donc du principe que quelqu’un sans connaissance préalable dans le domaine pourra suivre le premier tutoriel, et qu’au pire, un tutoriel donné ne nécessitera que la lecture du/des précédents pour pouvoir suivre.
Donc le lecteur ne sera pas laissé avec des zones d’ombres, à devoir faire des recherches sur le net pour comprendre. Bien entendu, je ne pourrai pas tout détailler en profondeur, par exemple si on utilise du SPI ou de l’I2C, on verra comment s’en servir (quand on en aura besoin), mais pas forcément le détail précis du protocole. J’essaierai toutefois de mettre des liens pour ceux qui sont intéressés par les détails (j’ai trouvé de très bons articles sur sparkfun :I2C et SPI expliquant ces protocoles par exemple).
Progression du projet dans le temps
Logiquement, les capacités et les performances des robots iront en s’améliorant, mais ceux ci deviendront de plus en plus complexes. Je m’attellerai toutefois à avoir une approche modulaire : on essaiera pour un problème une solution spécifique, dont on estimera la qualité, avant de l’exploiter ou non. Divers prototypes de robots ressortiront de tout ça, ce qui fait que selon ce que l’on recherche, il sera possible de s’orienter vers telle ou telle approche.
Je vais dans tous les cas significativement augmenter la qualité des articles/guides, qui jusqu’ici étaient un peu fouillis, afin d’être clair, concis, et d’avoir une structuration facilement compréhensible dans la progression. Les précédents tutoriels traduisaient simplement ce que j’étais parvenu à obtenir, sans plus. Ici, nous verrons pourquoi choisir telle ou telle solution, des alternatives, et nous progresserons dans le programme en résolvant les problématiques au fur et à mesure.
Feuille de route du programme REA
Dans l’immédiat, les premières étapes seront de s’intéresser à :
- La propulsion du rover;
- Le choix de la motorisation;
- La transmission de la puissance (roues, chenilles?);
- Les circuits de commande;
- L’alimentation en énergie;
- La gestion de capteurs;
- la conception d’un châssis
- La programmation d’algorithmes d’évitement d’obstacles.
Ces 6 premières étapes permettront de disposer d’une base simple, fonctionnelle, et extensible. On notera encore une fois que j’ai déjà traité en partie ces points dans d’autres tutoriels, mais le but sera ici d’aller au fond des choses, et d’être capable d’adapter totalement la base aux contraintes voulues (par exemple, je ferai de petits rovers, mais normalement, la méthodologie sera applicable pour un rover de 10kg, en ajustant les composants en conséquence). Ces problématiques me semblent de toutes façons constituer un noyau de fonctionnalités nécessaires à tout rover autonome.
Par la suite, je me pencherai sur des problématiques plus avancées, telles que la mesure du déplacement effectué, le positionnement, la cartographie de l’environnement, la gestion de l’énergie, la recharge automatique du rover, les communications sans fil, etc.
[…] Programme REA : Rover d’Exploration Autonome – introduction […]
[…] Programme REA : Rover d’Exploration Autonome – introduction […]