使用LeRobot项目组装与配置SO-101机器人全指南

前言

LeRobot项目为机器人学习与控制提供了一个强大的开源框架,其中SO-101是其旗舰机器人平台。本文将详细介绍如何从零开始组装、配置和使用这款双机械臂系统,帮助开发者快速上手机器人学习与控制。

一、准备工作

1.1 硬件准备

SO-101机器人由两个机械臂组成:

  • 领导者机械臂(Leader Arm):用于人工示教
  • 跟随者机械臂(Follower Arm):用于自主执行

每个机械臂需要:

  • 6个STS3215型号伺服电机
  • 1个电机控制总线适配器
  • 3D打印结构件(约20个部件)
  • 各类螺丝(M2x6mm和M3x6mm)

1.2 软件环境搭建

推荐使用Python 3.10环境:

conda create -y -n lerobot python=3.10
conda activate lerobot
conda install ffmpeg -c conda-forge

安装LeRobot核心库:

pip install -e ".[feetech]"

注:若遇到编译错误,可能需要安装额外依赖:

sudo apt-get install cmake build-essential python3-dev pkg-config \
libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev \
libswscale-dev libswresample-dev libavfilter-dev

二、电机配置

2.1 识别电机总线端口

首先需要确定两个机械臂对应的USB端口:

python lerobot/scripts/find_motors_bus_port.py

脚本会引导你断开连接来确定每个机械臂对应的端口,典型输出如下:

  • Linux系统:/dev/ttyACM0/dev/ttyACM1
  • Mac系统:/dev/tty.usbmodemXXXXX

2.2 更新配置文件

找到配置文件lerobot/common/robot_devices/robots/configs.py中的SO101RobotConfig类,更新端口信息:

leader_arms: dict[str, MotorsBusConfig] = field(
    default_factory=lambda: {
        "main": FeetechMotorsBusConfig(
            port="/dev/tty.usbmodem58760431091",  # 替换为实际端口
            # ...其他配置保持不变
        )
    }
)

2.3 设置电机ID

为每个电机分配唯一ID(1-6):

python lerobot/scripts/configure_motor.py \
  --port /dev/tty.usbmodem58760432961 \
  --brand feetech \
  --model sts3215 \
  --baudrate 1000000 \
  --ID 1

重复此过程为所有12个电机(6个领导者+6个跟随者)设置ID。

三、机械臂组装

3.1 领导者机械臂特殊配置

领导者机械臂使用不同减速比的电机组合:

| 关节 | 电机编号 | 减速比 | |------|----------|--------| | 基座/肩部偏航 | 1 | 1:191 | | 肩部俯仰 | 2 | 1:345 | | 肘部 | 3 | 1:191 | | 腕部旋转 | 4 | 1:147 | | 腕部俯仰 | 5 | 1:147 | | 夹持器 | 6 | 1:147 |

3.2 分步组装指南

  1. 关节1组装

    • 安装基座电机,使用4个M2x6mm螺丝固定
    • 安装电机支架和联轴器
    • 连接肩部部件,使用8个M3x6mm螺丝
  2. 关节2组装

    • 从顶部插入肩部电机
    • 固定电机并安装联轴器
    • 连接上臂部件
  3. 关节3-5组装

    • 类似方法依次组装肘部、腕部旋转和腕部俯仰关节
    • 注意各关节电机的固定方向和螺丝数量
  4. 末端执行器

    • 跟随者机械臂安装夹持器
    • 领导者机械臂安装示教手柄
    • 确保所有线缆通过线槽整齐布线

四、系统校准

4.1 跟随者机械臂校准

运行校准脚本:

python lerobot/scripts/control_robot.py \
  --robot.type=so101 \
  --control.type=calibrate \
  --control.arms='["main_follower"]'

按照提示将机械臂移动到四个关键位置:

  1. 中间位置
  2. 零位位置
  3. 旋转位置
  4. 休息位置

4.2 领导者机械臂校准

同样方法校准领导者机械臂:

python lerobot/scripts/control_robot.py \
  --robot.type=so101 \
  --control.type=calibrate \
  --control.arms='["main_leader"]'

五、机器人控制与学习

完成上述步骤后,SO-101机器人已准备好进行任务学习:

  1. 数据采集

    • 使用领导者机械臂示教任务
    • 记录机械臂运动轨迹和环境状态
  2. 策略训练

    • 基于采集的数据训练神经网络策略
    • 优化策略以提高任务成功率
  3. 策略评估

    • 将训练好的策略部署到跟随者机械臂
    • 观察自主执行效果并迭代优化

结语

通过本指南,您已成功搭建了一套完整的SO-101机器人学习平台。这套系统特别适合研究模仿学习、强化学习等机器人学习算法。下一步可以尝试实现具体的任务学习,如物体抓取、装配等操作,探索机器人自主学习的无限可能。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐