欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 【lerobot】3-开源SO-100 主从臂的舵机位置校正、遥控操作(ubuntu系统)

【lerobot】3-开源SO-100 主从臂的舵机位置校正、遥控操作(ubuntu系统)

2025/4/16 15:01:51 来源:https://blog.csdn.net/imwaters/article/details/147142737  浏览:    关键词:【lerobot】3-开源SO-100 主从臂的舵机位置校正、遥控操作(ubuntu系统)

官方从零教程:https://github.com/huggingface/lerobot/blob/main/examples/10_use_so100.md

8-lerobot aloha装配完毕如何进行遥操作

在这里插入图片描述

需要先完成的

  1. 组装好了so-100 2个机械臂
  2. 下载安装了lerobot的代码环境:
  3. 固定好主从臂,通过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’

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词