SO-ARM101 - Product Introduction

SO-ARM101 Open Source Robotic Arm - Product Introduction
Language

SO-ARM101是一款面向教育、研究和爱好者的高性能开源机械臂平台,完美兼容Hugging Face LeRobot生态系统,支持机器人操作学习、数据采集、模型训练和AI推理全流程,是学习机器人技术、开发AI机器人应用的理想选择。

📋 核心特点

  • 6自由度设计,支持灵活的运动控制
  • 完全开源硬件和软件,可自由定制扩展
  • 完美兼容LeRobot框架,支持多种机器人学习算法(ACT、Diffusion、Pi0、SmolVLA等)
  • 配套完整的教程和示例,零基础也能快速上手
  • 支持主从遥操作、多相机视觉反馈、数据集录制和模型训练全流程

🔧 硬件规格

参数 详情
自由度 6轴 + 夹爪
负载 500g
重复定位精度 ±0.1mm
工作半径 520mm
舵机类型 串行总线舵机
电源要求 主动臂:5V6A,被动臂:12V5A
通信方式 USB-C

🚀 快速开始

1. 环境准备

SO-ARM101支持Ubuntu x86和Jetson Orin两种平台:

Ubuntu x86环境要求:

  • Ubuntu 22.04
  • CUDA 12+
  • Python 3.10
  • Torch 2.6+

Jetson Orin环境要求:

  • JetPack 6.0+
  • Python 3.10
  • Torch 2.5.0a0+

2. 安装依赖


# Install Miniconda (Ubuntu x86 version)
mkdir -p ~/miniconda3
cd miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all

# Create and activate environment
conda create -y -n lerobot python=3.10
conda activate lerobot

# Clone code repository
git clone https://github.com/Juxi-Technology/lerobot.git

# Install dependencies
conda install ffmpeg -c conda-forge
cd ~/lerobot && pip install -e ".[feetech]"
            

3. 机械臂控制

端口查找


# Find USB port corresponding to the robotic arm
lerobot-find-port
            

按照提示插拔机械臂USB线,获取对应的端口号(通常为/dev/ttyACM0和/dev/ttyACM1)

端口授权


sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1
            

机械臂校准


# Calibrate slave arm
lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_awesome_follower_arm

# Calibrate master arm
lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_awesome_leader_arm
            

按照提示将机械臂移动到中位,然后完成各关节的量程校准。

🎮 核心功能示例

1. 主从遥操作


# Basic teleoperation (without camera)
lerobot-teleoperate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_awesome_follower_arm \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_awesome_leader_arm

# Teleoperation with camera display
lerobot-teleoperate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_awesome_follower_arm \
    --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}}" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_awesome_leader_arm \
    --display_data=true
            

2. 数据集录制


# Record dataset locally
lerobot-record \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_awesome_follower_arm \
    --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"}}" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_awesome_leader_arm \
    --display_data=true \
    --dataset.repo_id=juxi/so101_test \
    --dataset.num_episodes=5 \
    --dataset.single_task="Put the blue cube on the black box" \
    --dataset.push_to_hub=false \
    --dataset.episode_time_s=30 \
    --dataset.reset_time_s=30
            

录制的数据将保存在~/.cache/huggingface/lerobot目录下。

3. 模型训练(ACT算法)


# Train with local dataset
lerobot-train \
  --dataset.repo_id=juxi/so101_test \
  --policy.type=act \
  --output_dir=outputs/train/act_so101_test \
  --job_name=act_so101_test \
  --policy.device=cuda \
  --wandb.enable=false \
  --policy.push_to_hub=false \
  --steps=300000
            

训练完成的模型权重保存在outputs/train/act_so101_test/checkpoints目录下。

4. AI推理运行


# Control robotic arm with trained model
lerobot-record \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: \"MJPG\"},   side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30,fourcc: \"MJPG\"}}" \
  --robot.id=my_awesome_follower_arm \
  --display_data=false \
  --dataset.repo_id=juxi/eval_test \
  --dataset.single_task="Put the blue cube on the black box" \
  --policy.path=outputs/train/act_so101_test/checkpoints/last/pretrained_model
            

📚 相关资源

🛠️ 常见问题

Q: 运行时提示GPU不可用?
A: 请确保安装了与CUDA版本匹配的PyTorch,Jetson平台需要安装专门的Jetson版本PyTorch。
Q: 遥操作时键盘无响应?
A: 尝试降级pynput版本到1.6.8:pip install pynput==1.6.8
Q: 校准失败怎么办?
A: 检查串口权限是否正确,删除~/.cache/huggingface/lerobot/calibration目录下的旧校准文件后重新尝试。

SO-ARM101机械臂为机器人学习和开发提供了完整的生态支持,无论是教育、研究还是个人爱好者,都能快速上手开发属于自己的机器人应用。