返回Wiki

软件 <unk> 设置,SocketCAN,ROS2 & 控制

开放Arm软件文档:设置指南,Ubuntu安装,机器人描述 (URDF/xacro),SocketCAN CAN库,ROS2安装 Humble/Jazzy,以及高级控制概述.

查看OpenArm硬件中心.

在这个页面上

  • 软件概况
  • [安装Ubuntu]
  • 设置指南
  • 机器的身份设置
  • 现在,我们需要一个解决方案.
  • ,我很高兴能看到你.
  • 机动控制命令:
  • 电动 LED 状态
  • 机器人描述 (URDF)
  • T61
  • 现在,我们要做什么?
  • ,我知道,我知道.
  • 建筑物
  • T66)
  • ,我很高兴能看到你.
  • ,我在,我在,我在.
  • 其他技术技术

开臂文件

  • T70)
  • 开始了.
  • 现在,我们要做什么?
  • 软件
  • 电话操作
  • T75
  • [常见问题和购买]

查看

  • 开手1快速启动
  • T78)

完整的软件文档:Ubuntu设置,机器人描述文件 (URDF/xacro),SocketCAN CAN库,ROS2安装和配置,以及先进的控制算法.

乌布图22.04 ROS2 简单的SocketCAN URDF 移动It2 C++ 字符串

来源: doc.openarm.dev/软件/ ** 最后更新:** 2026年4月11日

1.软件概述

开放手机软件生态系统欢迎您!

软件生态系统提供:

  • ** URDF机器人模型的模块化XACRO文件**
  • 通过SocketCAN进行高频电机交互的低级控制API
  • ROS2集成 (正在积极开发) 与控制接口和MoveIt2配置
  • 控制算法用于系统识别,重力补偿和卡特西亚空间控制

新用户应该从设置指南开始. 贡献者可以在每个部分找到改进机会.

软件存储库

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.安装Ubuntu

开放手臂软件需要支持SocketCAN的Ubuntu Linux.Ubuntu 22.04 LTS (Jammy Jellyfish) 是推的版本.

  1. **下载Ubuntu 22.04 LTS.**访问官方Ubuntu下载页面: ubuntu.com/download/desktop.下载Ubuntu 22.04 LTS.

  2. 创建一个可启动的USB驱动器.

  • **Windows:**下载 Rufus,选择您的USB设备和Ubuntu ISO,然后写.
  • macOS: 使用 [Balena Etcher]T85) 或终端命令.
  • Linux: 使用您的ISO路径和USB设备识别符的T0命令.
  1. 从USB启动并安装. 插入可启动USB,重新启动系统,访问BIOS/UEFI设置,并设置USB作为首要启动设备. 按照图形安装器选择时间区,用户名和密码.

警告标准安装将删除选定的驱动器上的所有数据.

  1. 后安装:运行系统更新和安装开发工具.

苏多Apt更新&&苏多Apt升级 -y 关键的 gnome-tweaks

Docker替代方案对于没有专用Ubuntu机器的开发场景,可以使用Docker设置.

3. 开臂设置指南

这本指南将引导您从硬件连接到软件测试的设置,

条件

硬件要求

  • 开臂机器人臂,DAMIAO电机
  • 电源 24 V 电源,电源容量适当
  • 电缆 (汽车包装中包含的电缆是足够的)

通信设备要求

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

步骤1:机器身份识别配置

在组装之前,请配置每个DAMIAO电机的正确CANID. 查看 [硬件>电机ID配置]T86) 部分,详细的步骤程序.

根据每一个关节分配的发射器/接收器CAN ID对,使用下面的表格作为一个简单的参考:

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

**Damiao 调试工具 (Windows) ** 下载Damiao 调试工具,以设置和验证通过USB-CAN的电机ID: Debugging_Tools_v.1.6.8.8.exe. 在将它们组合在公交车上之前,总是一次测试一个电机.

步骤 2:设置CAN界面

在硬件组装后,配置Ubuntu机器上的SocketCAN接口.首先从官方OpenArm PPA中安装所需的包:

启用OpenArm PPA并安装所有所需的包 软件-属性-通用 关键字: 关键字: 关键字: 更新Sudo apt sudo apt 安装 -y \ 可使用的 \ 道2 \ 化3 手可以们的 开放式手臂可使用的工具

然后使用OpenArm助手 (建议) 或手动显示CAN接口:

CAN FD 1M 命名 / 5M 数据波特 开放式臂可以配置式插座可以0 -fd -b 1000000 -d 5000000

可2.0 (无波) 开放臂可以配置插座可以

对于四臂设置 (可从0到3个) 开放式臂可以配置式插座式-4臂 - fd

查看接口是否上升 链接显示可以0

每臂每端口可使用一个CAN接口 每臂需要一个专用CAN接口.单臂设置使用T17.双手设置使用T18 (右领袖) +T19 (左领袖) +T20 (右领袖) +T21 (左领袖).

FD与2.0

开臂电机支持CAN 2.0 (经典的CAN,8字节的有效载荷) 和CAN FD (灵活数据速率,高数据速率高达64字节的有效载荷).CAN FD推用于Damiao电机使用的5Mbit/s数据带宽.

Mode Nominal Baud Data Baud 负载
CAN 2.0 1 Mbit/s 8 bytes
CAN FD 1 Mbit/s 5 Mbit/s up to 64 bytes

手动IP链接命令 (CAN 2.0):

sudo ip 链接设置可以0下 sudo ip链接组件可0类型可比特值1000000 sudo ip 链接设置可以0

手动ip链接命令 (CAN FD 1M / 5M):

sudo ip 链接设置可以0下 果IP链接组件可0类型可位数1000000dbitrate5000000fd sudo ip 链接设置可以0

动机控制手动指令

使用这些命令来调试低级调试,并在运行更高级代码之前验证电动通信.

查巴士的所有CAN框架 -x

#改变电动波速率 (用目标电动ID取代--canid) 开臂可以改变-巴德拉特--巴德拉特5000000--可尼德1--可纳 添加--闪存,以持续在电源周期中 (每动机最高写到10,000个闪存) 开臂可以改变的波德拉特--波德拉特5000000--可尼德1--可尼德1--可尼德0--闪

CAN 2.0电机控制 (用目标电机的发射器ID取代T22):

清除机动错误 子可以0 001#FFFFFFFFFFFFFFFB 启动电机 鱼可以0 001#FFFFFFFFFFFFFFFFFF 除电机 鱼可以0 001#FFFFFFFFFFFFFFFD

CAN FD机器控制 (注:在T24之后,额外的T23表示BRS旗):

清除机动错误 子可以发送 启动电机 鱼可以 除电机 子可以发送

一次测试一台电机第一次启动电机时,在同一CAN公交车上连接和测试每台电机单独,然后在连接多个电机之前. 这使识别身份冲突或电缆故障更容易识别.

发动机LED状态

每个达迈奥电机都有一个显示电源的LED,

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通信异常诊断]T88) 诊断间歇性和持续的CAN公交错误
  • 连接器极度,终止阻力,电缆屏蔽尖

步骤3: 动力测试

配置CAN接口后,通过从T25存储库运行测试工具来测试电机通信. 检查所有8个关节是否响应位置命令并返回编码器反.

设置路径总结

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.机器人描述 (URDF/xacro)

T27包包含用于模拟和运动规划的单臂和双手机配置的URDF/xacro文件.

目录结构

  • T28 主机器人文件
  • T29 版本特定的URDF
  • 单独的手臂动力学,车身组装,终端效应器和ROS2控制目录
  • T30 版本特定参数文件

装备

确保ROS2安装 (见第6节) 设置环境变量 输出 ROS_DISTRO=低调 输出 COLCON_WS=~/ros2_ws

染库 T97 \ 查看更多关于""的文章

建立 其他类型 专构建 --packages-select openarm_description

源源工作空间 源 $COLCON_WS/install/setup.bash

乌尔德夫一代的例子

手,手,手 机器人/开臂机器人.机器人.机器人.机器人.类型:=右端

没有终端效应器的单臂 机器人/开臂机器人.机器人.机器人.机器人.类型:=右端

双手设置,可控制ROS2 机器人/开臂机器人. 机器人双手:=真 ros2_control:=真

模拟版本,使用假硬件 克罗机器人/开臂_robot.xacro模拟:=真实

视觉化

该包包括单臂和双手配置的RViz可视化启动文件:

启动单臂可视化 开启的手臂

启动双手可视化 开启的手臂 描述显示器 双手动.启动.py

配置论点

可定制的参数包括:臂/身体类型,终端效应器选择,双手动模式,CAN接口,定位偏移和ROS2控制设置.

多机器人设置

通过使用ROS名区和T31环境变量来运行多个实例来隔离网络:

域0的右臂 输出ROS_DOMAIN_ID=0 启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启_启_启_启_

域1的左臂 (分隔终端) 输出ROS_DOMAIN_ID=1 启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启动_启_启_启_

5. CAN 图书馆 (开放式手臂)

开放Arm CAN库是高级开放Arm控制应用程序和低级电动协议之间的主要通信桥梁.它利用Linux的SocketCAN接口来控制电动和状态监测.

建筑

图书馆使用三层结构:

  • 高级组件:T32,T33,T34
  • 电动协议层 (Damiao MIT模式)
  • 低级CAN通信 (Linux SocketCAN)

关键类

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

发动机控制方法

电动机使用Damiao Motor协议MIT控制模式使用T42参数:

,,, // kp - 位置增长 // kd - 速度增长 // q - 想要的位置 (rad) // dq - 想要的速度 (rad/s) //tau - 输送扭矩 (Nm)

麻省理工学院; 参数.kp = 10.0; 参数.kd = 0.5; 参数.q =目标_位置; 参数.dq = 0.0; 参数.tau = 0.0;

关键字: 关键字:

实施工作流程

  1. 使用CAN接口启动OpenArm. 创建一个指向您的CAN接口的T43实例 (例如,T44).

  2. **注册机器,使用类型和CANID. ** 指定发送机,接收机和每个机器的机器模型.

  3. 启用电机和配置回调模式. 控制响应使用T45回调模式;参数查询使用T46.

  4. 通过MIT参数执行控制. 发送最高1000Hz的位置/速度/扭矩命令.

  5. 监测反框架. 阅读您想要的频率.

配置说明

  • 输送机型,发送机型和接收机型的向量长度必须完全匹配
  • 时间限值:缓慢操作时10002000微秒;快速控制循环时300500
  • 控制周期频率不应超过1000Hz,用于8发动机设置
  • 使用T47回调模式控制;T48用于参数查询

6.ROS2 集成

开放臂支持ROS2原生,包括URDF/XACRO模型,T49集成,重力补偿,阻力控制以及完整的MoveIt2计划组配置.

安装ROS2 适度 (建议)

安装ROS2 简单桌面包 应用程序安装 -y ros-humble-desktop

# 安装OpenArm特定控制器包 sudo apt 安装 -y \ 子控制器管理器 子控制器 机器人接口

移动It2用户 安装额外的包 sudo apt 安装 -y \ 式前置指挥控制器

# 源源ROS2环境 (添加到 ~/.bashrc以保持) 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签: 标签 来源:

查看安装 子 专题列表

安装ROS2 Jazzy (可替代)

对于Ubuntu 24.04或Jazzy用户 苏多安装 - y 罗斯-杰西桌面

#安装控制器包 (Jazzy特定名称) sudo apt 安装 -y \ 子控制器管理器

源头 声响"源 /opt/ros/jazzy/setup.bash" >> ~/.bashrc 来源:

Jazzy Status 杰西的发行正在开发中,OpenArm包可能会出现稳定性问题.

开臂_ros2 存储库设置

创建工作空间和克隆 其他类型: 其他类型: T98

设置依赖性 其他类型 系统安装--from-paths src --ignore-src - r - y

建立 编译链接

源工作空间 源安装/设置.bash

ROS2 的特征

  • 控制接口,用于联合位置,速度和力
  • 单臂和双手设置的MoveIt2规划组配置
  • 引力补偿
  • 阻力控制
  • T50的硬件界面插件

7. 高级控制

高级控制部分是控制指南和算法的积极开发领域.

即将到来每种控制模式的详细文档正在准备. 贡献是欢迎的 贡献指南.

系统识别

简单的方法是描述OpenArm的动态,包括摩,惰性和缩参数.

重力补偿

引力补偿通过计算和实时取消每个关节的引力扭矩来保持臂部无重量 (符合要求).这对于安全的远程操作至关重要.

卡特西亚空间控制

控制手臂的终端效应器在卡特西亚空间 (XYZ位置 +方向) 而不是联合空间.使用逆动力学 (IK) 转换卡特西亚命令到联合命令. 文件将很快到来.

摩擦补偿模型

电操作堆采用基于的摩擦补偿模型,每关节应用于:

缩补偿公式 现在,我们要去做什么? Fc - 静态摩擦水平 # k - 摩擦过渡的敏缩系数 缩减 (dq) - 关节速度

() + () + ()

按关联参数 (Kp, Kd, Fc, k, Fv, Fo) 可以在控制配置文件中配置.

** 归因** 本页面的内容基于 [docs.openarm.dev]的官方OpenArm文档,版权 © 20252026Enactic, Inc.

电话操作:

需要一个OpenArm单元,备份或第二个为你的实验室?