官方从零教程:https://github.com/huggingface/lerobot/blob/main/examples/10_use_so100.md
8-lerobot aloha装配完毕如何进行遥操作
需要先完成的
- 组装好了so-100 2个机械臂
- 下载安装了lerobot的代码环境:
- 固定好主从臂,通过usb链接到同一个usb.
舵机校正
为什么要校正对齐2个臂的位置? (为了后续数据采集)
SO-100 机械臂硬件搭建好后,只有将引导臂(leader)和从动臂(follower)进行相同的位置校正后,才能使用引导臂遥控从动臂。
校正的结果好坏,主要看是否一起动。
在ubuntu下接入2个机械臂后,查看端口
python lerobot/scripts/find_motors_bus_port.py
查看 结果
找到串口对应关系,修改配置文件
cd /home/zengxy/code/lerobot # 自己下载lerobot代码位置
vi lerobot/common/robot_devices/robots/configs.py
实际修改后
leader_arms: dict[str, MotorsBusConfig] = field(default_factory=lambda: {"main": FeetechMotorsBusConfig(port="/dev/ttyACM1", <-- UPDATE HEREmotors={# name: (index, model)"shoulder_pan": [1, "sts3215"],"shoulder_lift": [2, "sts3215"],"elbow_flex": [3, "sts3215"],"wrist_flex": [4, "sts3215"],"wrist_roll": [5, "sts3215"],"gripper": [6, "sts3215"],},),})follower_arms: dict[str, MotorsBusConfig] = field(default_factory=lambda: {"main": FeetechMotorsBusConfig(port="/dev/ttyACM0", <-- UPDATE HEREmotors={# name: (index, model)"shoulder_pan": [1, "sts3215"],"shoulder_lift": [2, "sts3215"],"elbow_flex": [3, "sts3215"],"wrist_flex": [4, "sts3215"],"wrist_roll": [5, "sts3215"],"gripper": [6, "sts3215"],},),})
舵机中位校正 (选做,可跳过,后续出问题,再来做)
1.为什么要中位校准?
STS3215 舵机的输出轴在0-360度范围内旋转时,磁编码器对应的输出范围是0~4095,舵机的旋转被限制在“0<–>4095“范围内,不能自主从0向4095运动,也不能自主从4095向0运动。
舵机的中位是2047,可以自主从2047往0的方向运动,也可以自主从2047往4095的方向运动。但如果舵机在2047位置时,已经接近极限位置,则可能从2047往某个方向运动角度大于180度时,则该区域不可达。
2-2-lerobot aloha新版6+1的SimpleAutomation 6DOF ARM 装配完成标定舵机中位
执行校正命令
给权限
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1
follow臂(从动臂)的校正命令
–control.type=calibrate
python lerobot/scripts/control_robot.py \--robot.type=so100 \--robot.cameras='{}' \--control.type=calibrate \--control.arms='["main_follower"]'
输入代码后的相同位置,点确定
驱动臂(leader arm)
python lerobot/scripts/control_robot.py \--robot.type=so100 \--robot.cameras='{}' \--control.type=calibrate \--control.arms='["main_leader"]'
二、从动臂跟随主动臂动 (teleoperate)
遥控测试(teleoperate) 无相机接入
python lerobot/scripts/control_robot.py \--robot.type=so100 \--robot.cameras='{}' \--control.type=teleoperate
遥控测试(teleoperate) 接入相机接入
python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=teleoperate
附录
发现的问题 ,第一次校正后,夹的过程,闭合不紧,再从头校正一次效果好了很多。
校正时输出
(lerobot) zengxy@jame:~/code/lerobot$ python lerobot/scripts/control_robot.py
–robot.type=so100
–robot.cameras=‘{}’
–control.type=calibrate
–control.arms=‘[“main_follower”]’
INFO 2025-04-11 14:16:05 ol_robot.py:369 {‘control’: {‘arms’: [‘main_follower’]},
‘robot’: {‘calibration_dir’: ‘.cache/calibration/so100’,
‘cameras’: {},
‘follower_arms’: {‘main’: {‘mock’: False,
‘motors’: {‘elbow_flex’: [3, ‘sts3215’],
‘gripper’: [6, ‘sts3215’],
‘shoulder_lift’: [2,
‘sts3215’],
‘shoulder_pan’: [1, ‘sts3215’],
‘wrist_flex’: [4, ‘sts3215’],
‘wrist_roll’: [5, ‘sts3215’]},
‘port’: ‘/dev/ttyACM0’}},
‘gripper_open_degree’: None,
‘leader_arms’: {‘main’: {‘mock’: False,
‘motors’: {‘elbow_flex’: [3, ‘sts3215’],
‘gripper’: [6, ‘sts3215’],
‘shoulder_lift’: [2, ‘sts3215’],
‘shoulder_pan’: [1, ‘sts3215’],
‘wrist_flex’: [4, ‘sts3215’],
‘wrist_roll’: [5, ‘sts3215’]},
‘port’: ‘/dev/ttyACM1’}},
‘max_relative_target’: None,
‘mock’: False}}
Calibration file not found ‘.cache/calibration/so100/main_follower.json’
Connecting main follower arm.
Connecting main leader arm.
Missing calibration file ‘.cache/calibration/so100/main_follower.json’