LeRobot 框架的核心架构概念和组件(中)
本文档概述构成 LeRobot 框架的核心架构概念和组件。它介绍主要的子系统,并解释它们如何相互作用以实现机器人学习。
。。。。。。继续。。。。。。
环境接口
环境系统提供与模拟环境交互的统一接口。这些环境允许在部署到物理机器人之前,在受控环境中训练和评估策略。
LeRobot 与 Gymnasium(原名 Gym)集成,提供标准化的环境接口。环境创建通过工厂模式处理,从而可以一致地创建不同类型的环境:
Aloha:双臂操控环境
PushT:桌面推动环境
XArm:单臂操控环境
该系统能够在受控的虚拟环境中训练和评估机器人策略,然后再将其部署到物理机器人上。
LeRobot 的环境接口系统,提供了统一的工厂模式来创建不同类型的环境、标准化的配置目标以及用于预处理观测数据并将环境特征映射到策略输入的实用程序。
环境工厂
环境工厂系统提供创建标准化环境配置和实例化 Gymnasium 矢量环境的函数。
创建环境配置
环境配置使用 make_env_config 函数创建,该函数接受环境类型和其他关键字参数:
每种环境类型都有其自己的配置类(例如 AlohaEnv、PushtEnv、XarmEnv),这些类派生自基类 EnvConfig。
实例化环境
make_env 函数根据以下配置创建一个 Gymnasium 矢量环境:
make_env 函数接受以下参数:
cfg:环境配置(由 make_env_config 创建)
n_envs:要创建的并行环境数量(默认值:1)
use_async_envs:是否使用异步或同步环境(默认值:False)
环境类型和任务
LeRobot 支持多种环境类型,每种类型都有特定的任务:
每种环境类型对应一个单独的 Python 包,必须与适当的 LeRobot 附加组件一起安装:
环境特征和预处理
观测值预处理
使用 preprocess_observation 函数将环境观测值预处理为标准化格式。该函数处理:
将图像从通道-最后 (HWC) 格式转换为通道-优先 (CHW) 格式
将图像像素值标准化到 [0,1] 范围内
将 NumPy 数组转换为 PyTorch 张量
将观测值组织成结构化字典格式
环境到策略的特征映射
env_to_policy_features 函数将环境特征映射到策略特征,处理:
将视觉特征转换为通道-优先格式
验证特征形状
应用环境配置中定义的自定义特征映射
任务处理
LeRobot 环境可以包含语言任务描述,这对于语言条件策略至关重要。add_envs_task 函数将任务信息添加到观察字典中:
对于没有语言指令的环境,将使用空字符串作为任务描述。
环境与策略的使用
环境通过标准化的观察和操作格式与策略交互。下图展示此交互流程:
环境集成示例
以下是如何在 LeRobot 中使用环境接口的完整示例:
环境和策略兼容性
并非所有策略都适用于所有环境。下表显示每个环境支持的策略类型:
扩展环境系统
要为 LeRobot 添加新环境,您需要:
创建一个与 Gymnasium 兼容的环境包(例如 gym_myenv)
在该包中实现所需的环境任务
创建一个扩展 EnvConfig 的环境配置类
在 lerobot/init.py 中更新可用的环境和任务
实现新环境时,遵循以下准则:
实现标准 Gymnasium 方法:reset()、step()、render()
提供至少包含像素和 agent_pos 组件的观察空间
实现 task_description 属性或方法用于语言指令
定义清晰的动作和观察空间,并与 LeRobot 策略系统兼容