Canalblog
Suivre ce blog Administration + Créer mon blog

Dreams Can Be True

1 décembre 2011

Stage au MIC, jour 14: Wire(not)less

Bonsoir tout le monde,

Après le coup de gueule d'hier, contre Nao, cette petite tête de nœuds me l'a bien fait payer!

J'ai commencé par reprendre ma tâche d'hier: enregistrer les visages dans la mémoire de Nao et un problème s'est rapidement posé!
Le problème est simple: le bloc "Add Face" nécessite que l'on reste 5 secondes devant Nao pour être enregistré mais alors, comment enregistrer les gens importants qui ne sont pas devant Nao??

Après m'être, a nouveau, mis en quête d'une solution dans la documentation, sur le forum d'Aldebaran Robotics et sur quelques blogs, pour n'arriver à aucun résultat probant, j'ai du improviser.

Dans un premier temps, j'ai recherché des photos des gens du MIC dans les évènements passés, je les ai ensuite recadrées puis affichées en plein écran et j'ai mi Nao devant l'ordinateur pour qu'il enregistre le visage. ET CA FONCTIONNE!!!

...Très bien, jusqu’à ce que Nao décide de perdre la connexion Wi-fi. Un premier reboot, nada! Un second reboot, NADA! La quête du RJ45 salvateur était lancée!!!

Après avoir trouvé le divin câble, j'ouvre le crâne de Nao pour le connecter en direct au point d'accès et le petit jeu est reparti. Cela s'est fini en : "J'affiche la photo en plein écran sur l'ordinateur, Nao est sur mes genoux, connecté en filaire au point d'accès. Derrière le plein écran, Chorégraphe tourne et me permet d'avoir la vue de ce que vois Nao en wi-fi". Épique, n'est-ce pas?

De l'après midi, j'ai rédigé la documentation adaptée à mes découvertes d'hier et d'aujourd'hui, comme d'habitude, un petit fichier de deux pages avec des captures d'écran et tout le nécessaire pour comprendre la chose. Une fois chose faite, je me suis lâché et je suis entré dans le code python "kifépeur" de Nao, j'ai "customisé" la boite "Say" pour qu'elle réagisse à une chaine de caractère spécifique et non plus à un texte préenregistré dans ladite boite. Ça m'a pris, au bas mot, une heure trente mais ça fonctionne (aussi)!

Enfin, a la fin de cette journée, alors que j'écris ces lignes, je me pose deux questions:

-Suis-je totalement ignare, inadapté à l'utilisation du Web pour ne pas trouver ce que je cherche sur Nao ou n'y a t'il vraiment que "çà" comme documentation officielle?

-Au vu des réponses sur le forum officiel, utiliser Chorégraphe est une tare pour les autres "naoteux"? Ou seul les utilisateurs avancés prennent la peine de répondre sur le forum?

Sur ce, je vous souhaite une bonne soirée,
A demain soir!

Publicité
Publicité
30 novembre 2011

Stage au MIC, jour 13: Reconnaissance sonore, visuelle et MAXI coup de gueule!

Bonsoir tout le monde,

Je vous écrit actuellement en mode FURAX (!!!) suite, a nouveau, au manque de documentation "original" de Nao.

Suite a l'appel a projets robotique du MIC, où nous avons "joués" avec la reconnaissance visuelle de Nao, j'ai décidé de m'atteler à enregistrer les visages des gens du MIC dans ce brave petit robot. Je commence donc à prendre tout le monde en photo, a découper la photo et a l'inclure dans la base de données de Nao puis j'ai constaté un truc tout bête: Nao me voit quand j'ai mes lunettes et ne me voit pas quand je ne les ai pas... Il y a donc une embrouille quelque part dans l'histoire!

Deux heures de recherche plus tard

Et pour cause qu'il y a une embrouille! Nao dispose de deux bases de données: l'une pour les objets, les lieux, ... et la seconde pour les visages. Et j'étais (naturellement) en train d'enregistrer tous les visages comme êtant des objets. J'ai donc pu foutre la base de données par terre et tout recommencer!

Ce qui m'a permis de constater un bug. Le bloc "Add Face" est normalement démaré par un String qui contient le nom de la personne... Or, je faisais démarer le bloc par un "Bang", une impulsion, ne contenant rien, ce qui faisait automatiquement planter le module.

Enfin, connaissant celà, j'ai réussi à faire apprendre mon visage à ce petit bonhomme et qu'il me reconnaisse "facilement". J'ai ensuite "documenté" tout cela pour que d'autres ne tombent pas dans la même embrouille. Demain, je m'attaque à réenregistrer correctement tous les visages.

Bonne soirée tout le monde,
A bientôt.

29 novembre 2011

Stage au MIC, jour 11 & 12: Appel à projets robotique

Bonsoir tout le monde,

Je n'ai pas su poster hier, j'étais trop fatigué à la suite de la première journée de "l'appel à projets robotique" du MIC.

Au final, 11 personnes ont répondu présent, de tous niveaux et de toute provenances: étudiants, conservateurs de musées, consultants, ... . Certains pensaient coder en pur et en dur, alors que d'autres s'extasiaient devant Nao... éteint!

En bref: deux bonnes journées bien épuisantes et très instructives!

J'ai même pu parler à "l'audience" du NXC au cours d'une petite dizaine de minutes, quel expérience pour moi, "petit étudiant qui ne sais pas grand chose".

Le deuxième jour, alors que 4 personnes nous avaient "lachés", les aléas de la vie professionnelle, nous y sommes allé au finish avec les présents. Preuve en est... J'ai quitté le MIC à passé 18h!

Sur ce, je vais conter ma journée à Morphée,
A demain, sans faute!

25 novembre 2011

Stage au MIC, jour 10: Ca carbure à toute vapeur!

Bonsoir tout le monde,

Aujourd'hui fut une journée mémorable.

J'ai tout d'abord continué mon étude de la documentation de Microsoft Robotics pour tenter de connecter ce dernier aux Légos Mindstorms. Après une petite déconvenue, Microsoft Robotics/Mindstorms nécéssitant l'utilisation du Bluetooth, qui refuse obstinément de fonctionner, je me suis rabatu sur le NXC.

J'ai finalisé les derniers programmes en suspend et me suis fixé un nouveau projet d'envergure après une discution avec mon suiveur: réussir a faire traverser la salle de réunion du MIC à un Mindstorms, en êvitant les obstacles et sans que le trajet ne devienne complètement chaotique!!! Comme on dit: YAPUKA!

De l'après midi, je me suis penché la dessus, puis "monsieur Nao du MIC" est arrivé et nous avons parlés pendant plus de deux heures. Au final, il m'a demandé de participer à "l'appel à projets robotique" du MIC ayant lieu le 28-29. "Ca va y en être géant!!!"

Sur ces bon mots, bonne soirée tout le monde et à lundi/mardi!

24 novembre 2011

Stage au MIC, jour 9: Baisse de régime

Bonsoir tout le monde,

Je vais la faire courte ce soir, ayant eu pas mal d'embrouilles "perso" à régler aujourd'hui.

Le programme de la journée fut simple. Au matin: suite de mon développement de "peudo-pathfinding" sur les légos.
Et l'après-midi, lecture de la documentation de Microsoft Roboticset quelques simulations avec cet engin.

Quand je l'aurai mieux en main, je pense faire une petite critique du programme.

Je voulais dire un grand merci aux gens du MIC qui ont bien compris ce qu'il se passait et qui m'ont laissé du temps pour régler le problème.

Bonne soirée,

A bientôt!

Publicité
Publicité
23 novembre 2011

Stage au MIC, jour 8: Vidéos & Pseudo-pseudo-pseudo-pathfinding

Bonsoir tout le monde,

Aujourd'hui fut une journée productive! J'ai eu accès à la caméra et j'ai fais des vidéos de tout ce que j'ai déjà fait en 8 jours.

Je vais les uploader sur Youtube de la soirée et éditer les messages précédents avec tout cela!

Après avoir joué les réalisateurs, j'ai repris les mindstorms et le NXC pour tenter de faire un "pathfinding" basique (un des grands objectifs pour ce stage). J'ai donc pris le châssis, équipé du capteur de lumière et du capteurs à ultrasons.

L'idée actuelle est assez simple: arriver à faire faire le tour de la table au robot en détectant les obstacles par ultrasons et le bord de la table par la différence de couleur entre la table et le vide. Plus facile à dire qu'a faire!

Le capteur à ultrasons est une vraie crasse à programmer, ses résultats sont plus qu'aléatoires et donc les distances très approximatives. De temps à autre, le capteur détecte "correctement" les 20cm qui le sépare de l'obstacle, d'autres fois, il fonce dedans "tête baissée" sans que je ne comprenne pourquoi!!! Il va vraiment falloir que je me penche plus profondément sur le multi-tasking en NXC, cela permettra d'éviter les dizaines de "while", de "if" et autres structures de côntrole qui pourrissent dans mon code.

L'objectif final serait d'arriver à démarrer du point A, en ayant une idée approximative (en trajectoire directe) de la position du point B, rallier le point B en évitant les obstacles qui seront (naturellement) sur le parcours, effectuer une action lorsque le point B est atteint puis revenir en A par le "même chemin", toujours en évitant les obstacles... qui se seront naturellement déplacés! Quelle bande de comiques, les obstacles, n'est-il pas?

Sur ce, je vous souhaite une bonne soirée et a bientôt pour de nouvelles aventures toujours plus palpitantes. (Surtout pour moi, quand le robot risque de se casser la gueule à l'autre bout de la table!)

22 novembre 2011

Stage au MIC, jour 7: NXC Mode Bis

Bonsoir tout le monde,

Aujourd'hui, une seconde journée en NXC, vu que Nao était toujours absent (le petit est revenu en fin de matinée).

Le programme de la journée: la suite du NXC, le suiveur de ligne qui réagit "proportionnellement" à ce qu'il voit, et donc qui lisse la courbe, et un autre suiveur de ligne qui effectue une action lorsqu'il voit une autre couleur que le blanc ou le noir.

Le programme du suiveur de ligne proportionnel fut assez épique à mettre en œuvre, le NXT n’étant pas vraiment des plus malins (pour ne pas dire complètement idiot)! J'ai eu droit à quelques beau comportements erratiques: Le robot qui décide de ne plus tourner dans le sens horlogique et qui fait demi tour sans raison apparente (en fait les néons aveuglaient le capteur), le robot qui décide de suivre le bord de la table en ayant deux roues dans le vide (!!!) et enfin le robot qui fait correctement le parcours... en marche arrière!

La logique est maintenant stable, et il fonctionne bien.

Pour différencier les couleurs, j'ai du modifier le programme pour ne plus jouer sur la photosensibilité, mais sur la couleur. Là aussi, les modifications ont étés acrobatiques, le capteur du NXT se basant sur une led RGB, il n'envoie pas du blanc "pur" mais un mélange de couleurs, donc, parfois, le blanc peut paraitre rouge, si le bleu et le vert ne sont pas encore dans le "mix" des couleurs. Vu cette constatation, j'ai du reprendre le premier programme du suiveur de ligne (fonctionnant en "zig-zag"), le suiveur "proportionnel" essayant d'envoyer 6000% de puissance aux moteurs lorsque le capteur détectait du blanc... Au final, après plusieurs essais pour lui faire effectuer son action (multi-tasking, mutual exclusion, subroutines, ...), la solution la plus stable est tout simplement un "if" placé dans le code du détecteur de couleur!

Vous aurez des vidéos de tout cela, et bien plus, demain soir.

Bonne soirée à toutes et tous,

A bientôt!

21 novembre 2011

Stage au MIC, jour 6: NXC mode!

Bonsoir tout le monde,

Aujourd'hui, j'ai vraiment mal à la tête. Mais quand je dis vraiment, j'ai l'impression d'avoir un Abrams entre les deux oreilles!!!

Et pour cause! Aujourd'hui, vu que Nao n'étais pas là, j'ai appris un langage de programmation: le NXC.

Le NXC, pour Not eXactly C, est un langage de programmation développé par John Hansen. Il est compatible avec le firmware Mindstorm NXT sans aucune modification de ce dernier. Il est donc possible de commencer un programme sur le programme de légo, puis d'en commencer un autre sous BricxCC (l'IDE associé au NQC (pour le mindstorms RCX) et au NXC (pour le mindstorms NXT)).

Pour ceux qui aiment "bouffer du code" (comme moi ;p), le NXC est vraiment génial! La syntaxe est très proche du C à part quelques points qui reprennent plutôt de l'assembleur (si je ne me trompe pas). Bref, c'est d'assez bas niveau et pourtant très rapide à programmer.

Le programme du suiveur de ligne "basique", où le robot va constament en zig-zag, sans lisser sa trajectoire, m'a pris plus d'une heure sur le programme légo (le temps de m'habituer a l'interface graphique, de comprendre le fonctionnement des blocs et des boucles, ...) contre 20 minutes en NXC!

La preuve en images:

-Le suiveur de lignes avec le programme de légo:

 Linefollowlego

-Le suiveur de lignes en NXC:

 linefollowNXC

Pour ceux qui sont intéréssés par le NXC, voici une petite série de liens:

-Le site officiel: http://bricxcc.sourceforge.net/nbc/

-La doc du NXC: http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/main.html (existe aussi en pdf de 2000 pages sur le site officiel)

-Le tutoriel du NXC: http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_tutorial.pdf

Sur ce, bonne soirée tout le monde et à bientôt!

18 novembre 2011

Stage au MIC, jour 5: Et tout s'écroule!

Bonsoir tout le monde.

Eh oui, tout s'est écroulé aujourd'hui... Pourquoi?

Parce que, voulant faire gagner du temps à quelqu'un du MIC, je me suis proposé de lui construire le bras en Mindstorms dont il a besoin pour sa démonstration (et accessoirement, de voir ce que celà donnait au niveau du programme). J'ai donc passé une bonne partie de ma matinée à chercher un plan de bras assez "fun".

Après en avoir trouvé un, j'ai commencé à le monter... Jusqu'à l'étape 20 sur 114... Et là, j'avais besoin d'une pièce que je n'avais pas... J'ai fait l'inventaire de toutes les pièces légo dont je dispose, et toujours pas la pièce en question! De retour sur le web, je fouille dans tous les sens pour comprendre pourquoi il me manque une pièce. Après une nouvelle heure de recherche, j'ai fais la triste découverte: Entre le kit Mindstorms NXT 1.0 (n° 8527) et le kit Mindstorms NXT 2.0 (n°8547), les pièces ne sont pas les mêmes!

Pour ceux qui souhaitent plus d'informations, rendez-vous ici: http://static.robotclub.ab.ca/pages/nxt/InventoryComparison/nxt_1_vs_2_vs_edu.html .

Après celà, j'ai naturellement fais écho de la découverte à la personne qui en avait besoin.

En somme, une journée qui aurait pû être magnifique mais qui ne l'a pas vraiment été...

Bonne soirée tout le monde,

A bientôt!

17 novembre 2011

Stage au MIC, jour 4: Tempête dans mon bocal!

Bonjour tout le monde,

Une tempête dans mon bocal car ça à pas mal secoué aujourd'hui!

Comme je vous le disais hier, Nao est parti en vadrouille pour une présentation, donc je me suis rabattu sur mon second objectif dans ce stage: les Légo Mindstorms.

J'ai suivi les tutoriels de débutant avant de me lâcher seul dans la course. Au programme: un robot suiveur de ligne pour l'instant très "maladroit", je devrai peaufiner son programme peu à peu. Rapidement suivi par un bras robotisé qui en est pour l'instant au châssis. J'avais trouvé une superbe notice de montage pour le bras... Pour un Mindstorms NXT 1.0 et non un 2.0, donc je n'ai pas les mêmes pièces, je dois refaire une bonne partie des choses différemment!

Vers 11h30, Nao, et son "animateur" sont revenus. J'ai bien parlé avec "Monsieur Nao du MIC" puis je me suis payé un bon coup de gueule contre Aldebaran Robotics (le fabricant de Nao). Leur forum "public" est réduit à peau de chagrin et, après de longues recherches pour trouver le login du MIC, le forum privé l'est tout autant. J'ai l'impression que les seules réponses possibles sont "Please contact support at" et "Why are you doing this that way? Do that rather"...

En bref, une bonne journée, crevant et affamante au possible.
...Affamante?
Eh oui! J'avais oublié mes tartines au matin dans ma cuisine, et j'ai été tellement occupé de la journée que j'ai oublié de constater que j'avais oublié mes tartines. Bref, je me suis goinfré en rentrant!

Bonne soirée tout le monde,

A bientôt!

Publicité
Publicité
1 2 > >>
Publicité