Un scanner laser 2D est monté sur un axe rotatif. Je souhaite déterminer la matrice de transformation du centre de l'axe au centre du scanner, en utilisant uniquement l'entrée du scanner et l'angle de rotation.
Le scanner 2D lui-même est supposé calibré, il mesurera avec précision la position de tout objet à l'intérieur du plan du laser, en ce qui concerne l'origine du scanner.
L'axe rotatif est également calibré, il mesurera avec précision l'angle de son propre mouvement.
Le scanner est aligné et monté près du centre de rotation, mais le décalage exact est inconnu et peut dériver avec le temps.
Supposons qu'il soit impossible de mesurer directement la position et l'orientation du scanner. Je cherche un moyen de déterminer les valeurs exactes des 6 degrés de décalage que le scanner peut avoir par rapport à l'axe, déterminés uniquement sur les informations 2D du scanner et l'angle de rotation par rapport à l'axe.
Je m'intéresse principalement aux 4 décalages illustrés ici, car les deux autres n'ont pas d'importance en ce qui concerne la génération d'un nuage de points 3D cohérent à partir des données d'entrée.
En scannant un objet d'étalonnage connu, il devrait être possible de déterminer ces décalages. Quelles sont les formules mathématiques pour cela?
Quel type d'informations d'étalonnage est requis au minimum? Est-il par exemple possible de déterminer tous les paramètres simplement en balayant une surface plane, sans rien savoir de la surface si ce n'est qu'elle est plate?
(La matrice de transformation de l'axe de rotation au monde est également inconnue, mais celle-ci est triviale à déterminer une fois que la transformation de l'axe à la caméra est connue.)
Exemple
À gauche, la caméra est placée exactement sur l'axe de rotation. La caméra balaye un objet plan avec les points de référence AB et C. Sur la base des mesures de distance laser et de l'angle de l'axe, cet objet plan peut être reconstruit.
À droite, la caméra a un décalage inconnu par rapport à l'axe. Il scanne le même objet. Si le nuage de points est construit sans connaître ce décalage, la surface plane est mappée sur une surface courbe.
Puis-je calculer le décalage en fonction de la courbure de la surface?
Si je connais les distances et les angles réels entre A, B et C, comment puis-je calculer les décalages de la caméra à partir de cela? Quel serait le nombre minimum de points de référence dont j'ai besoin pour les 4 décalages?
la source
Dans ce cas, la méthode la plus simple consiste essentiellement à forcer le problème par la force brute, mais à le forcer de manière intelligente.
Ce dont vous aurez besoin, c'est d'un ensemble de données du scanner pendant qu'il scanne un objet, de préférence un objet mathématiquement simple comme un cube ou une sphère et la position de décalage exacte ou le décalage de cet objet par rapport au support de ce scanner.
Si vous disposez de ces deux informations, l'astuce suivante consiste essentiellement à tester différentes combinaisons de décalages du scanner (ce que j'appellerais généralement des valeurs d'étalonnage) jusqu'à ce que vous trouviez des décalages qui font que les données du scanner représentent précisément votre objet. Pour cela, vous pouvez soit deviner des valeurs au hasard, ce qui peut prendre une éternité et ne pas aboutir (mais en théorie, vous obtiendrez éventuellement la bonne réponse) ou vous pouvez utiliser une méthode d'optimisation
Pour utiliser une méthode d'optimisation, vous devrez développer une sorte de métrique pour dire si un ensemble particulier de décalages fonctionne mieux qu'un autre ensemble. Ensuite, quelle que soit la méthode d'optimisation que vous utilisez, elle utilisera ce score pour dire s'il faut ajuster les valeurs dans une direction particulière. Il finira par se fixer sur un ensemble particulier de valeurs qui semblent fonctionner le mieux.
Il s'agit d'une description assez brève et médiocre d'un sujet très approfondi, mais j'espère que cela vous orientera dans une direction. Si vous souhaitez une description plus détaillée de quelque chose, laissez un commentaire.
la source