Volver a Wiki

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.

  1. Descarga Ubuntu 22.04 LTS. Visite la página oficial de descarga de Ubuntu: ubuntu.com/download/desktop.

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

  1. 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 FD 1M nominal / 5M de datos abierto-armo-puede-configurar-socketpuede0 -fd -b 1000000 -d 5000000

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 T17. Una configuración bimanual utiliza T18 (líder derecho) + T19 (líder izquierdo) + T20 (seguidor derecho) + T21 (seguidor izquierdo).

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 1M / 5M):

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 T22 con el ID del transmisor del motor objetivo):

# 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 T23 después de T24 que indica la bandera BRS):

# 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 T25. Verifique si todas las 8 juntas responden a los comandos de posición y devuelven la retroalimentación del codificador.

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 T27 contiene archivos URDF/xacro para configuraciones de robots de un solo brazo y de dos manuales, utilizados en la simulación y la planificación de movimientos.

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 T97 \ $COLCON_WS/src/openarm_descripción

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 T31 para el aislamiento de la red:

# 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 T42:

// 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

  1. Initializar OpenArm con la interfaz CAN. Crear una instancia T43 que apunte a su interfaz CAN (por ejemplo, T44).

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

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

  4. Executa el control a través de los parámetros MIT. Envía comandos de posición/velocidad/torque a hasta 1000 Hz.

  5. 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: 10002000 microsecondas para operaciones lentas; 300500 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 T49, compensación de gravedad, control de impedancia y una configuración completa de grupo de planificación MoveIt2.

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 instalar paquetes adicionales sudo apt instalar -y \ ros-humble-moveit \ control de mando de humillación de rojo

# 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 T98

# 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 © 20252026 Enactic, Inc.

[← Hardware] [T92] [Teleoperación →] [T93)

¿Necesitas una unidad OpenArm, piezas de repuesto, o una segunda para tu laboratorio?