lerobot & SO 100

一、概述

1、Lerobot:LeRobot 旨在为 PyTorch 中的真实机器人技术提供模型、数据集和工具

  • 最顶层:scripts (命令行工具),属于发号施令层

  • 中间层:common/policies (控制策略),属于中间执行层

  • 底层支撑层:common/datasets, common/envs, common/robot_devices

  • 基础配置层: configs, common/utils

2、So 100: 2个6关节的机械臂,主臂遥操作从臂

二、安装配置

1、安装Lerobot & SO 100

conda create -y -n lerobot python=3.10
conda activate lerobot
git clone https://github.com/huggingface/lerobot.git ~/lerobot
conda install ffmpeg -c conda-forge
cd ~/lerobot && pip install -e ".[feetech]"

2、配置SO 100

  1. 找到与每个手臂关联的 USB 端口并更新配置文件

@RobotConfig.register_subclass("so100")
@dataclass
class So100RobotConfig(ManipulatorRobotConfig):
    calibration_dir: str = ".cache/calibration/so100"
    # `max_relative_target` limits the magnitude of the relative positional target vector for safety purposes.
    # Set this to a positive scalar to have the same value for all motors, or a list that is the same length as
    # the number of motors in your follower arms.
    max_relative_target: int | None = None

    leader_arms: dict[str, MotorsBusConfig] = field(
        default_factory=lambda: {
            "main": FeetechMotorsBusConfig(
                port="/dev/tty.usbmodem58760431091",  <-- UPDATE HERE
                motors={
                    # name: (index, model)
                    "shoulder_pan": [1, "sts3215"],
                    "shoulder_lift": [2, "sts3215"],
                    "elbow_flex": [3, "sts3215"],
                    "wrist_flex": [4, "sts3215"],
                    "wrist_roll": [5, "sts3215"],
                    "gripper": [6, "sts3215"],
                },
            ),
        }
    )

    follower_arms: dict[str, MotorsBusConfig] = field(
        default_factory=lambda: {
            "main": FeetechMotorsBusConfig(
                port="/dev/tty.usbmodem585A0076891",  <-- UPDATE HERE
                motors={
                    # name: (index, model)
                    "shoulder_pan": [1, "sts3215"],
                    "shoulder_lift": [2, "sts3215"],
                    "elbow_flex": [3, "sts3215"],
                    "wrist_flex": [4, "sts3215"],
                    "wrist_roll": [5, "sts3215"],
                    "gripper": [6, "sts3215"],
                },
            ),
        }
    )
  1. 配置12个舵机

  2. 手臂校准

三、使用

1、记录数据集

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=lerobot/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=false
  # 在此数据上继续采集
  --control.resume=true
  • 核心参数

    • repo_id:数据集名称,默认路径 ~/.cache/huggingface/lerobot;可通过环境变量HF_LEROBOT_HOME修改

    • reset_time_s:录制一集的最大时长

    • reset_time_s:场景重置时间

    • num_episodes:录制多少集

  • 录制技巧

    • -> 提前退出,保存当前集,并重置环境

    • <- 提前退出,丢弃当前集,并重置环境

    • eac 保存当前集,并结束采集

  • 合并多个数据集

2、可视化数据集

python lerobot/scripts/visualize_dataset_html.py \
  --repo-id lerobot/so100_test \
  --local-files-only 1

3、重播

python lerobot/scripts/control_robot.py \
  --robot.type=so100 \
  --control.type=replay \
  --control.fps=30 \
  --control.repo_id=lerobot/so100_test \
  --control.episode=0

4、训练

python lerobot/scripts/train.py \
  --dataset.repo_id=lerobot/so100_test \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_test \
  --job_name=act_so100_test \
  --policy.device=cuda \
  --wandb.enable=true

5、推理

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=lerobot/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

### 关于 LeRobot 的教程和使用指南 LeRobot 是 Hugging Face 提供的一个开源项目,主要用于机器人控制、遥操作以及强化学习策略训练。以下是关于如何设置环境、执行校准以及训练机器人的详细说明。 #### 设置纯净的 Python 环境 为了确保 LeRobot 能够正常运行并避免与其他库发生冲突,建议创建一个独立的 Conda 环境[^4]: ```bash conda create -y -n lerobot python=3.10 conda activate lerobot ``` 激活环境后,克隆 LeRobot 仓库并按照文档中的指导安装必要的依赖项。这一步通常通过 `requirements.txt` 或者类似的文件完成。 --- #### 手动校准机械臂 在开始任何复杂的任务之前,需要先对手动校准进行配置。有两种方法可以实现这一目标: 1. **第一种方式**: 使用以下命令来启动手动校准过程,适用于指定路径和覆盖参数的情况[^1]: ```bash python lerobot/scripts/control_robot.py calibrate \ --robot-path lerobot/configs/robot/so100.yaml \ --robot-overrides &#39;~cameras&#39; --arms main_follower ``` 2. **第二种方式**: 如果希望更灵活地定义参数,则可以通过键值对的形式传递选项[^2]: ```bash python lerobot/scripts/control_robot.py \ --robot.type=so100 \ --robot.cameras=&#39;{}&#39; \ --control.type=calibrate \ --control.arms=&#39;[&quot;main_follower&quot;]&#39; ``` 这两种方法都可以用来初始化机械臂的状态,并为后续的操作做好准备。 --- #### 训练强化学习策略 LeRobot 支持基于数据集的策略训练功能。下面是一个典型的例子,展示如何利用 PushT 数据集训练扩散策略[^3]: ```bash python lerobot/scripts/train.py \ --dataset.name=lerobot/pusht \ --policy.type=diffusion \ --steps=5000 \ --batch_size=64 \ --policy.device=cuda \ --save_freq=1000 \ --eval_freq=1000 \ --wandb.enable=true ``` 此命令的主要作用如下: - 在 PushT 数据集上训练扩散策略; - 总共迭代 5000 步; - 每隔 1000 步保存一次检查点; - 定期评估当前模型性能; - 将实验日志上传至 Weights &amp; Biases (W&amp;B),以便实时监控进度。 如果想复现某个已经发布的预训练模型,可以直接加载对应的配置文件[^3]: ```bash python lerobot/scripts/train.py --config_path=lerobot/diffusion_pusht ``` 这种方式会自动应用与原始训练过程中一致的所有超参数设定。 --- #### 推荐资源 对于初学者来说,官方文档是最权威的学习材料之一。它不仅涵盖了基础概念介绍,还提供了丰富的案例分析和技术细节支持。此外,在实际动手实践前,请务必仔细阅读项目的 README 文件及其配套 Wiki 页面。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值