微雪SO-ARM101机械臂
微雪SO-ARM101机械臂
nodaoliSO-ARM100/101 - Waveshare Wiki
https://wiki.seeedstudio.com/cn/lerobot_so100m_new
【SO-ARM机械臂Lerobot超详细上手教程:1序言】 https://www.bilibili.com/video/BV1H6UUBcErT/?share_source=copy_web&vd_source=9c987ed6ab5014f976c5bd5305300cc0
启用MuJoCo仿真
拉取官方lerobot仓库
1 | git clone https://github.com/huggingface/lerobot.git ~/lerobot |
使用UV安装GPU-Torch 和 MuJoCo
1 | uv venv |
配置舵机id
SO-ARM100/101 设置舵机的 ID - Waveshare Wiki
跟着教程,其实就是先电脑连接上控制板,使用命令查看端口号,因为使用uv虚拟环境,所以最好使用uv run
1 | uv run lerobot-find-port |
开始配置
1 | uv run lerobot-setup-motors --robot.type=so101_follower --robot.port=COM13 |
其中robot.type指的是从臂:so101_follower
改成teleop.type就可以配置主臂,端口也要改成teleop.port
然后从爪子开始,每次只连接一个到控制板上面,然后按回车会依次进行编号
校准
1 | uv run lerobot-calibrate --teleop.type=so101_leader --teleop.port=COM12 --teleop.id=so101_leader |
需要先把每个关节舵机调整成中间,然后在进行校准,扭动舵机,从最小到最大
进行测试
先去收录仓库下载MuJoCo的文件,选中的是scene.xml
如果在上面的步骤中使用uv add mujoco的话,那么把下面的代码在lerobot目录下创建
1 | import time |
解释
为什么需要分配id
简单来说,舵机分配 ID 的过程就是通过串口通讯修改舵机内部芯片的“身份证号”(EEPROM 配置)。
以下是这一过程的技术原理和操作逻辑拆解:
- 为什么需要分配 ID?
• 出厂默认 ID 都是 1:所有的 Feetech STS3215 舵机出厂时,内部存储器里的 ID 号都被写死为 1。
• 总线通讯原理:这些舵机使用的是**串行总线(Serial Bus)**通信。这意味着所有舵机都挂在同一根通讯线上(Tx/Rx)。当电脑发送指令“ID 为 1 的舵机请转动”时,如果线上挂着 6 个 ID 都是 1 的舵机,它们会同时响应,或者返回的数据会互相干扰(总线冲突),导致通信失败。
• 区分关节:为了让电脑能单独指挥“手腕”或“底座”,我们必须给每个关节分配一个独一无二的数字(1 到 6)。
- 分配 ID 的核心逻辑(如何改写)
无论是使用 Python 脚本还是 Windows 软件,底层的操作步骤都是一样的:
1. 物理隔离(关键步骤):
◦ 因为所有新舵机 ID 都是 1,你不能把它们串联起来一次性改。如果串联了,电脑发“把 ID 1 改成 6”,所有舵机都会变成 6。
◦ 因此,必须只连接一个舵机到驱动板上,。
2. 发送改写指令:
◦ 电脑通过 USB 转串口(驱动板)发送一串十六进制指令。
◦ 指令含义大致是:[广播/针对ID 1] [写入内存] [地址: ID寄存器] [新数值: 6]。
◦ 这个新 ID 会被写入舵机的 EEPROM(非易失性存储器),这意味着断电后 ID 依然会保存,不需要每次开机都重设。
3. 验证:
◦ 写入后,程序通常会尝试用新 ID(比如 6)去 ping 一下舵机。如果舵机有回应,说明修改成功。
- LeRobot 的分配策略(倒序法)
LeRobot 官方脚本采用了一种特定的顺序,为了防止混淆,通常建议您遵循这个映射表,:
| 关节名称 (Joint Name) | 部位描述 | 分配 ID |
|---|---|---|
| Gripper | 夹爪(最末端) | 6 |
| Wrist Roll | 手腕旋转 | 5 |
| Wrist Flex | 手腕弯曲 | 4 |
| Elbow | 肘部 | 3 |
| Shoulder Lift | 肩部升降 | 2 |
| Shoulder Pan | 底座旋转 | 1 |
脚本的操作流程是这样的,:
1. 程序提示:Connect ... 'gripper' motor only。
2. 您只插入夹爪舵机。
3. 程序扫描(通常扫描 ID 1),找到舵机。
4. 程序发送指令:将 ID 1 改为 6。
5. 程序提示:Connect ... 'wrist_roll' motor only。
6. 您拔掉夹爪舵机,换上第二个舵机(它是新的,ID 还是 1)。
7. 程序发送指令:将 ID 1 改为 5。
8. ……以此类推,直到底座(ID 1)。
- 如果您使用 Windows GUI 工具 (Feetech/Hiwonder)
既然您在 Windows 上,且之前的脚本有报错,您也可以用“上帝视角”手动修改,原理更直观:
1. 打开 BusLinker 或 FD (Feetech Debugger) 软件。
2. 连接一个舵机。
3. 点击 “Search” (搜索) -> 软件会显示探测到 ID: 1。
4. 在 ID 设置栏输入 6,点击 “Set” (设置/写入)。
5. 此时软件再搜索,就会显示探测到 ID: 6。
6. 拔掉它,贴上标签“6”,换下一个,重复步骤改为 5、4、3…
总结
这个过程本质上就是给每个刚出生的“克隆人”(ID 1)发一张不同的身份证(ID 1-6),这样以后它们坐在同一条船(总线)上时,电脑叫谁的名字,谁才会答应。
⚠️ 重要提示:一旦您把 ID 改乱了(比如两个舵机都设成了 3),把它们串联在一起时就会报错。解决方法是单独把其中一个连上电脑,重新把 ID 改掉。


