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
📚 相关资源
- JuxiTechnology GitHub - 获取最新的开源代码和硬件资料
- Lark Wiki - 查看完整的官方文档和教程
🛠️ 常见问题
- 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机械臂为机器人学习和开发提供了完整的生态支持,无论是教育、研究还是个人爱好者,都能快速上手开发属于自己的机器人应用。

