尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OpenArm 完整搭建指南:从达妙电机 ID 配置到 SocketCAN 通信与 Demo 运行

OpenArm 完整搭建指南:从达妙电机 ID 配置到 SocketCAN 通信与 Demo 运行 OpenArm 完整搭建指南从达妙电机 ID 配置到 SocketCAN 通信与 Demo 运行【免费下载链接】openarmA fully open-source humanoid arm for physical AI research and deployment in contact-rich environments.项目地址: https://gitcode.com/GitHub_Trending/op/openarmOpenArm 是一款完全开源的人形机械臂面向接触丰富的物理 AI 研究场景。本指南基于仓库中的 Setup Guideversion-1.0 及其六个步骤文档系统讲解从硬件接线、电机 ID 烧录、SocketCAN 接口配置到零位标定、通信验证与 Demo 运行的完整上机流程。读完本文你将能够独立完成一台 OpenArm 的全部基础配置并具备使用官方 CAN 工具链进行日常调试与二次开发的能力。Step 0前置条件与需求清单动手之前先确认手上备齐了以下两类资源——电机与通信设备。硬件需求OpenArm 机械臂本体搭载达妙 Damiao 系列电机24V 电源电流容量需满足所有电机的需求线缆电机包装内自带的线缆通常足够通信设备需求用途设备系统环境电机 ID 配置烧录达妙 USB CAN DebuggerWindows 电脑电机控制与后续配置SocketCAN 兼容接口设备如 CANable 等Ubuntu 22.04/24.04 或其他支持 SocketCAN 的 Linux其中 Ubuntu 环境的安装可参考 Ubuntu 安装快速指南推荐使用Ubuntu 22.04 LTS纯开发测试场景也可考虑 Docker 方案。提示完整的分步文档位于 website/docs/setup/openarm-setup/下文各 Step 均对应其中一篇。Step 1电机 ID 配置达妙调试工具OpenArm 的全部代码都依赖固定的 CAN ID 分配方案在运行任何程序之前必须先确保每个电机的发送 IDSender CAN ID与接收 IDMaster ID与下表完全一致关节Sender CAN IDReceiver (Master) IDJ10x010x11J20x020x12J30x030x13J40x040x14J50x050x15J60x060x16J70x070x17J8夹爪0x080x18注意ID 配置也可以通过对已知 ID通常为 0x01的电机直接发送 CAN 帧实现但官方教程不包含该方法推荐使用达妙调试工具完成。安装达妙调试工具在 Windows 上下载并安装达妙调试工具。若 Windows Defender 拦截安装打开 Windows 安全中心进入病毒和威胁防护点击保护历史记录找到被拦截的条目应提及 Damiao Debugging Tools点击操作 → 允许重新运行安装程序启动后界面左下角的绿/红切换按钮可将界面切换为英文。该工具主要有三大用途配置 ID、快速校准以测试电机是否运转、在发送命令前检查固件版本与控制模式。打开串口需要特别注意的是达妙调试工具通过串口UART而非 CAN 与电机通信串口波特率为921600 bps。若下拉列表中没有自动检测到正确串口通常选择列表中的最后一项即可。连接后首次启动即可看到电机信息。配置电机 ID点击ReadParam从电机读取当前参数参照上表选择正确的 Sender 与 Master ID将值填入对应字段点击WriteParam将设置写入电机测试电机简单校准点击 Calibrate电机应开始转动。校准结果可以不保存但识别出的参数有参考价值。高级测试Test 标签页CAN ID连接电机后点击 Read 读取 CAN ID多台电机菊花链连接时可将 CAN ID 设为链上最后一台电机以控制整条链Control Commands点击 Enter 启动电机电机每次重启后都需要重新执行GH1.25 三针接口上方的 LED 应亮绿灯Control Parameter设置控制参数。最简单的测试是将 Tor扭矩设为 1其他控制项参考达妙官方文档CAN Data点击 Update 从 Control Parameter 拉取数值每次输入新值后需重新执行CAN Data点击 Send 将数值发送给电机电机开始旋转停止将 Control Parameter 中的值归零后 Update直接点击 Stop 会硬停止电机仅在紧急情况下使用故障排查电机启动但不旋转检查供电电流是否充足参考下文推荐电流表使用 CANable 设备检查是否已启用 120Ω 终端电阻硬件接线使用电机包装内线缆时可能需要焊接另一个公头连接器CAN 线24V 供电可用 XT30U-M 或拆分 M/F 线缆焊接后连接 PSUJ8009P 电机可直接插线无需电源适配板CANable 设备需启用 120R 终端电阻推荐电流表24V 下校准与测试电机最小电流推荐电流DM-J4310~0.25 A~0.3 ADM-J4340~0.25 A~0.3 ADM-J8009P~0.7 A~0.75 A电流是累加的菊花链连接多台电机时供电电流需为所有电机电流之和。Step 2SocketCAN 接口配置接下来在 Linux 上配置 SocketCAN使系统能够与电机进行 CAN 总线通信。实验所用通信设备的清单见 电气 BOM。安装依赖sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:openarm/main sudo apt update sudo apt install -y \ can-utils \ iproute2 \ libopenarm-can-dev \ openarm-can-utils查找 CAN 接口ip link show从输出中确认你的 CAN 适配器对应接口名如can0、can1、slcan0等。以下命令中的can0需替换为实际接口名。配置接口两种方式方式一使用 OpenArm CAN 库提供的命令推荐见 CAN CLI 参考# CAN 2.0 模式 openarm-can-configure-socketcan can0 # CAN FD 5Mbps推荐 openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000新版工具链也可直接使用openarm-can-cli# CAN FD 5Mbps默认标称 1Mbps / 数据 5Mbps openarm-can-cli -i can0 can_configure # 经典 CAN1Mbps无 FD openarm-can-cli -i can0 can_configure --no-fd方式二手动配置CAN 2.0 模式1Mbpssudo ip link set can0 down sudo ip link set can0 type can bitrate 1000000 sudo ip link set can0 upCAN FD 模式5Mbpssudo ip link set can0 down sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on sudo ip link set can0 up验证配置# 确认接口已启动 ip link show can0 # 监控 CAN 流量可选 candump can0 # 发送测试帧 cansend can0 ...排障要点检查物理连接与对应 CAN 适配器的驱动是否安装用dmesg查看设备日志基于串口的设备可能需要slcand等包装器才能在ip link show中可见核对接口支持的波特率范围必要时加载内核模块sudo modprobe slcan sudo modprobe can sudo modprobe can_rawStep 3电机通信测试在运行完整 Demo 之前先做一次快速通信自检确认 CAN 接口能与电机正常通信。前提是已完成 Step 1电机 ID与 Step 2CAN 接口。打开两个终端终端 1——监控 CAN 流量candump can0终端 2——向 1 号电机发送使能命令cansend can0 001#FFFFFFFFFFFFFFFC命令解析001 1 号电机的 CAN ID0x01FFFFFFFFFFFFFFFC 电机使能命令预期结果如果一切正常1 号电机 LED 应变为绿色表示 CAN 通信激活。若电机波特率已与接口一致监控终端会收到响应帧can0 011 [8] XX XX XX XX XX XX XX XX响应解析011 1 号电机的响应 ID0x11数据字节包含电机状态信息若未收到响应帧说明电机波特率与接口不一致Step 4 会引导你修改电机波特率。配置了多台电机时请逐台测试。测试完成后关闭电机# 关闭 1 号电机 cansend can0 001#FFFFFFFFFFFFFFFD排障LED 无变化确认电机已供电连接 24V 电源检查物理连接线缆松动等——这点非常重要检查 CAN 接线CANH/CANL 是否接对确认电机 ID 已正确设置为 0x01响应 ID 错误复查电机配置接收 ID 应为 0x11确认总线上没有其他设备占用冲突 IDStep 4电机配置波特率、零位标定与通信验证此步包含三项关键任务设置电机波特率、零位标定、验证电机通信。Step 4.1设置电机波特率警告电机参数写操作有10000 次寿命限制不应在脚本中频繁执行。此外波特率设置过程中务必先将 CAN 接口保持在 2.0 模式无论目标波特率是多少本步骤完成后再将接口配置回目标波特率。v1.0 工具链命令# 临时设置不写入 flash openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0 # 永久保存写入 flash openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0 --flash新版 CLI当前版本文档见 change_baud 参考# 临时设置 openarm-can-cli -i can0 change_baud -b 5000000 -c 1 # 永久保存 openarm-can-cli -i can0 change_baud -b 5000000 -c 1 --save完成波特率配置后需将 CAN 接口重新配置为与电机新波特率一致才能正常通信。支持的波特率编码波特率说明0125000125 kbps1200000200 kbps2250000250 kbps3500000500 kbps410000001 Mbps520000002 Mbps625000002.5 Mbps732000003.2 Mbps840000004 Mbps950000005 Mbps1080000008 Mbps111000000010 Mbps注意--save/--flash写入 flash 有约 10,000 次硬性寿命限制切勿在循环中反复执行保存后需断电重启电机新波特率才会生效。Step 4.2零位标定开始前请先安全确认将机械臂各关节物理摆放到接近下图所示的零位姿态夹爪默认以闭合位置为零位若搭建的是主从Leader-Follower配置请分别在主手与从手独立状态下单独执行零位标定安全第一标定开始时机器人会自动运动穿戴安全装备、清空工作区、随时准备急停零位标定每次只处理一条手臂。默认针对 can0 的右臂# v1.0 openarm-can-zero-position-calibration # v2.0 需显式指定版本当前版本文档 openarm-can-zero-position-calibration --robot-version v1指定具体手臂# Leader 侧左臂 openarm-can-zero-position-calibration --canport can1 --arm_side left_arm # Follower 侧右臂 openarm-can-zero-position-calibration --canport can2 --arm_side right_arm # Follower 侧左臂 openarm-can-zero-position-calibration --canport can3 --arm_side left_armStep 4.3验证电机通信运行电机检查工具将1和17替换为实际电机的发送与接收 CAN ID注意17 是 0x11 的十进制表示# CAN 2.0 模式 openarm-can-motor-check 1 17 can0 # CAN FD 模式 openarm-can-motor-check 1 17 can0 -fd新版 CLI 可用monitor子命令查看实时遥测见 monitor 参考# 监控全部手臂电机 openarm-can-cli -i can0 monitor # 监控指定电机 openarm-can-cli -i can0 monitor --id 1,2,3输出应显示电机的接收 ID、波特率与状态信息新版monitor实时显示位置、速度、扭矩、温度。验证步骤检查波特率确认显示值与之前配置的一致测试永久设置若使用了--flash/--save断电重启电机后再次检查确认设置已持久化排障若波特率不匹配将 CAN 接口切回 2.0 模式并重新执行波特率修改脚本通用排障检查 CAN 接口是否为 UP 状态确认电机已物理连接、供电且 ID 设置正确确认 CAN 连接稳定非常重要使用candump监控流量检查 CAN 接口波特率与电机当前波特率是否一致核对收发 CAN ID 是否成对正确常见配对1→17、2→18、3→19 等务必在 Demo 运行前确保电机通信正常openarm-can-motor-check/monitor可用。Step 5Demo 运行运行前的安全检查必读零位确保所有电机已设置安全的零位急停急停按钮必须始终放在随手可及处清空工作区移走机械臂运动范围内的一切障碍物、工具与人员断电预案明确如何快速切断电源不遵守上述安全要求可能导致严重人身伤害或设备损坏。直接运行默认 Demo 使用 CAN0 上的电机 0x01、0x02、0x07DM4310并采用 CAN FD。若配置匹配直接运行openarm-can-demoDemo 程序执行流程初始化建立 CAN 接口与电机通信电机查询读取并显示电机 ID验证配置电机控制使能所有电机执行位置控制测试与扭矩控制测试夹爪控制开合夹爪若已配置状态监控循环 10 次显示电机位置收尾安全关闭所有电机预期输出 OpenArm CAN Example This example demonstrates the OpenArm API functionality Initializing OpenArm CAN... Initializing gripper... Enabling Motors Querying Motor Recv IDs Arm Motor: 1 ID: 17 Arm Motor: 2 ID: 18 Gripper Motor: 8 ID: 24 Controlling Motors Closing gripper... Arm Motor: 1 position: 0.123 Arm Motor: 2 position: 0.456 Gripper Motor: 8 position: 0.789 ...自定义 Demo 配置系统要求Linux SocketCAN、CMake 3.22、C17 编译器。下载 CAN 库源码wget https://github.com/enactic/openarm_can/releases/download/{{OPENARM_CAN_VERSION}}/openarm-can-{{OPENARM_CAN_VERSION}}.tar.gz tar xf openarm-can-{{OPENARM_CAN_VERSION}}.tar.gz cd openarm-can-{{OPENARM_CAN_VERSION}}编辑examples/demo.cpp将电机配置改为你的实际布局// 初始化手臂电机 std::vectoropenarm::damiao_motor::MotorType motor_types { openarm::damiao_motor::MotorType::DM4310, openarm::damiao_motor::MotorType::DM4310 }; std::vectoruint32_t send_can_ids {0x01, 0x02}; // 电机发送 ID std::vectoruint32_t recv_can_ids {0x11, 0x12}; // 电机接收 ID7 电机手臂示例对应完整 OpenArm 布局std::vectoropenarm::damiao_motor::MotorType motor_types { openarm::damiao_motor::MotorType::DM8009, openarm::damiao_motor::MotorType::DM8009, openarm::damiao_motor::MotorType::DM4340, openarm::damiao_motor::MotorType::DM4340, openarm::damiao_motor::MotorType::DM4310, openarm::damiao_motor::MotorType::DM4310, openarm::damiao_motor::MotorType::DM4310 }; std::vectoruint32_t send_can_ids {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; std::vectoruint32_t recv_can_ids {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17};夹爪配置有夹爪则更新夹爪配置否则删除所有使用夹爪的代码。// 初始化夹爪 openarm.init_gripper_motor(openarm::damiao_motor::MotorType::DM4310, 0x08, 0x18);编译与运行cmake -S . -B build -DCMAKE_BUILD_TYPERelease cmake --build build --target openarm-can-demo build/openarm-can-demo排障用candump监控 CAN 通信检查电机供电24V检查线缆连接尤其是菊花链场景Step 6电机固件更新可选仅在电机出现异常或被要求时才需要更新固件。前提Windows 电脑 达妙调试工具、电机通过串口UART921600 bps连接、确认硬件版本为V3。下载固件从达妙电机固件仓库下载对应型号的V3 硬件固件文件切勿刷写其他硬件版本的固件。OpenArm 已测试使用的固件如下电机固件文件DM-J3507APP_DM3507(V3)_V5717_04.binDM-J4310APP_DM4310(V3)_V5017_04.binDM-J4340APP_DM4340(V3)_V5117_04.binDM-J8009APP_DM8009(V3)_V6417_04.bin检查当前版本连接电机并打开达妙调试工具点击ReadVesion读取当前固件与 Bootloader 版本。刷写固件点击OpenFile选择对应电机型号的.bin固件文件核对Version number字段显示的版本号点击Upgrade开始刷写等待Progress进度条到达 100%刷写完成后对电机断电重启危险刷写过程中切勿断开电机或关闭工具否则可能永久损坏电机全流程故障排查速查表现象排查项discover找不到电机按通用检查清单逐项排查尝试openarm-can-cli -i can0 discover --full-scan全波特率扫描show_param/monitor无响应检查线缆、供电、波特率是否匹配、ID 是否正确运行discover确认波特率后重新can_configuredmesg出现 BUS OFF检查接线与终端电阻尝试调整采样点如can_configure -d 8000000 --dsp 0.6 --dsjw 18Mbps 以上高速率时缩短线缆change_baud不生效运行前确保接口波特率与电机当前波特率一致--save后必须断电重启用candump can0观察响应帧通用检查清单任何问题先过一遍电机已上电CAN 线缆已连接且完好CAN 接口波特率与电机内部波特率一致总线两端均连接 120Ω 终端电阻总线上所有电机 ID 唯一CAN 驱动已加载下一步Demo 运行成功即代表基础搭建完成。之后可以基于 OpenArm CAN API 参考 开发自定义应用或直接进行 ROS2 集成 与 主从遥操作。相关分步文档完整保存在 website/docs/setup/openarm-setup/ 目录下v1.0 历史版本见 website/versioned_docs/version-1.0/software/setup/。【免费下载链接】openarmA fully open-source humanoid arm for physical AI research and deployment in contact-rich environments.项目地址: https://gitcode.com/GitHub_Trending/op/openarm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表