• Aucun résultat trouvé

Cette section est consacrée à la simulation de la solution analytique. Cette simulation a pour objectif de représenter le plus fidèlement la réalité dans laquelle un tel système de localisation serait utilisé. En premier lieu, nous allons décrire la nature et les objectifs de la simulation, sa façon de représenter les robots et la technique utilisée pour simuler la prise d’image. En second lieu, nous allons expliquer comment est calculé chaque élément de la simulation, dans le but de permettre au lecteur de comprendre quelles méthodes sont utilisées pour valider les différents résultats qui sont produits par la simulation. En dernier lieu, nous allons présenter et expliquer ceux-ci en détail.

2.2.1 Définitions et représentation dans la simulation Notre simulation est décrite par les éléments suivants :

– Nous avons deux robots, RobotAet RobotB. Le premier est immobile tandis que le second se déplace. Cette contrainte simplifie la simulation tout en préservant sa validité, car nous travaillons avec des mesures relatives.

– Sur chaque robot i sont fixés une caméra Ci et deux marqueurs visuels Li et Ri. – Les marqueurs Li et Ri sont séparés par une distance d.

– En tout temps, la caméra de chaque robot peut voir la caméra et les marqueurs de l’autre robot.

– La caméra CAest modélisée avec sa propre longueur focale fAet il en va de même pour la caméra CB qui possède une longueur focale fB.

– Les caméras ont leur propre point central, qui définit l’intersection de l’axe optique avec le plan image de chaque caméra.

– Les images sont saisies en même temps par les caméras CA et CB.

– Chaque image représente une projection du monde qui est mesurée en pixel et qui montre le point de vue de chaque caméra.

– Bien que tous les paramètres soient connus par la simulation, notre méthode utilise uniquement la distance d, les focales fA et fB des caméras et les images synthétisées. – La position des points détectés dans un plan image est soumis à un bruit gaussien. Pour la simulation, les matrices de rotations 4×4 en coordonnées homogènes sont représentées par :

où rx, ry et rz signifient respectivement un angle de rotation en radians autour de l’axe des x, y et z. Ainsi, ABRse calcule par :

     

c(ry)c(rz) −c(rx)s(rz) + s(rx)s(ry)c(rz) s(rx)s(rz) + c(rx)s(ry)c(rz) 0 c(ry)s(rz) c(rx)c(rz) + s(rx)s(ry)s(rz) −s(rx)c(rz) + c(rx)s(ry)s(rz) 0 −s(ry) s(rx)c(ry) c(rx)c(ry) 0 0 0 0 1       (2.23)

où c est la fonction cosinus et où s est la fonction sinus.

Les matrices de translation 4 × 4 en coordonnées homogènes sont représentées par :

T =TranslationMatrix(tx, ty, tz) (2.24) où tx, ty et tz signifient respectivement un déplacement en centimètres le long de l’axe des x, y et z, tel que : T =       1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1       (2.25)

Chaque robot est défini par trois points réunis dans une matrice en coordonnées homogènes, Roboti, où i signifie l’un des robots, soit A ou B. Chaque colonne de la matrice d’un robot représente la position d’un de ces trois points. Le premier point représente le centre du robot, mais également la position où la caméra Ci est située, car elle est centrée à (0, 0, 0). Le second point correspond au marqueur de gauche, ~Li, et est positionné à (dL

i, 0, 0). Pour ce qui est du troisième point, il s’agit du marqueur visuel droit, ~Ri, et celui-ci est localisé à (−dR

i , 0, 0). Comme dL

i peut être différent de dRi , la caméra ~Ci n’est pas nécessairement directement à mi-distance des marqueurs lumineux, tel que décrit initialement. Ainsi, la configuration de nos robots peuvent être exprimés par les matrices suivantes :

RobotA =       0 dL A −dRA 0 0 0 0 0 0 1 1 1       (2.26) RobotB =       0 dL B −dRB 0 0 0 0 0 0 1 1 1       (2.27)

Le RobotB est déplacé à l’aide d’une matrice de rotation et d’une matrice de translation arbitraire, avec pour seule contrainte que les robots doivent se faire face. Pour ce faire, une rotation est appliquée autour de l’axe des y de π rad afin de faire en sorte de respecter cette contrainte :

A

BRr1 =RotationMatrix(0, π, 0) (2.28)

Nous avons ensuite appliqué une matrice de rotation additionnelle ainsi qu’une matrice de translation, les deux de manière tout à fait arbitraire :

A

BRr2=RotationMatrix(θ rad, φ rad, ω rad) (2.29) A

BT =TranslationMatrix(x cm, y cm, z cm) (2.30)

Ces transformations sont appliquées sur le RobotB de sorte que celui-ci soit positionné pour faire face au RobotA :

RobotB =AB TABRr2ABRr1RobotB (2.31) Afin de simuler la prise d’image par les caméras ~CA et ~CB, une longueur focale fi est définie pour chaque caméra Ci. Puis, la technique suivante est appliquée afin de créer l’image à deux dimensions IA représentant le point de vue du RobotA. Étant donné que le RobotB est défini dans le référentiel du RobotA, et parce que ~CA est centré à (0, 0, 0), une simple projection PA telle que PA=    1 0 0 0 0 1 0 0 0 0 1/fA 0    (2.32)

permet de générer une image projetée ProjA par simple multiplication de PA avec la matrice RobotB.

ProjA = PARobotB (2.33)

Il est à remarquer que la caméra ~CBne fait pas partie de l’image, car seuls les marqueurs sont visibles. De plus, nous pouvons retrouver la position de ~CB à l’aide des calculs démontrés à la section2.1. Les équations suivantes permettent d’extraire de ProjAles positions des marqueurs LB et RB dans l’image IA :

IA(1, :) = ProjA(1, 2 : 3)

ProjA(3, 2 : 3) (2.34)

IA(2, :) = ProjA(2, 2 : 3)

Pour terminer, afin de représenter la réalité, un bruit gaussien en pixel de σA est appliqué sur la position des marqueurs visuels dans l’image générée.

IA= IA+ X [2, 2] ∼ N (0, σ2A) (2.36) Ce bruit représente à la fois les imperfections de la caméra et les erreurs d’approximation de l’algorithme de détection des marqueurs lumineux.

La génération de l’image IB n’est pas réalisée de la même manière, à la différence qu’il faut cette fois exprimer la position du RobotA dans le repère FB du RobotB. Le RobotA doit subir les transformations inverses de celles établies aux équations2.28,2.29 et2.30.

ProjB = PBABRr1−1 ABRr2−1 ABT

−1Robot

A (2.37)

Une nouvelle matrice de projection PB est générée à cette fin. PB =    1 0 0 0 0 1 0 0 0 0 1/fB 0    (2.38)

Tout comme pour l’image IA, la caméra ~CA ne fait pas partie de l’image IB, car seuls les marqueurs sont visibles. Les équations suivantes permettent d’extraire de ProjB les positions des marqueurs LA et RA dans l’image IB :

IB(1, :) = ProjB (1, 2 : 3) ProjB(3, 2 : 3) (2.39) IB(2, :) = ProjB (2, 2 : 3) ProjB(3, 2 : 3) (2.40)

Pour terminer, un bruit gaussien en pixel de σBest aussi appliqué sur la position des marqueurs visuels dans l’image générée IB :

IB= IB+ X [2, 2] ∼ N (0, σ2B). (2.41)

Le lecteur peut également consulter l’appendice A pour y trouver tout le code Matlab per- mettant de réaliser cette simulation. La prochaine sous-section, montre en détail les méthodes utilisées pour valider les calculs servant à localiser le RobotB.

2.2.2 Estimation de β

Dans la réalité, la façon d’estimer l’angle α dans l’image IB est la même que celle décrite à l’équation2.5. Cependant, la manière d’évaluer l’angle β à partir de l’image IAest légèrement différente que celle présentée à la sous-section 2.1.2. En effet, l’équation 2.8stipule que nous

avons besoin du vecteur AP~B, qui correspond au vecteur en trois dimensions pointant vers la caméra CB. Cependant, les images ne contiennent que les marqueurs visuels, comme ce serait le cas pour une utilisation réelle de notre système. Par conséquent, une estimation de la position projetée de la caméra CB est faite dans l’image IA. Cette projection,AP

C, correspond à un point sur la droite reliant le marqueur visuelAP

R(à gauche dans l’image IA) au marqueur visuel APL(à droite dans l’image IA). La position d sur cette droiteAPL dépend d’un simple calcul proportionnel des distances dL

B et dRB, soit : APC APR+  dRB dLB+ dRB  ∗ (APL− APR) (2.42)

Cependant, dans une image, les points plus près de la caméra apparaissent plus distants les uns des autres que les points situés aux distances éloignées. Par conséquent, une erreur addi- tionnelle sur l’angle β est créée par cette approximation. Pour cette raison, nous avons évalué l’impact de cette erreur sur la localisation relative du RobotB, malgré l’impossibilité dans le cas réel d’utiliser directement le vecteur pointant vers ~CB. Nous avons également comparé cette erreure avec celle obtenue lorsque du bruit est appliqué sur les images synthétisées. 2.2.3 Résultats et discussion

Nous avons d’abord généré une simulation dans le cas où les images saisies par les deux robots sont parfaites, c.-à-d. lorsque σA= σB = 0. Tel que mentionné à la sous-section2.2.2, l’angle β est estimé en fonction de la position des marqueurs de l’image IA prise par le RobotA. Nous avons donc vérifié l’écart entre cette estimation de β et la valeur réelle de cet angle. La figure2.6

présente une esquisse de cette simulation. Nous avons déplacé le RobotB dans l’image IA tout en fixant la distance l et en préservant l’orientation relative du RobotB. Nous avons contrôlé les angles du RobotBpar rapport au centre de l’image IAselon les axes x et y de cette dernière. La figure 2.7 présente le ratio de la différence entre l’angle β réel et celui estimé à l’aide de l’équation 2.42. Nous constatons que dans la majorité des cas, lorsque le RobotB se trouve à moins de 60 deg par rapport au centre de l’image IA, l’erreur sur β est nettement inférieure à 0.5 % de sa valeur réelle. Ce résultat a été obtenu alors que le RobotA se trouvait à 10 m du RobotB et que nous avons fait varier la position de ce dernier dans l’image IA d’un angle entre 0 deg et 75 deg par rapport au centre de cette image.

Lorsque la valeur réelle de l’angle β a été utilisée, l’erreur sur la distance l, celle sur la position et celles sur l’orientation sont essentiellement nulles (' 3e−11) et attribuables à des erreurs d’arrondi.

Par contre, lorsque l’estimation de β est utilisée, ces erreurs de distance l augmentent en fonction de l’angle entre le RobotB et l’axe optique de la caméra CA. En effet, plus ce robot est distant du point principal dans l’image IA, plus l’erreur sur β est significative. La figure2.8

Figure 2.6 – Simulation pour valider l’erreur sur l’estimation de β. Nous faisons varier la position du RobotB dans l’image IA, tout en préservant sa distance l par rapport au RobotA. L’orientation du

RobotB reste inchangée.

Figure 2.7 – Erreur sur l’estimation de β. Se référer à la figure2.6pour plus de détails. Nous avons placé le RobotBà l = 10 m du RobotA. Puis nous avons déplacé progressivement le RobotB à différents

endroits dans l’image IA afin de faire varier β. Dans la majorité des cas, nous avons une erreur sur β

de moins de 0.5%

supérieure présente une perspective en deux dimensions de l’impact de l’estimation de l’angle β sur le calcul de la distance l. La figure 2.8centrale présente elle aussi la même perspective, mais montre l’erreur sur la position. La figure 2.8 inférieure, elle, montre la progression de l’erreur sur l’estimation de l’orientation relative du RobotB. Nous y constatons que pour des caméras parfaites possédant un grand angle de vue et une longueur focale fA= fB = 1000 px, nous pouvons nous attendre à une erreur sur la distance l plus petite que 1 cm, à une erreur sur

la position relative du RobotB inférieure à 1.5 cm et à une erreur sur son orientation relative de moins de 0.15 deg.

Figure 2.8 – Erreur sur l’estimation de la pose relative du RobotBà 1 0m lorsque β est estimé par les

marqueurs du RobotB. Se référer à la figure2.6pour plus de détails. De haut en bas respectivement, la

perspective à deux dimensions présentant l’impact de l’estimation de β sur l’erreur (haut) en distance l, (centre) en position et (bas) en orientation. Plus le RobotB est éloigné du point principal sur l’image

IA, plus l’erreur sur l’estimation de l’orientation augmente. Dans la plupart des cas, l’erreur sur la

distance est en-dessous de 1 cm, celle sur la position est sous 1.5 cm et celle sur l’orientation est de moins de 0.15 deg.

Pour estimer l’impact des erreurs de positionnement des points lumineux dans le plan image, nous avons ensuite généré cent mille fois la simulation de la prise d’image. Nous avons instancié les deux robots immobiles à des positions et orientations arbitraires pour des caméras ayant

une longueur focale fA= fB = 1000 px. Nous avons appliqué un bruit gaussien de σA= σB = 0.5 px.

Figure 2.9 – Simulation de l’erreur sur la pose relative entre les deux robots. Histogramme sur 100 000 échantillons. La simulation a lieu alors que les deux robots sont séparés d’une distance l d’environ 1063 cm. De haut en bas respectivement, l’erreur sur (haut) la distance l, (centre) la position et (bas) l’orientation.

La figure 2.9 A présente l’histogramme de l’erreur sur la distance l en centimètres résultant de ces simulations. Les résultats indiquent une erreur moyenne sur la distance de 9.1 cm avec un écart-type de 6.88 cm, pour une distance l d’environ 1063 cm.

De la même manière, la figure2.9B montre un histogramme de l’erreur sur l’estimation de la position relative du RobotB, mesurée en centimètres. Cette erreur, qui a une valeur moyenne

de 9.17 cm et un écart-type de 6.83 cm, nous confirme que les difficultés de positionnement proviennent principalement de l’erreur sur la distance l causée par le bruit gaussien dans les images.

Finalement, la figure 2.9C présente l’erreur sur l’orientation relative estimée du RobotB sous forme d’histogramme. Cette orientation estimée possède une erreur moyenne de 0.0028 rad (0.16 deg) et un écart-type de 0.002 rad (0.11 deg). Similairement, cette erreur est attribuée en majorité au bruit gaussien σA et σB appliqué sur la position des marqueurs visuels dans les images, tandis qu’une faible minorité de l’erreur est attribuée à l’estimation de l’angle β. À la lumière de ces résultats, nous pouvons conclure que l’approximation de l’angle β, qui provient de l’estimation de la position de la caméra CB dans l’image IA, n’est pas une source d’erreur importante à cette distance l.

Documents relatifs