上一篇主要记录了 Ubuntu 双系统的安装过程,以及安装过程中遇到的一些问题。

这几天购买的 SO-ARM101 机械臂终于到了,于是开始正式进行真机实验。

这次主要完成了三个工作:机械臂组装、电机 ID 配置以及主从机械臂校准。

整体流程不算复杂,但是有几个地方需要特别注意,尤其是电机 ID 的配置。如果一开始没有配置好,后面可能还需要重新拆装机械臂。

因此,这篇文章主要记录一下实际操作过程,以及我认为比较容易踩坑的地方。

一、SO-ARM101 机械臂组装

这次使用的是 SO-ARM101 主从机械臂,也就是一套 Leader Arm(主臂)和 Follower Arm(从臂)。

简单来说,主臂主要负责人工操作,后续可以通过拖动主臂来控制从臂运动;从臂则负责实际执行动作。

两者均包含六个关节电机,对应机械臂的不同自由度。

机械臂的组装可以参考下面这个视频:

SO-ARM101 机械臂组装参考视频

整个机械臂的安装基本按照视频操作即可,这里就不再重复介绍每颗螺丝的安装过程。

不过有一点需要特别注意:

建议先配置电机 ID,再完成机械臂的全部组装。

因为 SO-ARM101 使用的是串行总线舵机,多个电机可以通过线缆串联连接到同一块控制板。

如果多个电机的 ID 相同,控制板就无法可靠地区分对应的电机。

因此,每个电机都需要配置独立的 ID。

二、电机 ID 配置

电机 ID 可以理解为每个电机在通信总线上的地址。

例如:

电机 ID对应关节
1底座旋转
2肩部抬升
3肘部弯曲
4腕部俯仰
5腕部旋转
6夹爪

LeRobot SO-ARM101 机械臂复现日记(二):机械臂组装、电机 ID 配置与校准

上一篇主要记录了 Ubuntu 双系统的安装过程,以及安装过程中遇到的一些问题。

这几天购买的 SO-ARM101 机械臂终于到了,于是开始正式进行真机实验。

这次主要完成了三个工作:机械臂组装、电机 ID 配置以及主从机械臂校准。

整体流程不算复杂,但是有几个地方需要特别注意,尤其是电机 ID 的配置。如果一开始没有配置好,后面可能还需要重新拆装机械臂。

因此,这篇文章主要记录一下实际操作过程,以及我认为比较容易踩坑的地方。

一、SO-ARM101 机械臂组装

这次使用的是 SO-ARM101 主从机械臂,也就是一套 Leader Arm(主臂)和 Follower Arm(从臂)。

简单来说,主臂主要负责人工操作,后续可以通过拖动主臂来控制从臂运动;从臂则负责实际执行动作。

两者均包含六个关节电机,对应机械臂的不同自由度。

机械臂的组装可以参考下面这个视频:

SO-ARM101 机械臂组装参考视频

整个机械臂的安装基本按照视频操作即可,这里就不再重复介绍每颗螺丝的安装过程。

不过有一点需要特别注意:

建议先配置电机 ID,再完成机械臂的全部组装。

因为 SO-ARM101 使用的是串行总线舵机,多个电机可以通过线缆串联连接到同一块控制板。

如果多个电机的 ID 相同,控制板就无法可靠地区分对应的电机。

因此,每个电机都需要配置独立的 ID。

二、电机 ID 配置

电机 ID 可以理解为每个电机在通信总线上的地址。

例如:

电机 ID对应关节
1底座旋转
2肩部抬升
3肘部弯曲
4腕部俯仰
5腕部旋转
6夹爪

当控制板需要控制某个关节时,就可以根据对应的 ID 向电机发送指令。

这里需要注意,主臂和从臂分别使用独立的控制板,因此两套机械臂可以使用相同的电机 ID 编号。

目前我了解到两种比较方便的电机 ID 配置方式。

2.1 方法一:使用商家提供的 Windows 软件

第一种方式是使用商家提供的电机调试软件,通常是一个 .exe 文件。

这种方式比较直观,尤其适合第一次接触串行总线舵机的同学。

首先,将控制板连接电源,并通过 USB 数据线连接到 Windows 电脑。

【图片 1:控制板连接电源和 USB 数据线】

连接完成后,打开商家提供的软件,选择对应的串口。

如果电机已经配置过 ID,并且正确串联,通常可以通过软件的电机扫描功能查看当前连接的电机及其 ID。

【图片 2:软件识别已连接电机的界面】

如果需要修改电机 ID,可以进入软件的编程或参数设置界面,根据实际需要修改电机地址。

【图片 3:软件编程界面,展示修改电机 ID 的位置】

这里建议第一次配置时,每次只连接一个尚未配置的电机,避免多个电机使用相同 ID 时发生通信冲突。

修改完成后,还可以使用软件自带的电机调试功能,检查电机是否能够正常响应控制指令。

【图片 4:电机调试界面】

我个人认为,如果商家已经提供了完整的调试软件,优先使用这种方法会比较方便。

一方面可以直接查看电机 ID,另一方面也能顺便检查电机和控制板是否正常通信。

2.2 方法二:通过 Ubuntu 终端配置电机 ID

如果不想切换回 Windows,也可以直接使用 LeRobot 提供的命令行工具配置电机 ID。

这里需要区分两个命令:

  • lerobot-setup-motors:用于配置电机 ID 和通信波特率。
  • lerobot-calibrate:用于机械臂关节位置校准。

我最初记录时把这两个命令混在了一起,实际上它们对应两个不同的操作阶段。官方文档也是先配置电机,再进行校准。

首先,连接控制板的电源和 USB 数据线。

在 Ubuntu 终端输入:

ls /dev/ttyACM*

检查系统是否识别到了对应的串口设备。

例如:

/dev/ttyACM0

然后运行从臂电机 ID 配置命令:

lerobot-setup-motors \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0

程序会提示:

Connect the controller board to the 'gripper' motor only and press enter.

意思是:

只将夹爪电机连接到控制板,然后按 Enter 键继续。

按照提示操作即可。

需要特别注意,每次只能连接当前需要配置的电机,不要同时连接多个尚未分配独立 ID 的电机。

程序会依次引导我们完成不同关节电机的配置。

如果是主臂,则使用:

lerobot-setup-motors \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM0

需要注意,/dev/ttyACM0 是我当时使用的串口,并不是每台电脑都一样。

实际操作时需要根据电脑识别到的设备进行修改。

完成全部电机 ID 配置后,就可以按照组装视频,将机械臂安装完整。

三、Ubuntu 串口权限配置

完成机械臂组装之后,就可以开始进行电机校准了。

不过,在 Ubuntu 下操作机械臂时,可能会遇到串口权限不足的问题。

可以先执行:

sudo chmod 666 /dev/ttyACM*

这条命令的作用是给当前所有 /dev/ttyACM* 设备开放读写权限。

需要注意,这是一种临时解决方法,设备重新连接或者系统重启后,可能需要再次执行。

此外,chmod 666 会允许所有本地用户读写这些设备,因此更推荐在长期使用时通过 dialout 用户组或 udev 规则配置权限。

完成之后,就可以运行 LeRobot 的校准程序了。

四、SO-ARM101 机械臂校准

配置好电机 ID 之后,还需要对机械臂进行校准。

这里的校准主要是为了让程序能够正确理解机械臂各个关节的实际位置。

例如,两个机械臂的某个关节虽然处于相同的物理位置,但由于电机安装位置和编码器零点不同,它们读取到的原始数值可能存在差异。

因此,需要通过校准建立关节实际位置与电机编码器读数之间的对应关系。

这一过程对于后续主从臂遥操作和模仿学习都比较重要。

4.1 从臂校准

首先,在终端输入:

lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_awesome_follower_arm

其中:

so101_follower 表示从臂。

/dev/ttyACM0 表示机械臂连接的串口。

my_awesome_follower_arm 是机械臂的标识名称,可以自己修改。

需要注意,这个 ID 也会用于关联后续的校准文件。因此,后面进行遥操作、数据采集时,最好保持名称一致。

运行之后,按照终端提示开始校准。

首先,将机械臂的各个关节调整到运动范围的大致中间位置。

然后按下 Enter 键。

接下来,需要手动带动各个关节,在允许的运动范围内缓慢移动,尽量覆盖对应关节的完整活动范围。

这一步主要是让程序记录各关节的运动边界。

需要注意,移动时不要强行超过机械结构允许的范围。

完成后,再根据终端提示按下 Enter,程序就会保存校准结果。

4.2 主臂校准

主臂的校准过程与从臂基本一致。

运行:

lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM0 \
    --teleop.id=my_awesome_leader_arm

这里主要修改了两个参数:

so101_leader:表示当前校准的是主臂。

my_awesome_leader_arm:主臂对应的标识名称。

同样,首先将机械臂调整到各关节运动范围的中间位置。

按照终端提示按下 Enter,然后依次移动各个关节,使程序能够记录完整的活动范围。

最后完成校准数据保存。

需要说明的是,如果主臂和从臂同时连接电脑,通常会对应两个不同的串口,例如:

主臂:/dev/ttyACM0
从臂:/dev/ttyACM1

具体对应关系需要自己确认,不能直接照搬。

4.3 校准完成

如果程序正常完成校准,没有出现报错,并且成功保存校准文件,就说明这一步基本完成了。

【图片 5:机械臂校准成功后的终端界面】

到这里,SO-ARM101 主臂和从臂的基础配置就完成了。

后续如果没有更换电机、调整机械结构或者删除校准文件,一般不需要每次重新进行校准。

不过,校准成功不代表机械臂已经完成全部测试,后面还需要通过实际遥操作检查各个关节的运动是否正常。

五、本次复现总结

这次主要完成了 SO-ARM101 机械臂从零件到整机的组装,并且分别完成了主臂和从臂的电机配置与校准。

整个过程实际上没有想象中复杂。

机械结构部分基本可以按照商家提供的视频完成,真正需要注意的主要是电机 ID 和校准操作。

尤其是电机 ID,建议在机械臂完全组装之前就配置好,否则后续如果出现 ID 冲突,还需要重新检查电机连接。

另外,LeRobot 提供的命令行工具已经能够完成大部分基础配置,并不一定需要依赖商家提供的 Windows 软件。

经过这次操作,我也算是对机械臂的基础控制流程有了一个初步认识:

电机 ID 配置
      ↓
机械臂组装
      ↓
串口连接与权限配置
      ↓
主臂校准
      ↓
从臂校准
      ↓
遥操作测试
      ↓
数据采集与模型训练

目前主从机械臂均已完成校准,下一步就是进行主从臂遥操作,验证主臂能否正常控制从臂运动。

等遥操作跑通之后,就可以考虑加入摄像头,开始采集真实机械臂操作数据,并尝试 ACT 等模仿学习算法。

这也是我接下来比较感兴趣的部分,毕竟前面的组装和校准都只是准备工作,后面的数据采集、模型训练和真机部署,才是这次复现的主要目标。

下一篇:LeRobot SO-ARM101 机械臂复现日记(三)——主从臂遥操作与摄像头配置。

Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐