
Task 1本次任务主要完成 LeRobot SO-101 机械臂的环境搭建、串口连接、机械臂校准、关节复位控制以及主从臂遥操作。实验设备为 MacBook Air M5机械臂由一台 Leader 主动臂和一台 Follower 从动臂组成。除了运行 LeRobot 自带的校准和遥操作程序外我还编写了Task1.py用于控制机械臂平滑运动到不同目标姿态。实验代码已经上传至以下仓库https://github.com/LongtermFcq/lerobot-so101-vla-end2end-demo其中本任务对应的代码文件命名为Task1.py一、搭建 LeRobot 开发环境首先创建 Python 3.12 的 Conda 虚拟环境conda create -y -n lerobot python3.12 conda activate lerobot随后安装 FFmpegconda install ffmpeg7.1.1 -c conda-forge -y安装完成后可以通过下面的命令进行验证ffmpeg -version接下来下载并安装 LeRobotgit clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e .[feetech]安装完成后运行lerobot-info也可以进入 Python检查相关模块是否能够正常导入import lerobot import torch import scservo_sdk如果没有报错说明 LeRobot 和飞特舵机相关依赖已经安装成功。二、查看机械臂串口将 Leader 和 Follower 机械臂连接到电脑后执行ls /dev/tty.*本次实验中两台机械臂对应的串口如下。Follower 从动臂/dev/tty.usbmodem5B3D0458541 /dev/tty.wchusbserial5AE60814261Leader 主动臂/dev/tty.usbmodem5B3D0457201 /dev/tty.wchusbserial5AE60570281在 macOS 中同一个舵机控制板可能同时显示为usbmodem和wchusbserial两种串口名称。这是正常现象两个端口通常对应同一个物理设备实际使用时选择其中一个即可。如果程序提示没有串口权限可以执行sudo chmod 666 /dev/tty.usbmodem5B3D0458541 sudo chmod 666 /dev/tty.usbmodem5B3D0457201需要注意重新插拔设备后串口名称和权限可能发生变化因此每次实验前最好重新检查一次。三、校准 Leader 和 Follower正式校准前需要先使用飞特舵机调试工具检查各个舵机的位置范围。舵机原始位置应处于04095之间不能出现负数或超过范围的数值。完成上下限检查后将各个关节移动到大约2047的中位位置。首先校准 Follower 从动臂lerobot-calibrate \ --robot.typeso101_follower \ --robot.port/dev/tty.usbmodem5B3D0458541 \ --robot.idmonica_follower_arm然后校准 Leader 主动臂lerobot-calibrate \ --teleop.typeso101_leader \ --teleop.port/dev/tty.usbmodem5B3D0457201 \ --teleop.idmonica_leader_arm运行命令后根据终端提示移动机械臂各个关节完成运动范围采集(第5个关节不用转动)。四、使用 Task1.py 完成机械臂复位完成校准后运行仓库中的Task1.pypython Task1.py该脚本用于控制机械臂平滑运动到指定姿态。为了避免机械臂突然运动产生冲击程序采用分步插值方式将整个运动过程划分为 60 步。实验参数如下参数数值运动时间3 秒运动步数60 步每步间隔50 ms到位容差±3°本次共测试了三种姿态姿态说明Home默认复位姿态Zero所有关节运动到 0°Custom自定义安全姿态Home 姿态的目标角度设置如下{ shoulder_pan.pos: 0, shoulder_lift.pos: -20, elbow_flex.pos: 40, wrist_flex.pos: 0, wrist_roll.pos: 30, gripper.pos: 40, }实验完成后程序会读取机械臂的实际关节位置并计算实际角度与目标角度之间的误差。测试结果如下姿态最大误差结果Home2.46°通过Zero2.46°通过Custom2.42°通过三组姿态的最大误差均小于设定的±3°说明机械臂能够较稳定地运动到目标位置。其中误差较大的关节主要是elbow_flex.pos但仍然满足实验要求。五、主从臂遥操作完成 Leader 和 Follower 校准后可以运行 LeRobot 的遥操作命令lerobot-teleoperate \ --robot.typeso101_follower \ --robot.port/dev/tty.usbmodem5B3D0458541 \ --robot.idmonica_follower_arm \ --teleop.typeso101_leader \ --teleop.port/dev/tty.usbmodem5B3D0457201 \ --teleop.idmonica_leader_arm其中so101_leader表示主动臂so101_follower表示从动臂。程序启动后手动移动 Leader 主动臂Follower 从动臂会同步执行对应动作。第一次遥操作时建议缓慢移动主动臂并提前清理机械臂周围的障碍物避免从动臂与桌面、底座或其他设备发生碰撞。本次实验中从动臂能够正常跟随主动臂运动并完成了遥操作视频录制。六、实验总结本次任务完成了 MacBook Air M5 上的 LeRobot 环境搭建以及 SO-101 机械臂的串口连接、舵机校准、关节复位和主从遥操作。通过Task1.py测试了 Home、Zero 和 Custom 三种姿态。三组姿态的最大误差均控制在±3°以内机械臂能够平稳到达目标位置。在遥操作实验中Leader 主动臂能够同步控制 Follower 从动臂说明机械臂的校准配置和主从控制流程均能够正常工作。通过本次实验我基本熟悉了 LeRobot SO-101 从环境安装、设备连接到关节控制和遥操作的完整流程。参考资料硬件组装教程https://www.bilibili.com/video/BV1oBjL6JEo8舵机校准与遥操作教程https://www.bilibili.com/video/BV1r6UUBFECD实验代码https://github.com/LongtermFcq/lerobot-so101-vla-end2end-demo