Robot NXT

Mon Travail dans cette histoire !

Le début de la fin !

Dans cette page nous parlerons seulement ce qui se rapport à notre projet: le robot en legos !
Dès le débuts de la 1er séance nous avons déballé les 2 boites qui contenaient les robots.
Beaucoup de sac plein de diverses pièces en lego (LOGIQUE !) bref un vrai bazar.
Pendant toute la première séance nous nous sommes familiariser avec tout ce contenus.
Les différents modules que nous offrent ces 2 robots, soit :

  • Des moteurs: qui sont au nombre de 5. Ils permettent principalement le déplacement du robot grâce aux roues ou au chenilles.
    Ils sont également utilisé pour une quelconque action mécanique. Sur le manuel, nous avons vu qu'il était possible de tirer des boules
    grâce à un lanceur.
  • Des capteurs à ultrasons, ceux-ci peuvent capter des obstacles qui sont sur leur chemin ou s'ils n'y a rien devant;
    Cela varie bien entendu en fonction du code utilisé.
  • Un module qui fait 3 chose à la fois, soit:
    • Capteur photosensible, ce module permet de capté une planche de couleur
      du spectre visible, il permet donc de reconnaître les couleurs
    • Lampes (3 couleurs), c'est une LED qui permet d'afficher 3 couleurs
      Le rouge, le bleu et le vert
    • Capteur de luminosité, ce module ci permet simplement de capter la luminosité, plus ou moins sombre et vice versa
  • Un module microphone, qui permet de capter des sons, et à partir d'une certaine intensité il réagit et fait ce qu'on lui dit.
  • Plusieurs capteur "tactile", ce capteur a plusieurs fonctions: enfoncé, relâchés et heurté; qui permettent d'effectuer une action en fonction du signal reçu.
  • Puis finalement le noyau, le coeur du robot: Le module NXT, aussi appelé Brick pour la programmation.
    Celui a toutes sorte de fonctionnalité,
    • Afficher des images
    • Émettre des sons
    • Il est pourvu de boutons qui permettent de naviguer dans le menu.
      mais en naviguant sur les notices j'ai vu que l'on pouvait relier 2 modules NXT pour les commander par bluetooth !
    • Et c'est lui qui relie tout les autres modules

    Bref, On se rend compte qu'avec tout ça, on est pas encore sortit de là !!

    Le début de mon Travail.

    Lors de la seconde séance, nous avons distribuer les rôles dans le groupe.
    Pour ma part j'ai décidé de m'occuper de la partie programmation du projet.
    Les autres sont chargé de construire le robot en lui même la disposition de tout les module et de la partie mécanique du projet.
    J'ai commencé à faire des test avec le langage basique, celui fournit avec le robot, le langage BRICK.

    Ce langage étant simple et très intuitif, j'ai rapidement su l'utilisé.
    J'ai tout d'abord pris des exemples de programme sur le logiciel Mindstorm Lego. Puis à partir de morceaux de codes, j'ai crée mon premier programme.
    Il demandais au robot d'avancer en ligne droite tant qu'il n'y avait pas d'obstacle en face de lui. Si il y avait un objet il tourner de 90° sur la droite et continue d'avancer.


    Pour le moment rien de bien compliqué, simplement des boites que l'on enchaîne selon une logique.
    J'ai passé la semaine suivante à aider les autres pour la constructions du robots ( parce que c'est marrant les lego ! :P)
    Puis une fois le robot bien avancer avec plein d'option en plus comme un lanceur de boule; j'ai entamé la programmation toujours sous le logiciel BRICK.
    Cette fois je lui ai demandé d'avancer en continue jusqu'à ce qu'il trouve un obstacle , de s'arrêter, d'émettre un son (Attention !), Puis si l'obstacle est toujours là au bout de 5sec le robots tire une boule, tourne de 90°, et continue à avancer.

    Programmations Intensive !

    Le langage en Brick est bien beau et simple à utiliser , ce n'est pas ce qui nous est demandé. J'ai donc commencé a faire des recherches pour faire marcher notre robot sous Python ; Premièrement...

    A partir de ce moment, les séances d'ISN S'écoulèrent très rapidement, enfin pour ma part. J'étais tellement plongée dans mes recherches que je perdais toutes notion du temps...
    A force de recherche et avec un de l'aide de nos bienveillants professeurs ;P , j'ai réussi à reconnaître la Brick sur mon Windows.
    Oui, Windows. A force de près d'un mois de recherche et d'essai pour faire passer un programme sur la bricks en python,
    Je n'avais toujours pas réussi a trouver un moyen de faire fonctionner la Brick sous Python; Donc en faisant d'autre recherche, j'ai trouver que l'on pouvait programmer la Brick sous plusieurs langage évalué. J'ai donc choisis de programmer la Brick en NXC.
    Ce qui veut dire : Not eXactly C.
    Ce langage ci ce rapproche fortement du python, ce qui explique partiellement ce choix.
    La second raison est bien sur un raison de facilité; Pour programmer en python toutes les explications nécessaires était en anglais et les exemples était pratiquement inexistant...

    Pour utiliser ce langage de programmation j'ai du installer Linux sur mon ordinateur car la Console est l'outil principal qui permet de communique directelment avec la Brick. Ceci fait, il ne me restait seulement à installer les bibliothèque nécessaire. Au final, j'ai réussi en une seul soirée à arriver au même stade qu'en python. J'ai réussi à reconnaître la Brick sous linux.

    Le NXC

    Après avoir réussi l'installation de la Brick et surtout sa reconnaissance, j'ai écrit mon tout premier programme.
    Et comme tout premier programme qui ce respecte c'est le "Hello World !!".
    J'ai donc fait afficher sur l'écran de la Brick ce fameux Hello World !!;
    Bienvenue monde de la programmation, à partir de ce moment le reste de mes séance n'a été qu'une série de test.
    En commençants par la simple rotation d'un moteur, la reconnaissance de distance, faire avancer, reculer le robot, tourner lors de la reconnaissance d'obstacle et ainsi de suite...

    Voici par la suites quelque exemple de programmation :

    Il ne s'agit ici que de simple commande simple à exécuter.
    Elles permettent respectivement d'afficher une texte sur l'écran.
    De tourner le moteur dans le sens paire (OnFwd)pendant une durée déterminé(Wait).
    De tourner le moteur avec un angle défini (RotateMotor) entre 0 et 360°.
    De tourner le moteur dans le sens impaire (OnRev) pendant une durée déterminé(Wait).

    Le Nxc poussé plus profondément.

    Ce programme permet au robot d'avancer en ligne droite jusqu'à ce qu'il rencontre un obstacle sur sa route.
    Découpons ce programme pour l'analyser.
    Nous avons à la 2ème ligne une définition de variable avec le #define [variable] [valeur].
    Le task main est le début de la fonction que le robot va exécuter lors du lancement du programme.
    Ensuite nous avons une boucle infini, le while(true). Il va exécuter la commande OnFwd en boucle jusqu'à ce qu'il rencontre une condition.
    Le if est là pour stopper le robot si la valeur renvoyé par le capteur ultrason est inférieur à la valeur défini le robot sort de la boucle infini, et exécute les commandes suivantes.
    Qui sont arrêter les moteurs avec le Off(OUT_AC) qui stoppent le fonctionnement des moteurs A et C.
    Avec la commande Wait(800) le robot va se stopper pendant 0.8 sec (toutes les valeurs temporelles sont en millisecondes).
    Puis enfin avec le OnFwd(OUT_C), le robot va tourner qu'un seul moteur ce qui va avoir pour effet de tourner jusqu'à ce qu'il n'est plus rien en face de lui.
    Ceci fait il ré-entrera dans le boucle infini et continuera sont parcours indéfiniment.

    Un des programme final.

    Free Web Hosting