Aller au contenu


Photo
- - - - -

Robot piloté par webcam

javascript guidage

6 réponses à ce sujet

#1 Ludovic_76

Ludovic_76

    Membre

  • Membres
  • 48 messages
  • Gender:Male
  • Location:Normandie

Posté 30 octobre 2014 - 05:57

Bonjour,

 

Je mets en ligne une solution que j'ai développé pour me faire la main à javascript.

 

L'objectif 1° : Faire rejoindre des balises virtuelles à un robot minimaliste.

 

Matériel nécessaire : Un PC avec Webcam et port USB ou Bluetooth + navigateur Chrome + un robot éventuellement muni d'une led flash.

 

Pré-requis : Savoir installer une extension chrome (chrome://extensions puis sélectionner avancé puis décompacter le répertoire joint puis lancer l'application)

 

Principe : Une webcam track le robot, Javascript récupère les données utiles à la track, en déduit l'angle de direction du robot en fonction du repère orthogonal (2D, x, y), en déduit l'angle le séparant des balises au préalable placées avec la souris par surimpression à la vidéo transmise par la webcam.

 

Pilotage électronique : Le robot équipé d'une arduino par exemple, récupère le signal qui peut être de différentes formes (radio fréquence, bluetooth, wifi (non testé)). Les données récupées sont l'angle de déplacement du robot et l'angle du robot le séparant de la balise.

Avec ces données, plusieurs algorithmes sont possibles, simple avec une logique floue très sommaire, une régulation PI ou PID, ou autre plus complexe !

 

Limite d'emploi : Le tracking est simple donc pour supprimer les erreurs de tracking il ne faut qu'un seul objet avec une lumière si le tracking se fait avec la lumière (le tracking peut être fait sur une couleur primaire également (rouge/vert/bleu)). Il faut bien accorder les fréquences d’échantillonnages en fonction de la la vitesse de déplacement du robot, lors de sa rotation, aucun angle n'est pris en compte ou ne doit l'être. Pour avoir une bonne précision il faut que le robot avance de qq centimètres, sinon le calcul de l'angle sera peu précis.

D'autres limites peuvent apparaitre, mais ce n'est qu'une première version !

 

Quelques images pour illustrer tout ça, mais pour les faibles budget ou ceux qui veulent appronfondir la programmation sans se prendre la tête dans la confection d'un robot (2 servomoteurs +2 roues suffisent... <10€)

 

Si vous souhaitez + d'infos, n'hésiter pas.

 

Bonne soirée,

ludovic

 

 

Image(s) jointe(s)

  • copie ecran extension chrome1.png
  • principe de base.png
  • principe orientation.png

Fichier(s) joint(s)


Cordialement,
Ludovic

http://luxcn.overblog.com

#2 Mic*

Mic*

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male
  • Location:Sarthe

Posté 30 octobre 2014 - 06:34

Bonjour,

Je ne connaissait pas ce système vraiment intéressant

Merci



#3 Taupiot_Jr

Taupiot_Jr

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male

Posté 30 octobre 2014 - 07:10

Hello,

 

Très joli travail :D

 

Quelques questions en passant :

  1. Quelle est la surface couverte ?
  2. Quelle est la limite de taille ?
  3. Quel est le temps de latence / réaction ?
  4. Quelle est la précision ?

 

Je crois que j'ai tout demandé ^^



#4 Ludovic_76

Ludovic_76

    Membre

  • Membres
  • 48 messages
  • Gender:Male
  • Location:Normandie

Posté 30 octobre 2014 - 09:43


 

alors pour le 1) la surface recouverte dépend de l'éloignement de la webcam et des caractéristiques de la webcam (grand angle ou pas) !

 

2) la limite est représentée par la taille d'un pixel. Pour mieux comprendre, je scanne la totalité de la video transmise dans un canvas (cf. html5). Si je capte un pixel avec une valeur rvb 255,255,255 + ou - un seuil (que j'appelle intensité) alors je considère que c'est mon objet. Si plusieurs pixels sont identifier, je prends la moyenne des coordonnées. Donc la limite est fixée par un pixel qui dépend donc de la caméra, de la distance de celle-ci. Ainsi la limite de taille ne sera techniquement pas atteinte. Je pense même dans un avenir proche commander une tondeuse recouvrant un terrain d'environ 1000m².

 

3) Plusieurs délais sont présents,

a) l'acquisition vidéo est quasiment instantannée

b ) le traitement de l'image pour trouver l'objet très inférieur à 10ms sur mon pc (intel core I5 mais sous XP, donc un seul coeur d'exploité). Sachant aussi que l'image est fluidep our un observateur humain aux alentours de 25 images/sec, un échantillonnage de 40ms laisse largement le temps de traiter la vidéo, de faire les calculs adéquats etc.

c) L'envoi sur le port USB, j'ai réglé le débit à 9600bps. Il est possible de faire plus ou moins en respectant la norme série.

d) Le traitement par le µC ou les µC (j'ai testé la solution 1 arduino sur usb en filaire qui envoyé les données sur une autre arduino par des modules en RF type RR3 et RT2 en 433Mhz.) Le temps de réaction n'est vraiment pas un problème. J'ai commandé un module bluetooth pour tester, mais je ne vois pas de problème.

D'un point de vu ressenti humain, les opérations sont instantanées.

 

4)Difficile de donner une indication chiffrée. Le robot atteint la balise où la dimension de celle-ci est réglable également (en fonction de la structure de régulation de position choisie). Il faut bien régler l'échantillonnage de mesure pour qu'entre 2 mesures l'information soit bonne (cf. théorème de Shannon).

La précision est fixée également par le positionnement de la webcam. Si elle est au dessus de la scéne, alors la précision est bonne. Si la webcam regarde la scène dans la même position qu'un Homme (horizon) alors la précision peut être obtenu avec un PI ou PID mais la valeur de l'angle sera faussé d'un cos (a). La correction sera possible si on connait la longueur de la scène et ainsi faire un PID adaptatif ou pour calculer les angles réels.

 

Voilà, en espérant avoir répondu à tes questions.


Cordialement,
Ludovic

http://luxcn.overblog.com

#5 Taupiot_Jr

Taupiot_Jr

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male

Posté 31 octobre 2014 - 06:37

Okay, merci pour ces précisions :)
Ton système est intéressant et tu a l'air de bien le maîtriser ^^

As tu essayé de tracker plusieurs robots aux couleurs distinctes ?

Tiens nous au courant pour l'application du système à ta tondeuse !

#6 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 31 octobre 2014 - 09:28

Bonjour,

 

Je mets en ligne une solution que j'ai développé pour me faire la main à javascript.

 

[...]

 

Bonne soirée,

ludovic

 

 

 

Très intéressant tout ça je vais y jeter un oeil ;) 

Merci pour le partage et bonne journée à toi ! 


Bonne journée ! 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#7 Ludovic_76

Ludovic_76

    Membre

  • Membres
  • 48 messages
  • Gender:Male
  • Location:Normandie

Posté 03 novembre 2014 - 12:41

...

As tu essayé de tracker plusieurs robots aux couleurs distinctes ?

...

Merci pour le commentaire.

Non, mais si les robots ont des couleurs bien distinctes alors pas de problème.

Je m'oriente sur une solution à très faible coup (robot démunit de capteur sauf peut être un contact sec type fin de cours pour la sécurité).

J'attaque l'étude pour une commande par le réseau wifi en intégrant un raspberry en mode routeur. Je pense que se sera la structure la plus portable (compatible qq soit l'os du pc ou est raccordé la ou les webcam).

 

Bonne semaine


Cordialement,
Ludovic

http://luxcn.overblog.com



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users