☰
OpenArm 机械臂电机配置与 CAN 总线通信实操:接线、调参、校准一次跑通
2026/10/20 11:01:03 网站建设 项目流程

OpenArm 机械臂电机配置与 CAN 总线通信实操:接线、调参、校准一次跑通

【免费下载链接】openarmA fully open-source humanoid arm for physical AI research and deployment in contact-rich environments.项目地址: https://gitcode.com/GitHub_Trending/op/openarm

读完这篇,你能独立完成 OpenArm 机械臂的电机配置与 CAN 总线通信调试:从 8 个关节的机械臂接线、CAN 接口调通,到波特率对齐、零点校准,最后确认每台电机都稳定响应。CAN 总线说白了就是多台设备共用一条双绞线的串行通信协议——机械臂上每台电机都挂在同一条总线上,靠各自的 ID 互相区分。

先把环境和工具准备好

软件端需要一台支持 SocketCAN 的 Linux 机器(Ubuntu 22.04/24.04 都没问题),硬件端备好 24V 电源和接好线的机械臂。电机 ID 如果还没烧录,先按电机 ID 设置文档完成,后面所有命令都建立在 ID 正确的基础上。

安装 CAN 工具链:

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 | grep can

能列出can0、can1之类的接口,说明硬件被识别了。接口列表里翻不到 can0?多半是驱动没加载,跑一下sudo modprobe can_raw,再看dmesg里的设备日志;串口型适配器有时还得靠slcand这类包装工具才会露面。

把 8 个关节接上总线 🔌

接线顺序随意,但有一条硬规矩:所有线缆沿手臂后侧走线,别从前面横穿,运动时才不会互相干涉。连接器很娇气,插拔时捏住接头本体,别拽线。

整体拓扑先看这张图,蓝色标注 J3–J4 段,粉色标注 J4–J7 段:

肩部与上臂:J1 到 J4

  • J1 线缆从"腋窝"穿到手臂后侧,J2 接好后把线向下弯折固定。
  • J3–J4 这一根一头进 HUB 板,另一头分叉:J3 接口接上臂电机,J4 接口接肘部电机。
  • J4 的接口离钣金很近,注意别夹到线;J1/J2 线缆上的白色小插头要对齐到位,没插正会松。

前臂到腕部:J4 到 J7

这是最折腾的一段,一根线束要接 J4、J5、J6、J7 四个电机,建议按这个顺序来:

  1. 从手臂背面先接 J5(分支最短);
  2. 把肘部弯到机械极限位,再插 J4;
  3. 调整手臂角度,找最顺手的角度接 J6 和 J7。

末端 J7–J8,以及走线检查

J7–J8 这根线一头插 J7 电机底部的小接口,另一头接夹爪电机(J8),直接对插即可。

全部接完绕着看一圈,线缆应整齐贴在后侧、没有明显拉扯,对照这张前视图检查:

前后视角的完整参考图在机械臂接线详解里,可以对着逐段核对。

一条命令打通 CAN 通信 📡

接口配好速率才算真正调通。推荐直接用 OpenArm 的配置命令,默认就是 CAN FD、仲裁段 1Mbps、数据段 5Mbps:

openarm-can-cli -i can0 can_configure

四路 CAN(左右臂加夹爪)想一次配完,用这条:

openarm-can-configure-socketcan-4-arms

习惯手动操作的可以直接用ip link逐条设置,完整写法见CAN 接口配置文档。

配完马上验证两步:

ip link show can0

状态是UP就对了。再开一个终端抓流量:

candump can0

空总线上可能看不到什么,先别慌。做个冒烟测试:给 1 号电机发一条使能帧——

cansend can0 001#FFFFFFFFFFFFFFFC

电机指示灯变绿,说明收发链路是通的;candump 里同时冒出011开头的响应帧更好,那是 J1 用自己的接收 ID 0x11 在回话。测试完发一条禁用帧(帧尾改成FD)把电机关掉。

LED 纹丝不动?先查 24V 供电,再查 CANH/CANL 有没有接反、接口插紧没有。另外记住:每条总线的两端都需要 120Ω 终端电阻。

各关节的 ID 对应关系记一下,后面排障全靠它:

关节发送 CAN ID接收(Master)ID
J10x010x11
J20x020x12
J30x030x13
J40x040x14
J50x050x15
J60x060x16
J70x070x17
J8(夹爪)0x080x18

对齐波特率,让电机开口说话 ⚙️

接口通了,不代表两边说的是同一种"方言"。电机出厂波特率未必和你接口当前的一致,对不上时总线上一片安静,什么响应都没有。

动手前记住三条硬规矩:

注意

  • 改波特率请在CAN 2.0 模式下进行:先把接口切到 CAN 2.0,并匹配电机当前的波特率,全部改完再切回 CAN FD;
  • --save会写电机 Flash,写入寿命约10000 次,别在脚本里循环执行;
  • 写入后必须断电重启电机,新波特率才会生效。

流程分四步。第一步,扫描确认每台电机的当前速率:

openarm-can-cli -i can0 discover

快速扫描覆盖 1M/5M/8M/10M 四档,扫不到再加--full-scan全量扫。第二步,把接口切到 CAN 2.0 并匹配电机当前速率:

openarm-can-cli -i can0 can_configure --no-fd

第三步,逐个关节改波特率。以 1 号电机改到 5Mbps 为例,-c从 1 换到 8 依次执行:

openarm-can-cli -i can0 change_baud -b 5000000 -c 1 --save

第四步,给整机断电重启,把接口切回 CAN FD,再跑一次 discover 确认全部显示 5M:

openarm-can-cli -i can0 can_configure

改完不生效?九成是忘了断电重启,或者接口速率没对上电机当前的速率——拿 discover 的输出核对一次就清楚了。

零点校准,让机械臂动起来 🧭

电机通了、速率齐了,最后一步是让软件知道"哪是零位"。先手动把机械臂摆到零位姿态:各关节转到参考角度,夹爪保持闭合(夹爪默认以闭合状态为零点)。

安全:校准开始后机械臂会自动运动。清空作业区,急停按钮放在随手可及的位置。

Leader-Follower 双臂场景,主臂和从臂要分别在独立状态下各校准一次,不能一次跑完两条臂。默认校准(can0,右臂):

openarm-can-zero-position-calibration

指定某一侧执行:

openarm-can-zero-position-calibration --canport can1 --arm-side left_arm

v1.0 的臂记得追加--robot-version v1。

校准完立刻验证:

openarm-can-cli -i can0 monitor

实时面板上应能看到每台电机的位置、速度、力矩和温度。再断电重启一次、重跑 monitor,确认零位设置保留了下来。到这里,电机配置与 CAN 总线通信就算全部落地,下一步可以跑 Demo 验证整机,或继续接入 ROS2 控制栈。

参考文档

  • CAN 接口配置
  • 通信冒烟测试
  • 电机 ID 设置
  • 电机配置与零位校准
  • openarm-can-cli 命令参考
  • 机械臂接线详解

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询