Accueil

Pourquoi un robot ?

Mais parce que c’est génial, un robot : c’est magique de créer une machine autonome et un peu intelligente. C’est un projet assez complet (donc complexe) d’un point de vue technique : électronique numérique, électronique de puissance, motorisation, batteries (gestion de la recharge), mécanique, agencement des différents composants en 3D, programmation bas niveau (microcontrôleur et drivers de périphériques) et haut niveau (stratégie). Bref, tout cela est passionnant ! Au final, avec tout ça, on peut réussir à créer un tout cohérent que l’on appellera robot.

Est-il possible d’avoir le code ?

Oui, certainement. C’est pour quoi faire ? Refaire bêtement le même robot ? Je n’en vois pas l’intérêt.
Si c’est pour s’inspirer de certains algorithmes, c’est déjà plus intéressant. Par contre, je suis un bien mauvais codeur, donc ce n’est pas ici que vous trouverez un code propre, prêt à être mis en production.

Est-il possible d’avoir des plans des cartes électroniques ?

C’est pour quoi faire ? C’est simple : je n’ai aucun plan des cartes, aucun schéma. J’utilise des plaques d’essai pastillées, et elles sont « routées » avec du fil électrique, ou du wrapping, c’est tout. Il suffit de regarder les photos.

Pourquoi ne pas réaliser/faire réaliser des cartes électroniques gravées ?

Certes, c’est beaucoup plus propre, plus fiable, mais ça n’est pas du tout évolutif. Je n’ai pas le matériel nécessaire (il est possible de faire graver ses cartes sur mesure), ni les logiciels de routage. J’estime que ça serait une perte de temps pour moi. Je veux avant tout faire quelque chose de fonctionnel. Le câblage à la main fonctionne bien si on est rigoureux. Je câble à la fois au dessus et au dessous de la chaque carte, pour gagner de la place. Attention à bien réfléchir quand on câble par le dessous : on ne peux plus souder après ! J’utilise du câble à wrapper pour le dessous, que je soude directement sur les pattes des composants. C’est uniquement pour les signaux, courant inférieur à 40mA. Attention à ne pas trop chauffer : vu la finesse du câble à wrapper, la gaine peut se détériorer très vite. Pour souder de tels fils, utiliser du fil à wrapper à gaine teflon. Pour l’aspect CEM, j’utilise des cartes pastillées avec plan de masse sur le dessus. C’est un peu plus cher, mais c’est beaucoup mieux, à mon avis. En plus, ça permet de ne pas avoir à câbler les masses. Pour ce type de montage, on pourrait aussi wrapper les liaisons de signaux. Au final, ça prend beaucoup de temps, mais je ne produis mes cartes qu’à l’unité, donc je ne suis pas certain que ça prenne plus de temps que de concevoir la carte en CAO, puis de la réaliser. Mon objectif est avant tout de faire quelque chose qui fonctionne.

Pourquoi utiliser du wrapping ? Ca n’est pas un peu ancien comme technique ?

Parce que c’est la seule solution qui permette de créer des cartes compactes (la carte logique est tout de même assez dense) sans gravure, avec de simples outils maison. C’est donc une méthode simple pour faire des circuits qui commencent à être complexes.

Ca n’est pas un peu too much d’utiliser des plaques avec plan de masse ?

Si, certainement. Ca peut d’ailleurs parfois poser des problèmes : il faut éviter de ballader une pointe de multimètre n’importe où, sinon c’est le court circuit assuré ! Mais j’aime bien : c’est joli, c’est fiable, ça évite de câbler les masses. Trève de plaisanterie, il est beaucoup plus simple pour un amateur de faire quelque de physiquement insensible aux perturbations (plan de masse, bon découplage, etc) plutôt que d’avoir à gérer dans le soft les effets d’erreurs de transmissions et autres parasites. C’est le contraire dans l’industrie de production en masse...

Combien le robot coûte ?

Pour quelqu’un qui bosse, l’investissement financier me semble archi secondaire. C’est surtout l’investissement en temps qui est le plus important. Imaginez : des centaines d’heures de travail au tarif d’un ingénieur/technicien ! Le temps de travail à investir est aussi une ressource beaucoup plus rare que l’argent. Pour un étudiant, je comprend que l’on pose la question. Je dirais dans les 500 à 600 euros, sans chercher à optimiser quoi que ce soit.

Faut-il investir dans du matériel couteux ?

Le robot, en lui-même, coûte assez cher, vu le prix des composants au détail. Je n’ai pas fait le calcul, mais ça doit être entre 500 et 600€ à priori. Après, il faut un fer à souder, un multimètre, un PC, une perceuse, une scie à métaux, une lime, et c’est quasiment tout. Le matériel de wrapping peut être nécessaire pour les cartes denses. Donc pas besoin d’investir dans du matériel couteux. Si vous avez déjà tout le matériel du parfait électronicien, ça sera tout bénef !

A quoi ça sert ?

A rien, ou plutôt à m’amuser, et c’est bien ça le plus important. Ca sert aussi à perdre le maximum de son temps libre. Ca sert à apprendre plein de chose, surtout quand on se fait chier dans son boulot.

Est-ce que tu as appris quelque chose ?

J’ai appris énormément ! Le mot est faible. Oui, on apprend plein de choses. On apprend au niveau technique, c’est sur, mais ce n’est pas tout. On prend du recul sur ses connaissances. C’est génial. Et surtout, on apprend à gérer un tel projet. On apprend qu’on est capable de faire quelque chose d’aussi complet et aussi abouti. Et il faut impérativement aller jusqu’au bout pour avoir cette sensation de satisfaction.

Combien d’heures de travail ?

Je ne sais absolument pas : quand on aime, on ne compte pas. Mais ce qui est certain, c’est qu’il faut être assidu pour que ça avance, et pour rester motivé. Alors je ne compte plus les centaines d’heures passées sur ce projet.

Pourquoi le faire tout seul ?

Ben, je ne suis pas super sociable à la base. Alors, c’est plus facile pour moi de le faire tout seul. Au moins, je peux faire tout ce que je veux : je prend mes décisions moi-même, je vais dans la direction que je souhaite, et surtout, je suis fier de réaliser ça tout seul. Mais en contrepartie, ça nécessite un boulot énorme, et rester motivé n’est pas toujours évident.

Pourquoi utiliser un PicBasic ?

Et pourquoi pas ? C’est un microcontrôleur qui intègre un interpréteur, et qui répond parfaitement à mon besoin. Je suis incapable de développer rapidement sur un (vrai) microcontroleur, des essais l’ont confirmé par le passé. Bref, je suis nul dans le domaine. Le PicBasic est extrêmement simple à programmer, et surtout très rapide à mettre en oeuvre. De plus, je ne demande pas d’intelligence ni de rapidité au microcontrôleur, il me sert juste d’interface avec les moteurs et les capteurs, donc ça me suffit amplement.

Pourquoi ne pas intégrer le décodage des tops roues dans le Pic ou la carte FOX?

Même réponse : parce que pour moi, utiliser un composant dédié (HCTL 2032), c’est plus simple. Je suis incapable de programmer une telle fonction dans un microcontrôleur. Cependant, c’est peut être possible, je n’en sais rien. L’important, c’est que ça fonctionne comme ça et que ça soit fiable. A 10 euros le composant, ça n’est pas hors de prix. Petite remarque : ce composant est un double compteur – décompteur 32 bits, et je ne l’utilise qu’en 16bits ; sans parler de la limite en fréquence que je suis loin d’atteindre. Oui, c’est largement sur-dimensionné.

Pourquoi ne pas intégrer les codeurs dans le motoréducteur ?

J’y ai pensé ! Mais dès que j’ai eu ce motoréducteur dans les mains, et que j’ai vu le jeux mécanique qu’il avait, j’ai vite compris qu’il fallait placer le capteur au plus près de ce qu’on cherche à mesurer : la rotation de la roue. Le jeu cumulé dans les 2 moto-réducteurs peut faire faire une erreur de l’ordre de 20° sur l’orientation du robot!

Pourquoi utiliser des sonars plutôt que des capteurs infrarouges ?

C’est une bonne question. Les sonars sont à la fois peu directif (cône de 30°), et capables de mesurer à distance importante. Ils sont peu sensibles à l’orientation de la cible, et gardent une précision suffisante. La grande largeur du cône de détection permet de détecter à coup sur un obstacle ; c’est le principal avantage. Pour la même gamme de prix, les capteurs IR ont des caractéristiques très différentes, qui peuvent être utiles pour d’autres circonstances. Les GPxDxx de Sharp (très utilisés en robotique amateur) sont trop directifs (cône de moins de 5°), bien que précis. Les capteurs à base de XX ne permettent pas d’avoir une bonne précision sur la distance, et ne vont pas très loin.

Pourquoi ne pas utiliser un asservissement de type PID ?

Un asservissement de type PID est compliqué à régler. De plus, beaucoup de créateurs de robot réalisent des asservissements PID directement sur les roues. Je ne trouve pas ça adapté, et surtout, c’est complexe pour moi. A la rigueur, un double PID en ro-theta serait plus logique, car agissant sur des phénomènes physiques indépendants (inertie longitudinale, et inertie de rotation).
J’utilise un asservissement beaucoup plus simple. J’asservis séparément la rotation du robot et l’avancement longitudinal du robot, en fonction de la cible à atteindre. Un seul coefficient proportionnel par consigne, pas d’aspect intégral ou dérivatif. Je sature évidemment les consignes pour rester dans le domaine du raisonnable. Exemple, pour un déplacement longitudinal pur, je sature pour une distance à l’objectif supérieure à 30 cm. Enfin, pour ne pas avoir de variations de couple trop importantes aux roues (synonyme de rupture d’adhérence), je filtre les consignes à appliquer aux moteurs, ce qui a l’avantage de donner des mouvements assez fluides, et moins saccadés, tout en conservant une parfaite convergence de la consigne.
Petite remarque en passant : la fréquence de ma boucle d’asservissement n’est que de 10Hz, alors que beaucoup d’équipes à la coupe parlent de 100 voire 1000Hz. J’ai même entendu des équipes disant qu’elles abandonnaient car elles n’arrivaient pas à faire tourner mieux qu’à 20Hz leur asservissement...
Pour un asservissement très basique et simple à régler, je trouve que les performances sont plutôt bonnes, et suffisantes pour ce que je veux faire (je ne fais pas de concours).

Les performances ne seraient-elles pas meilleures avec des moteurs Maxon à 100€ pièce ?

Je n’en sais rien ! Et je m’en fous complètement. Les performances de mon robot sont tout à fait honorables, surtout avec de petits moteurs à 5 euros pièce. Je voulais surtout faire un robot intelligent plutôt que de faire une bête de course. Et contrairement à une légende qui court sur les forums, ce type de moteurs basique (Mabushi) est facile à asservir ! Du fait de leur grand frottement, je dirais même qu’ils sont plus faciles à asservir, car ils freinent rapidement dès que la consigne devient faible, ce qui évite le dépassement de consigne et donc l’oscillation.
Quelques astuces utilisées : pour vaincre les frottements au démarrage, les consignes sont toujours offsettées. Dès que je veux 1% du couple nominal, j’envoie un PWM de 8%, qui correspond au couple de démarrage du robot. De plus, pour compenser les variations de tension de la batterie, j’applique une correction inversement proportionnelle à la tension mesurée aux bornes de la batterie. La valeur maxi du PWM varie ainsi de 20% à 33% en fonction de la tension batterie.

Est-il possible de mettre une web cam et des alogrithmes de vision sur la carte FOX ?

Certainement. Interfacer une web cam, c’est possible. Récupérer des images aussi. Par contre, l’algorithme devra être simple et bien optimisé, car les performances de la carte FOX sont très loins des PC standards d’aujourd’hui. C’est à peu près équivalent à un Pentium I à 90Mhz, ce qui est déjà pas mal. Je pense que c’est tout à fait possible, mais cet aspect ne m’intéresse pas pour l’instant.

Pourquoi Linux ?

Par contrainte !
Je ne suis ni pro linux, ni pro windows ou autre chose. Vous ne trouverez aucune image de pingouin, de renard, ou de fenêtre volante sur mon robot. Je ne connais pas grand-chose à tout ça, je connais très peu Linux et le monde du logiciel libre ; je n’ai rien à reprocher à windows, mais je n’ai pas non plus d’actions dans la société. Je ne participe pas à ce débat qui me dépasse largement. Seulement, tous les produits correspondant à mon cahier des charges (carte compacte, performances équivalentes, RAM de plus de 20Mo, facilement intégrable par un amateur) tournent tous sous linux. J’ai donc été obligé de faire avec, et surtout d’apprendre à manipuler ce nouvel OS, ce qui est loin d’être évident. Le peu que j’ai pu découvrir de Linux avec ce projet ne m’a pas particulièrement emballé : on est très loin du « plug and play ». J’aurais à la limite préféré développer sous windows CE, mais je n’ai pas trouvé de système équivalent à la Fox Board tournant sous cet OS. Tenez moi au courant si vous connaissez la perle rare. Pour autant, je ne regrette pas mon choix actuel.

Pourquoi si petit ?

Parce que plus petit veux dire plus simple, plus facile. C’est plus facile à stocker, à déplacer, à bricoler (pas besoin d’une grosse perceuse à colonne). Les composants sont aussi plus simples à mettre en œuvre (composants de puissance, batteries, alim exerne, moteurs). La mécanique est très simple et peu couteuse. Enfin, les déplacements d’un tel robot sont plus simples, du fait de son faible encombrement.

Y a-t-il moyen de faire plus compact ?

Oui, bien sur. Mais ça devient compliqué en utilisant les mêmes techniques que moi. Les soudure deviennent plus complexes à réaliser, il faut vite oublier le wrapping, la moindre maintenance peut se transformer en travail d’horlogerie, etc...
La miniaturisation n’a pas trop de limite. Je ne m’étendrai pas sur le sujet, n’y connaissant pas grand-chose, et n’y voyant pas non plus l’intérêt. 16cm de diamètre, c’est pour moi le bon compromis entre simplicité, performances, et compacité. De plus, plus on fait petit, plus il devient compliqué de garder une bonne précision sur de grandes distances pour l’odométrie.

Tu peux m’aider à programmer mon robot ?

Certainement pas. Je suis bien trop mauvais en programmation. Je n’ai jamais eu de cours sérieux sur le sujet. Et puis j’ai autre chose à faire, tout simplement.

Je comprend pas ton code, ligne 436 / j’ai copié ton robot et compilé ton code, mais ça ne marche pas. Tu peux m’aider ?

Certainement pas. Si votre but est d’avoir un robot tout fait, il en existe déjà dans le commerce. Pas besoin de copier les robots amateurs.

Je peux programmer ton robot ?

Pourquoi pas. Si tu penses pouvoir apporter une fonction intéressante que je serais bien incapable de coder, ça peut m’intéresser. Je l’ai déjà fait, en mettant le robot à disposition, à distance, pendant les phases de test. Merci aux gentils hackers de passer leur chemin...

Je voudrais bien industrialiser un tel robot. Je peux ?

Leon | 04/05/2008