Aller au contenu


Photo

Robot Quadrupède intelligent.

robot quadrupède

  • Veuillez vous connecter pour répondre
178 réponses à ce sujet

#81 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 14 février 2016 - 05:40

Je n'ai pas compris ce que P représente. C'est le point qui représente la projection de C sur le plan O,x,z ?

#82 Mike118

Mike118

    Staff Robot Maker

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

Posté 14 février 2016 - 05:48

J'ai peut être pas été assez clair ... en fait le point C  ( Cx, Cy, 0 ) dont tu as trouvé  Cx et Cy c'est pas exactement le point que tu cherches...  En vrai tu cherches le point P  de coordonne ( Cx, Cy, Pz ) = ( Px , Py, Pz )   C étant la projection de P sur le plan  x y. Donc si tu résonne uniquement en 2D au départ c'est bien les coordonnées de C que tu cherches à calculer , après en passant en 3D il te faut chercher les coordonnées de  P qui est lui réellement le point cherché =) .

Un peu plus clair ?  


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  

 

 

 


#83 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 14 février 2016 - 06:09

Oui ca va mieux ;) je continue de potasser ca et poste ce qui en sort !

#84 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 15 février 2016 - 05:31

Histoire d'épargner des manipulations géométriques au cerveau:
WP_20160215_001.jpg

Ca libère de la ram :)

#85 Mike118

Mike118

    Staff Robot Maker

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

Posté 15 février 2016 - 05:52

très bonne idé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  

 

 

 


#86 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 15 février 2016 - 07:04

Alors..

En faisant la différance de hauteur entre le centre d'une caméra et celui de l'objet, on trouve un angle qui est calculé grâce à la résolution en pixel/angle. On a donc le nouveau triangle:WP_20160215_006.jpg
On connait la longueur du côté opposé à l'angle, c'est la coordonnée y. On connaît l'angle, calculé avec la résolution. Avec la trigo on peut donc calculer le coté adjacent (pointé au stylo).
Maintenant on soustrait la longueur de ce côté à la hauteur de centre de la caméra: Ca donne la coordonnée z de l'objet.

C'est ça? :)



#87 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 16 février 2016 - 07:14

J'ai peut être trouvé.

Je me suis servi de ça: "la positions en pixel du point C sur l'axe x extrait des images de chaque caméra, te donne une approximation de l'angle alpha et beta en connaissant l'angle de vue de ton objectif"

Sur le même principe, on peut approcher un 3ème angle par rapport au centre d'une camera, que l'on pourra utiliser pour la coordonnée z?

 

Au niveau du repère:

-Mes cameras sont alignées horizontalement.

-La direction du centre de la première caméra (point A, qui du coup est aussi l'origine du repère) représente l'axe des y.

 

 

Voila ce que j'ai fait en image:

-1ère feuille: les figures que je vais utiliser.

P1&2.jpg

 

Dans la première partie je vais déterminer les coordonnées x et y de l'objet avec la loi des sinus dans un triangle quelconque et la trigo dans un triangle rectangle.

 

Partie 1:

P1.jpg

 

Dans la partie 2 je détermine la coordonnée z de l'objet avec la trigo dans un triangle rectangle.

 

P2.jpg

 

Sauf erreur, j'ai mes 3 coordonnées ! :)

 

(en essayant avec Al-kashi je me suis retrouvé avec un système d'équation un peu douteux, donc j'ai essayé autre chose)



#88 Mike118

Mike118

    Staff Robot Maker

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

Posté 17 février 2016 - 12:52

Attention aux raccourcis ...

Fait un test et tu verras ;) 
 


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  

 

 

 


#89 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 17 février 2016 - 05:54

C'est fait. ;) en traçant des esquisses sous Solidworks et avec comme données les 3 angles et la distance entre mes 2 caméras je suis retombé sur les valeurs que j'avais calculé.

 

Pour la partie 1 en 2D:

AXY pour R.jpg

 

Je retrouve bien mes valeurs AR, BR, et les coordonnées x et y de la représentation de R sur ce plan.

 

Pour la partie 2:

AYZ pour R.jpg

 

J'ai bien ma coordonnée z. En plus si je clique sur le point R, Solidworks m'indique sa position dans l'espace (entouré en rouge) ! (ici z est positive car je l'ai situé au dessus du centre de la camera, contrairement à mon plan papier)

 

Il ne reste plus qu'a s'approcher au mieux de ces 3 angles !



#90 Mike118

Mike118

    Staff Robot Maker

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

Posté 17 février 2016 - 06:47

Fait un test en réel, et regarde quel valeur en pixel tu obtiens suivant l'axe z sur les deux images et comment tu en déduis l'angle pour obtenir la valeur du z réel !


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  

 

 

 


#91 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 18 février 2016 - 06:00

J'ai commencé les tests. Avec cette méthode:

 

Pour tester.jpg

 

-La caméra ( j'en utilise qu'une car dans mon exemple elles sont alignées horizontalement. Ma tête les a verticalement, donc seuls les plans changent mais le principe est le même) est située à 20.4cm du sol.

-Elle est positionnée à une certaine distance d'une règle graduée, qui correspond au y calculé dans la partie 1. 

-J’échantillonne cm par cm en reportant la variation de pixel dans un tableau.

-Le logiciel me fournit le model mathématique correspondant aux échantillons, ce qui me permet d'avoir la relation liant la distance y, la hauteur sur la règle (qui correspondra à z par la suite) et la variation de pixel.

-J'utilise ces informations pour calculer l'angle avec la trigo, ce qui me permet maintenant d'avoir la relation entre l'angle, y et les pixels. Il reste qu'à calculer z comme dans la partie 2.

 

Maintenant au niveau de ma camera, il y a 2 problèmes. En vissant l'objectif dessus je me suis aperçu qu'il était décentré par rapport au capteur: l'image faisait des petites rotations pendant que je vissais.

2ème problème : 

Mauvais centre nouveaux obj.jpg

 

la résolution verticale est de 240, donc le centre est à 120. Or sur l’échantillonnage il est à 157 (et ma caméra est bien parallèle à la règle..). Ca voudrait dire que le capteur n'est pas parallele à la lentille, surement à cause des adaptations que j'ai faites pour mettre mes switcher infra rouge...

 

Donc c'est décidé, je remets mes anciens objectifs. Trop de contrainte par rapport aux fonctionnalités que ça apporte. Le temps de tout remettre et je recommence le test. 

Et ce qui m'a étonné, c'est que le modèle correspondant soit une droite. J'aurai plus pensé à une courbe tordue et symétrique à cause de la déformation de l'objectif ^^

 

PS: si tu vois quelque chose d’incohérent dans ma façon de faire n’hésite pas à me le dire, pour gagner du temps ;)



#92 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 19 février 2016 - 12:11

Objectifs remis, et c'était une bonne décision : 
ancien obj ok.jpg
 
déja on voit que le centre correspond bien à peu prés à 120 pixel (sans faire de pub, la c920 de logitech est vraiment bien. Et il y a la c930 qui a un plus grand champ de vision, mais plus cher..).
L'image est bien plate, donc je comprends mieux que la fonction soit une droite. La variation de z par rapport à celle des pixels verticaux est décrite par une fonction affine z = a pix + b, avec pix la coordonnée verticale de lobjet sur l'image (en pixel).
 
Bref, pour le calcul: cette fois y vaut 36cm.
 
-Pour y = 36cm on obtient z = 0.122 x pix -14.2
 
Je mets la suite sur papier c'est plus facile pour les calcules :
calz-.jpg

 

En gros je dois répéter cette étape avec plusieurs valeurs de y pour pouvoir trouver comment varient a et b, ce qui donnera le cas général.



#93 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 19 février 2016 - 04:39

Une modification sur le message d'avant=> j'ai soustrait 120 à toutes les valeurs de pixels pour obtenir qu'une variable à déterminer (fonction linéaire au lieu d'affine) , et en plus ça me donnera directement le signe de l'angle.

 

J'ai fait plusieurs fois la manip du message d'avant en variant y. J'ai reporté l'évolution de a par rapport à y dans un tableau, ça m'a donné la fonction associée avec une marge d’erreur assez faible (cadre rouge).

coef a y.jpg

 

-J'ai le coefficient a qui vaut 0.003303*y (le y du plan (A;x;y;z)).

-Et je sais que la hauteur z varie selon z = a * pix.

 

Donc je peux faire le calcule de l'angle, puis de la hauteur z.

 

calculer z.jpg

 

On ne voit pas très bien, mais j'ai surligné l'écriture de l'angle et l'écriture de z. Finalement ( et si je me suis pas planté..) l'écriture de z se simplifie et pas besoin de l'angle. Si c'est bon on peut dire que la coordonnée z = y * "la valeur de pixel à l'image" * k,  avec k une constante liée à la caméra.

Je testerai ça demain, et je ferai une vidéo si ça marche :)

 

EDIT: J'ai oublié un 0 sur la feuille de calcul. Ce n'est pas 0.03303 mais 0.003303 ! ^^



#94 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 19 février 2016 - 06:55

Voila la vidéo: pour y = 52cm (choisi au hasard et épaisseur du bouchon compris).
 

 
Ça donne une bonne précision, ce qui est une bonne nouvelle pour la suite. La tête du robot est peut être sauvée, car ça veut aussi dire qu'il faut calculer y assez précisément ! ^^ 

#95 Mike118

Mike118

    Staff Robot Maker

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

Posté 19 février 2016 - 10:50

Pas mal ;) Reste à voir maintenant ce que cela donnera avec les deux caméra ;) 


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  

 

 

 


#96 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 19 février 2016 - 11:17

Merci! Je commence à chercher x et y dès demain ;) j'ai hâte de voir le résultat ^^

#97 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 20 février 2016 - 11:57

J'ai commencé à chercher x et y comme prévu. Et pour ça j'ai besoin des 2 angles alpha et bêta, ceux de la partie 1. 

 

Mais je ne vais pas refaire toutes les manip' des messages précédents, c'est un peu long. Avec une caméra construite parfaitement ( forme de la lentille, parallèle au capteur...)  , l'évolution des pixels en y doit être la même en x. Autrement dit, si on trace la courbe y = a*x , a doit être égale à 1. 

 

Je l'ai fait grâce à une cible que j'ai imprimé et placé le centre à la hauteur de la caméra.

cible calibration.jpg

 

J'ai placé le curseur sur chaque intersection cercle/trait rouge et j'ai relevé les valeurs x et y, j'ai tracé la courbe et voila ce que ça donne: 

evolution xy prop.jpg

 

donc mon a ne vaut pas 1 mais 0.98 ce qui est assez proche. Dans un premier temps je vais considérer que a = 1. 

 

------

 

Je n'ai pas encore trouvé comment calculer alpha et bêta avec ces seules informations ( je connais la distance entre mes 2 caméras, et x = 0.003303 * pix(x) * y avec pix(x) la variation de pixel sur l'abscisse de l'image) . Peut être qu'une nouvelle acquisition sera nécessaire.   



#98 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 21 février 2016 - 05:44

Sauf erreur de manip avec les calculs, c'est bon ! 

 

Au final, je ne m'aide pas des angles, puisque qu'on a vu pour la coordonnée z que l'écriture se simplifiait sans utiliser l'angle. Je fais la même chose ici: que ce soit en abscisse ou en ordonnées, k vaut 0.003303, donc je peux le réutiliser.

 

Un petit rappel sur les notations que j'utilise et sur la façon de trouver les coordonnées x et y:

 

rappel.jpg

 

Grace aux caméras A et B, j'ai 2 façon d'écrire Rx avec dans chacune de ces expressions Ry.

En ayant ces 2 expressions en système d'équation à résoudre , je peux isoler Ry, puis le remplacer dans l'écriture de Rx.

 

obtenir x y z.jpg

 

Et voila les expressions des 3 coordonnées (surlignées en jaune) avec chaque variable connue ! :)

 

Reste à confirmer en faisant un test réel. Cette méthode fonctionne avec les directions des caméras parallèle, et 2 caméras identiques.  



#99 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 23 février 2016 - 06:31

Une petite vidéo qui valide le calcul de x et z pour une coordonnée y connue. 

z = k * pix(ya) * y

x = k * pix(xa) * y

 



#100 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 24 février 2016 - 06:29

Je viens de faire les premiers tests sur le calcul de y. Une fois les directions des caméras à peu prés parallele, le calcul est bon seulement lorsque le point est sur l'axe des ordonnées de la caméra A.

 

 

Je ne vois pas encore d'où ça vient.. c'était trop beau pour réussir du premier coup  ^^ 







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

0 members, 0 guests, 0 anonymous users