使用LeRobot项目控制Moss v1机械臂的完整指南
前言
LeRobot项目是一个专注于机器人控制的强大框架,本文将详细介绍如何使用LeRobot框架来控制Moss v1机械臂系统。Moss v1是一套开源的机械臂解决方案,由领导臂和跟随臂组成,适合进行机器人学习和控制研究。
准备工作
硬件准备
在开始之前,您需要准备以下硬件组件:
- Moss v1机械臂套件(包括领导臂和跟随臂)
- 3D打印的机械臂结构件
- 6个Feetech STS3215伺服电机(每臂)
- 必要的连接线和工具
软件环境配置
- 安装Miniconda: 建议使用Miniconda创建隔离的Python环境,避免与其他项目产生依赖冲突。
mkdir -p ~/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
~/miniconda3/bin/conda init bash
- 创建LeRobot专用环境:
conda create -y -n lerobot python=3.10 && conda activate lerobot
- 安装FFmpeg:
conda install ffmpeg -c conda-forge
- 安装LeRobot及Feetech电机依赖:
pip install -e ".[feetech]"
电机配置
识别USB端口
在连接机械臂之前,需要确定每个机械臂对应的USB端口:
python lerobot/scripts/find_motors_bus_port.py
此脚本会引导您断开并重新连接每个机械臂,从而识别出对应的端口号。
电机ID设置
为每个电机分配唯一的ID(1-6):
python lerobot/scripts/configure_motor.py \
--port /dev/tty.usbmodem58760432961 \
--brand feetech \
--model sts3215 \
--baudrate 1000000 \
--ID 1
重复此过程,为所有6个电机设置ID(1-6),对领导臂和跟随臂都需要执行此操作。
领导臂特殊处理
领导臂的电机需要移除齿轮以减少摩擦,仅使用其位置编码功能。这是实现精确控制的重要步骤。
机械臂组装
按照以下步骤组装机械臂:
- 将电机喇叭头安装到电机上
- 组装各个关节
- 连接电子线路
- 固定机械结构
建议先组装跟随臂,再组装领导臂,熟练后每个臂的组装时间可控制在1小时内。
校准过程
跟随臂校准
运行校准脚本并将跟随臂移动到三个特定位置:
python lerobot/scripts/control_robot.py \
--robot.type=moss \
--robot.cameras='{}' \
--control.type=calibrate \
--control.arms='["main_follower"]'
三个校准位置包括:
- 零位位置
- 旋转位置
- 休息位置
领导臂校准
同样需要移动到三个特定位置进行校准:
python lerobot/scripts/control_robot.py \
--robot.type=moss \
--robot.cameras='{}' \
--control.type=calibrate \
--control.arms='["main_leader"]'
远程操作
基本远程控制
python lerobot/scripts/control_robot.py \
--robot.type=moss \
--robot.cameras='{}' \
--control.type=teleoperate
带摄像头显示的远程控制
python lerobot/scripts/control_robot.py \
--robot.type=moss \
--control.type=teleoperate
数据记录与训练
记录数据集
python lerobot/scripts/control_robot.py \
--robot.type=moss \
--control.type=record \
--control.fps=30 \
--control.single_task="Grasp a lego block and put it in the bin." \
--control.repo_id=${HF_USER}/moss_test \
--control.tags='["moss","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
训练控制策略
python lerobot/scripts/train.py \
--dataset.repo_id=${HF_USER}/moss_test \
--policy.type=act \
--output_dir=outputs/train/act_moss_test \
--job_name=act_moss_test \
--policy.device=cuda \
--wandb.enable=true
策略评估
python lerobot/scripts/control_robot.py \
--robot.type=moss \
--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_moss_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_moss_test/checkpoints/last/pretrained_model
常见问题解决
-
USB端口权限问题:
sudo chmod 666 /dev/ttyACM0 sudo chmod 666 /dev/ttyACM1
-
电机响应异常:
- 检查电源供应是否充足
- 确认电机ID设置正确
- 验证波特率设置
-
校准不准确:
- 确保机械臂移动到精确的校准位置
- 检查电机喇叭头安装是否牢固
进阶应用
掌握了基础操作后,您可以尝试:
- 开发自定义控制算法
- 集成更多传感器
- 实现更复杂的任务
- 进行多机械臂协同控制实验
通过LeRobot框架和Moss v1机械臂,您可以构建一个强大的机器人学习和控制平台,为各种机器人应用提供支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考