HALCON: Calibración Ojo a Mano

Está consultando una versión anetrior de la documentación. Puede cambiar a la documentación de la última versión haciendo clic en la esquina superior derecha de la página.

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 programas de ejemplo:

  • 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.

  • Actualmente, los programas de muestra solo es compatible con la calibración ojo a mano de robots de 6 ejes.

  • Al usar la serie de UHP para realizar la calibración ojo a mano, el Modo de Capturar debe estar ajustado a Camera1.

Condiciones Previas

Asegúrese de que los requisitos estén cumplidos antes de usar HALCON para realizar la calibración ojo a mano:

  1. Asegúrese de que la precisión del robot sea suficientemente buena, y el robot se pueda operar correctamente.

  2. Prepare la tabla de calibración que viene con la cámara y monte la tabla de calibración.

  3. Descargue e instale la última versión de Mech-Eye SDK.

  4. Asegúrese de que la calidad de la imagen 2D y del mapa de profundidad cumpla los requisitos.

  5. Asegúrese de que los parámetros intrínsecos de la cámara cumplan los requisitos.

  6. Haga clic en el menú Code  Download ZIP para descargar los programas de ejemplo de hand_eye_calibration.

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:

  1. Abra el programa de ejemplo en HALCON: abra HDevelop y arrastre el programa de ejemplo a la ventana de HALCON.

  2. Seleccione la línea que contiene el operador de info_framegrabber en la Ventana del Programa, y haga clic en step over ubicado en Herramientas o presione F6 en el teclado para ejecutar el operador.

  3. Haga doble clic en DeviceInfos ubicado en el área de Variables de Control para visualizar todas las cámaras disponibles.

    camera information 1
  4. Haga doble clic en la cámara que desea conectar, y copie el nombre de cámara tras unique_name: o user_name:.

    camera information 3
    El user_name es el nombre personalizado de cámara. Puede personalizar el nombre de la cámara en Mech-Eye Viewer.
  5. 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:

  1. Abra el programa de ejemplo en HALCON: abra HDevelop y arrastre el programa de ejemplo a la ventana de HALCON.

  2. 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:

  1. Abra el archivo de robot_pose.json.

  2. 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"
  3. 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
  4. Abra el archivo de robot_pose.json.

Obtener Posturas de Calibración

Flujo de Trabajo

extri teach flow

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:

  1. Haga clic en run 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.
  2. 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 Ayuda  Referencia HALCON y consulte la sección Calibración.
  3. 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.

  4. 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.

      calib sample
  5. 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.
  6. Rehaga los pasos 2 a 5 para obtener más posturas de calibración.

  7. Obtenga al menos 15 posturas para finalizar la adquisición de datos. Presione Q para salir del programa.

  8. 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.

Flujo de Trabajo

extri calib flow

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:

  1. Haga clic en run 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.

  2. 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á.
  3. Haga clic en run ubicado en Herramientas o presione F5 en el teclado para ejecutar el programa de ejemplo. La cámara capturará imágenes.

  4. 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.

  5. 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.
  6. 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

/

  • Aunque se usa la misma convención de ángulo de Euler, el orden de visualización de ángulos de Euler en el robot puede ser diferente. Inserte el ángulo de Euler según el orden especificado arriba.

  • Si el ángulo de Euler que usa no está en la tabla, añada la conversión desde convención de ángulo de Euler en cuaterniones. Consulte los códigos existentes en el procedimiento de euler_to_quad del programa de ejemplo de perform_hand_eye_calibration para añadir su conversión.

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.

Respetamos su privacidad

Este sitio web almacena cookies para mejorar nuestra página y ofrecerle servicios más personalizados. Al continuar navegando por nuestro sitio web, acepta la recopilación y el tratamiento de cookies. En caso de rechazar dicho uso, se usará una única cookie para asegurarse de que no será rastreado o recordado al visitar este sitio web.