• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Librebot Mag 00 Rc0
 

Librebot Mag 00 Rc0

on

  • 733 views

 

Statistics

Views

Total Views
733
Views on SlideShare
733
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Librebot Mag 00 Rc0 Librebot Mag 00 Rc0 Document Transcript

    • LibreBot Mag Numéro 00.0 – 1,00 € Sommaire Edito p1 Présentation du robot Nao p2 Jouer avec un robot Nao virtuel p3 Piloter le robot Nao avec URBI p4-5 Programmation : flexions p6 Premier programme URBI______________p7 Mini Concours _________________________p8 Edito B onjour, et merci de l'intérêt que vous avez bien voulu accorder à cette modeste publication. Ceci est le numéro zéro d'un magazine dont le but est de vous apprendre à programmer les mouvements d'un robot humanoïde, et plus spécifiquement ceux du robot Nao. Il n'est pas dit qu'il y ait d'autres numéros que celui-ci... Mais si le contenu vous intéresse, envoyer un mail pour réclamer la suite, et qui sait, il y aura peut être un numéro un :) En attendant, bonne lecture. Rédaction : Bothari GANHIR Mise en page : Bothari GANHIR Relecture : C.J. / C.P. Site Web : http://librebot.free.fr Mail : librebot@free.fr
    • LibreBot Mag n° 00.0 Présentation du robot Nao I l est peu probable que vous un robot Nao chez vous. éviter que la lecture soit ayez Pour trop fastidieuse, nous allons faire comme ci vous me posiez des questions, et moi, je vais faire comme si je connaissais les réponses ;), A quoi ressemble le robot Nao ? Ce robot ressemble à celui présenté sur la couverture, et la particularité qui le distingue des autres, c'est qu'il a des jambes, et qu'on peut donc lui apprendre à marcher. Car ce robot, c'est un peu comme un bébé, pour qu'il fasse quelque chose, il faut d'abord que quelqu'un lui ait appris à le faire. Où peut-on en acheter un ? Pour l'instant on ne peut pas, car il n'est pas encore en vente. Seuls quelques privilégiés en ont un, et ce n'est pas la version finale. Combien coûte-t-il ? On ne sait pas encore précisément, mais il coûte cher, sans doute trop cher pour que vous puissiez en acheter un sans l'aide de vos Fig. 1: Axe et orientation des articulations du robot Nao parents. Que sait-il faire ? En ce moment, les concepteurs de Nao lui apprennent à faire plein de choses, mais nous, nous allons faire comme si il ne savait rien faire, et on va tout lui apprendre nous même ! A quoi peut-on jouer avec lui ? A plein de choses, mais dans ce magazine, on va juste jouer à lui apprendre à se déplacer, comme on apprend à un bébé à marcher. Est-ce que le magazine pourra m'apprendre à lui faire faire d'autres choses ? Oui :) Le but est de lui apprendre à jouer au foot, pour qu'il gagne la prochaine Robocup ! Mais pour ça, il faut commencer par lui apprendre à marcher, puis lui apprendre à comprendre ce qu'il voit. Et comment on.... ? STOP ! Fini pour les questions, il est temps de passer aux choses sérieuses. Fig. 2: Détail de la hiérarchie des axes 2
    • LibreBot Mag n° 00.0 Jouer avec un robot Nao virtuel C omme nous n'avons pas de robot Nao, nous allons utiliser Contrôler   soi   même   le  Vous pouvez maintenant double cliquer sur le robot Nao. Cela le logiciel « Webots » qui propose robot Nao devrait ouvrir une fenêtre avec des une version virtuelle de Nao. curseurs. Chacun de ces curseurs Pour vous apprendre à contrôler contrôle un axe de rotation d'une votre Nao, j'ai préparé un fichier articulation du robot. En bougeant Téléchargement   et  « librebot_nao.wbt » aussi simple les curseurs, vous faites bouger le installation que possible. Vous pouvez le trouver dans l'archive qui se trouve robot ! à cette adresse : Nous allons utiliser la version d'évaluation gratuite de Webots. Il Utilisation  vous suffit donc de chercher de Webots « webots download » sur google, et vous devriez arriver sur la page Si vous cliquer permettant de le télécharger. Il y a dans la fenêtre des versions pour Linux, Windows de simulation et et Mac. Évidemment, comme déplacer la j'utilise Linux (distribution Ubuntu), souris en il faudra peut être adapter mes maintenant le explications à votre propre clique, vous système. pouvez déplacer votre point de Une fois que vous avez chargé le vue, et ainsi voir logiciel Webots, il suffit de le robot sous un l'installer. Sous linux, il faut extraire autre angle. le contenu de l'archive « tar.bz2 » Clique gauche, où l'on veut. Cela créé un clique droit, répertoire « webots », dans lequel il molette, chacun y a le programme webots que l'on des boutons de souhaite lancer. la souris à une action particulière. Ainsi Lancement de Webots la molette permet de zoomer plus ou moins. Ca y est, vous avez installé http://librebot.free.fr/mag/librebot_ webots ? Dans ce cas, il est temps webots_00.zip Vous pouvez cliquer sur l'icône de l'utiliser. Lancer l'application et « Revenir » pour retrouver le regarder ce qu'il se passe :) Chargez cette archive et monde et le robot tels qu'ils étaient décompressez la. Cela devrait créer en début de simulation. Webots permet d'ouvrir des fichiers un répertoire « librebot_webots ». de type « *.wbt ». Par défaut, je Ouvrez avec webots le fichier Il y a dans la fenêtre de simulation crois que « webots » ouvre le « worlds/librebot_nao.wbt » de une petite zone rectangulaire. Elle fichier « Nao2.wbt » qui se trouve cette archive. affiche ce que voit le robot. Si vous dans le répertoire « webots / bouger la tête du robot, le robot projects / contests / nao_robocup / Il s'agit d'un monde avec juste un regardera ailleurs, et le contenu de worlds ». Avec le menu de webots, robot Nao. Ce robot n'est contrôlé la fenêtre sera modifié en vous pouvez essayer d'ouvrir par aucun programme, ce qui va conséquence. d'autres fichiers « wbt » (il y en a nous permettre de lui faire faire plein dans les sous-répertoires de nous même ce que l'on veut pour « webots/projets »). mieux comprendre comment s'y La suite ? prendre. Le logiciel webots permet de Vous allez vite vous rendre compte simuler un monde en 3D. Une fois que la fenêtre de curseur est que vous avez ouvert un fichier Lancer la Simualtion pratique pour se familiariser de « wbt », vous verrez les différents façon interactive avec les éléments qui ont été mis dans ce Une fois que vous aurez ouvert le articulations du robot, mais que monde, et vous pourrez lancer ou monde librebot_nao.wbt, il faut contrôler chaque axe un par un à la suspendre la simulation. lancer la simulation (icône de main est laborieux et ne permet lecture « Run » en forme de pas de faire faire grand chose au En général, il y a dans chaque triangle). L'icone de lecture devient robot, à part le faire tomber... monde un robot qui bouge tout carré, et en bas à droite de la seul, car ses actions sont fenêtre, le temps de simulation se Pour aller plus loin, nous allons contrôlées par un programme. met à défiler. faire de la programmation ! 3
    • LibreBot Mag n° 00.0 Piloter le robot Nao avec le langage URBI P our faire faire des choses plus évoluées au robot, nous allons utiliser le langage de Ou avec UrbiRemote : Connexion Error echo("Hello World !"); [00108636] *** Hello World ! programmation URBI. Can't connect to `localhost` Cela va juste afficher la phrase on `54001`. dans votre fenêtre de commande Normalement, vous n'avez rien de Error code: -1 URBI. Évidemment, cela n'a aucun plus à installer, car le langage URBI impact sur le robot Nao, donc ce est intégré à la version de Webots n'est pas très intéressant. Mais au Cela arrive aussi après 5 minutes que vous avez installé. moins, la coutume est respectée :) de simulation (cf la version d'évaluation de Webots ne permet Grâce à URBI, nous allons pouvoir que 5 minutes de simulation, après nous connecter au robot, et le piloter en tapant des commandes. quoi il faut la relancer depuis le début). Commande d'un moteur Si la connexion se passe bien, vous Dans URBI, chaque élément du Lancer URBI devriez voir s'afficher des lignes robot a un nom. Ainsi, le moteur de précisant la version de URBI. l'articulation du cou qui permet de faire tourner la tête du robot à Ouvrez le monde gauche ou à droite s'appelle « librebot_nao.wbt », et lancez la 'HeadYaw' (attention à bien simulation webots (bouton « Run »). Une fois que la simulation Commandes URBI respecter minuscules). les majuscules et est en cours, ouvrez une fenêtre de terminal (fenêtre DOS sous Pour faire tourner la tête du robot, Une fois que vous êtes connecté au Windows), et lancez la commande il suffit d'indiquer quelle valeur robot, vous pouvez taper des suivante : d'angle le moteur doit atteindre. commandes dans cette même fenêtre de terminal (ou dans la Pour cela, il suffit de taper dans la telnet localhost 54001 ligne de saisie en bas de la fenêtre fenêtre URBI la commande suivante de UrbiRemote), vos commandes (attention à ne pas oublier le point- Cette commande permet de se seront alors envoyées au robot qui virgule à la fin) : connecter par telnet au robot de la les exécutera. simulation Webots. HeadYaw.val = 30; Avec telnet, pour quitter URBI, il Vous pouvez aussi vous connecter faut taper le caractère '^]' (le ^ Normalement, après avoir tapé puis au robot de la simulation webots en signifie qu'il faut maintenir la validé cette ligne en appuyant sur utilisant le programme touche CTRL appuyée, puis taper le la touche entrée du clavier, vous « urbiremote » (aussi appelé caractère indiqué, en l'occurrence devriez voir la tête du robot bouger. urbilab). Une version gratuite de le crochet fermé, qui nécessite sur Comme la valeur est positive, la ce programme peut être mon clavier d'utiliser aussi la tête a du tourner vers la gauche. téléchargée à l'adresse : touche 'alt gr'). Cela quitte URBI, et Essayer une valeur négative, et elle http://www.gostai.com/urbilab.html vous ramène au mode telnet, qui devrait tourner vers la droite : se quitte en tapant « quit » puis la Pour installer le logiciel, il suffit touche entrée. HeadYaw.val = -50; sous Linux de charger le programme, de décompresser Avant toute chose, une première La valeur que l'on met correspond l'archive et de lancer le programme règle à ne pas oublier : quand vous à un angle en degré. Essayons de « UrbiRemotePro.sh » contenu dans taper une commande URBI, il faut à tordre le cou du robot : le répertoire « urbiremote » qui a la fin taper un point-virgule « ; », été créé. sinon la commande ne sera pas HeadYaw.val = -180; exécutée. Une fois UrbiRemote lancé, il faut cliquer sur l'icône de connexion, On voit qu'il n'y a pas de risque de mettre « localhost » comme tordre le cou du robot. Si on serveur, et « 54001 » pour le port. demande un angle trop important, Hello World ! le mouvement va commencer, puis Si webots ou la simulation n'a pas s'arrêter une fois atteinte la limite été lancé, vous obtiendrez une de rotation du cou (en l'occurrence erreur disant : La coutume veut que la première 60°). Donc toutes les valeurs chose que l'on fasse quand on supérieures à 60 degrés (ou telnet: Unable to connect to apprend un nouveau langage est inférieures à -60°) feront que le de faire afficher « Bonjour le monde robot tournera sa tête à 60 (ou -60) remote host: Connection ! » (en anglais « Hello world ! »). degré seulement. refused 4
    • LibreBot Mag n° 00.0 mouvement associé à l'étiquette Lecture de l'angle d'une  spécifiée : articulation stop test; De la même façon qu'on peut Normalement, le mouvement de indiquer à un moteur quel angle il tête du robot devrait s'arrêter. doit prendre, on peut demander au robot quel angle a un moteur Voilà, il ne vous reste plus qu'à donné. Double cliquer sur le robot essayer tout cela avec d'autres pour ouvrir la fenêtre des curseurs, articulations pour vous familiariser et faite bouger la tête du robot en avec URBI et le robot Nao. déplaçant le curseur HeadYaw. Maintenant, vous pouvez faire afficher l'angle du cou en tapant Programme dans la fenêtre URBI la commande : Comme taper des commandes est assez laborieux, on peut les écrire echo(HeadYaw.val); [00099999] 19.99999 Mouvements continus dans un fichier et les sauver. C'est tout simplement ce type de Avec URBI, on peut aussi définir séquence de commandes qui On peut afficher un message un constitue un programme. des commandes qui tournent en peu plus explicite de cette façon : continu. Au lancement de la simulation, le echo("angle=" + HeadYaw.val); Essayez ceci (attention, pour les robot exécute automatiquement les [00099999] angle=19.99999 commandes qui tournent en commandes contenues dans le boucle, il faut mettre une virgule à fichier « nao.u » (jusqu'à la fin de la commande au lieu d'un maintenant il était vide, donc le point-virgule, sinon on ne pourra robot ne faisait rien). Mouvements lents plus taper d'autres commandes) : Ouvrez le fichier « nao.u », et taper HeadYaw.val = 0 sin:5s les commandes suivantes : Les commandes précédentes entraînent un mouvement aussi ampli:40, rapide que possible. # Mouvement continu de la tête Ceci demande au robot de bouger On peut si on veut spécifier la la tête de façon sinusoïdale autour HeadYaw.val = 0 sin:10s ampli:60, durée que doit prendre le de la position centrale 0, et avec HeadPitch.val = 0 sin:500ms ampli:20, mouvement, ce qui permet une amplitude max de chaque coté # Mouvement continu des bras d'obtenir des mouvements plus de 40°. lents. RShoulderPitch.val = 0 sin:2s ampli:120, LShoulderPitch.val = 0 cos:2s ampli:120, Pour cela il faut taper la valeur à atteindre (la consigne), suivi de Les étiquettes RShoulderRoll.val = -40 sin:3.5s ampli:55, LShoulderRoll.val = 40 cos:3.5s ampli:55, « time: » et la durée que doit Le problème de ce type de RElbowRoll.val = 45 sin:1.5s ampli:45, prendre le mouvement : commande en continu, c'est LElbowRoll.val = -45 cos:1.5s ampli:45, qu'elles ne s'arrêtent jamais ... HeadYaw.val = -60 time:10s; RElbowYaw.val = 0 sin:2.5s ampli:90, LElbowYaw.val = 0 cos:2.5s ampli:90, Heureusement, on peut donner une Avec ce type de commande, dès étiquette à nos commandes, puis que la tête a atteint l'angle voulue, faire un stop sur une étiquette le mouvement s'arrête. Sauver le fichier. Relancer la donnée. simulation. Et voilà, le robot bouge sa tête et ses bras ! Si on reprend le même exemple (relancer la simulation pour qu'il On peut même dire que vous venez n'y ait plus de mouvement), on de programmer votre robot pour lui peut lancer la commande avec faire danser la tecktonik ! Pour un l'étiquette « test ». début c'est pas mal ;) test: HeadYaw.val = 0 sin:5s Maintenant que vous savez écrire ampli:40, un programme, il est temps d'essayer de faire bouger le robot Du coup, dès qu'on en a marre de sur ses jambes sans qu'il ne voir la tête du robot osciller de tombe ! gauche à droite, on peut taper la commande « stop » comme ci- Et pour ça, il faut commencer par dessous, ce qui va arrêter le un peu de théorie :) 5
    • LibreBot Mag n° 00.0 Programmation : flexions L e premier mouvement que nous allons apprendre à notre robot sera assez simple : faire des Flexion max et min Si le robot ne plie pas le genoux, il flexions. C'est à dire que l'on va le sera à sa hauteur maximale. Quand faire se plier sur ses jambes, puis le genou sera plié au maximum, le se relever. robot sera aussi bas qu'il peut l'être. Pour cela, il faut lui faire plier les genoux. On va donc apprendre à Dans la suite, on va appeler « c » la contrôler la jambe du robot. distance HK (la Cuisse), et « t » la distance KA (le Tibia). Il faut donc calculer ces angles en fonction de la longueur HA que l'on La Jambe La hauteur Ymax du robot est donc obtenue pour un angle αK du souhaite donner à la jambe. Pour pouvoir contrôler la jambe, il genoux de 0° : Dans notre cas, il s'agit en fait de faut commencer par bien en Y max =Y  K =0 ° =HK KA=ct trouver tous les angles du triangle comprendre la structure. HKA, sachant qu'on connaît la Mais que vaut Ymin ? Et plus longueur de chacun des cotés de Il y a trois articulations : généralement, que vaut Y pour un ce triangle. ▶ la hanche (« Hip » en anglais), angle αK donné ? ▶ le genou (« Knee »), On peut comme précédemment ▶ et la cheville (« Ankle »), Pour le savoir il faut utiliser le trouver ces angles en appliquant théorème de Pythagore, et les les formules de trigonométrie de Sur la figure, les articulations sont formules de trigonométrie (cf calcul base. repérées par une lettre détaillé du cadre « Formule 1 »). correspondant à l'initiale de leur On obtient : En fait, il y a plus simple et plus nom anglais, à savoir : H, K et A. HA = c² t² 2⋅c⋅t⋅cos K  rapide, car les formules K mathématiques de ce cas de figure La hanche est reliée au torse du sont connus. robot (point O), et la cheville au Grâce à cette formule, on peut pied du robot (point F, « foot »). déduire l'angle du genou pour avoir Chercher « résolution d'un une flexion donnée (càd une triangle » sur Google, le premier distance HA donnée) : lien vous amènera à la page HA² − c²t²  Wikipedia qui répertorie ce genre K =acos   de formules (dont le cas où l'on 2⋅c⋅t cherche les angles d'un triangle dont on connaît la longueur des 3 Cas du Nao côtés). La jambe du robot Nao à les Il ne reste plus qu'à coder tout cela caractéristiques suivantes : en URBI ! c = 120 mm t = 100 mm αK dans l'intervalle [0°; 130°] HA²=HA 0 ² A A0 ² D'après le calcul que l'on vient de faire, les hauteurs de flexions sont HA0 =ct⋅cos K  donc : Ymax = 220 mm A A0=t⋅sin K  Fig. 3: Jambe du robot Ymin = 95 mm Chacune des articulations peu avoir HA²=c²2⋅c⋅t⋅cos K  un ou plusieurs axes de rotation. Le Angle   de   la   hanche   et  t²⋅cos²  K t²⋅sin²  K  genou a par exemple un seul axe de rotation, alors que la cheville en de la cheville a 2, et la hanche 3. Si on ne contrôle pas comme il faut HA²=c²2⋅c⋅t⋅cos K t² Pour commencer, on va s'intéresser l'angle de la hanche et de la uniquement à un seul de ces axes cheville, le pied du robot ne sera de rotation : l'axe « pitch ». pas à plat sur le sol (et il aura donc HA=  c²t² 2⋅c⋅t⋅cos K  de fortes chances de tomber), ou alors il ne gardera pas le torse droit (ce qui a aussi de fortes chances de Formule 1: Calcul de HA en le déséquilibrer). fonction de l'angle du genou. 6
    • LibreBot Mag n° 00.0 Un premier vrai programme URBI C omme on l'a vu précédemment, l'archive « librebot_webots_00.zip » que Voici le contenu du fichier URBI.ini : load("nao.ini"); Le code qui suit peut-être taper dans le fichier nao.u. vous avez chargé et décompressé à load("nao.u"); Il fait bouger la tête et les bras du créé un répertoire robot en continu, et pour ce qui est « librebot_webots ». des jambes, il fait faire la boucle On voit que le programme URBI.ini infinie suivante : Le sous-répertoire « controllers » se contente juste de charger (et – attente d'une seconde, contient les programmes des exécuter) ce qui est contenu dans – flexion des jambes du robot, différents robots, et le programme les fichiers nao.ini et nao.u. – attente d'une seconde, du robot Nao vert que l'on voit – extension des jambes du robot. quand on lance la simulation, c'est Le fichier nao.ini contient en fait celui qui s'appelle « nao ». l'initialisation de l'ensemble des La flexion correspond à une éléments du robot. On ne touchera consigne de longueur des jambes Il y a dans ce répertoire pas à ce fichier. (cf partie flexion). Les angles des « librebot_webots/controllers/nao/ » hanches, genoux et chevilles deux fichiers : On va par contre pouvoir modifier nécessaires pour obtenir cette • URBI.ini le contenu du fichier nao.u. Ouvrez flexion sont actualisés à intervalle (fichier lu par URBI quand on le, puis tapez le code URBI que de temps régulier (toutes les 40 lance la simulation Webots) vous voulez. Ensuite sauvez le millisecondes). • nao.u fichier. (programme qui pilote notre Si vous relancer la simulation Maintenant, c'est à vous de robot). Webots (icône de rechargement), le modifier tout cela pour voir ce que nouveau code sera alors exécuté. cela donne ! # On groupe les moteurs similaires des deux jambes # (pour pouvoir commander les deux en une seule affectation) group Knees { RKneePitch, LKneePitch }; group Hips { RHipPitch, LHipPitch }; group Ankles { RAnklePitch, LAnklePitch }; # Définition de variables var cuisse = 120; #longueur de la cusise var tibia = 100; #longueur du tibia var yy = 220; #consigne de longeur de jambe var tt = 1s; #vitesse du mouvement # Boucle infinie modifiant la consigne loop { wait(1s); yy = 95 time:tt; wait(1s); yy = 220 time:tt; }, # Commande des moteurs every (40ms) { Knees.val = acos( (yy**2 - (cuisse**2 + tibia**2)) / (2*cuisse*tibia) ) / pi * 180; Hips.val = - acos( (yy**2 + cuisse**2 - tibia**2 ) / (2*yy*cuisse) ) / pi * 180; Ankles.val = - acos( (yy**2 + tibia**2 - cuisse**2 ) / (2*yy*tibia) ) / pi * 180; }, # Mouvement continu de la tête HeadYaw.val = 0 sin:10s ampli:60, HeadPitch.val = 0 sin:500ms ampli:20, # Mouvement continu des bras RShoulderPitch.val = 0 sin:2s ampli:120, LShoulderPitch.val = 0 sin:2s ampli:120, RShoulderRoll.val = -40 sin:3.5s ampli:55, LShoulderRoll.val = 40 cos:3.5s ampli:55, RElbowRoll.val = 45 sin:1.5s ampli:45, LElbowRoll.val = -45 cos:1.5s ampli:45, RElbowYaw.val = 0 sin:2.5s ampli:90, LElbowYaw.val = 0 cos:2.5s ampli:90, 7
    • LibreBot Mag n° 00.0 Mini Concours Si vous avez suivi toutes les étapes programmé les mouvements de directement l'adresse suivante : du magazine jusqu'ici, vous êtes danse les plus sympa, bref, d'avoir http://www.dailymotion.com/LibreBot peut-être arrivé a faire faire des le meilleur robot danseur :) mouvements sympas à votre robot. Voilà, si ça vous tente de rejoindre La vidéo de la piste de danse avec ce « danse floor », envoyez votre Dans ce cas, vous pouvez envoyer tous les robots sera mis en ligne code URBI par mail à l'adresse votre code au magazine, je me sur Dailymotion. Vous pouvez librebot@free.fr . chargerai de rajouter votre robot d'ailleurs jeter un coup d'oeil à ce dans la simulation « Nao Dancing que ça donne, cherchez juste Bonnes créations. Battle ». Il n'y a rien à gagner, si ce « librebot » sur le site n'est le plaisir d'être celui qui a « Dailymotion », ou tapez FIN 8