Ein 2D-Laserscanner ist auf einer Drehachse montiert. Ich möchte die Transformationsmatrix von der Mitte der Achse zur Mitte des Scanners bestimmen, indem ich nur die Eingabe vom Scanner und den Drehwinkel verwende.
Es wird angenommen, dass der 2D-Scanner selbst kalibriert ist. Er misst genau die Position eines Objekts innerhalb der Ebene des Lasers in Bezug auf den Scannerursprung.
Die Drehachse ist ebenfalls kalibriert und misst den Winkel ihrer eigenen Bewegung genau.
Der Scanner ist nahe am Rotationszentrum ausgerichtet und montiert, aber der genaue Versatz ist unbekannt und kann mit der Zeit driften.
Angenommen, es ist unpraktisch, die Position und Ausrichtung des Scanners direkt zu messen. Ich suche nach einer Möglichkeit, die genauen Werte für die 6 Grad Versatz zu bestimmen, die der Scanner in Bezug auf die Achse haben kann, die ausschließlich anhand der 2D-Informationen vom Scanner und des Drehwinkels von der Achse bestimmt werden.
Ich interessiere mich hauptsächlich für die hier abgebildeten 4 Offsets, da die beiden anderen keine Rolle bei der Erzeugung einer konsistenten 3D-Punktwolke aus den Eingabedaten spielen.
Durch Scannen eines bekannten Kalibrierungsobjekts sollte es möglich sein, diese Offsets zu bestimmen. Was sind die mathematischen Formeln dafür?
Welche Art von Kalibrierungsinformationen sind mindestens erforderlich? Ist es zum Beispiel möglich, alle Parameter einfach durch Scannen einer ebenen Fläche zu bestimmen, ohne etwas über die Fläche zu wissen, außer dass sie flach ist?
(Die Transformationsmatrix von der Rotationsachse zur Welt ist ebenfalls unbekannt, aber diese ist trivial zu bestimmen, sobald die Transformation von der Achse zur Kamera bekannt ist.)
Beispiel
Links befindet sich die Kamera genau auf der Drehachse. Die Kamera scannt ein planares Objekt mit den Referenzpunkten AB und C. Basierend auf den Laserentfernungsmessungen und dem Winkel der Achse kann dieses planare Objekt rekonstruiert werden.
Rechts hat die Kamera einen unbekannten Versatz zur Achse. Es scannt das gleiche Objekt. Wenn die Punktwolke ohne Kenntnis dieses Versatzes konstruiert wird, wird die planare Oberfläche einer gekrümmten Oberfläche zugeordnet.
Kann ich den Versatz anhand der Oberflächenkrümmung berechnen?
Wenn ich die realen Entfernungen und Winkel zwischen A, B und C kenne, wie kann ich daraus die Kamera-Offsets berechnen? Was wäre die Mindestanzahl an Referenzpunkten, die ich für alle 4 Offsets benötige?
quelle
Die einfachste Methode in diesem Fall besteht darin, das Problem im Wesentlichen brutal zu erzwingen, es jedoch auf intelligente Weise zu erzwingen.
Was Sie benötigen, ist ein Datensatz vom Scanner, während er ein Objekt scannt, vorzugsweise ein mathematisch einfaches Objekt wie ein Würfel oder eine Kugel, und die genaue Versatzposition oder der Versatz dieses Objekts relativ zur Halterung dieses Scanners.
Wenn Sie über diese beiden Informationen verfügen, besteht der nächste Trick im Wesentlichen darin, verschiedene Kombinationen von Scanner-Offsets (was ich normalerweise als Kalibrierungswerte bezeichne) zu testen, bis Sie Offsets finden, die bewirken, dass die Scannerdaten Ihr Objekt genau darstellen. Hierfür können Sie entweder zufällig Werte erraten, die ewig dauern und nirgendwo hinkommen (aber theoretisch würden Sie schließlich die richtige Antwort erhalten), oder Sie können eine Optimierungsmethode verwenden
Um eine Optimierungsmethode zu verwenden, müssen Sie eine Art Metrik entwickeln, um festzustellen, ob ein bestimmter Satz von Offsets besser funktioniert als ein anderer Satz. Unabhängig davon, welche Optimierungsmethode Sie verwenden, wird anhand dieser Punktzahl angegeben, ob die Werte in eine bestimmte Richtung angepasst werden sollen. Letztendlich wird es sich auf einen bestimmten Satz von Werten festlegen, die am besten zu funktionieren scheinen.
Dies ist eine ziemlich kurze und schlechte Beschreibung eines sehr ausführlichen Themas, aber hoffentlich bringt es Sie in eine Richtung. Wenn Sie eine detailliertere Beschreibung von etwas wünschen, hinterlassen Sie einen Kommentar.
quelle