En el desarrollo de robots cuadrúpedos, robots humanoides o brazos robóticos de alto rendimiento, los modos tradicionales de control independiente de posición, velocidad y par suelen ser incapaces de satisfacer las exigencias del control dinámico de todo el cuerpo a alta frecuencia debido a las limitaciones de la tasa de transmisión de tramas de comunicación. Por ello, el MIT Mode se ha convertido en el método de control preferido por los desarrolladores.
Este tutorial le guiará paso a paso para configurar y controlar el CubeMars AK60-6 (KV80) Robotic Actuator en MIT Mode utilizando C++ a través de un bus CAN. Siguiendo esta guía, comprenderá la lógica fundamental del protocolo de comunicación subyacente y aprovechará al máximo el alto rendimiento de respuesta y la baja latencia del actuador.
Antes de comenzar a escribir su código en C++, asegúrese de haber preparado el siguiente entorno de hardware y software:
Hardware principal: CubeMars AK60-6 (KV80) Robotic Actuator, una interfaz de comunicación CAN confiable (como un adaptador USB-to-CAN, CANoe o una placa de desarrollo con interfaz CAN).
Entorno de software: Un compilador de C++ (como GCC o MSVC), junto con una biblioteca de comunicación CAN de terceros (como PCAN-Basic, SocketCAN, etc.).
Software auxiliar: Software oficial de configuración de CubeMars (utilizado para la configuración inicial de parámetros).
Antes de escribir cualquier código, es importante comprender por qué se utiliza el MIT Mode. Los modos de control tradicionales solo pueden enviar un parámetro a la vez (como la posición o la velocidad). En cambio, el MIT Mode permite empaquetar los siguientes cinco parámetros clave en una única trama CAN estándar de 8 bytes:
Posición objetivo
Velocidad objetivo
Par objetivo (Torque / Kt × I)
Ganancia PD de posición (Kp)
Ganancia PD de velocidad (Kd)
Esta estructura unificada de mensajes reduce considerablemente la latencia de comunicación y constituye la base para el control de locomoción robótica de alta frecuencia y el control de fuerza con cumplimiento (compliance).
Antes de ejecutar el código, asegúrese de que el actuador esté correctamente conectado y configurado.
Conexión del hardware: Conecte los terminales CAN_H y CAN_L de su interfaz CAN a los terminales CAN_H y CAN_L del actuador AK60-6, respectivamente. Asegúrese de que todos los dispositivos compartan una conexión a tierra común.
Configuración mediante el software de CubeMars:
Conecte el actuador utilizando el software de configuración de CubeMars.
Configure el CAN ID del actuador con el valor deseado (por ejemplo, 0x01) y recuerde dicho valor, ya que se utilizará en su programa C++.
Configure la Baud Rate en 1 Mbps (1000 kbps), que es la velocidad de comunicación recomendada para el MIT Mode.
Haga clic en el botón "Enter MIT Mode". Una vez habilitado correctamente, el eje del actuador presentará una resistencia electromagnética perceptible al girarlo manualmente.
En un entorno C++, la lógica de control del AK60-6 puede dividirse en los siguientes tres pasos clave (descargue el archivo adjunto que aparece a continuación para obtener el proyecto completo y las funciones de conversión de datos):
Enviar el comando Enable: Después de entrar en MIT Mode, el actuador permanece en un estado de protección de forma predeterminada. Antes de enviar cualquier comando de control, primero debe enviar una trama Enable específica (normalmente una trama de 8 bytes rellena con 0x00, o bien otra trama Enable definida por el protocolo) para desbloquear el actuador. Solo después de escuchar el tono de confirmación se considerará que el actuador ha sido habilitado correctamente.
Conversión de números de punto flotante a enteros sin signo: Este es el algoritmo más importante de la implementación en C++ del MIT Mode. Dado que las tramas CAN solo pueden transmitir datos enteros, los valores físicos (por ejemplo, una posición objetivo de -12.5 rad) deben convertirse en enteros sin signo de 16 o 12 bits.
Lógica: Utilice la función de mapeo lineal float_to_uint(x, x_min, x_max, bits).
Operación: Limite la posición objetivo, la velocidad, el par, Kp y Kd al rango permitido por el actuador y conviértalos proporcionalmente a los valores hexadecimales correspondientes.
Ensamblar y enviar la trama CAN de 8 bytes: Empaquete los cinco parámetros enteros obtenidos en el paso anterior en un arreglo de 8 bytes (64 bits) de acuerdo con la distribución de bits especificada por el protocolo de comunicación de CubeMars. Finalmente, utilice su biblioteca CAN para enviar la trama al actuador utilizando el CAN ID configurado. Una vez recibida la trama, el actuador la interpreta y ejecuta inmediatamente el comando.
Después de compilar y ejecutar (o cargar) su programa en C++, encienda el actuador AK60-6.
Ejecute su aplicación en C++, y observará que el actuador responde de manera extremadamente suave y rápida de acuerdo con los valores de posición, velocidad y par definidos en su código.También puede modificar dinámicamente los valores de Kp y Kd para experimentar directamente los cambios en la rigidez y la capacidad de cumplimiento del actuador.
P1: El actuador no responde o muestra un error después de enviar las tramas CAN.
R: Compruebe los siguientes puntos:
¿Se ha enviado correctamente el comando Enable?
¿El CAN ID de su código en C++ coincide exactamente con el CAN ID configurado en el actuador?
¿Los valores enviados están dentro de los límites definidos por el protocolo (como P_MAX y V_MAX)? Los valores fuera del rango permitido serán rechazados por el actuador.
P2: ¿Cómo debe gestionarse el orden de bytes (Byte Order) en el código?
R: El protocolo CAN de CubeMars utiliza normalmente el formato Big-Endian. Al construir la trama CAN de 8 bytes en C++, preste especial atención al orden del MSB (Most Significant Byte) y el LSB (Least Significant Byte). Un orden incorrecto de los bytes provocará errores en los valores de posición y par. Consulte estrictamente la distribución de bytes especificada en el Communication Protocol Manual.
P3: ¿Cómo puedo calibrar la Zero Position del actuador?
R: En MIT Mode, envíe el comando CAN específico "Set Current Position as Zero" (consulte el Communication Protocol Manual para conocer el CAN ID y la trama de datos correspondientes). El actuador registrará la posición actual del rotor como la posición mecánica cero. Se recomienda realizar esta calibración durante la inicialización del sistema después de cada encendido.
Gracias a su compacto tamaño de brida de 60 mm y a su excelente rendimiento dinámico, el AK60-6 (KV80) es una opción ideal para brazos robóticos ligeros, sistemas de gimbal y articulaciones de las patas de robots cuadrúpedos.
[Obtenga más información sobre el CubeMars AK60-6 (KV80), incluidas sus especificaciones detalladas y dimensiones.]