Calibración de Cámara ChArUco
¿Por Qué Es Importante?
Una cámara completamente calibrada proporcionará mediciones 2D y 3D más precisas. Es útil para cualquier tarea que no se base en el "servoing" al punto de mira.
Dicho esto, recomendamos usar el método de "servoing" siempre que sea posible. Es rápido, preciso y adecuado para tareas como la adquisición de objetos, apuntamiento y alineación con objetivos. No te preocupes por la calibración a menos que determines que necesitas mayor precisión. Cada unidad LL viene con una calibración predeterminada que proporcionará resultados bastante buenos para la mayoría de los casos de uso
"servoing" es el proceso de girar tu robot hasta que tu objetivo esté perfectamente alineado con un "punto de mira" configurable. Es la forma más fácil y, en muchos casos, la más confiable de abordar problemas de visión en robótica.
¿Qué es la Calibración de Cámara?
La calibración de intrínsecos es el proceso de determinar los dos siguientes componentes:
1. La Matriz de la Cámara
La matriz de la cámara, a menudo denotada como K, es una matriz 3x3 que describe cómo el lente y el sensor convierten el mundo 3D en una imagen 2D.
[fx 0 cx]
[0 fy cy]
[0 0 1]
cx y cy son las coordenadas del punto principal / píxel principal. El punto principal / píxel principal es el píxel que está directamente alineado con el eje óptico / centro del lente. Durante la fabricación, el lente de la cámara casi nunca está perfectamente alineado con el centro del sensor de imagen. Es crucial que entendamos qué píxel es el verdadero píxel "central"
fx y fy son longitudes focales calculadas en píxeles. fx y fy nos ayudan a entender el campo de visión / nivel de zoom de la cámara.
2. Coeficientes de Distorsión
Calculamos 5 coeficientes de distorsión:
[k1, k2, p1, p2, k3]
k1, k2, k3 son coeficientes de distorsión radial que hacen que las líneas rectas aparezcan curvadas.
p1, p2 son coeficientes de distorsión tangencial que ocurren debido a que el lente no está paralelo al plano de la imagen
Realizando la Calibración ChArUco
La calibración ChArUco con Limelight fue diseñada para ser lo más fluida y a prueba de errores posible. Lee los siguientes pasos y luego mira el video a continuación para aprender cómo calibrar tu cámara para aumentar la precisión.
Solo necesitas calibrar en una resolución (recomendamos 1280x960 para LL3 y 1280x800 para LL3G). Los intrínsecos se escalan automáticamente para coincidir con la resolución elegida de tu pipeline, y los coeficientes de distorsión son invariantes a la resolución dado una relación de aspecto y FOV fijos. Los pipelines de zoom por hardware y los pipelines de 5 megapíxeles son los únicos que no harán uso de calibraciones personalizadas.
Preparando el Tablero
Puedes usar cualquier pantalla de laptop para calibrar tu cámara. Sin embargo, para máxima precisión, recomendamos comprar este tablero grueso de 800mmx600mm de calib.io
- Imprime un Tablero de Calibración ChArUco o usa una imagen de un tablero en una pantalla grande de laptop o computadora. Usa nuestro tablero de la página de descargas, o genera el tuyo propio.
- Encuentra el "ancho" de la cuadrícula sumando el número total de cuadrados negros y el número total de marcadores ArUco en una fila (11 para el tablero de calibración predeterminado de Limelight).
- Encuentra la "altura" de la cuadrícula sumando el número total de cuadrados negros y el número total de marcadores ArUco en una columna (8 para el tablero de calibración predeterminado de Limelight).
- Confirma las medidas de "tamaño del cuadrado" y "tamaño del marcador" midiendo las longitudes laterales de un cuadrado y un marcador en milímetros.
- Las medidas del tamaño del cuadrado y del marcador son críticas, así que usa calibradores.
- Anota el tipo de diccionario. El tablero predeterminado de la página de descargas usa el diccionario 5x5_100.
Capturando Imágenes de Calibración
- Asegúrate de que tu tablero esté lo más plano posible.
- No debes realizar la calibración si tu tablero no está plano. Puedes comprar tableros especiales de calib.io, o fijar tu tablero impreso a un portapapeles.
- Enciende tu robot y accede a la interfaz web de Limelight.
- Crea un pipeline AprilTag de 1280x960.
- Borra todas las instantáneas guardadas cambiando el tipo de fuente de "entrada" de "Cámara" a "Instantánea" y haciendo clic en "Borrar todas las instantáneas".
- Cambia el tipo de fuente de "entrada" de nuevo a "Cámara".
- Captura al menos 25 instantáneas del tablero ChArUco para comenzar. Una vez que estés familiarizado con el proceso, querrás volver a capturar un total de al menos 50 imágenes.
- La principal ventaja de la calibración ChArUco sobre la calibración estándar de tablero de ajedrez es que funciona incluso si solo parte del tablero es visible para la cámara. Es importante aprovechar esta ventaja.
- Tus imágenes deben tener una buena mezcla de las siguientes cualidades:
- Tu tablero abarca grandes regiones de la imagen.
- Tu tablero se extiende más allá de al menos un borde o esquina de la imagen (Esto ayudará a calcular la distorsión alrededor de los bordes de las imágenes).
- Tu tablero está a menudo posicionado de manera que tiene deformación por perspectiva (El tablero no debe estar paralelo al plano de la imagen).
- Busca una amplia diversidad en las posiciones del tablero, perspectivas y cobertura.
- El 50% de tus imágenes deben ilustrar un acortamiento significativo. Este es el efecto de que los marcadores más cercanos aparezcan más grandes que los marcadores lejanos. La primera y última imagen en la siguiente captura de pantalla demuestran el acortamiento
Calibrando
- Navega a la pestaña "Calibración". Es la tercera pestaña en la barra lateral vertical.
- Ingresa los cinco valores encontrados en el paso "Preparando el Tablero".
- Haz clic en el botón "Calibrar con Instantáneas". El proceso puede tardar uno o dos minutos en completarse.
- Al tener éxito, la tarjeta "Último Resultado de Calibración" mostrará el resultado de la calibración más reciente.
- Verifica la tarjeta "Último Resultado de Calibración" para un resultado razonable con un error de reproyección bajo (idealmente menos de 1).
- Descarga el último resultado de calibración y súbelo a la ranura de calibración "personalizada - archivo".
- Ahora deberías ver tres tarjetas de resultado de calibración pobladas.
- Cambia tu "calibración preferida" a "personalizada - archivo" para utilizar tu resultado de calibración personalizado. Todos los pipelines usarán tu resultado de calibración.
- Considera capturar más capturas de pantalla y recalibrar una vez que estés familiarizado con el proceso.