HALCON: Calibración Ojo a Mano
Este capítulo describe cómo realizar la calibración ojo a mano en el sistema Windows mediante los programas de ejemplo proporcionados por Mech-Mind. Mech-Mind proporciona los siguientes dos ejemplos de programa:
-
determine_calibration_poses: Sirve para determinar las posturas de calibración al realizar la calibración ojo a mano.
-
perform_hand_eye_calibration: Sirve para realizar la calibración ojo a mano.
|
Condiciones Previas
Asegúrese de que los requisitos estén cumplidos antes de usar HALCON para realizar la calibración ojo a mano:
-
Asegúrese de que la precisión del robot sea suficientemente buena, y el robot se pueda operar correctamente.
-
Prepare la tabla de calibración que viene con la cámara y monte la tabla de calibración.
-
Descargue e instale la última versión de Mech-Eye SDK.
-
Asegúrese de que la calidad de la imagen 2D y del mapa de profundidad cumpla los requisitos.
-
Asegúrese de que los parámetros intrínsecos de la cámara cumplan los requisitos.
-
Haga clic en el menú programas de ejemplo de hand_eye_calibration.
para descargar los
Editar los Programas de Ejemplo
Después de determinar las posturas de calibración mediante determine_calibration_poses, se realizará la calibración ojo a mano mediante perform_hand_eye_calibration.
Las siguientes informaciones de los dos programa de ejemplo deben ser idénticas:
-
La cámara por conectar
-
El modelo de tabla de calibración
Además, antes de obtener la postura, es necesario ajustar la convención de ángulo de Euler en el archivo de robot_pose.json.
Seleccionar la Cámara
Antes de ejecutar los programas de ejemplo, es necesario ajustar la cámara por conectar en el programa de ejemplo para que los dos programas de ejemplo estén conectados a la misma cámara. Siga los siguientes pasos:
-
Abra el programa de ejemplo en HALCON: abra HDevelop y arrastre el programa de ejemplo a la ventana de HALCON.
-
Seleccione la línea que contiene el operador de info_framegrabber en la Ventana del Programa, y haga clic en ubicado en Herramientas o presione F6 en el teclado para ejecutar el operador.
-
Haga doble clic en DeviceInfos ubicado en el área de Variables de Control para visualizar todas las cámaras disponibles.
-
Haga doble clic en la cámara que desea conectar, y copie el nombre de cámara tras unique_name: o user_name:.
El user_name es el nombre personalizado de cámara. Puede personalizar el nombre de la cámara en Mech-Eye Viewer. -
Localice la línea de comandos abajo y sustituya MechEye por unique_name o user_name.
DeviceInfo := 'MechEye'
Ajustar el Modelo de Tabla de Calibración
Siga los siguientes pasos para ajustar el modelo de tabla de calibración:
-
Abra el programa de ejemplo en HALCON: abra HDevelop y arrastre el programa de ejemplo a la ventana de HALCON.
-
Ajuste el modelo de tabla de calibración: el modelo de table de calibración predeterminado es BDB-5; si usa otros modelos de table de calibración, localice el siguiente operador y sustituya BDB-5 por el Modelo de tabla de calibración correspondiente.
set_framegrabber_param (AcqHandle, 'BoardType', 'BDB-5')
Ajustar la Convención y Unidad de Ángulo de Euler
Debe insertar la postura de calibración obtenida mediante determine_calibration_poses en el archivo de robot_pose.json, donde la convención de ángulo de Euler predeterminada es sxyz, y la unidad predeterminada de ángulo de Euler es grado. Siga los siguientes pasos para ajustar la convención de ángulo de Euler:
-
Abra el archivo de robot_pose.json.
-
Ajuste la convención de ángulo de Euler: localice la línea de comandos siguiente y sustituye sxyz por la convención de ángulo de Euler del robot que usa. Para obtener informaciones sobre las convenciones de ángulo de Euler compatibles con el programa de ejemplo, consulte la sección Convención de ángulo de Euler.
"EulerType":"sxyz"
-
Ajuste la unidad de ángulo de Euler: si desea insertar ángulos de Euler en radianes, localice la línea de comandos siguiente, y sustituya true por false.
"FromDegree":true
-
Guarde el archivo de robot_pose.json.
Obtener Posturas de Calibración
Instrucción
Antes de realizar la calibración ojo a mano, es necesario obtener al menos 15 posturas de calibración. Siga los siguientes pasos para obtener la postura de calibración:
-
Haga clic en ubicado en Herramientas o presione F5 en el teclado para ejecutar el programa de ejemplo. Cuando el programa ejecuta hasta la línea read_char (WindowHandle, Char, ReCode), se detendrá hasta que se inserte un comando manualmente para seguir ejecutando.
Si no se puede conectar la cámara con éxito, revise si la cámara está conectada en Mech-Eye Viewer o en otros clientes de GenICam. -
Mueva el robot a la posición adecuada usando el pedante didáctico.
La postura de calibración debe cumplir ciertos requisitos. los cuales se puede obtener en la Referencia HALCON: haga clic en y consulte la sección Calibración. -
Inserte P para obtener la imagen 2D desde la cámara.
-
Si la tabla de calibración no está completamente capturada, mueva el robot y capture de nuevo la imagen.
-
Si la tabla de calibración está completamente capturada, proceda con el siguiente paso.
-
-
Inserte T para obtener la imagen 2D con resultados de detección de características.
-
Si la cámara no puede detectar los círculos en la tabla de calibración, no se visualizarán las imágenes en HALCON. En este caso, mueva el robot y capture de nuevo la imagen 2D original y la con resultados de detección de características.
-
Si la cámara puede detectar los círculos en la tabla de calibración, se visualizarán las imágenes en HALCON (como se muestra a continuación). Proceda con el siguiente paso.
-
-
Revise el pedante didáctico del robot, e inserte la postura actual del robot en el archivo de robot_pose.json. La distancia de traslación de la postura debe estar en mm, y la unidad de rotación (ángulos de Euler) debe coincidir con el ajuste en el archivo de robot_pose.json.
Se recomienda guardar esta postura en el pedante didáctico. Al realizar la calibración ojo a mano, puede usar directamente la postura guardada en el pedante didáctico para mover el robot. -
Rehaga los pasos 2 a 5 para obtener más posturas de calibración.
-
Obtenga al menos 15 posturas para finalizar la adquisición de datos. Presione Q para salir del programa.
-
Ajuste el número de posturas de calibración en el archivo de robot_pose.json: abra el archivo de robot_pose.json, localice la línea de comandos siguiente y sustituya 15 por el número real de las posturas de calibración obtenidas.
"pose_count":15
Realizar la Calibración Ojo a Mano
Después de obtener la postura de calibración de robot, puede realizar la calibración ojo a mano mediante la ejecución del programa de ejemplo de perform_hand_eye_calibration.
Revisar el Método de Montaje de Cámara
Antes de realizar la calibración ojo a mano, ajuste el método de montaje de la cámara.
El método predeterminado de montaje de la cámara es Eye in Hand. Si su cámara está montada en el modo de Eye to Hand, localice el siguiente operador y sustituya EyeInHand por EyeToHand.
set_framegrabber_param (AcqHandle, 'CalibrationType', 'EyeInHand')
Cambiar el Marco de Referencia
El proyecto de ejemplo contiene un operador que se puede cambiar el marco de referencia, mediante lo cual se puede generar nube de puntos del marco de referencia de robot de forma directa.
El ajuste predeterminado es no cambiar el marco de referencia. Si desea cambiar al de robot, localice el siguiente operador en el procedimiento de captureTranformedPointCloud, y sustituya false por true.
set_framegrabber_param (AcqHandle,'Scan3dCoordinateTransformEnable',false)
Instrucción
Siga las instrucciones para realizar la calibración ojo a mano:
-
Haga clic en ubicado en Herramientas o presione F5 en el teclado para ejecutar el programa de ejemplo. El programa de ejemplo se detendrá cuando ejecute al operador de stop.
-
Mueva el robot a la postura de calibración en el archivo de robot_pose.json.
Mueva el robot en el orden especificado de postura en el archivo de robot_pose.json. Si no, el cálculo posterior de parámetros extrínsecos se fallará. -
Haga clic en ubicado en Herramientas o presione F5 en el teclado para ejecutar el programa de ejemplo. La cámara capturará imágenes.
-
En el área de Variables de Control, revise el valor de CollectResult.
-
Si se visualiza SUCCESS, proceda con el siguiente paso.
-
Si ocurre un error, solucione los problemas según el código de error visualizado, y obtenga la postura de calibración de nuevo.
-
-
Aparecerá un mensaje diciendo que Move the robot to the next calibration pose. Rehaga los pasos 2 y 3.
Después de que el robot ha llegado a todas posiciones del archivo de robot_pose.json, cuando ejecute el programa de ejemplo de nuevo, se calcularán automáticamente los parámetros extrínsecos. -
En el área de Variables de Control, revise el valor de CalibResult.
-
Si se visualiza SUCCESS, se completa la calibración ojo a mano con éxito. Puede ver el archivo de Extrinsics.txt de parámetros extrínsecos y nube de puntos obtenidos en la carpeta donde se guarda el programa de ejemplo.
-
Si ocurre un error, solucione los problemas según el código de error visualizado, y obtenga la postura de calibración de nuevo.
-
Convención de Ángulo de Euler de Robot
El programa de ejemplo de calibración ya es compatible con la conversión desde convención de ángulo de Euler en cuaterniones.
Representación común | Convención de ángulo de Euler | Marca de robot |
---|---|---|
Z-Y'-Z"/OAT |
rzyz |
Kawasaki |
Z-Y'-X"/yaw, pitch, roll |
rzyx |
ABB |
KUKA |
||
X-Y-Z/WPR |
sxyz |
FANUC |
YASKAWA |
||
Rokae |
||
UR |
||
X-Y'-Z" |
rxyz |
/ |
Z-X'-Z" |
rzxz |
/ |
|
Parámetros de Calibración Ojo a Mano
Esta sección presenta los parámetros que se usan al realizar la calibración ojo a mano.
BoardType
Este parámetro sirve para ajustar la tabla de calibración en uso.
Lista de valor y descripciones:
Valor | Descripción |
---|---|
BDB-5 |
La distancia recomendada entre la tabla de calibración y la cámara es < 0,6 m |
BDB-6 |
La distancia recomendada entre la tabla de calibración y la cámara es de 0,6 a 1,5 m |
BDB-7 |
La distancia recomendada entre la tabla de calibración y la cámara es > 1,5 m |
OCB-005 |
Solo sirve para los proyectos de Eye to Hand con requisito de alta precisión |
OCB-010 |
|
OCB-015 |
|
OCB-020 |
|
CGB-020 |
La distancia recomendada entre la tabla de calibración y la cámara es < 0,6 m |
CGB-035 |
La distancia recomendada entre la tabla de calibración y la cámara es de 0,6 a 1,5 m |
CGB-050 |
La distancia recomendada entre la tabla de calibración y la cámara es > 1,5 m |
ExtrinErrCode
El parámetro de solo lectura sirve para revisar los códigos de estado y de error durante la calibración ojo a mano.
Código de estado | Descripción |
---|---|
SUCCESS |
Ejecutado con éxito. |
POSE_INVALID |
El formato de la postura es incorrecto. Inserte cuaterniones. |
IMAGE2D_EMPTY |
La imagen 2D es inválida. |
FIND_CORNERS_FAIL |
Error al detectar características de la imagen 2D. Ajuste los parámetros que afectan la imagen 2D para obtener la imagen 2D que cumple los requisitos. |
DEPTH_EMPTY |
El mapa de profundidad es inválido. |
CORNERS_3D_INVALID |
Error al detectar características del mapa de profundidad. Ajuste los parámetros que afectan mapa de profundidad para obtener el mapa de profundidad que cumple con los requisitos. |
POSES_INSUFFICIENT |
Posturas insertadas insuficientes. Inserte al menos 15 posturas de calibración. |