Bonjour à tous.
Voilà mon problème :
. J'ai une table (avec un repère Rt(Or, Xt, Yt, Zt) lié à la table) parfaitement plane
. Un robot (repère Rr(Or, Xr, Yr) lié au robot) qui se déplace sur cette table. Les coordonnées du robot dans le repère de la table sont (xr, yr, thetar). Elles sont connues en permanence par odométrie. Les déplacements sont plans (le robot ne fait que rouler, pas de changement d'altitude).
. Une caméra est fixée sur le robot.
Mon objectif est le suivant :
. J'acquiers une image à partir de la caméra. Cette image est traitée pour détecter un objet présent sur la table (une balle par exemple). Le traitement me permet de trouver le point de contact entre la balle et la table (coordonnée xb_px et yb_px dans l'image).
. Je souhaite programmer une fonction (appelons la Func1) qui à partir des coordonnées xb_px, yb_px et zb_mm (l'altitude de la balle dans le repère de la table est connue, elle est posée sur la table) me renvoie xb_mm et yb_mm, les coordonnées de la balle dans le repère du robot.
.Je souhaite programmer une fonction (Func2) qui ferait l'inverse : en connaissant les coordonnées (x_mm, y_mm, z_mm) d'un point dans le repère du robot, je voudrais trouver les coordonnées (x_px, y_px) de ce point dans l'image.
Mes questions sont les suivantes :
. Est ce qu'il est possible de programmer ces 2 fonctions? J'imagine que oui et qu'il est nécessaire de passer par une phase de calibration pour obtenir les paramètres intrinsèques et extrinsèques de la caméra. Je sais qu'il existe beaucoup de documents là dessus, mais j'aimerais être sûr de pouvoir arriver à un résultat avant de me pencher là dessus (mon niveau en math et en particulier en géométrie est un peu limité...)
. Comment s'effectue la calibration? J'ai trouvé beaucoup de programmes existant, qui utilise par exemple OpenCV ou Matlab (ou celui là, de Microsoft : http://research.microsoft.com/~zhang/Calib/) mais j'aimerais être sûr que cette calibration me donnera les paramètres nécessaires aux fonctionnement de Func1 et Func2.
. Question subsidiaire : les coordonnées de mon robot sur la table sont connues par odométrie, mais j'aimerais pouvoir les corriger grâce à la caméra. Je peux détecter certains amer dans l'image : 4 points coplanaires appartenant à la table, dont je connaitrais à la fois les coordonnées dans l'image et dans le repère de la table. Est il possible à partir de ces informations de retrouver la position du robot sur la table? Si oui, avec quel type d'algorithme? Si non, faut il plus de points? des points non coplanaires?
J'espère avoir été assez clair et je remercie d'avance tous ceux qui pourront m'éclairer![]()
Partager