SlideShare a Scribd company logo
1 of 8
Download to read offline
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

More Related Content

Viewers also liked

Viewers also liked (20)

Taekwoondo
Taekwoondo Taekwoondo
Taekwoondo
 
Icc
IccIcc
Icc
 
Programación lego nxt
Programación lego nxtProgramación lego nxt
Programación lego nxt
 
Baloncesto
BaloncestoBaloncesto
Baloncesto
 
Rivas Jesús presentación.ppt
Rivas Jesús presentación.pptRivas Jesús presentación.ppt
Rivas Jesús presentación.ppt
 
Comenzar
ComenzarComenzar
Comenzar
 
Jono, Adam And Lee
Jono, Adam And LeeJono, Adam And Lee
Jono, Adam And Lee
 
La vertu d'egoïsme Ayn rand par nicodème et degiovanni
La vertu d'egoïsme Ayn rand par nicodème et degiovanniLa vertu d'egoïsme Ayn rand par nicodème et degiovanni
La vertu d'egoïsme Ayn rand par nicodème et degiovanni
 
El trabajo en el aula
El trabajo en el aulaEl trabajo en el aula
El trabajo en el aula
 
Los delitos informaticos
Los delitos informaticosLos delitos informaticos
Los delitos informaticos
 
Pac1
Pac1Pac1
Pac1
 
La note de tendances 2011 par vanksen
La note de tendances 2011 par vanksenLa note de tendances 2011 par vanksen
La note de tendances 2011 par vanksen
 
Tasipanta Edwin (virus)
Tasipanta Edwin (virus)Tasipanta Edwin (virus)
Tasipanta Edwin (virus)
 
Ayn Rand decarpentry durville garnier
Ayn Rand decarpentry durville garnierAyn Rand decarpentry durville garnier
Ayn Rand decarpentry durville garnier
 
Briefing
BriefingBriefing
Briefing
 
2006 juillet b protegez vous
2006 juillet b protegez vous2006 juillet b protegez vous
2006 juillet b protegez vous
 
Competencias
CompetenciasCompetencias
Competencias
 
2008 aout protegez vous
2008 aout protegez vous2008 aout protegez vous
2008 aout protegez vous
 
Ayn Rand jezequel jumeau
Ayn Rand jezequel jumeauAyn Rand jezequel jumeau
Ayn Rand jezequel jumeau
 
Votre événement stratégique
Votre événement stratégiqueVotre événement stratégique
Votre événement stratégique
 

Librebot Mag 00 Rc0

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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