Software <unk> Configuración, SocketCAN, ROS2 y controles
Documentación del software OpenArm: guía de configuración, instalación de Ubuntu, descripción de robot (URDF/xacro), biblioteca SocketCAN CAN, instalación ROS2 para Humble/Jazzy y visión general de controles avanzados.
También ver el OpenArm hardware hub.
En esta página
- [Descripción general del software]
- [Instalar Ubuntu]
- [Guía de instalación]
- [Configuración de identificación del motor]
- [Interfaz de CAN]
- [CAN FD vs CAN 2.0]
- [Comando de control del motor]
- [Estado del LED del motor]
- [Descripción del robot (URDF) ]
- [Instalación]
T61 ) - [Visualización]
- [Biblioteca de CAN]
- [Arquitectura]
- [Clases clave]
- [Integración de los ROS2]
- [Instalación humilde]
- [Jazzy Instalar]
- [Control avanzado]
Documento de los brazos abiertos
- [Visión general]
- [Empezando]
- [Hardware]
T72 ) - [Software]
T73 ) - [Teleoperación]
- [Simulación]
- [FAQ y compras]
También ver
- [OpenArm 1 Quickstart]
- [← Todos los artículos de Wiki]
- [Documentos oficiales
] T79 )
Documentación completa del software: configuración de Ubuntu, archivos de descripción de robots (URDF/xacro), la biblioteca SocketCAN CAN, instalación y configuración de ROS2, y algoritmos de control avanzados.
Ubuntu 22.04 ROS2 Humble SocketCAN URDF MoveIt2 C++ Python
Fuente: doc.openarm.dev/software/ ** Última actualización:** 11 de abril de 2026
1. Descripción general del software
¡Bienvenidos al ecosistema de software OpenArm! Se está construyendo el kit de herramientas para unir el robot bimanual, y las contribuciones son bienvenidas.
El ecosistema de software proporciona:
- Files XACRO modularizados para modelos de robots URDF
- ** API de control de bajo nivel** para la interacción de motores de alta frecuencia a través de SocketCAN
- Integración de ROS2 (en desarrollo activo) con interfaces de control y configuraciones de MoveIt2
- Algorithms de control para la identificación del sistema, la compensación de gravedad y el control del espacio cartesiano
Los nuevos usuarios deben comenzar con la Guía de configuración.
Repositorios de software
| Repository | Description |
|---|---|
| openarm_description | URDF/XACRO files for single-arm and bimanual configurations |
| openarm_can | C++ CAN library for Linux-based motor control with Python bindings |
| openarm_ros2 | ROS2 middleware integration packages |
2. Instalar Ubuntu
El software OpenArm requiere Ubuntu Linux con soporte para SocketCAN. Ubuntu 22.04 LTS (Jammy Jellyfish) es la versión recomendada.
Descarga Ubuntu 22.04 LTS. Visite la página oficial de descarga de Ubuntu: ubuntu.com/download/desktop.
Crea una unidad USB arrancable.
- Windows: Descarga Rufus, seleccione su dispositivo USB y el ISO Ubuntu, y luego escriba.
- ** macOS:** Utilice [Balena Etcher]
- Linux: Utilice el comando
T0 con su ruta ISO y el identificador de dispositivo USB.
- Boot desde USB e instalar. Insertar el USB de arranque, reiniciar el sistema, acceder a la configuración de BIOS/UEFI y establecer USB como el dispositivo de arranque principal. Siga el instalador gráfico para seleccionar el espacio horario, nombre de usuario y contraseña.
Advertencia La instalación estándar borrará todos los datos en la unidad seleccionada.
- Después de la instalación: ejecutar actualizaciones del sistema e instalar herramientas de desarrollo.
sudo apt actualización y& sudo apt actualización -y sudo apt instalar -y curl git construcción-esencial gnome-tweaks
** Alternativa Docker** Para escenarios de desarrollo solo sin una máquina Ubuntu dedicada, se puede usar una configuración Docker. Sin embargo, para el control de hardware con SocketCAN, se requiere una instalación Ubuntu nativa.
Guía de configuración de OpenArm
Esta guía le guía a través de la configuración de su OpenArm desde las conexiones de hardware hasta las pruebas de software. Siga cada paso para una configuración exitosa.
Pre-requisitos
Requisitos de hardware
- Armado robótico de OpenArm con motores DAMIAO
- 24 V de alimentación con capacidad de corriente adecuada
- Cables (los incluidos en el paquete motor son suficientes)
Requisitos para dispositivos de comunicación
| Purpose | Required Device | OS |
|---|---|---|
| Motor ID setup | DAMIAO USB CAN Debugger | Windows |
| Motor control & further setup | SocketCAN-compatible interface | Ubuntu 22.04 / 24.04 or other Linux with SocketCAN support |
Paso 1: Configuración de la identificación del motor
Configurar cada motor DAMIAO con el ID CAN correcto antes de la montaje. Ver la sección Hardware > Motor ID Configuración para el procedimiento completo paso a paso.
Utilice la siguiente tabla como referencia rápida para el par de ID CAN de transmisor/receptor asignado a cada conjunto:
| Joint | Transmitter ID | Receiver ID |
|---|---|---|
| J1 | 0x01 |
0x11 |
| J2 | 0x02 |
0x12 |
| J3 | 0x03 |
0x13 |
| J4 | 0x04 |
0x14 |
| J5 | 0x05 |
0x15 |
| J6 | 0x06 |
0x16 |
| J7 | 0x07 |
0x17 |
| J8 | 0x08 |
0x18 |
** Herramienta de desarreglamiento de Damiao (Windows) ** Descarga la herramienta de desarreglamiento de motor Damiao para configurar y verificar las identidades del motor a través de USB-CAN: Desarreglamiento_herramientas_v.1.6.8.8.exe. Siempre prueba un motor a la vez antes de combinarlos en el bus.
Paso 2: Configuración de la interfaz CAN
Después de la montaje de hardware, configure la interfaz SocketCAN en su máquina Ubuntu.
# Habilitar el OpenArm PPA e instalar todos los paquetes requeridos sudo apt instalar -y software-propiedades-común sudo add-apt-repository -y ppa:abriendo el brazo/principal actualización de sudo apt sudo apt instalar -y \ puede-utilices Iproute2 \ libeigen3-dev libopenarm-can-dev \ Liborocos-kdl-dev \ Liburdfdom-dev Liburdfdom-headers-dev \ por qué no se trata de un proyecto de ley? de armas abiertas
Luego, traiga la interfaz CAN utilizando el ayudante OpenArm (recomendado) o manualmente:
# Recomendado
Can 2.0 (1M de baud, sin FD) Abre el brazo puede configurar el socket puede
Para una configuración de 4 brazos (can0 a can3) abierto-armas-puede configurar-socket-puede-4-armas-fd
Verifique si la interfaz está activada IP enlace muestra puede0
Un puerto CAN por brazo Cada brazo requiere una interfaz CAN dedicada. Una configuración de brazo único utiliza
CAN FD vs CAN 2.0
Los motores OpenArm admiten tanto CAN 2.0 (Clásico CAN, carga útil de 8 bytes) como CAN FD (Rata de datos flexible, hasta 64 bytes de carga útil a velocidades de datos más altas).
| Mode | Nominal Baud | Data Baud | Carga Útil |
|---|---|---|---|
| CAN 2.0 | 1 Mbit/s | — | 8 bytes |
| CAN FD | 1 Mbit/s | 5 Mbit/s | up to 64 bytes |
Comando de enlace IP manual (CAN 2.0):
sudo ip enlace conjunto puede0 abajo sudo ip enlace conjunto puede0 tipo puede bitrate 1000000 sudo ip enlace conjunto puede0 up
Comando manual de enlace de ip (CAN FD
sudo ip enlace conjunto puede0 abajo sudo ip enlace conjunto puede0 tipo puede bitrate 1000000 dbitrate 5000000 fd en sudo ip enlace conjunto puede0 up
Comando manual de control del motor
Utilice estos comandos para el depuración de bajo nivel y para verificar la comunicación motora antes de ejecutar código de nivel superior.
# Monitorear todos los marcos CAN en el autobús cantera -x puede0
# Cambiar la velocidad de movimiento (reemplazar --canid con el identificador del motor objetivo) Abre brazo puede cambiar Baudrate -- Baudrate 5000000 --canid 1 --Socketcan puede0 # Agregar --flash para persistir a través de los ciclos de potencia (máximo ~ 10,000 flash escribe por motor) abierto-brazo puede cambiar-baudrate --baudrate 5000000 --canid 1 --socket puede0 --flash
Control de motor CAN 2.0 (reemplazar
# Despejar el error motor can can can0 001#FFFFFFFFFFFFFFFB # Habilitar el motor Canseña de cansajes
- Desactivar el motor can can can0 001#FFFFFFFFFFFFFFFD
Control del motor FD CAN (nota el extra
# Despejar el error motor Canseña de cansajes # Habilitar el motor Canseña de cansazo
- Desactivar el motor Canseña de cansazo
** Prueba de un motor a la vez** Al poner en marcha los motores, conecte y prueba cada motor individualmente antes de encadenar varios motores en el mismo bus CAN. Esto facilita la identificación de conflictos de identificación o fallos de cableado.
Estado del motor LED
Cada motor Damiao tiene un LED a bordo que indica su estado actual:
| LED Pattern | Meaning |
|---|---|
| Green (steady) | Motor enabled and ready |
| Red (steady) | Motor disabled |
| Red (flashing) | Motor error state — send Clear Error command before re-enabling |
CAN Reservas para solucionar problemas
- [Diagnosis Anomalía de Comunicación de CAN]
T88 ) Diagnóstico de errores intermitentes y persistentes de buses CAN - [Problemas comunes de cableado]
T89 ) polaridad del conector, resistencia a la terminación y punta de protección de cable
Paso 3: Prueba de motor
Después de configurar la interfaz CAN, prueba la comunicación del motor ejecutando las utilidades de prueba del repositorio
Resumen de la ruta de configuración
| Step | Description |
|---|---|
| 0 | Prerequisites — hardware, cables, CAN adapter |
| 1 | Motor ID Configuration (Windows + Damiao Tools) |
| 2 | Setup CAN Interface (openarm-can-configure-socketcan) |
| 3 | Motor Test — verify joint communication |
| 4 | Motor Configuration — tune control parameters |
| 5 | Hands-On: Demo Run |
4. Descripción del robot (URDF/xacro)
El paquete
Estructura del directorio
T28 Archivos de robots principales T29 URDF específico de la versión - Directorios separados para la cinemática de los brazos, el montaje de la carrocería, los efectores finales y el control de ROS2
T30 Files de parámetros específicos de la versión
Instalación
# Asegúrese de que ROS2 está instalado (ver sección 6) # Establecer variables de entorno exportar ROS_DISTRO=humble exportación COLCON_WS=~/ros2_ws
Clonar el repositorio
git clone
Construir cd $COLCON_WS colón construir --paquetes-seleccionar brazo abierto_descripción
# Fuente del espacio de trabajo fuente $COLCON_WS/instalar/configurar.bash
Ejemplos de generación de URDF
Un brazo con la mano xacro robot/arm abierto_robot.xacro brazo_tipo:= extremo derecho_efector:=mano
# Un brazo sin efecto final xacro robot/arm abierto_robot.xacro brazo_tipo:=extremidad derecha_efector:=ninguna
# Configuración bimanual con control ROS2 xacro robot/arm abierto_robot.xacro bimanual:=true ros2_control:=true
# Versión de simulación con hardware falso Xacro robot/arm abierto_robot.xacro simulación:=verdadero
Visualización de RViz
El paquete incluye archivos de lanzamiento para la visualización RViz para configuraciones de un solo brazo y bimanual:
# Lanzar la visualización de un solo brazo ros2 lanzar abierto brazo _descripción display.launch.py
# Lanzar la visualización bimanual ros2 lanzar abierto brazo _descripción visualización _bimanual.launch.py
Argumentos de configuración
Los parámetros personalizables incluyen: tipos de brazo/cuerpo, selección de efecto final, modo bimanual, interfaces CAN, compensaciones de posicionamiento y configuraciones de control ROS2.
Configuración de varios robots
Se pueden ejecutar varias instancias utilizando el espacio de nombres ROS y variables de entorno
# brazo derecho en el dominio 0 Exportación ROS_DOMAIN_ID=0 ros2 lanzar abierto brazo _descripción display.launch.py namespace:=/right_arm
# brazo izquierdo en dominio 1 (terminal separado) exportar ROS_DOMAIN_ID=1 ros2 lanzar abierto brazo _descripción display.launch.py namespace:=/left_arm
5. Biblioteca CAN (abriendo el brazo)
La biblioteca OpenArm CAN es el puente de comunicación principal entre las aplicaciones de control OpenArm de alto nivel y los protocolos de motor de bajo nivel.
Arquitectura
La biblioteca utiliza una estructura de tres capas:
- can/socket
Componentes de alto nivel: T32 , T33 , T34 - Damiao_motor
Capa de protocolo de motor (modo MIT de Damiao) - canbus
Comunicación CAN de bajo nivel (Linux SocketCAN)
Las clases clave
| Class | Description |
|---|---|
OpenArm |
Manages the CAN socket and all motor components globally |
ArmComponent |
Coordinates multiple arm motors as an integrated system |
GripperComponent |
Manages single motor operations with gripper-specific functions: open(), close(), set_position() |
DMDeviceCollection |
Provides shared motor operations including bulk control and parameter queries |
Método de control del motor
Los motores utilizan el protocolo Damiao Motor con modo de control MIT utilizando los parámetros
// MITParam estructura: {kp, kd, q, dq, tau} // kp - ganancia de posición // kd - aumento de velocidad // q - posición deseada (rad) // dq - velocidad deseada (rad/s) // tau - par de transmisión (Nm)
MITParam params; params.kp = 10,0; params.kd = 0,5; params.q = objetivo_posición; params.dq = 0,0; params.tau = 0,0;
arm.send_mit_control(joint_id, params);
Ejecución del flujo de trabajo
Initializar OpenArm con la interfaz CAN. Crear una instancia
T43 que apunte a su interfaz CAN (por ejemplo, T44 ). Registrar los dispositivos de motor con ID de tipo y CAN. Especifique el ID del remitente, el ID del receptor y el modelo del motor para cada conjunto.
Habilitar los motores y configurar el modo de llamada de regreso. Utilice el modo de llamada de regreso
T45 para las respuestas de control; T46 para las consultas de parámetros. Executa el control a través de los parámetros MIT. Envía comandos de posición/velocidad/torque a hasta 1000 Hz.
Manifestar los marcos de retroalimentación. Lea los estados articulares a la frecuencia deseada.
Notas de configuración
- Las longitudes de vectores para los tipos de motores, los ID de envío y los ID de recepción deben coincidir exactamente
- Valores de tiempo de espera: 1000
2000 microsecondas para operaciones lentas; 300 500 para circuitos de control rápidos - La frecuencia del ciclo de control no debe exceder 1000 Hz para las configuraciones de 8 motores
- Utilice el modo de llamada de regreso
T47 para el control; T48 para las consultas de parámetros
6. ROS2 Integración
OpenArm tiene soporte ROS2 nativo que incluye modelos URDF/XACRO, integración
Instalación de ROS2 Humble (recomendado)
# Instalar ROS2 paquete de escritorio Humble sudo apt instalar -y ros-humble-desktop
# Instalar paquetes de controladores específicos de OpenArm sudo apt instalar -y \ control de ros-humble-ros2 \ controlos ros-humble-ros2 \
- el controller-manager control de aglutinador de ros-humble de la parte inferior del cuadro de la parte inferior del cuadro de la parte inferior del cuadro
# Los usuarios de MoveIt2
# Fuente del entorno ROS2 (agrega a ~/.bashrc para la persistencia) echo "fuente /opt/ros/humble/setup.bash" >> ~/.bashrc Fuente ~/.bashrc
Verificar la instalación
- ros2 -h lista de temas ros2
Instalación de ROS2 Jazzy (alternativa)
# Para los usuarios de Ubuntu 24.04 o Jazzy sudo apt instalar -y ros-jazzy-desktop
# Instalar paquetes de controladores (nombres específicos de jazz) sudo apt instalar -y \ control de ros-jazzy-ros2 \ controllers ros-jazzy-ros2 \ el controlero-administrador
Fuente echo "fuente /opt/ros/jazzy/setup.bash" >> ~/.bashrc Fuente ~/.bashrc
Estado de Jazzy La distribución Jazzy está en desarrollo y puede tener problemas de estabilidad con los paquetes OpenArm.
Openarm_ros2 Configuración de repositorio
# Crear espacio de trabajo y clonar
El proyecto de ley de la Unión Europea (UE) no se ha aprobado.
cd ~/ros2_ws/src
git clone
# Instalar dependencias cd ~/ros2_ws rosdep instalar --from-paths src --ignore-src - r - y
Construir colcon construir --symlink-instalar
# Espacio de trabajo de la fuente fuente de instalación/configuración.bash
Características de la ROS2
- Interfaces de control para la posición, velocidad y esfuerzo conjuntos
- Configuración de grupos de planificación MoveIt2 para configuraciones de un solo brazo y bimanual
- Compensas por gravedad fuera de la caja
- Control de impedancia
- Plugin de interfaz de hardware para
T50
7. Controles avanzados
La sección de controles avanzados es un área activamente desarrollada para guías de control y algoritmos.
Coming Soon Se está preparando una documentación detallada para cada modo de control.
Identificación del sistema
Procedimientos para caracterizar la dinámica del OpenArm incluyendo los parámetros de fricción, inercia y amortiguación de las articulaciones.
Compensación por gravedad
La compensación por gravedad mantiene el brazo sin peso (conformista) mediante el cálculo y la cancelación de torques de gravedad en cada articulación en tiempo real.
Control del espacio cartesiano
Control del efecto final del brazo en el espacio cartesiano (posicionamiento XYZ + orientación) en lugar de espacio conjunto. Utiliza kinemática inversa (IK) para convertir comandos cartesianos en comandos conjuntos. Documentos que vendrán pronto.
Modelo de compensación por fricción
La pila de teleoperación utiliza un modelo de compensación de fricción basado en tanh aplicado por articulación:
Formula de compensación de fricción # tau_f = Fc * tanh(k * dq) + Fv * dq + Fo ¿ Qué ? # Fc - nivel de fricción estática # k - nitidez de transición de fricción # Fv - coeficiente de fricción viscosa # Fo - compensación de fricción # dq - velocidad de unión
Tao_f = Fc * tanh(k * dq) + Fv * dq + Fo
Los parámetros por conjunto (Kp, Kd, Fc, k, Fv, Fo) se pueden configurar en los archivos de configuración de control.
Atrucción El contenido de esta página se basa en la documentación oficial de OpenArm en docs.openarm.dev, copyright © 2025
[← Hardware] [
¿Necesitas una unidad OpenArm, piezas de repuesto, o una segunda para tu laboratorio?







