Posté le 31.05.2007 par quibot
Ca fait un petit bout de temps que je n'ai rien posté...
En fait, j'ai commandé une SBC il y a environ 2-3 semaines, et je prépare la distribution linux que je vais mettre dessus...
Je vais mettre une distrib' personnalisée, pour la faire tourner sur une CF...J'ai pensé à une tinyGentoo, mais je n'aime pas trop la µlibc, et je n'en ai pas vraiment besoin...Donc je suis parti sur un LFS/débianisé, voir le linux mag embarqué 2...
Mais honetement, je n'ai pas vraiment les compétences pour faire ca, et ca me prend beaucoup plus de temps à faire que prévu...Tant pis...
Sinon, je me suis penché sur l'algo SIFT, celui utilisé dans AIBO quand il recherche sa station de charge...
C'est tres puissant, tres récent, et, quand j'aurais le temps, je décortiquerai tout ca...
Sinon, je commence à réviser mes exams, et je dois choisir mes cours pour l'année prochaine...Certaines sont vraiment géniaux, du style "bio-robotics", ou "Advanced VLSI Systems"...
--
Posté le 25.05.2007 par quibot
Ca fait déja pas mal de temps que je n'ai rien posté sur le blog...
Depuis mon dernier post, j'ai amélioré mon interface, et enfin, j'ai rajouté mes servos moteur pour la tete!!
je posterai une photo du robot plus tard, je mets ici seulement une capture d'écran de l'interface...
A part ca, j'ai aussi implémenté la recherche d'une station de repos, de forme ellipsoidale. En appliquant hough directement, je n'y arrivais pas, car l'algo me donne toujours une réponse, meme lorsqu'il n'y a pas d'ellipse...Je rassure certains lecteurs, c'est normal, je n'ai pas fixé de conditions de vérification de la présence d'ellipse...
Donc au final, je suis parti sur la couleur, suivi d'une recherche d'ellipse, ce qui donne des résultats assez satisfaisant...
Maintenant, j'aiemrais bien réussir a implémenter l'envoi et la reception de données entre le robot et un PC fixe, pour qu'il puisse récupérer des textes, des fichiers sonores, ou ce genre de choses.
Hier, je me suis amusé à voir si je ne peux pas me servir du robot comme d'un réveil, mais j'ai des problèmes avec cron et mplayer, ca ne marche pas...:(
Posté le 12.05.2007 par quibot
Au sujet de la gestion des mouvements, j'ai, pour l'instant, créé un programme permettant d'enregistrer les différentes positions succéssives des servos moteurs. C'est assez bête, je dois bien l'avouer, mais sans capteurs, il m'est difficile d'avoir une marche "dynamique"...Comme il n'y a pas de gestion de l'équilibre, il est alors assez facile de gérer les mouvements du robot...J'enregistre les positions, et durées des positions, dans un fichier texte, fichier réutilisé par la suite dans mon programme principal.
Le programme de commande des servomoteurs est écrit en python. Cela peut paraitre surprenant, mais étant assez inexpérimenté en programmation, j'ai choisi un langage simple d'accès. Orienté objet, ce n'était pas un argument de selection, mais connaissant Java, cela n'a pas posé de problèmes...
L'interface graphique est écrite en WxWidget...Comme toujours...Pour des raison (évidentes?...) de portabilité.
Ici encore, je me suis arrété au strict minimum, les fonctions sont minimalistes.
L'envoi des commandes demande un port série...C'est le seul point noir de la SSC32 (voir le site de Lynxmotion), car tout le monde ne possède pas de port série sur son ordinateur...
Sinon, je pense devoir me présenter...(je sais, j'aurais du le faire dans le premier post...)
J'ai 21 ans, je suis en école d'ingénieur (généraliste...?) , 2eme année, je préfère garder le nom de mon école anonyme...Je vais peut etre passer ma troisième année au Japon, pour un master en traitement d'images...(j'ai été pris, mais je ne sais pas si j'obtiendrai une bourse...). Mes autres passions? Ma première, c'est ma copine!! Puis vient la robotique, les hautes technos, la musique, l'astronomie, les animés...voila voila...
La suite au prochain post!
Posté le 12.05.2007 par quibot
Pour l'instant, ce programme tourne sur mon PC...
Il est écrit intégralement en langage C.
Il est constitué de 4 threads POSIX:
-le thread Comm', permettant la communication avec le PC de controle fixe, lui.
Il utilise les sockets TCP/IP, la communication se fait pas envoi de chaine de caractères.
-le thread Mouvement, qui gère les différents mouvements du robot.
-le thread Vision, dont le but est d'acquérir et de traiter les images
Dedans, j'ai déja programmé l'extraction de contours, la recherche d'ellipse( inclinées ou non), la détection de droites, la détection de mouvement. Avec ca, on a déja accès à pas mal de fonctions pour rechercher une balle, ou une station de repos...
-le thread stratégie, qui coordonne tout ce petit monde!
Les 3 premiers threads sont fonctionnels, le thread stratégie est en élaboration, j'essaye d'implémenter un comportement pour l'instant, celui de recherche de balle...
Je vais bientot poster une vidéo du robot en mouvement, pour donner une meilleure idée de la bete...
Si, pour l'instant, certains lecteurs ont des idées, faites les moi savoir!!
Avant de me lancer, j'étais un peu effrayé de partir de 0, aussi bien du coté matériel que logiciel. Je pense qu'il pourrait être sympa de publier des sources permettant à tout le monde d'accéder directement à un squelette de programme fonctionnel, associé à un matériel accessible au plus grand nombre...Cela encouragerait peut etre les personnes désireuses de se lancer dans la robotique, sans passer trop de temps sur des détails...Le plus intéressant est en fait d'implémenter ses propres fonctions, pas de passer 1 mois à comprendre comment fonctionne les sockets ou les threads...
Meme en utilisant des architectures matérielles différentes, s'il était possible de fournir une API "robotique" sous Linux, cela serait profitable à beaucoup de personnes...
Voila, le message est passé...J'attend des commentaires...
Posté le 12.05.2007 par quibot
Après extraction de contours, cela donne:
Posté le 12.05.2007 par quibot
Premier apercu de l'interface graphique...
Comme on peut le voir, elle permet d'exécuter les fonctions les plus primaires.
J'ai mis des boutons pour l'activation de certaines fonctions, car je n'ai pas assez de temps de découvrir les autres widgets...Tout programmeur qui connait WxWidget est le bienvenu sur ce terrain!!
Posté le 12.05.2007 par quibot
La première photo du robot, V1.00 :D
J'ai passé environ 1 semaine à faire la partie mécanique.
L'ensemble est constitué de CTP, balsa, et mousse dure.
Les servos utilisés sont de marque Futaba, ce sont les premiers prix...La carte de commande des servos moteurs est une SSC32, la webcam employée est une logitech pro 4000.
Pour l'instant, il y a 9 DOF, je compte en rajouter au moins 2: 2 servos par patte, 2 servos pour la tete, et un servo pour la focalisation de la webcam.
Il n'y a pas encore de capteurs dessus...L'électronique et moi...A court terme, je souhaiterais rajouter des capteurs de pression au bout des pattes, et rajouter une gestion des évènements sonores. Je ne souhaite pas, pour l'instant, rajouter de capteur ultrason, ou infrarouge, car je souhaite expériementer l'estimation des distances par focalisation...je sais déja que cette méthode n'est pas ultime, et qu'il faudra rajouter des capteurs, mais, comme je l'ai signalé précédemment, je n'ai pas assez de temps pour tout faire...
En longueur, le robot faire environ 40 cm, je souhaite avoir un robot assez compact...
Sur les pattes avant, on remarque des morceaux de cahoutchouc, ils servent à augmenter l'adhérence des pattes au sol...
Enfin, on en vient au plus interessant...Sur la photo, on distingue une certain nombre de cables à l'arrière du robot...il y a l'alimenation des servos en 5V (ils tiennent entre 4.8 et 6v...), l'alimentation de la partie logique de la carte SSC32, la commande de cette carte, et le cable de la webcam...Ouf! Et derriere, un beau PC, tournant sous un OS GNU/Linux, un ubuntu Feisty Fawn, pour etre précis. A terme, je souhaite embarquer une carte SBC basée autour d'un géode à 500 MHz sur le robot, et couper tous ces vilains cables, sauf selui de l'alim, car les batteries coutent encore cher...
Pour continuer sur la partie software, tout est programmé et compilé sous linux, je ne sais pas encore si je vais publier les sources...Cela dépend de l'intéret que peuvent porter les gens sur le projet...
Voila, le prochain post traitera de la structure du futur programme embarqué.
A savoir aussi que, pour bien faire, j'ai développé une interface de controle du robot, qu'elle est fonctionnelle (pas encore très fournie, mais ca marche...), et qu'elle permettra de controler le robot à distance par Wi-Fi...Ah!!Les joies d'uin système opensource!! (pour l'instant, ca marche par ethernet cablé)
Posté le 12.05.2007 par quibot
Depuis maintenant 2 ans, je suis passionné par la robotique. En fait, je suis plus intéressé par l'aspect IA, traitement du signal, d'image, etc. que par la construction mécanique en tant que telle. Bien évidemment, je ne peux que m'émerveiller devant la mécanique de Qrio, mais l'aspect comportemental est pour oi bien plus prenant...
Il y a trois mois environ, j'ai décidé de me lancer dans l'aventure, et de concevoir une petite plateforme robotique pour m'amuser avec des algorithmes de traitement d'image...Et, pourquoi pas, aller plus loin... N'ayant pas les compétences - ni le temps- j'ai hésité entre une structure sur roues ou sur pattes...Et j'ai choisi les deux!!
J'avoue m'être inspiré d'une réalisation vue sur le net...
Cela donne quibot, petit robot tortue (pourquoi la tortue?....j'aime depuis longtemps cet animal...) qui, pour avancer, "rame", c'est à dire qu'il utilise ses pattes pour rouler...:D Cela m'évite ainsi de passer du temps sur une gestion d'équilibre, qui n'est pas le but du projet...Et d'user les servos trop rapidement, ceux ci ne supportant pas le poids du robot...
J'utiliserai ce blog pour montrer l'avancement du projet, et, mes ambitions ayant récemment changées, pour recevoir conseils et aide de gens intéréssés par ce projet...