Windows 环境下的 SO-100 机械臂配置指南
本指南专门针对 Windows 用户安装和配置 LeRobot 环境,适用于 SO-100 机械臂。
系统要求
- Windows 10 或更高版本
- PowerShell 7.0 或更高版本
- 至少 8GB 可用磁盘空间
- Visual Studio(用于 MSVC 编译器)
环境准备
1. 安装 Git
下载并安装 Git for Windows,选择适合你系统架构的版本。
2. 安装 PowerShell 7
下载并安装 PowerShell 7
TIP
PowerShell 7 功能强大且易用,选择适合自己的架构。配合 Windows Terminal 使用体验更佳,与 Python 和 VSCode 结合使用效果极佳。
3. 安装 Scoop 包管理器
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
安装visual studio
windows环境下需要他微软自己家的c/c++编译器也就是msvc编译器,而不是mingw,所以需要安装visual studio。
1. 安装uv
scoop bucket add main
scoop install main/curl
scoop install main/uv
2. 安装ffmpeg
scoop install main/ffmpeg
3. 克隆 LeRobot 仓库
git clone https://github.com/BriceLucifer/Robot-Docs.git
cd Robot-Docs
cd lerobot # 我自己设置了一个lerobot仓库 旧版的 适合所有人去用
4. 安装 LeRobot 及其依赖
uv sync # 自动同步项目环境
./.venv/Scripts/activate.bat # 激活环境
uv pip install -e ".[feetech]"
C. 配置电机
1. 查找与每个机械臂关联的 USB 端口
为你的领导臂指定一个总线伺服适配器和 6 个电机,同样为跟随臂指定另一个总线伺服适配器和 6 个电机。建议给它们贴标签,在每个电机上写明它是用于跟随臂 F
还是领导臂 L
,以及它的 ID 从 1 到 6(F1...F6 和 L1...L6)。
a. 运行脚本查找端口
要找到每个总线伺服适配器的端口,运行实用脚本:
python lerobot/scripts/find_motors_bus_port.py
b. 示例输出
识别领导臂端口时的示例输出(例如,Windows 上的 COM3
,或 COM4
):
Finding all available ports for the MotorBus.
['COM3', 'COM4']
Remove the usb cable from your MotorsBus and press Enter when done.
[...断开领导臂连接并按 Enter...]
The port of this MotorsBus is COM3
Reconnect the usb cable.
c. 故障排除
在 Windows 上,确保设备管理器中正确识别了 USB 串口设备。
2. 为所有 12 个电机设置 ID
插入你的第一个电机 F1 并运行此脚本将其 ID 设置为 1。它还会将其当前位置设置为 2048,所以预期你的电机会旋转。将 --port 后的文本替换为相应的跟随控制板端口,并在 PowerShell 中运行此命令:
python lerobot/scripts/configure_motor.py `
--port COM3 `
--brand feetech `
--model sts3215 `
--baudrate 1000000 `
--ID 1
然后拔掉你的电机,插入第二个电机并将其 ID 设置为 2:
python lerobot/scripts/configure_motor.py `
--port COM3 `
--brand feetech `
--model sts3215 `
--baudrate 1000000 `
--ID 2
对所有电机重复此过程直到 ID 6。对领导臂的 6 个电机也做同样的操作。
E. 校准
接下来,你需要校准你的 SO-100 机器人,以确保领导臂和跟随臂在相同物理位置时具有相同的位置值。
1. 校准跟随臂
确保两个机械臂都已连接,运行此脚本启动手动校准:
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--robot.cameras='{}' `
--control.type=calibrate `
--control.arms='["main_follower"]'
2. 校准领导臂
运行此脚本启动手动校准:
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--robot.cameras='{}' `
--control.type=calibrate `
--control.arms='["main_leader"]'
F. 遥操作
1. 简单遥操作
运行这个简单的脚本(它不会连接和显示摄像头):
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--robot.cameras='{}' `
--control.type=teleoperate
2. 带摄像头的遥操作
按照指南设置你的摄像头后,你将能够在遥操作时在计算机上显示摄像头:
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--control.type=teleoperate
G. 记录数据集
1. 登录 Hugging Face
如果你想使用 Hugging Face hub 功能上传数据集,请确保你已经使用写访问令牌登录:
$env:HUGGINGFACE_TOKEN = "your_token_here"
huggingface-cli login --token $env:HUGGINGFACE_TOKEN --add-to-git-credential
2. 设置用户变量并记录数据集
将你的 Hugging Face 仓库名称存储在变量中:
$HF_USER = (huggingface-cli whoami | Select-Object -First 1)
Write-Output $HF_USER
记录 2 个片段并将数据集上传到 hub:
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--control.type=record `
--control.fps=30 `
--control.single_task="Grasp a lego block and put it in the bin." `
--control.repo_id="$HF_USER/so100_test" `
--control.tags='["so100","tutorial"]' `
--control.warmup_time_s=5 `
--control.episode_time_s=30 `
--control.reset_time_s=30 `
--control.num_episodes=2 `
--control.push_to_hub=true
NOTE
你可以通过添加 --control.resume=true
来恢复记录。
H. 可视化数据集
1. 在线可视化
如果你使用 --control.push_to_hub=true
将数据集上传到 hub,你可以通过复制粘贴你的仓库 id 来在线可视化你的数据集:
Write-Output "$HF_USER/so100_test"
2. 本地可视化
如果你没有上传,你也可以本地可视化(可以在浏览器 http://127.0.0.1:9090
中打开一个窗口使用可视化工具):
python lerobot/scripts/visualize_dataset_html.py `
--repo-id "$HF_USER/so100_test" `
--local-files-only 1
I. 重放片段
现在尝试在你的机器人上重放第一个片段:
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--control.type=replay `
--control.fps=30 `
--control.repo_id="$HF_USER/so100_test" `
--control.episode=0
J. 训练策略
要训练控制机器人的策略,使用训练脚本。这里是一个示例命令:
python lerobot/scripts/train.py `
--dataset.repo_id="$HF_USER/so100_test" `
--policy.type=act `
--output_dir=outputs/train/act_so100_test `
--job_name=act_so100_test `
--policy.device=cuda `
--wandb.enable=true
从检查点恢复训练
要从检查点恢复训练,下面是从 act_so100_test
策略的 last
检查点恢复的示例命令:
python lerobot/scripts/train.py `
--config_path=outputs/train/act_so100_test/checkpoints/last/pretrained_model/train_config.json `
--resume=true
K. 评估策略
你可以使用控制脚本的 record
功能,但以策略检查点作为输入。例如,运行此命令记录 10 个评估片段:
python lerobot/scripts/control_robot.py `
--robot.type=so100 `
--control.type=record `
--control.fps=30 `
--control.single_task="Grasp a lego block and put it in the bin." `
--control.repo_id="$HF_USER/eval_act_so100_test" `
--control.tags='["tutorial"]' `
--control.warmup_time_s=5 `
--control.episode_time_s=30 `
--control.reset_time_s=30 `
--control.num_episodes=10 `
--control.push_to_hub=true `
--control.policy.path=outputs/train/act_so100_test/checkpoints/last/pretrained_model
注意事项
- 在 PowerShell 中,使用反引号
`
进行命令行续行。 - 环境变量使用
$env:VAR_NAME
语法。 - 字符串变量使用
$VARIABLE_NAME
语法。 - Windows 上的串口通常是
COM1
,COM2
等格式。 - 如果遇到权限问题,可能需要以管理员身份运行 PowerShell。
- 使用
Write-Output
代替echo
命令。 - 确保在字符串中正确转义双引号。