Robot pilotable avec caméra

Dans la continuité du précédent article, je vais vous présenter mon premier robot programmé en python avec une caméra. Il est équipé de deux moteurs, un capteur ultrason à l’avant, de deux capteurs de contact à l’arrière et d’une caméra.

Gestion du robot: Il est pilotable directement par le clavier, marche avant arrière et gauche droite. A l’aide de la caméra, je sais où il se trouve et les capteurs installés permettent d’éviter les obstacles.

Lors de mes débuts de programmation avec la BrickPi et python, j’ai été confronté à un petit problème avec le capteur ultrason. Les informations données par le capteur ultrason variaient énormément (49, 49 ,49,177, 177, 49 ,49, 49). Phénomène  gênant pour  la détection d’un obstacle, après avoir testé le capteur ultrason avec la brique NXT, ouf ce n’est que le capteur qui est HS.J’ai résolu le problème par la programmation, une petit parade et hop c’est OK. Mais cette variation de valeurs me gênait et je suis allé sur le forum BrickPi afin de trouver une solution. Après plusieurs discussions, le problème était résolu (voir le post: Problem Ultrasonic sensor).

Mise en place de la caméra:

J’ai choisi la caméra pour Raspberry Pi, petite est facile à mettre en place. Mettre à jour sa distribution Raspbian: sudo apt-get update && sudo apt-get ugrade, puis on lance l’utilitaire: sudo raspi-config, on active la caméra, un reboot et c’est OK. Il suffit d’utiliser les commandes raspistill ou raspivid pour tester si tout va bien, je vous donne deux liens avec toutes les options liées aux commandes: RaspiVid et RaspiStill.

Maintenant il reste à mettre en place la vidéo:

Après plusieurs essais, je m’aperçois que filmer, récupérer la vidéo sur le PC avec VLC et piloter le robot génèrent des latences dans les commandes envoyées au robot et la réception de la vidéo, phénomène normal car le robot est en liaison wifi. Après une recherche sur le web, j’ai trouvé la solution sur ce site. La caméra prend une photo toute les 100ms et je récupère la vidéo qui est une succession d’images sur le navigateur à l’adresse: http:// IP_raspberry:8080.

je lance dans le terminal la commande pour prendre les photos : raspistill -w 640 -h 480 -q 15 -o /tmp/stream/pic.jpg -tl 80 -t 9999999 -th 0:0:0

puis la commande pour MJPG-Streamer :  LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i « input_file.so -f /tmp/stream -n pic.jpg » -o « output_http.so -w /usr/local/www »

et le programme de pilotage du robot qui se trouve: ici

Image de prévisualisation YouTube

La vidéo reste saccadée mais j’arrive à diriger le robot et le faire aller où je veux. J’ai effectué des recherches pour essayer d’améliorer la vidéo, d’obtenir quelque chose de plus fluide. J’ai trouvé sur ce site une mise à jour (voir en bas du site « Update: 19jan 2014″). J’ai effectué la mise à jour et voici le résultat en vidéo.

Image de prévisualisation YouTube

Conclusion: La carte BrickPi plus le Raspberry associés aux capteurs et moteurs NXT apportent un plus, on peut y installer une caméra comme ci dessus, la programmation reste simple et facile en utilisant python avec la distribution Raspbian. Il reste à pouvoir se connecter au robot depuis l’extérieur sur le net…

2 réflexions sur « Robot pilotable avec caméra »

  1. Excellent article ! Merci !!! J’aime bien le détail des soucis rencontrés et la résolution des problèmes. La seconde vidéo est bluffante de fluidité par rapport à la première.
    Je vois que tu continue de découvrir tout ce joli monde électronique et tu as bien raison.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *