Saltar al contenido principal

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 esté basada en "servoing" hacia la cruceta.

Dicho esto, recomendamos usar el método de "servoing" tan a menudo como sea posible. Es rápido, preciso y adecuado para tareas como adquisición de objetos, apuntado 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 una "cruceta" 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 Cámara

La matriz de 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 cuál 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 causan que las líneas rectas aparezcan curvas.

p1, p2 son coeficientes de distorsión tangencial que ocurren debido a que el lente no está paralelo al plano de 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 mayor precisión.

info

Solo necesitas calibrar a 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 un ratio de aspecto y FOV fijos. Los pipelines de zoom por hardware y los pipelines de 5 megapíxeles son los únicos pipelines que no utilizarán 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

Ejemplo de Tablero ChArUco

  1. 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.
  2. 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).
  3. 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).
  4. Confirma las medidas de "tamaño de cuadrado" y "tamaño de marcador" midiendo las longitudes de los lados de un cuadrado y un marcador en milímetros.
    • Las medidas de tamaño de cuadrado y tamaño de marcador son críticas, así que usa calibradores.
  5. 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

  1. 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.
  2. Enciende tu robot y accede a la interfaz web de Limelight.
  3. Crea un pipeline de AprilTag a 1280x960.
  4. Elimina todas las capturas guardadas cambiando el tipo de fuente de "entrada" de "Camera" a "Snapshot" y haciendo clic en "Delete all snapshots".
  5. Cambia el tipo de fuente de "entrada" de vuelta a "Camera".
  6. Captura al menos 25 capturas 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.
  7. 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 utilizar esta ventaja.
  8. 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á frecuentemente posicionado de manera que tenga deformación de perspectiva (El tablero no debe estar paralelo al plano de imagen).
    • Apunta a una amplia diversidad en posiciones del tablero, perspectivas y cobertura.
    • El 50% de tus imágenes deben ilustrar un escorzo 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 escorzo

Ejemplos de Calibración

Calibrando

  1. Navega a la pestaña "Calibration". Es la tercera pestaña en la barra lateral vertical.
  2. Ingresa los cinco valores encontrados en el paso "Preparando el Tablero".
  3. Haz clic en el botón "Calibrate with Snapshots". El proceso puede tomar uno o dos minutos en completarse.
  4. Al tener éxito, la tarjeta "Latest Calibration Result" mostrará el último resultado de calibración.
  5. Revisa la tarjeta "Latest Calibration Result" para un resultado razonable con un error de reproyección bajo (idealmente menor a 1).
  6. Descarga el último resultado de calibración y súbelo al slot de calibración "custom - file".
  7. Ahora deberías ver tres tarjetas de resultado de calibración pobladas.
  8. Cambia tu "preferred calibration" a "custom - file" para utilizar tu resultado de calibración personalizado. Todos los pipelines usarán tu resultado de calibración.
  9. Considera capturar más capturas de pantalla y recalibrar una vez que estés familiarizado con el proceso.