Affichage des articles dont le libellé est Cours et méhodes. Afficher tous les articles
Affichage des articles dont le libellé est Cours et méhodes. Afficher tous les articles

mercredi 12 mars 2008

LEGO Technic Tora no Maki (livre de construction)

Il y a quelques mois est sorti un superbe ouvrage, bien qu'au courant, je n'en ai pas parlé, je rattrape donc ce vilain retard.

L'ouvrage se nomme LEGO Technic Tora no Maki et est l'œuvre du japonais SOGAWA Yoshihito !

Mais alors qu'est-ce que c'est? Et bien c'est un document PDF de 215 pages proposant plus de 1700 constructions. Attention, il ne faut pas penser qu'il s'agit de modèles à proprement parler, mais simplement de milliers d'idées mettants en œuvre des centaines de techniques mécaniques, électriques, pneumatiques, etc.

En plus, ce chef d'œuvre s'affranchit de toutes les barrières linguistiques puisqu'il est presque totalement fait d'images et de schémas. Tout cela avec une propreté et une lisibilité incroyable.

Voici le sommaire, d'une grande clarté (qui en plus est interactif, il vous suffira de cliquer sur une case pour aller directement à la bonne page):




Et quelques pages tirées au hasard, pour vous mettre l'eau à la bouche:





Allez, j'arrête de vous torturer, le document peut être téléchargé ici, il pèse près de 80Mo.
Aussi, pour la somme de 10 Dollars (sans les frais de ports), Yoshihito peut vous faire parvenir une version papier format A4 (je n'ai pas d'informations sur le papier utilisé, le type de reliure, etc).

Ce document est un petit must et une boite à trésor pour n'importe qui, MOCeur ou non, de part sa richesse et aussi sa gratuité sur le web. Il faut toujours l'avoir dans un coin de son PC.

On peine à imaginer le travail de montage, de photographie et de PAO qu'il y a derrière ce fichier.
C'est aussi pourquoi je vous demande de respecter les droits d'auteurs liés:
• If you put this book up on a server, please drop me a note. I will contact you with information such as when a new version is available. • Copy and publication rights for this book are the property of ISOGAWA Yoshihito. (Note: Japanese names are written with the family name first, followed by the given name.) • Please do not modify or split up this book. • Please do not sell this PDF file or printouts of the contents without permission. • There are no current plans to publish this book. This may change in the future.

Comme dit dans la dernière ligne, il y aura des versions futures, et c'est avec plaisir que je vous en parlerai.

Moune

mardi 9 octobre 2007

Cours et méthode. Leçon n°5: La conduite d'un robot

Aujourd'hui je vous propose le dernier chapitre du guide de la constructions de robots.
C'set le dernier de cette série, mais les articles cours et méthode ne sont pas morts, non non :d.
Sans plus tarder, au travail!

5 la conduite d'un robot
La plupart des robots, en particulier ceux utilisés dans l’industrie, sont immobiles. Ils peuvent avoir des pinces pour prendre des choses et des bras pour déplacer ces choses d’un endroit à un autre, mais ils n’ont pas de jambe. A la place, ils dépendent d’autres machines spécialisées dans le convoyage pour leur apporter les pièces dont ils ont besoin ainsi que pour récupérer le fruit de leur labeur. Les robots de la FLL sont très différents en ce sens qu’ils ont besoin de se déplacer. Ils doivent se rendre à certains endroits et ils ont des scientifiques à sauver(allusion à une des épreuves de la FLL 2000), tout cela sans interventions extérieures ou télécommande. On appelle ce type de robot des Véhicules Autonome Robotisés (ARV), et ils font partie des robots les plus complexes à construire et à programmer.

La partie d’un ARV qui lui permet de se déplacer est appelée la base mobile ou plateforme mobile. Les bases mobiles les plus simples sont des plates-formes avec des roues qui ont pour but de déplacer le robot sur un sol plat de laboratoire. Quand les robots sortirent du laboratoire, des robots du style automobile ou tank devinrent populaires. De nos jours, les ARV roulent sur les autoroutes à 90km/h, plongent dans les plus profonds océans, explorent les cratères de volcans en activité, effectuent des vols de surveillance en territoire ennemi ou baguenaudent à la surface de la planète Mars.

Les bases mobiles des robots FLL ne sont pas encore exotiques à ce point. Leur environnement est plus proche de celui d’un sol de laboratoire que de celui du cratère d’un volcan en éruption. Les plates-formes sur roues sont les plus nombreuses, mais les chenillées sont populaires aussi. Certaines sont « toutes roues motorisées » pour leur permettre de grimper les côtes ou traverser des terrains irréguliers. Peu d’équipes ont tenté de construire des plates-formes de type automobile avec des roues avant directrices, et la plupart des robots utilisent une sorte de direction différentielle où les virages sont pris en faisant tourner les moteurs situés de chaque côté à des vitesses différentes.

Le succès de votre robot dépend principalement de la bonne adéquation de la plate-forme mobile à la stratégie globale que vous avez déterminée. Qu’est-ce qui est le plus important, la vitesse ou la précision? Se déplacer en ligne droite parfaite est-il réellement nécessaire? Souhaitez-vous pouvoir effectuer des manoeuvres serrées? Les capacités de remorquage ou d’emport sont-elles cruciales? Y-a-t-il des obstacles, le terrain est-il irrégulier, présente-t-il des variations? On doit se poser de nombreuses questions avant de commencer à construire.

5.1 La conduite différentielle
Les bases mobiles à conduite différentielle furent très populaires pour équiper les premiers robots. Deux roues d’un même essieu sont motorisées et contrôlées séparément, fournissant motorisation et direction. Les changements de direction sont réalisés en modifiant la vitesse d’une roue par rapport à l’autre. Faire tourner la roue gauche plus vite fait tourner le robot à droite. Faire tourner la roue droite plus vite fait tourner le robot à gauche. Si les roues tournent en sens inverses, il est possible de tourner sur place, ce qui est impossible pour une automobile. L’exemple de tous les jours sans doute le plus connu d’une plate-forme mobile à direction différentielle est la chaise roulante.

Illustration 5-1. Un robot a conduite différentielle

Les robots à conduite différentielle sont très appréciés dans la FLL. Je suis persuadé que c’est dû à leur présence dans la Constructopedia. De plus, c’est vraiment une bonne plateforme pour les robots de compétitions. La conduite différentielle est facile à concevoir et à construire, ce qui en fait un choix remarquable pour les équipes composées d’enfants. Ils sont agiles et relativement compact, ce qui leur permet de manoeuvrer dans des espaces réduits. Comme ils sont motorisés par deux moteurs, ils sont puissants et capables d’affronter des plans inclinés qui arrêteraient d’autres robots.

5.1.1 Roues-pivots
Parce qu’il est difficile de construire des véhicules stables sur deux roues uniquement, la plupart des robots à conduite différentielle possèdent une ou plusieurs roues non motorisées pour stabiliser l’ensemble. Ces roues, habituellement nommées roues-pivots, roues folles ou roues « jockey », ont pour fonction d’empêcher le robot de basculer tout en n’ayant aucun impact sur les capacités motrices ou directrices. Contrairement à l’axe des roues motrices qui sont fixes, les roues-pivots doivent être en mesure de se diriger dans tous les sens. Les roues-boules sont parfaitement adaptées à cela. L’utilisation de patins est aussi une bonne solution si le sol est lisse et glissant.

Illustration 5-2. Roues pivotantes

Mais Lego ne produit pas de roues-boules et les patins sont rarement appropriés. Dès lors, les robots FLL à conduite différentielle utilisent des roues-pivot. Une roue-pivot se compose de une ou plusieurs roues reliées à un support pivotant. Le support est courbé afin de décaler l’axe de la roue par rapport à l’axe du pivot support. Ce décalage permet de produire un effet d’auto-alignement. Quand votre robot change de direction, la roue-pivot se replace automatiquement dans l’axe du déplacement.

Illustration 5-3. Les roues-pivots s'auto-alignent

Lorsque le robot avance, le sol se dirige vers l’arrière sous la roue-pivot. Les frottements entre la roue et le sol engendrent une force qui tire la roue vers l’arrière. Si la roue-pivot est correctement placée, ceci entraîne la rotation de la roue autour de son axe. Si la roue-pivot n’est pas orientée dans le bon sens, cela engendre un couple d’alignement qui tend à faire pivoter la roue. La grandeur du couple d’alignement est proportionnelle au décalage de la roue-pivot. Les roues-pivots avec un décalage important possèdent un couple d’alignement plus élevé pour le même angle. Elles sont plus stables et suivent mieux le parcours que les roues-pivots avec un petit décalage.

Illustation 5-4. les roues-pivots engendrent une force de déviation dès lorsqu'elles s'alignent

Toutefois, en augmentant le décalage de pivot, vous augmentez aussi la dérive, ce qui peut ne
pas être souhaitable pour votre robot. La dérive est un phénomène qui vous est sans doute familier car vous l’avez expérimenté avec les chariots de supermarché. La dérive c’est la tendance lorsque vous effectuez un virage qu’ont les roues-pivots situées à l’avant du chariot de le dévier avant qu’elles ne s’alignent. C’est particulièrement flagrant si le chariot est lourdement chargé ou juste après un virage très serré ou un demi-tour. Si cela est peu ennuyeux avec un chariot de courses c’est plus gênant pour un robot. Une dérive excessive gêne le contrôle de votre robot et fausse les mesures de distance et d’orientation. Quand la roue-pivot n’est pas alignée dans le sens de la marche, elle engendre une force de dérive, tout comme les roues directrices d’une automobile engendrent une force qui dévie la voiture lorsqu’on tourne. Si les frottements entre la roue et le sol sont trop importants pour qu’il y ait glissement, la force se répercute sur le chariot et celui-ci s’écarte de sa trajectoire. Au fur et à mesure que l’ensemble s’aligne, la dérive s’amenuise jusqu’à disparaître.

5.1.2 Configuration de roues
Les premiers robots à conduite différentielle possédaient souvent une configuration de roues en diamant comme le montre l’Illustration 5-5. Ces robots employaient des encodeurs (détecteurs de rotation) sur les deux roues motrices pour mesurer les distances parcourues ainsi que pour vérifier le sens de la marche. Mais cela impliquait un contact parfait des roues motrices avec le sol. Grâce aux roues-pivots à l’avant et à l’arrière, le centre de gravité était idéalement placé sur les roues motrices qui soutenaient alors presque intégralement le poids du robot. Cela maximisait la motricité et minimisait les forces d’auto-alignement des roues-pivots.

Illustration 5-5. Configuration en diamant des roues

La configuration en diamant marchait très bien au labo, se faufilant sur les sols lisses et plats, mais beaucoup moins bien en dehors. Pour obtenir la stabilité à l’arrêt (le robot ne doit pas se renverser quand il ne bouge pas), un véhicule doit avoir au moins trois roues au sol, ne se situant pas sur un axe commun. Si le véhicule a plus de trois roues, il n’est pas garanti que ces roues touchent le sol à chaque instant. Un problème se pose donc avec la configuration en diamant. Lorsqu’une des roues-pivots monte sur un obstacle, une des roues motrices reste alors perchée dans les airs. Quand cela se produit, le robot tourne de manière incontrôlée. Après un moment la roue-pivot descend de son obstacle mais vous avez alors perdu des renseignements sur la position du robot et sur la distance qu’il a parcourue.

Une configuration des roues en triangle règle ce problème, mais il perd les avantages de la configuration diamant. Avec seulement trois roues, vous êtes sûr qu’elles resteront au sol. Malheureusement, avec trois roues, vous ne pouvez plus placer le centre de gravité au-dessus des roues motrices de manière idéale. Et une partie du poids est soutenu par la roue-pivot. Pour compenser, les concepteurs de robots déplacent le CG le plus loin possible de la roue-pivot vers l’axe des roues motrices. On peut aussi éloigner la roue-pivot des roues motrices.

Illustration 5-6. Configuration triangle des roues

La roue-pivot peut être placée aussi bien devant que derrière les roues motrices. Un robot à conduite différentielle tourne autour d’un point situé au centre de l’axe des roues motrices. Placer la roue-pivot à l’avant rend le robot instable dans les virages. Si la roue-pivot est à l’arrière, il sera plus stable.

5.1.3 Les directions
Un robot à conduite différentielle tourne en modifiant les vitesses de rotations des roues motrices. Si la roue de gauche tourne plus vite, le robot tourne à droite, si elle tourne plus
vite à droite, le robot tourne à gauche. Dans son article pour le Club de Robotique de Seattle, G. W. Lucas(“Using a PID-based Technique For Competitive Odometry and Dead-Reckoning” par G. W. Lucas www.seattlerobotics.org/encoder/200108/using_a_pid.html ) montre que les roues d’un robot à conduite différentielle suivent des parcours circulaires et concentriques lors des virages. Ceci est décrit par le croquis ci-dessous.

Illustration 5-7. Le rayon de courbure est déterminé par la voie et les vitesses relatives de rotation des roues


Si l’angle de virage (A) est mesuré en radians alors les longueurs d’arcs L1 et L2 peuvent être calculées selon :

Avec un peu d’algèbre on peut définir le rayon de courbure (R) comme une fonction de la
voie (B) et des longueurs d’arcs (L1 et L2).

Si nous avons un robot à conduite différentielle avec une voie de 10 cm, quel est le rayon de courbure si la roue intérieure parcours 45 cm par minute et si la roue extérieure à 60 cm/min? De combien est le déplacement du robot s’il maintient cette vitesse pendant 10 secondes?

Il y a plusieurs façons de résoudre ce problème, mais peut être le plus facile est-il de calculer la distance que parcourt chacune des roues durant ces 10 secondes et d’utiliser alors ces valeurs pour calculer le rayon de courbure.

Maintenant que nous connaissons le rayon de courbure, il est facile de calculer l’angle de virage. L’angle de virage est égal à l’angle de parcours du robot.


Connaissant les distances parcourues par chaque roue, nous pouvons calculer la nouvelle position du robot. Des équations semblables peuvent être employées pour savoir de combien le robot a bougé dans les directions nord/sud et est/ouest. Si nous écrivions un programme qui calcule en continu l’orientation et la position du robot à partir de la vitesse de rotation des roues, nous ferions de l’odométrie. L’odométrie est une technique de navigation où les détecteurs de position des roues sont employés pour déterminer la position et l’orientation du robot. Presque tous les robots mobiles au sol utilisent l’odométrie comme système de navigation.

5.1.4 Une conduite plus facile
Les équations odométriques qui viennent d’être discutées nécessitent la connaissance de la position de chaque roue motrice. Cela rend difficile l’usage de l’odométrie pour votre robot FLL. Le détecteur de rotation est le meilleur dispositif pour connaître la position d’une roue or le kit défi n’en propose d’un seul. Une solution est d’utiliser un détecteur de rotation constitué d’un capteur de lumière ou de contact. Des équipes l’ont fait et cela marche assez bien (et ils ont gagné des points de créativité et de conception). Une autre solution est de repenser l’équation odométrique et de la faire fonctionner avec un seul détecteur de position.

Illustration 5-8. Pivoter autour d'une roue

L’Illustration 5-8 montre le mouvement pour un rayon de courbure nul. La roue intérieure est bloquée sur sa position et la roue extérieure tourne autour d’elle. Comme la roue intérieure ne tourne pas elle n’a pas besoin de détecteur de rotation. L’angle de virage est calculé en utilisant simplement les valeurs de la voie et de la vitesse de la roue.

5.1.5 La marche en ligne droite
Un problème que l’on rencontre couramment avec les robots à conduite différentielle, c’est qu’on a du mal à les faire marcher droit. Les robots à conduite différentielle sont extrêmement sensibles à la vitesse relative des deux roues motrices. Même une petite différence de vitesse conduit le robot à se déplacer suivant un arc de cercle. Cette tendance à dévier peut être réduite en suivant des bonnes pratiques de construction, en répartissant correctement les masses et en choisissant bien les moteurs. Mais une marche parfaitement droite nécessite un mécanisme qu’on pourrait qualifier de correcteur, qu’il soit mécanique ou logiciel.

D’abord, il faut savoir si aller parfaitement droit est important ou pas. Si votre stratégie de compétition est de faire des virages parfaits et de suivre des lignes tracées au cordeau, alors votre équipe risque d’être déçue. Les équipes qui gagnent savent se contenter de robots qui vont « à peu près droit » et se reposent sur d’autres stratégies pour compenser les erreurs de navigation. Ces robots auto-correcteurs sont plus à même de gérer les inévitables erreurs de positionnement au départ ainsi que les chocs et les patinages imprévus qui se produisent durant les compétitions.

5.1.5.1.1 Solution logicielle
La plupart des robots à conduite différentielle utilisent des encodeurs (détecteurs de rotation) pour mesurer la position de chaque roue. Pour aller en ligne droite, le logiciel du robot contrôle en permanence les valeurs des encodeurs et ajuste la vitesse des moteurs gauche et droit pour conserver des valeurs égales. Cette méthode est difficile à mettre en place avec le seul détecteur de rotation disponible dans le kit défi de la FLL.

5.1.5.1.1 Solutions mécaniques
Dans le domaine de l’automobile, on souhaite souvent limiter les différences de rotations entre les roues gauches et droites. Un exemple classique est celui des voitures qui s’embourbent dans la neige. J’ai souvent vu des voitures coincées dans la neige, avec une roue qui patine sur la glace et l’autre roue qui reste immobile sur le sol sec. Le différentiel fourni le même couple moteur à chacune des roues, mais comme l’une d’elle peut tourner librement sur la glace, le couple maximum fourni à l’autre roue est très faible .

Beaucoup de voitures sous les climats nordiques sont équipées d’un mécanisme permettant de limiter le glissement du différentiel pour résoudre ce problème. Avec un réducteur de glissement, le différentiel fournit le couple à la roue qui tourne le moins vite. Ceci est souvent réalisé à l’aide d’une sorte d’embrayage qui convertit le glissement en couple.

Illustration 5-9. Limiteur de glissement simple Lego

La plate-forme de conduite différentielle de l’Illustration 5-9 utilise un morceau de tuyau plastique annelé en guise d’embrayage pour limiter le glissement entre les deux roues motrices. Quand une des roues tourne plus vite que l’autre, les axes tournent dans le tuyau. Les frottements entre les axes et le tuyau transmettent du couple de la roue la plus rapide vers la moins rapide. Plus les axes sont enfoncés dans le tuyau et plus le couple transmis est important. Le robot n’ira pas parfaitement droit, mais la déviation sera grandement réduite.

Question: Quelles autres pièces Lego pourraient être utilisées en guise d’embrayage pour limiter le glissement entre les roues motrices?

Parfois un limiteur de glissement ne suffit pas. Pour éliminer le glissement entre les roues motrices, certains véhicules 4x4 sont équipés d’un blocage de différentiel. blocage de différentiel possède un interrupteur qui lui permet de fonctionner comme différentiel normal, ou de le contraindre de fonctionner comme un arbre simple.

Illustration 5-10. Un blocage de différentiel

Le chapitre sur les engrenages nous a appris qu’un différentiel peut être utilisé pour déterminer la différence de vitesse entre deux roues en inversant le sens de rotation d’un des arbres d’entrées. C’est la base d’un blocage de différentiel Lego. En empêchant le différentiel de tourner comme sur l’Illustration 5-10 l’essieu moteur réagit comme si les deux roues étaient fixées à un seul et même axe. En débloquant le différentiel, les roues peuvent de nouveau tourner indépendamment.

5.1.6 Conduite à patinage différentiel
La conduite à patinage différentiel, que l’on appelle « skid-steer », est une variante de la conduite différentielle. Elle est employée par les véhicules à chenilles (comme les tanks), mais parfois aussi par des plates-formes à 4 ou 6 roues (comme le Bobcat). Dans ce cas on n’utilise pas de roue-pivot et toutes les roues sont motrices. Les roues gauches sont reliées à un moteur, celles de droites à un autre.

Cette configuration de conduite change de direction par patinage des roues. Une conséquence directe est que l’on ne peut pas effectuer de navigation par odométrie simple. Pour cette raison, la conduite par patinage différentiel est réservée aux opérations robotiques télécommandées. Des roues non motrices destinées aux mesures peuvent être ajoutées pour une navigation odométrique lors des opérations autonomes.

Illustration 5-11. Deux robots à conduite par patinage différentiel

Beaucoup de robots à conduite par patinage différentiel ont participé à la FLL ces dernières années et plusieurs ont plutôt bien fonctionné. Les équipes qui ont gagné avaient développé des stratégies pour maximiser les forces de leur robot et minimiser leurs faiblesses. Ces robots à conduite par patinage différentiel sont de bons grimpeurs et se comportent mieux que bien d’autres sur terrain accidenté. Ils sont aussi manoeuvrables que les robots à conduite différentielle simple mais sont moins sujets à des déviations indésirables. Et l’impossibilité de navigation par odométrie n’est pas un souci si vous pouvez suivre une ligne au sol ou choisir uns stratégie de navigation par des repérages du terrain.

5.2 La direction frontale
La direction frontale est le type de direction commune aux automobiles. Dans ce type de direction pour robot, il faut un moteur pour la propulsion et un pour la direction. Le fait de découpler la direction et la propulsion rend le contrôle plus facile que dans le cas d’une conduite différentielle où la vitesse de chaque roue doit être mesurée et contrôlée minutieusement. La direction frontale fournit une odométrie précise, tout en offrant la traction et la garde au sol nécessaires à la conduite tous terrains. Elle est donc communément choisie pour les véhicules autonomes d’extérieur.

De manière générale, la conception d’un robot à direction frontale est plus difficile que celle d’un robot à conduite différentielle. Tout d’abord il lui faut un différentiel pour transmettre la puissance du moteur aux roues. Il faut ensuite un train d’engrenage en guise de réducteur pour amplifier le couple de ce moteur unique. Enfin, le mécanisme de direction est de conception complexe si l’on s’en tient aux pièces disponibles dans le kit RIS. Par chance, il y a de nombreux exemples de direction frontale sur le web. Une recherche rapide sur LUGNET mène à plus de 100 véhicules différents à direction frontale.

L’Illustration 5-12 montre deux robots à direction frontale. Celui de gauche utilise des couronnes dentées et des roues dentées droites pour faire pivoter les roues avant. Celui de
droite utilise un système à crémaillère avec un pignon tout comme la plupart des voitures qui roulent sur nos routes aujourd’hui. Il utilise une crémaillère spéciale qu’on trouve dans les boîtes Technic, mais un mécanisme semblable peut être réalisé avec les crémaillères 1x4 disponibles dans le kit RIS.

Illustration 5-12. Deux robots à direction frontale

5.2.1 Les virages
Un robot à direction frontale possède un rayon, de braquage bien défini. Contrairement au robot à conduite différentiel, il doit se déplacer (avancer, reculer) pour tourner. De tels systèmes sont dits non-holonomiques. Dans un robot non-holonomique, un ou plusieurs des degrés de liberté (avancement, position) ne peut pas être contrôlé indépendamment. Cela rend la prévision des mouvements difficiles car chaque avancée s’accompagne d’une modification de la position latérale. Les véhicules non-holonomiques sont difficiles à manoeuvrer dans des espaces réduits. Vous savez combien il est difficile de faire un créneau en voiture.

Figure 5-13. La prévision des déplacements est plus difficile pour les robots non-holonomiques

Les seules informations que j’ai pu trouver sur le web concernant l’odométrie appliquée aux véhicules à direction frontale concernent l’épure de Jeantaud(Plus connu sous le nom de « correction d’Ackermann » chez les anglosaxons). Utilisé dans la majorité des véhicules que vous voyez sur la route, l’épure de Jeantaud est une modification de la géométrie du train directeur qui limite le glissement dans les virages. Lors d’un virage, les quatre roues parcourent des arcs de cercle concentriques. Comme on le voit sur l’Illustration 5-14, les roues avant d’un véhicule qui respecte l’épure de Jeantaud voient leur centre de braquage situé au centre commun de ces arcs. Cela demande à ce que la route extérieure braque selon un angle moindre que la roue intérieure.

Illsutration 5-14. L'épure de Jeantaud réduit le glissement

Sans l’épure de Jeantaud, les roues avant braqueraient d’un même angle. Cela les amènerait à se déplacer suivant des arcs de cercle dont le centre est différent. Dans les virages, cela forcerait une des roues à glisser latéralement, engendrant de fortes contraintes sur les éléments de direction et causant des dégâts aux pneumatiques. Le plus important pour des applications robotiques, c’est que vous ne pourriez pas faire de calcul d’odométrie faute de pouvoir déterminer avec précision le centre de braquage.

Bien que cela soit possible, il est difficile de construire un véhicule équipé de l’épure de Jeantaud en Lego. Vous trouverez bien des pages Internet décrivant les composants et la géométrie sur le sujet ainsi que des livres. Malheureusement, les solutions adaptées demandent des pièces de tailles spécifiques qui ne correspondent pas à celles disponibles en Lego.

Une solution plus simple consiste à utiliser une roue unique pour la direction. Les engins à trois roues dont une directrice sont confinés à des marchés restreints comme les voiturettes de golfs ou des engins de mesures de distances. Leur inconvénient majeur est leur tendance à basculer dans les virages à cause de la vitesse, ce qui n’est pas un souci dans les applications citées. Le design et l’odométrie plus simples d’une plate-forme à trois roues en font un bon choix pour un robot Lego.

Illustration 5-15. Le rayon de braquage est déterminé par l'empattement et l'angle de braquage

Comme on le voit sur l’Illustration 5-15, le rayon de braquage est déterminé par l’empattement et l’angle de braquage. C’est pourquoi les camions ont un grand rayon de braquage alors que les petites voitures ont un faible rayon de braquage.

Disons que l’empattement de votre robot soit de 15 cm et que l’angle maximum de braquage est de 30 degrés. Quel est le rayon de braquage minimum et quelle distance la roue avant aura-t-elle parcouru après un virage de 45 degrés ?

5.2.2 Les tricycles
Un tricycle est une plate-forme avec une seule roue directrice et deux roues passives arrière (ou vice versa). Bien que cela puisse sembler similaire à la plate-forme mobile à trois roues qui précède, la direction d’un tricycle a des caractéristiques uniques qui la rendent incontournable pour les applications robotiques. La plus importante d’entre elles c’est sa capacité à tourner sur place.

Illustration 5-16. Un tricycle(à gauche) et une plate-forme à trois roues à direction frontale(à droite) se ressemblent.

Comme nous l’avons vu dans les paragraphes précédents, le rayon de braquage minimum d’une direction frontale est déterminé par l’angle de braquage maximum et l’empattement, suivant la relation R = L / sin(A). Si l’angle de braquage maximum est de 90 degrés, alors le rayon de braquage est égal à l’empattement. Le robot pivote sur luimême autour d’un point qui se trouve entre les deux roues arrière.

Malheureusement, un véhicule à direction frontale ne tournera pas si sa roue avant pivote à 90 degrés. Si le véhicule bouge quand même c’est parce que la (ou les) roue avant glisse au lieu de rouler. Cela parce que la force de propulsion des roues arrière est perpendiculaire au sens de parcours de la roue frontale. Toutes les forces concourent à pousser la roue par le côté et non pas à la pousser vers l’avant. Des glissements latéraux de la roue surviennent même pour des angles notablement inférieurs à 90 degrés. Le meilleur angle que vous puissiez espérer est celui qui correspond à un centre de braquage se situant à l’extérieur des roues motrices.

Illustration 5-17. Tous le sangles de braquage sont possibles avec une direction tricycle

Pour sa part, un robot à direction tricycle voit la motorisation fixée à la roue directrice, permettant à celle-ci d’oeuvrer pour tout angle de braquage. Cela offre une manoeuvrabilité qui rivalise avec celle des robots à conduite différentielle ou à conduite par patinage différentiel.


Fin :o


C'est terminé, nous refermons ce livre de connaissances, mais pas pour toujours, peut-être que je compléterais la série cours et méthode, si ca vous a plu.
Cela ne veut pas non plus dire que les autres articles ne sont pas cultivant :o.

Moune

mardi 2 octobre 2007

Cours et méthode. Leçon n°4: L'électronique Lego(suite et fin)

Suite et fin du quatrième chapitre. Nous nous étions arrêté au 4.4

4.4 Le détecteur de lumière
Le détecteur de lumière se présente sous la forme d’une brique Lego 2 x 4 avec une LED (Diode Electroluminescente, DEL) rouge et d’un phototransistor. La LED rouge éclaire la zone se situant devant la brique et le phototransistor mesure l’intensité de la lumière réfléchie. Le détecteur de lumière renvoie une valeur entre 0 et 100%. La valeur la plus faible que je n’ai jamais mesuré est 20%, mesure que j’ai effectuée à minuit au milieu de mon sous-sol avec les lumières éteintes. Vous pouvez atteindre 100% en visant le soleil un jour clair ou en tenant le détecteur à quelques cm d’une ampoule de 100W. Dans des conditions plus classiques, les valeurs varient plutôt entre 30 et 60%.

Illustration 4-17. Le détecteur de lumière

Une de mes plus anciennes expériences avec le détecteur de lumière c’est celle où je l’ai utilisé pour faire une machine à trier les bonbons. Je voulais tirer des M&Ms en fonction de leur couleur (les marrons sont mes préférés). L’idée est simple. Utiliser le détecteur de couleur puis déplacer le robot pour le positionner au-dessus du bon paquet.

J’ai fait un robot pivotant du type table tournante autour duquel je pouvais placer des bacs pour stocker les bonbons. La chenille caoutchouc faisait un joli tapis roulant et j’ai trouvé une idée pour faire ce que j’appelais une « pompe à bonbons » qui marchait plutôt bien pour délivrer un bonbon à la fois depuis la réserve. Toute la mécanique étant en
place, il ne me restait plus qu’à rentrer les valeurs du détecteur de lumière pour chaque couleur dans le programme. Je me prenais à rêver de robots de combat mâchouillant des M&Ms marron…

(cliquez pour agrandir)
Je n’ai jamais pu faire marcher très bien cette trieuse car les valeurs pour les différentes couleurs de M&Ms sont très proches. Après avoir cherché un peu et essayé deux trois
trucs, j’ai pu trier en trois groupes : les jaunes dans un bol, les oranges et rouges dans un autre, les bleus, verts et marrons dans un troisième. Sans doute en ai-je eu assez de jouer avec ce robot, aussi l’ai-je démonté afin de récupérer les pièces. Je pense que c’est aussi ce qui arrive à de nombreuses équipes FLL quand elles essayent d’utiliser le détecteur de lumière pour leur robot. Ils songent à une idée vraiment bonne, la mettent en oeuvre pour la tester. Durant les essais, le robot ne fonctionne pas très bien ou pas de façon fiable. L’équipe réfléchit un peu, n’arrive pas à faire mieux et renvoie le détecteur dans le vrac de pièces.

Le problème que j’ai eu avec la trieuse à bonbons n’est pas la faute du détecteur de lumière. Le projet était voué à l’échec dès le départ car j’ai choisi le détecteur de lumière alors qu’il n’était pas approprié pour cette application. J’avais besoin d’une meilleure compréhension du détecteur de lumière avant de l’utiliser dans d’autres projets et pour accroître mes connaissances j’ai donc décidé de réaliser une série d’expériences.

4.4.1 Expérience n°1
Grâce à ma tentative de réalisation d’une trieuse de bonbons, je savais que la valeur du détecteur de lumière dépend de la couleur de l’objet visé. Mais il apparaît aussi que cette valeur dépend aussi de la distance au détecteur de l’objet, des écarts de taille et de forme de l’objet et des conditions de lumière ambiante. Si je voulais apprendre quelque chose au sujet du détecteur de lumière, il fallait que je limite le nombre de variables. Pour ma première expérience, je décidais d’étudier la corrélation entre la valeur lue, la couleur et la distance.

Illustration 4-18. Expérience à propose de la couleur

Pour cette expérience, je construisis une boîte faite de pièces Lego, le détecteur de lumière placé au centre de l’une de ses extrémités. La boites a des pourtours unis, un fond et un couvercle pour empêcher la lumière d’entrer et de fausser les résultats. Ensuite, je fis différentes « cibles » colorées que je pouvais placer à différentes distances du détecteur. J’ai utilisé des briques 1 x 4 pour faire les cibles car j’en disposais dans de nombreuses couleurs différentes et qu’elles permettent à d’autres de reproduire mon expérience. Pour chaque couleur différente, j’ai pris des mesures à des distances de 1, 2, 3, 4, et 5 tenons. Les résultats sont regroupés dans le tableau suivant :
4.4.1.1 Couleur
Alors que je faisais mon expérience sur les couleurs, il m’a paru évident que le détecteur de lumière ne percevait pas les couleurs comme moi. Pour moi, les briques vertes semblaient plus brillantes que les briques rouges, alors que les valeurs du détecteur étaient toujours plus faibles pour les briques vertes. En fait, les mesures pour les briques vertes, les bleues, les gris foncé et noires étaient sensiblement identiques.

La lumière est faite d’ondes électromagnétiques - vibrations de champs électrique et magnétique à travers l’espace. Il y a plusieurs sortes d’ondes électromagnétiques : certaines peuvent être ressenties (la chaleur), d’autres peuvent être vues (lumière), et certaines nous sont utiles (télévision et radio). Nos yeux perçoivent les ondes de longueurs d’ondes de 400nm (violet) à 700nm (rouge). Nous appelons cette petite partie du spectre électromagnétique la lumière visible. Notre oeil perçoit chacune des longueurs d’onde du spectre lumineux comme une couleur différente. La lumière de longueur d’onde de 700nm est le rouge; la lumière bleue a une longueur d’onde d’environ 460nm.

Illustration 4-19. Spectre de la lumière visible

Le détecteur de lumière Lego utilise un phototransistor silicium comme élément sensible. D’après Michael Gasperi, ce phototransistor est particulièrement sensible aux rouges et infrarouges, avec un pic de sensibilité autour de 800nm. Le type de LED rouge bon marché utilisé dans le détecteur de lumière émet un spectre relativement large, mais son pic d’intensité se trouve quelque part entre 650 et 750nm. Cela correspond relativement bien au phototransistor. Nos yeux sont eux plus sensible du bleu-vert au jaune (500nm – 600nm). Ceci explique pourquoi la brique verte me parait si lumineuse alors que c’est la brique rouge qui est brillante pour le détecteur de lumière. Mais je ne savais toujours pas expliquer correctement pourquoi les valeurs sont si fortes pour le jaune alors qu’elles sont si faibles pour le vert.

Illustration 4-20. Le détecteur de lumière ne voit pas comme nos yeux

Il y a deux façons d’observer des couleurs. La première consiste à émettre de la lumière dans une longueur d’onde correspondante. La LED rouge du détecteur émet de la lumière à une longueur d’onde d’environ 660nm, ce qui explique qu’elle est rouge. L’écran de votre ordinateur ou de votre télévision émet de la lumière rouge, verte et bleue. Les autres couleurs sont recréées par mélange de ces couleurs primaires. La seconde façon consiste à réfléchir la lumière dans la longueur d’onde qu’on souhaite observer et d’absorber toutes les autres longueurs d’ondes. La brique Lego rouge réfléchit la lumière rouge mais elle absorbe la lumière bleue et verte.

Illustration 4-21. Additivité des couleurs primaires

Les valeurs de mesures du détecteur de lumière de la Table 4-2 prennent du sens si vous pensez les couleurs en termes de couleur émises, réfléchies et absorbées. Avec le couvercle en place sur mon boîtier d’essai, la seule couleur émise sur la brique colorée cible est la lumière rouge émise par la LED. Les briques Lego rouges réfléchissent bien la lumière rouge c’est pourquoi elles apparaissent lumineuses au détecteur et rouges à nos yeux. Les briques vertes et bleues ne réfléchissent pas la lumière rouge et les mesures laissent croire qu’elles sont noires. Les briques jaunes et blanches donnent des valeurs élevées car elles réfléchissent non seulement le rouge mais aussi d’autres longueurs d’ondes que la LED émet.

4.4.1.2 Distance
La loi de l’inverse du carré est une brillante formule mathématique que l’on rencontre dans de nombreux domaines de la physique. Elle définit une relation entre la valeur d’une grandeur physique comme la force de gravité ou la puissance d’un son et la distance à laquelle vous vous situez de la source à l’origine de cette grandeur. La loi de l’inverse du carré pour l’intensité lumineuse signifie que l’intensité lumineuse d’une source de lumière constante décroît comme le carré de la distance à la source lumineuse. On l’exprime généralement par le rapport des intensités lumineuses l1 et l2 aux carrés des distances d1 et d2.

Cela signifie que si vous doublez la distance à une source de lumière, l’intensité observée décroît de (1/2)2 ou ¼ de sa valeur initiale. A 3, 4, et 5 fois la distance, l’intensité décroît de 1/9, 1/16, et 1/25 de la valeur initiale. En pratique, l’intensité chute dès que vous vous éloignez de la source. Puis, plus vous vous éloignez, moins le changement devient sensible.

On comprend sans surprise que les valeurs mesurées via le détecteur de lumière décroissent rapidement alors que la distance à la cible augmente. Je ne suis pas certain de savoir pourquoi les valeurs ne décroissent pas aussi rapidement que le prévoit la loi de l’inverse des carrés, mais je suppose que c’est à cause de la proximité de la LED au phototransistor (une bonne part de la lumière mesurée provient directement du voisinage de la LED). A regarder les mesures du tableau, je comprends pourquoi je n’ai jamais pu faire marcher correctement ma trieuse de bonbons. Une modification de la distance aussi faible qu’½ tenon est suffisant pour que le détecteur confonde rouge et jaune ou bleu et vert, et si une brique rouge est placée deux tenons plus loin qu’une verte, le détecteur ne peut pas les différencier.

Illustration 4-22. Valeurs mesurées de l'expérience sur les couleurs

4.4.1.3 Conclusions
De cette expérience, j’ai dressé quelques conclusions à propos du détecteur de lumière. Le plus important est que vous pouvez utiliser le détecteur pour mesurer une distance si vous connaissez la couleur de la surface réfléchissante ou que vous pouvez dire la couleur si vous connaissez la distance de la surface, mais que vous ne pouvez pas faire les deux en même temps. Pour de meilleurs résultats, le détecteur doit être employé dans des conditions contrôlées avec précautions. Une attention particulière doit être apportée à la limitation du nombre de variables.

Le détecteur ne voit pas la lumière comme les être humains. La sensibilité du détecteur ne correspond pas à la vision humaine. Ce qui vous apparaît brillant peut paraître sombre au
détecteur et la lumière qui se situe en dehors du visible peut facilement conduire le détecteur à des valeurs de 100%. Il est toujours de bon aloi de faire et d’analyser des mesures avec un détecteur avant de développer une stratégie d’exploitation de celui-ci.

J’ai aussi appris que le détecteur de lumière est très sensible à la distance entre lui et la surface réfléchissante. Quand on utilise le détecteur pour mesure des différences il doit être placé à une distance fixe de la surface réfléchissante. Même de petites variations de distances peuvent rendre les mesures inexploitables. Souvenez-vous de ça quand vous planifiez l’utilisation d’un détecteur de lumière sur votre robot.

4.4.2 Expérience n°2, lumière ambiante
Dans ma première expérience, j’ai étudié la relation entre couleur, distance et valeur de luminosité mesurée. D’après les données recueillies, j’ai déduit que le détecteur est
sensible non seulement à la couleur des objets observés mais aussi à la longueur d’onde de la lumière éclairant l’objet. Lors d’un usage normal, le détecteur et la cible ne se trouvent pas dans un boîtier fermé. Des lumières extérieures et la lumière ambiante auront des effets sur les mesures fournies par le détecteur. Pour mieux comprendre les effets de la lumière ambiante j’ai réalisé une seconde expérience.

Pour cette expérience, j’ai construit en guise de cible un mur composé de différentes couleurs et un support réglable pour poser le détecteur à des distances connues des briques. Le support est conçu de manière à minimiser son ombre portée. J’ai alors mesuré les valeurs pour chaque couleur de briques pour différentes distances sous différentes conditions d’éclairages. D’abord, en guise d’étalonnage, j’ai pris les mesures dans une pièce non éclairée de mon sous-sol (mesure à 22%). J’ai refait cette expérience dans les conditions d’éclairage d’un sous-sol « normales » (mesure à 46%) puis dans des conditions « lumineuses » que l’on rencontre en compétition (mesure à 65%). Toutes les mesures sont réunies dans la Table 4-3 .

Illustration 4-23. Expérience sur l'influence de la lumière ambiante

La première chose que j’ai remarquée en voyant les données c’est que ce sont surtout les valeurs des cibles vertes et bleues qui sont affectées par la présence de la lumière ambiante. Les lampes à incandescences utilisées pour créer les éclairages émettent dans tout le spectre visible. Cela donne aux briques bleues et vertes de quoi réfléchir, si bien qu’elles apparaissent bien plus lumineuses au détecteur que dans l’expérience précédente.

D’autre part, il est très intéressant et important de noter comment l’éclairage ambian modifie la relation entre distance et valeur de la mesure. L’Illustration 4-24 est un graphique concernant les mesures sur la brique grise suivant les trois conditions de lumière. Sans éclairage, les mesures sont semblables à celles mesurées dans le boîtier fermé de l’expérience n°1. Le graphique est quasiment plat dans des conditions d’éclairage « faible ». La lumière rouge de la LED est submergée par la lumière de la lampe 100W utilisé dans les conditions de fort éclairage. Dans les conditions d’éclairage fort, les valeurs croissent avec l’éloignement du détecteur à la cible. Aux distances plus faibles, le corps du détecteur et son support créent de l’ombre diffuse qui diminue la quantité de lumière qui vient effectivement éclairer la cible.

Illustration 4-24. Mesures sur une brique Lego grise

4.4.2.1 Conclusions
Nous concluons que le détecteur de lumière est très sensible à la lumière ambiante, ce qui est gênant car on a rarement le contrôle de ce facteur. Ce fait a paru flagrant lorsque j’ai fait une démonstration de mes robots lors d’une exposition en extérieur. Même si la démonstration avait lieu sous un parasol, j’ai passé beaucoup de temps à essayer de faire fonctionner correctement les robots avec détecteur de lumière. Et pourtant je pensais que j’avais bien protégé les détecteurs. J’aurais du tester mes robots dans les conditions de lumière prévues. Souvenez-vous de cela quand vous faites vos essais dans votre sous-sol. Il se pourrait que tout se passe très différemment lorsque vous vous trouverez sous les lumières d’une salle de tournoi.

4.5 Le détecteur de rotation
Le détecteur de rotation est utilisé pour connaître de combien a tourné un axe. Il a un manchon interne qui tourne librement et qui peut recevoir un axe. Lorsque le manchon tourne, un compteur dans le RCX s’incrémente ou se décrémente. Chaque rotation complète compte pour 16 unités, ce qui donne pour le détecteur de rotation une résolution de 22.5 degrés.

Illustration 4-25. Détecteur de rotation

Le détecteur de rotation peut mesurer 32767 unités dans chacune des directions. Si vous excédez cette valeur, le compteur bascule sur la valeur extrême opposée, passant de la valeur positive maximum à la valeur négative maximum (ou vice et versa). En pratique, cette limite est rarement problématique. Un robot avec le détecteur de rotation branché directement sur l’essieu d’une grande roue ballon de 81mm pourra parcourir plus de 500 mètres avant que le basculement ait lieu.

4.5.1 Résolution
La résolution du détecteur de rotation est habituellement bien adaptée à la mesure des distances. En utilisant la plus grande des roues Lego (la roue ballon de 81.6 mm), 22,5°
représentent un parcours de seulement 1,5 cm. Pour la petite roue ballon, le chiffre est de 6 mm. Mais cette précision peut s’avérer trop faible pour des rotations fines. Pour un robot à conduite différentielle de 10 tenons de large, un parcours de 6 mm correspond à 8 degrés d’angle.

Illustration 4-26. Utilisation d'un réducteur pour augmenter la résolution

La résolution effective du détecteur peut être augmentée en utilisant un engrenage réducteur. Par exemple sur l’Illustration 4-26, l’arbre d’entrée (celui avec la vis sans fin) tourne 24 fois pour chaque rotation de l’arbre de sortie (celui avec la roue droite). Le détecteur de rotation engendrera alors 384 unités pour chaque rotation de la roue 24t. C’est moins de 1 degré par unité. Malheureusement, cet assemblage à un jeu d’environ 2 degrés ce qui gaspille une partie de résolution.

4.5.2 Mécanique interne
Le détecteur de rotation est un intéressant petit objet. Si vous aviez la vision rayons X de Superman vous pourriez voir qu’il est constitué de deux petits opto-interrupteurs. Il s’agit
d’une petite LED qui fait face à un photo-transistor. Le photo-transistor détecte la rotation par l’intermédiaire d’une obstruction de l’espace qui le sépare de la LED.

Illsutration 4-27. L'intérieur du détecteur. A NE PAS REPRODUIRE!!!

Le manchon possède quatre petites ailettes qui s’interposent entre les opto-interrupteurs lorsqu’il tourne. L’état des opto-interrupteurs change à chaque fois qu’une ailette passe devant lui. Cela donne donc 8 transitions par rotation pour chaque interrupteur. En utilisant deux interrupteurs, ont obtient le décompte de 16 unités par rotation ainsi que la détermination du sens de rotation.

Illustration 4-28. Un détecteur de rotation à partir de pièces Lego

Vous pouvez utiliser un détecteur de lumière, une lampe et une roue-poulie pour fairevotre propre capteur de rotation. Le détecteur de lumière et la lampe font office d’opto-interrupteur. Lorsque l’axe tourne, la roue-poulie bloque ou libère alternativement la transmission de la lumière provenant de la lampe. Avec un seul détecteur, vous ne pouvez déterminer le sens de rotation mais celle-ci peut s’obtenir en regardant le branchement des commandes du moteur.

4.5.3 Erreur de décompte
Il y a eu des dizaines de messages sur LUGNET (LEGO Users Group Network) à propos d’un problème mystérieux concernant le détecteur de rotation. Il y a une croyance répandue que des erreurs de décompte se produisent si la vitesse de rotation est trop faible ou trop rapide. Les vitesses exactes sont mal définies, mais on parle de vitesses au minimum de 10 à 20 tr/min et au maximum de 1200 à 1400 tr/min. Les quantités importantes de données expérimentales disponibles sur le web semblent corroborer les faits que le détecteur de rotation est fiable dans la fourchette de vitesses comprises entre 60 et 1000 tr/min(Concernant les problèmes du capteur de rotation à faible vitesse, voir http://philohome.com/sensors/legorot.htm ).

Illustration 4-29. Repère étalon pour remise à zéro du détecteur de rotation

L’emploi du détecteur de rotation peut poser quelques soucis, il ne faut donc pas imputer automatiquement un dysfonctionnement de votre robot à ces erreurs de décompte. Les problèmes de reproductibilité sont souvent causés par des erreurs de programmation (un oubli de remise à zéro, une mauvaise interprétation des valeurs de lecture du détecteur), des erreurs de conception (résolution du détecteur inadéquate ou jeu excessif), des problèmes de contrôle (accélération et virage trop rapide), ou à des modifications des conditions initiales (quelque chose n’a pas été remis en place correctement avant d’appuyer sur le bouton de démarrage). Mais si vous rencontrez encore des problèmes après avoir vérifié que tout fonctionnait correctement, vous pourriez avoir besoin d’un repère étalon pour caler le zéro.

Le repère étalon est un détecteur secondaire que l’on va utiliser pour vérifier ou caler la valeur par défaut du détecteur principal. Le chercheur de lumière de l’iIllustration 4-29 est épaulé par un détecteur de contact en guise de repère étalon. La came liée au détecteur de lumière pivotant presse le bouton poussoir quand le détecteur de lumière se présente de face. Le contact indique au RCX qu’il lui faut vérifier la valeur du détecteur de rotation et le remettre à zéro si toutefois elle était incorrecte (le compteur devrait être à zéro dans la position « de face »).

4.6 Le multiplexage de détecteurs
Le RCX a trois sorties moteurs et trois entrées pour les détecteurs, alors même que le « kit défi » inclut deux détecteurs de contact, deux capteurs de lumière et un détecteur de rotation. Que faire de ces détecteurs en surnombre? De nombreuses équipes FLL n’utilisent simplement pas ces détecteurs surnuméraires dans leur robot. Une équipe avait eu l’idée d’utiliser un détecteur de contact pour représenter un oeil. L’oeil était sympa mais pas d’une grande aide. La solution la plus utile est de multiplexer les détecteurs.

Multiplexer consiste à relier plusieurs détecteurs au même port d’entrée du RCX. Quand cela est fait correctement, le RCX est en mesure de lire la valeur en provenance de ce port et de déterminer duquel des détecteurs elle provient. Les détecteurs de contact sont les meilleurs candidats au multiplexage. Ils peuvent être multiplexés aussi bien avec un détecteur de lumière qu’avec un autre détecteur de contact. En théorie, deux capteurs de lumière peuvent être multiplexés mais je ne saurais comment interpréter les valeurs mesurées. Les détecteurs de rotation ne peuvent pas être multiplexés à cause de la nature du signal qu’ils renvoient.

D’après la Table 4-4, nous voyons l’importance de prévoir le multiplexage dès les premières étapes de la construction du robot. Quand un détecteur de contact est fermé, aucune valeur sur un des autres détecteurs multiplexés ne peut être lue. Tous les pare-chocs ou contacteur de position ou de butée utilisant un détecteur de contact doivent être de conception « contact normalement ouvert » (à zéro).


Electronique terminée, sacré pavé n'est-ce pas?
Dans 7 jours, le dernier tenant, le chapitre cinq, qui porte le doux nom de "la conduite d'un robot".

M'sieurs dames!

Moune

mardi 25 septembre 2007

Cours et méthode. Leçon n°4: L'électronique Lego(première partie)

Allez hop, cette semaine, la première partie d'un loooong chapitre :o, sur l'électronique dans la brique :o
Pas de Nxt au programme, juste du RCX :o

4 L'électronique Lego

4.1 La brique RCX
Le RCX est le cerveau de votre robot, un petit ordinateur en forme de brique Lego. Au coeur du RCX il y a un microcontrôleur Hitachi H8 de technologie 8 bits, avec une fréquence de 16 MHz et 32Ko de RAM. Cela peut sembler anémique si on le compare aux ordinateurs de bureau modernes avec des microprocesseurs 32 ou 64 bits à 2/3GHz et 2048 Mo de mémoire, mais c’est aussi puissant que l’Apple II et significativement plus puissant que les ordinateurs qui ont envoyé l’homme sur la lune.

Le microcontrôleur est employé dans la gestion des trois sorties moteurs, des trois entrées détecteurs et du port de communication infrarouge. Les câbles électriques sont utilisés
pour relier le RCX aux moteurs, lampes, détecteur de contact, de lumière, de rotation, etc. Le port de communication est utilisé pour charger les programmes en provenance du PC et peut servir à la communication entre deux RCX.

Le RCX est alimenté par 6 piles AA. Les versions plus anciennes possédaient aussi une prise 9V pour y brancher un transformateur adaptateur électrique optionnel. Si vous avez ce type de RCX, le transformateur est vite amorti par l’économie de piles qu’il permet de faire. Un bon réflexe est d’avoir toujours un jeu de piles rechargeables d’avance. Les piles alcalines rechargeables fonctionnent bien avec le RCX(Les accumulateurs NiMH fontionnent également, mais la puissance disponible sur les moteurs est limitée par la tension plus faible.).

Note de montage : En construisant votre robot, rappelez-vous que vous devrez parfois changer les piles. Tenez-en compte dans sa conception.

Illustration 4-1. La brique programmable RCX

4.1.1 Le microprogramme
Le RCX possède une mémoire RAM de 32Ko. La majorité de cette mémoire est utilisée par le microprogramme(Le microprogramme (firmware en anglais) assure plusieurs fonctions : interprétation du langage intermédiaire du RCX, pilotage des moteurs et détecteurs, gestion de l’afficheur et des boutons, téléchargement des programmes par le port infrarouge) que vous devez charger avant de pouvoir exécuter un programme. La mémoire restante (environ 6Ko) est réservée aux téléchargements de 5 programmes au maximum. Ceci peut sembler faible, mais en réalité la plupart des programmes RCX ne dépassent pas les quelques centaines d’octets. Le reste de la mémoire sert au déroulement des programmes.

Quand on écrit un programme pour le RCX, il n’est pas constitué de code machine. Il s’agit de codes formant un langage intermédiaire qui va être interprété par le microprogramme. C’est similaire à ce qu’il se passe avec les programmes en Java sur le web qui sont interprétés par la machine virtuelle Java qui fonctionne à travers votre navigateur. L’utilisation d’un langage intermédiaire permet au RCX d’avoir un environnement fiable pour l’exécution des programmes. Votre programme ne correspondra peut-être pas à votre attente mais au moins il ne plantera pas le RCX.

Comme le microprogramme est implanté en RAM, il s’efface si le RCX est privé de ses
piles plus de quelques instants. Un condensateur dans le RCX augmente ce délai afin que
vous ayez le temps de changer les piles (15 à 30 secondes),faites attention lors du changement de piles de ne pas appuyer sur le bouton On/Off du RCX, ce serait l’effacement assuré. Si après avoir changé les piles votre RCX ne fonctionne pas normalement, il se peut que vous le microprogramme ait été effacé. Vous pouvez le vérifier en examinant l’affichage du RCX. Si vous voyez seulement le numéro de programme et la silhouette de la minifig (immobile ou marchant
comme sur l’Illustration 4-1), alors le microprogramme n’est pas chargé. C’est d’ailleurs ainsi que vous trouverez votre RCX quand vous recevrez votre kit RIS.

Note de montage : A partir du moment où le RCX est allumé, le RCX reçoit tous les messages parvenant à son port de communication infrarouge. Il y a beaucoup d’animation lors d’un concours et il est possible qu’une autre équipe puisse par mégarde effacer les programmes sauvegardés dans votre propre RCX. Vous devez faire attention à abriter le port infrarouge quand vous ne l’utilisez pas.

4.1.2 La programmation
Le RCX est programmé grâce à un logiciel spécifique que vous avez préalablement installé sur votre PC. Le programme est traduit en code pour la transmission passage par le port infrarouge (à l’aide de la tour IR). Cette méthode de programmation – écrire le code sur un type d’ordinateur pour le faire tourner sur un autre type d’ordinateur - s’appelle du développement croisé. Un ordinateur sans clavier ni écran, comme le RCX, s’appelle un système embarqué. Cela signifie que tous les participants à la FLL sont des développeurs de systèmes embarqués, familier d’outils de développement croisé. C’est quelque chose d’impressionnant à mettre sur votre CV!

Les programmes peuvent être écrits en utilisant soit le langage RCX soit ROBOLAB(Le code RCX et Robolab sont les seuls langages de programmation admis par la FLL, mais beaucoup
d’autres sont disponibles (NQC, BrickOS, LeJOS, pbForth…). Voir http://bricxcc.sourceforge.net/ ). Le langage RCX est un outil de programmation graphique fourni par Lego avec le kit RIS. Il est conçu pour les gens qui n’ont pas d’expérience en programmation. Le programme est écrit en choisissant des blocs d’instructions et en les accolant, un peu comme de vraies briques Lego La version initiale du langage RCX (v1.0 et 1.5) était très limitée. De nombreuses instructions pourtant interprétables par le microprogramme étaient absentes et la gestion des variables était minimale. Si vous souhaitez utiliser le langage RCX, assurez-vous d’avoir la version 2.0. Le langage RCX est disponible uniquement pour PC.

Illustration 4-2. Copie d'écran du langage RCX.

ROBOLAB est un produit Lego DACTA, la branche éducation de Lego. Il est basé sur LabVIEW, un environnement de programmation graphique qui est utilisé par des ingénieurs et scientifiques pour des opérations de mesure et de contrôle. Les ingénieurs de la NASA ont utilisé LabVIEW pour piloter le rover Sojourner sur Mars ! Tout comme le langage RCX, ROBOLAB utilise des métaphores graphiques pour écrire les programmes. Les icônes des commandes sont choisies dans une liste et placées sur l’espace de programmation. Les commandes sont alors reliées ensemble, indiquant le déroulement du programme.

Illustration 4-3. Copie d'écran de ROBOLAB

ROBOLAB est un outil plus puissant que le langage RCX, mais toutes ses capacités ne sont pas tournées vers la programmation de robots. Une large partie de sa fonction consiste à piloter le RCX en tant qu’instrument de mesure de laboratoire. Vous pouvez écrire un programme qui tourne sur le PC mais qui collecte les valeurs des détecteurs reliés au RCX. D’autres outils ROBOLAB sont disponibles pour recueillir et analyser les données. Il y a même des outils pour publier les mesures ou les convertir en page web. Il vous faudra beaucoup de temps pour exploiter toutes les possibilités de ROBOLAB.

Programmer avec le langage RCX ou ROBOLAB est sensiblement la même chose. Le programmeur utilise la souris pour sélectionner une commande dans une liste d’icônes
qui représentent les instructions du programme. L’icône choisie est placée dans l’espace de travail. Une sorte de connexion graphique métaphorique est utilisée pour définir le déroulement du programme (que ce soit l’empilement pour le langage RCX ou des câbles pour ROBOLAB). Quand le programmeur en a terminé avec les instructions, il ou elle utilise le menu ou la barre d’outils pour compiler le programme et le télécharger dans le RCX.

Si vous utilisez un Mac, vous utiliserez forcément ROBOLAB. Sinon le choix est surtout question de goût. Une analyse attentive des résultats des compétitions FLL qui se sont déroulées dans le Minnesota ne montre aucune corrélation entre les équipes gagnantes et le langage de programmation choisi.

4.2 Moteurs
Le moteur qui est utilisé dans le kit défi est un moteur 9 volt avec réducteur. Il possède un train d’engrenage réducteur interne de rapport 12:1. Il convertit une rotation de 4200 tr/min en une vitesse plus facilement exploitable de 350 tr/min(La vitesse typique sous charge est plus proche de 200 tr/min) sur l’arbre de sortie. Le réducteur interne augmente aussi le couple à 8.9 N.cm.

Illustration 4-4. moto-réducteur 9 Volt

Le moteur sans charge consomme normalement environ 10 milliampères (mA). Cela peut rapidement atteindre 200 mA ou plus s’il est très sollicité. Ajoutez les détecteurs qui consomment de l’électricité (détecteur de lumière et rotation), l’affichage LCD, le microcontrôleur, et vous voyez qu’un robot FLL typique consomme 600 – 700 milliampères. En s’appuyant sur des piles de bonne qualité de 2500 milliampère.heure (mAh), vous pouvez vous attendre à devoir les changer après 3-4 heures de marche.

4.2.1 Les modes
Le RCX possède trois modes de contrôle des moteurs—Arrêt, Marche et Flottant. En mode Flottant, le moteur n’est pas entraîné et peut tourner librement. Il se comporte simplement comme s’il était déconnecté.

En mode Arrêt, le RCX court-circuite en interne le connecteur de sortie. Cela donne un effet de freinage au moteur qui lui est connecté, le forçant rapidement à s’arrêter de tourner.

En mode Marche, le RCX envoie au moteur une tension +9V ou -9V pour le faire tourner dans le sens des aiguilles d’une montre ou en sens inverse. Une modulation de largeur d’impulsions (PWM) permet de fournir 8 niveaux d’alimentation.

Illustraion 4-5. Pulsations modulées

La modulation de largeur d’impulsions est une manière peu onéreuse de contrôler la puissance en sortie. Au lieu de modifier le niveau de la tension de sortie (les régulateurs de tension sont chers), le RXC envoie des pics de courant vers le moteur. Les différents niveaux de puissance sont obtenus en modulant la durée de ces pics (variation du rapport cyclique,Rapport cyclique : rapport entre la durée de la phase active et la durée totale du cycle.). Sur le RCX, le réglage de puissance minimale est zéro correspondant à une modulation des pics de 12,5% (la puissance est envoyée 12,5% du temps). Au niveau 7, la puissance est fournie de manière continue (100%).

Le moteur avec réducteur est équipé d’un petit volant d’inertie qui maintient la vitesse de rotation entre les impulsions. Vous pouvez le constater en faisant tourner à la main l’axe
d’un moteur libre. L’axe fait plusieurs tours avant de ralentir doucement jusqu’à s’arrêter. Si vous continuer à le faire tourner toutes les seconde, il tournera à une vitesse relativement constante. C’est un peu une modulation de largeur d’impulsions à la mode mécanique.

Une fois que le moteur tourne, il ne faut pas beaucoup d’énergie pour maintenir sa rotation. Cela peut représenter un problème si vous utilisez des réglages de puissance faibles pour faire tourner votre moteur doucement. Si le moteur n’est pas en charge, il tourne aussi vite quel que soit le réglage de puissance. Chaque impulsion de courant fournit assez d’énergie pour palier aux pertes par frottements qui ont lieu durant le reste du cycle. L’énergie supplémentaire est emmagasinée dans le volant d’inertie. A chaque pulsation, un peu plus d’énergie s’accumule dans le volant d’inertie, augmentant la vitesse de rotation jusqu’à ce qu’un point d’équilibre soit atteint où le couple moteur commence à baisser.

Illustration 4-6. Utilisation d'une poulie pour créer de la charge

Le contrôle de la vitesse du moteur peut être obtenu en créant une charge par frottement. Après avoir fait attention à limiter les frottements tout au long de la conception de votre robot, il est temps de s’amuser un peu. Prenons la liste des bonnes pratiques de construction et violons–les les unes après les autres. Serrez les manchons contre les barres. Utilisez trois ou quatre roues dentées au lieu d’une seule. Soyez créatif mais soyez aussi sûr que les juges connaissent les raisons qui vous ont amené à faire ces modifications. Vous ne voulez pas qu’on vous pénalise pour une mauvaise conception mécanique !

4.2.2 Les branchements
On branche les moteurs sur l’une des trois sorties du RCX par l’intermédiaire d’un câble électrique équipé d’une connexion à tenons à chacune de ses extrémités. Vous pouvez
inverser le sens de rotation du moteur en modifiant l’orientation de la connexion. Si vous
avez besoin de débrancher et rebrancher un moteur durant une compétition, assurez-vous de faire les branchements toujours de la même manière. En guise de détrompeur, vous pouvez utiliser des plaques 1x2 de couleur pour marquer les connecteurs et les ports des moteurs.

Illustration 4-7. Utilisation d'un code couleur pour repérer l'orientation des branchements

Illustration 4-8. Amélioration du montage de moteurs par entrecroisement

Le kit RIS vous procure des plaques 1 x 2 avec des rails qu’on peut utiliser en guise de cornières d’assemblage pour les moteurs. Elles procurent une possibilité de montage compact et solide des moteurs sur des barres. Les rails permettent aussi de faire un assemblage des moteurs qui permet un démontage très rapide. Le moteur sur l’Illustration 4-9 est facilement enlevé après avoir ôté la plaque 2x6 du dessous qui le maintenait en place. Cela est fort utile si la conception de votre robot nécessite que vous déplaciez un moteur durant une compétition.

Illustration 4-9. Montage du moteur avec utilisation des rails

4.3 Détecteur de contact
De tous les détecteurs Lego, le détecteur de contact est le plus simple d’emploi. Il se
présente sous la forme d’une brique 2 x 3 équipé d’un bouton poussoir. Le bouton fait
varier la résistance du détecteur quand on appuie dessus. Le logiciel du RCX transforme
ce retour du capteur en un signal binaire : 0 quand le bouton est relâché, 1 quand il est
pressé.

Ce détecteur est spécial en cela qu’il n’a pas de câble relié à lui directement, contrairement aux capteurs de rotation ou de lumière. En lieu et place, il faut le relier avec un câble électrique comme on le ferait pour un moteur. Les quatre tenons proche du bouton pressoir sont des contacts que l’on doit brancher au câble électrique. L’orientation n’a pas d’importance si le câble est relié aux quatre tenons. Vous pouvez aussi brancher le câble à deux tenons seulement mais dans ce cas vous devez le brancher comme indiqué ci-dessous.

Illustration 4-10. Connecter le détecteur de contact

4.3.1 Les pare-chocs
Un pare-chocs est un mécanisme qui indique au robot qu’il a percuté un obstacle. Quand un pare-chocs est frappé, il bouge et vient presser ou relâcher le détecteur de contact, indiquant le choc au robot. Les pare-chocs sont l’utilisation principale des détecteurs de contact dans la FLL. Peut être parce que c’est le rôle premier des capteurs de contact dans la Constructopedia, ou parce que les pare-chocs sont très utiles

Illustration 4-11. Un simple pare-chocs

L’assemblage d’un pare-chocs se compose généralement de quatre parties : le pare-chocs, un détecteur, un mécanisme de retour et une structure de soutien. Le pare-chocs est la partie qui reçoit le choc et qui le convertit en déplacement qui peut être « ressenti » par le capteur. Le déplacement est souvent un glissement (Illustration 4-11) ou un pivotement (Illustration 4-12), même si j’ai déjà vu des pare-chocs intéressants faits de pièces flexibles qui se courbent. Le détecteur est d’habitude un capteur de contact mais ont peut utiliser un détecteur de rotation o de lumière.

Illustration 4-12. Un pare-chocs qui utilise un détecteur de rotation

Le mécanisme de retour amène le pare-chocs à retrouver sa position initiale après le choc, quand l’obstacle n’est plus là. Le plus commun de ces mécanismes est le ruban élastique qui maintient le pare-chocs contre une butée. La conception de certains pare-chocs utilise la gravité dans ce rôle. Le pare-chocs simplissime de l’Illustration 4-11 utilise le ressort du bouton pressoir du détecteur de contact comme mécanisme de retour. Cette conception peu fiable, génère occasionnellement un signal de collision alors qu’aucune n’a eu lieu. L’ajout d’un ruban élastique règle ce problème.

Illustration 4-13. Un pare-chocs de conception "contact normalement fermé"

La plupart des pare-chocs peuvent être classés dans deux catégories en fonction de la façon dont il gère le contrôle des chocs. Le pare-chocs de l’Illustration 4-11 est une conception dite “Contact normalement ouvert”. Quand un choc a lieu, le pare-chocs presse sur le bouton et il ferme les contacts électriques. Dans une conception “Contact normalement fermé”, le mécanisme de retour maintient le pare-chocs contre le bouton pressoir. Un choc éloigne le pare-chocs du bouton, ouvrant les contacts électriques.

Quand un pare-chocs « contact normalement ouvert » comme celui de l’Illustration 4-11 percute un obstacle, l’impact de la collision est transmis à travers le pare-chocs au détecteur de contact. Ceci affaiblit la fixation du détecteur et après quelques chocs, le détecteur peut tomber. On peut renforcer le montage, mais cela ne ferait que transmettre le choc au reste de la structure du robot.

Dans une conception « contact normalement fermé » comme sur l’Illustration 4-13, la puissance du choc est absorbée par les rubans élastiques. De plus ce pare-chocs est à longue distance. La distance est grande entre le premier contact du pare-chocs et le contact dur direct du robot avec l’obstacle. Cette distance donne du temps au robot pour s’arrêter avant un choc réel lors d’une détection d’obstacle.

Illustration 4-14. Pare-chocs "contact normalement ouvert" amélioré

Les pare-chocs « contact normalement fermé » sont efficaces dans la détection d’obstacles évitant les chocs. Mais les détecteurs en « contact normalement fermé » posent problème dans le multiplexage des détecteurs (plusieurs détecteurs sur un seul port). Un détecteur « contact normalement fermé » maintient le port à 1 (dans l’hypothèse où il est configuré en tant que port détecteur de contact) ou 100 (dans l’hypothèse où il est configuré en tant que port détecteur de lumière). Le pare-chocs amélioré ci-dessus a tous les avantages d’un « contact normalement fermé » avec une configuration « contact normalement ouvert »

4.3.2 Contacteur de butée et de position
Les capteurs de contact ont d’autres applications que celle de pare-chocs. Les contacteurs de butée et de position vous permettent de savoir quelle est la position d’un des composants de votre robot. Ce sont des détecteurs discrets (par opposition aux détecteurs continus) en cela qu’il fournisse une information de positionnement seulement en certains points. Vous connaîtrez votre position seulement quand le détecteur est pressé. Quand il ne l’est pas, vous savez seulement où vous n’êtes pas.

Illustration 4-15. Contacteur de position et de butée

Les contacteurs de butée et de position ne se différencient que dans leur utilisation. Les contacteurs de butée sont des garde-fous qui vérifient que rien ne se trouve là où il ne devrait pas. Ce sont des mécanismes de protection qui sont utilisés quand un dommage peut survenir si un dispositif se déplace en dehors de sa zone de travail. Au contraire, un contacteur de position vous signale quand un dispositif est à l’endroit où il doit se trouver.
Le chercheur de lumière de l’Illustration 4-15 a deux contacteurs de butée et un de position, tous n’employant qu’un seul détecteur de contact ! Les deux cames inférieures font office de contacteurs de butée. Elles empêchent le poursuiteur de pivoter au-delà de +/-90 degrés. La came supérieure est le contacteur de position qui indique au RCX que le détecteur de lumière est de face. Pour pouvoir interpréter correctement les indications du détecteur de contact, le programme doit soigneusement garder trace de la position du chercheur ainsi que du sens de rotation.

4.3.3 Détecteur de rotation
Le manque d’un second détecteur de rotation est peut-être la complainte que j’ai le plus souvent entendue de la part des équipes FLL. En avoir deux semble fondé ; un pour la gauche et un autre pour la droite ou bien un pour la distance et un pour la direction. D’autres équipes ont vu ce manque comme un défi et certains trouvèrent des solutions ingénieuses.

Illustration 4-16. Un détecteur de rotation par contact

Tout comme un détecteur de rotation peut être utilisé pour créer un détecteur de contact dans un pare-chocs, un détecteur de contact peut être employé pour mesurer une rotation. Dans un détecteur de rotation, les opto-interrupteurs utilisent la lumière pour contrôler la position des ailettes montées sur rotor. Sur l’Illustration 4-16, le détecteur de contact est employé pour contrôler la position du connecteur d’axe.


On fait une pause, et la semaine prochaine on r'attaque avec le détecteur de lumière :d.

Moune