Calibre un escáner 2D montado en un eje giratorio

9

Un escáner láser 2D está montado en un eje giratorio. Deseo determinar la matriz de transformación desde el centro del eje hasta el centro del escáner, utilizando solo la entrada del escáner y el ángulo de rotación.

ingrese la descripción de la imagen aquí

Se supone que el escáner 2d mismo está calibrado, medirá con precisión la posición de cualquier objeto dentro del plano del láser, con respecto al origen del escáner.

El eje giratorio también está calibrado, medirá con precisión el ángulo de su propio movimiento.

El escáner está alineado y montado cerca del centro de rotación, pero se desconoce el desplazamiento exacto y puede desplazarse con el tiempo.

Suponga que no es práctico medir la posición y orientación del escáner directamente. Estoy buscando una manera de determinar los valores exactos para los 6 grados de desplazamiento que el escáner puede tener en relación con el eje, determinado únicamente en la información 2D del escáner y el ángulo de rotación desde el eje.

ingrese la descripción de la imagen aquí

Estoy principalmente interesado en los 4 desplazamientos representados aquí, ya que los otros dos no importan en lo que respecta a generar una nube de puntos 3D consistente a partir de los datos de entrada.

Al escanear un objeto de calibración conocido, debería ser posible determinar estos desplazamientos. ¿Cuáles son las fórmulas matemáticas para esto?

¿Qué tipo de información de calibración se requiere como mínimo? ¿Es posible, por ejemplo, determinar todos los parámetros simplemente escaneando una superficie plana, sin saber nada sobre la superficie, excepto que es plana?

(La matriz de transformación del eje de rotación al mundo también es desconocida, pero esa es trivial para determinar una vez que se conoce la transformación del eje a la cámara).


Ejemplo

ingrese la descripción de la imagen aquí

A la izquierda, la cámara se coloca exactamente en el eje de rotación. La cámara escanea un objeto plano con los puntos de referencia AB y C. Según las mediciones de distancia del láser y el ángulo del eje, este objeto plano puede reconstruirse.

A la derecha, la cámara tiene un desplazamiento desconocido del eje. Escanea el mismo objeto. Si la nube de puntos se construye sin conocer este desplazamiento, la superficie plana se asigna a una superficie curva.

¿Puedo calcular el desplazamiento en función de la curvatura de la superficie?

Si conozco las distancias y ángulos del mundo real entre A, B y C, ¿cómo puedo calcular los desplazamientos de la cámara a partir de eso? ¿Cuál sería el número mínimo de puntos de referencia que necesito para las 4 compensaciones?

HugoRune
fuente

Respuestas:

1

Si puede darse el lujo de ocultar una pequeña porción de su campo de visión, puede considerar tener un objeto fiducial en algún lugar a la vista.

Con un objeto fiducial adecuado, escaneándolo a medida que gira su eje, debería poder calcular los cuatro desplazamientos que desee.

Si no puede permitirse el lujo de ocultar su campo de visión en condiciones normales de funcionamiento, es posible que deba colocar su fiducial en un actuador propio, para que pueda verlo cuando desee calibrarlo y sacarlo para su funcionamiento normal. El único problema aquí es que limita la precisión de su calibración por la precisión de su actuador fiducial.

Tenga en cuenta que si alguna parte de su campo de visión ya está oculta por otra parte de su robot, y puede ser adecuado para usarlo como fiducial, o al menos como punto de montaje para uno.

Mark Booth
fuente
Mi problema no es colocar un objeto fiducial, eso es bastante simple. Mi problema es calcular las compensaciones. Como usted dice, debería ser posible calcular los cuatro desplazamientos basados ​​en un objeto de calibración, pero ¿cómo? Digamos que escaneo un cubo de dimensiones conocidas. Puedo ver fácilmente que mis desplazamientos son incorrectos si ese cubo se asigna a una nube de puntos no plana y no rectangular. Pero, ¿cómo obtengo las compensaciones correctas de eso?
HugoRune
Gracias por la aclaración @HugoRune: si puede editar su pregunta para incluir esta información, es de esperar que la siguiente persona que responda pueda proporcionar una mejor respuesta. Solo he hecho este tipo de calibración ya que he simplificado el problema a 2D, por lo que solo puedo dar consejos generales.
Mark Booth
1

El método más simple en este caso es esencialmente forzar el problema con fuerza bruta, pero forzarlo de manera inteligente.

Lo que necesitará es un conjunto de datos del escáner mientras está escaneando un objeto, preferiblemente un objeto matemáticamente simple como un cubo o una esfera y la posición de desplazamiento exacto o desplazamiento de ese objeto en relación con la montura de este escáner.

Si tiene estos dos datos, el siguiente truco consiste esencialmente en probar varias combinaciones de compensaciones del escáner (lo que normalmente llamaría valores de calibración) hasta que encuentre compensaciones que hagan que los datos del escáner representen con precisión su objeto. Para esto, puede adivinar valores al azar que pueden tomar una eternidad y no llegar a ninguna parte (pero en teoría eventualmente le daría la respuesta correcta) o puede usar un método de optimización

Para utilizar un método de optimización, deberá desarrollar algún tipo de métrica para determinar si un conjunto particular de compensaciones funciona mejor que otro conjunto. Entonces, cualquiera que sea el método de optimización que esté utilizando, usará esa puntuación para decir si debe ajustar los valores en una dirección particular. Eventualmente, se establecerá en un conjunto particular de valores que parecen funcionar mejor.

Esta es una descripción bastante breve y deficiente de un tema muy profundo, pero espero que lo apunte en una dirección. Si desea una descripción más detallada de algo, deje un comentario.

ApockofFork
fuente