本文概述 LeRobot 框架中的策略系统。策略是核心的决策组件,它将观察结果(图像、机器人状态、环境状态)转化为机器人控制动作。
概述
在 LeRobot 中,策略是一种机器学习模型,旨在根据各种输入模式控制机器人。每个策略实现共享一个通用接口,同时提供针对不同任务和数据类型优化的不同底层算法和架构。
通用策略接口
LeRobot 中的所有策略都继承自 PreTrainedPolicy 基类,该基类提供了一个包含以下关键方法的标准接口:
方法 目的
select_action(batch) 根据环境观测值生成单个动作
forward(batch) 批量执行模型并计算训练损失
reset() 在回合之间重置策略状态
get_optim_params() 获取优化参数
策略生命周期通常遵循以下模式:
通过 make_policy 工厂方法创建策略
通过 forward() 方法进行训练并计算损失
通过 select_action() 方法部署策略
规范化系统
所有策略都包含一个规范化系统,用于一致地处理输入和输出:
normalize_inputs:在处理之前对观察值进行规范化
normalize_targets:对训练目标进行规范化
unnormalize_outputs:对在环境中执行的操作进行非规范化
这确保了模型能够处理标准化的数据范围,而不受底层机器人硬件或传感器的影响。
策略工厂系统
策略创建通过工厂系统进行管理,该系统根据策略的类型和配置进行实例化:
可用策略类型
ACT 策略
ACT(动作分块 Transformer)是一种基于 Transformer 的策略,使用潜在条件结构预测动作序列。
主要特点:
生成分块动作序列(一次预测多个步骤)
可在训练过程中使用已学习的潜在空间作为变分目标
可选地支持动作预测的时间集成
专为细粒度操作任务而设计
扩散策略
扩散策略使用去噪扩散概率模型,通过迭代去噪生成动作。
主要特点:
处理复杂的多模态动作分布
使用具有条件调制的 U-Net 架构
生成时间相干的动作序列
适用于精确操控任务
TDMPC 策略
TDMPC(时间差分模型预测控制)将基于模型的强化学习与模型预测控制相结合,用于基于规划的机器人控制。
主要特点:
学习潜在动力学模型(TOLD - 面向任务的潜在动力学)
使用交叉熵方法 (CEM) 进行轨迹优化
采用时间差分学习进行价值评估
专为需要规划的长期任务而设计
创建和使用策略
使用 make_policy 工厂函数创建策略:
from lerobot.common.policies.factory import make_policy
Create a policy from dataset statisticspolicy = make_policy(config, ds_meta=dataset_metadata)
Or create a policy from environment configuration
policy = make_policy(config, env_cfg=env_config)
推理:
Reset at the start of an episode
policy.reset()
Get actions during the episode
observation = environment.get_observation()
action = policy.select_action(observation)
environment.step(action)
训练
Process a batch during training
loss, loss_info = policy(batch)
optimizer.zero_grad() loss.backward()
optimizer.step()
配置系统
每种策略类型都有一个专用的配置类,其中包含特定于其架构的参数:
所有配置都继承自通用的 PreTrainedConfig 基类,并包含验证和特征处理的方法。
测试与评估
Makefile 包含多种策略类型的端到端测试,演示如何训练和评估策略:
Training an ACT policy
python lerobot/scripts/train.py \
–policy.type=act \
–policy.dim_model=64 \
–policy.n_action_steps=20 \
–policy.chunk_size=20 \
–policy.device=cpu \
–env.type=aloha \
–dataset.repo_id=lerobot/aloha_sim_transfer_cube_human
Evaluating a trained ACT policy
python lerobot/scripts/eval.py \
–policy.path=checkpoints/pretrained_model \
–policy.device=cpu \ --env.type=aloha \
–eval.n_episodes=1
其他策略类型(如扩散和 TDMPC)也存在类似的模式。