用于编写机器人操作任务的工具。
项目描述
模块化操作(MoMa)
DeepMind用于构建模块化机器人操作环境的库,包括在模拟和真实机器人上。
快速入门
概述
MoMa基于DeepMind的Composer库(属于dm_control
)。Composer帮助构建强化学习模拟环境,提供基于MuJoCo实体的定义动作、观察和奖励的工具。
MoMa 将 Composer 封装起来,使其易于构建操作环境,MoMa 引入的抽象允许这些环境在仿真和现实世界中工作。
重要抽象
MoMa 设计为模块化,适用于环境中运行的机器人,无论是在仿真还是现实中,以及单个强化学习环境的特定任务游戏逻辑。
MoMa 通过将强化学习环境分为两个组件来实现这一点:物理设置和任务逻辑。
硬件抽象
MoMa 强制规定,与强化学习环境交互的唯一方式是通过一组传感器和执行器,这些传感器和执行器定义了环境的输入输出接口。
传感器 为真实硬件传感器提供了抽象,但它们也可以在仿真中使用。它们从模拟或真实世界中读取信息,并在强化学习环境中生成观测值。sensors
包提供了一些现成的传感器。您将看到用于收集机器人关节位置、物体位置、抓手状态的传感器示例。
执行器 消费强化学习环境中的动作并驱动机器人,无论是仿真还是现实世界。effectors
包提供了一些常用执行器。
MoMa 的核心是 BaseTask
,它是 composer.Task
的一种变体,包含一组传感器和执行器。通过这种抽象,BaseTask
可以封装任何机器人臂(臂)和抓手(抓手)的操作环境,无论是在仿真还是在现实中。
任务逻辑
BaseTask
表示一个“物理”环境(例如,一个运行在仿真或现实中的单个 Sawyer 臂和 Robotiq 抓手,带有 2 个摄像头),但这本身并不定义一个完整的强化学习环境。对于一个强化学习环境,我们需要定义代理的动作、观测值和奖励。
我们使用 DeepMind 的 AgentFlow 中的两个抽象来帮助定义这些内容。
-
agentflow.ActionSpace
将代理的动作映射到新空间或BaseTask
中的相关执行器。 -
agentflow.TimestepPreprocessor
修改基本强化学习时间步长,然后再将其返回给代理。它们可以用来修改观测值、添加奖励等。它们也可以链接在一起。名称“时间步长预处理程序”来自这样一个事实,即时间步长在传递给代理之前会被预处理。agentflow.preprocessors
包包含许多有用的、现成的时间步长预处理程序。
共同地,ActionSpace
和 TimestepPreprocessor
定义了强化学习环境的“游戏逻辑”,并且它们位于 agentflow.SubTask
中。
如果您有一个固定的物理设置,并且只想更改任务,您只需要更改 af.SubTask
。同样,如果您有一个单一的任务,但想切换硬件或切换仿真和现实之间的模式,您可以固定 af.SubTask
并只更改 BaseTask
。有关更多信息,请参阅 AgentFlow 文档。
整合一切
单一任务
在只有一个目标(即游戏逻辑的一个实例)的强化学习代理的情况下,您可以使用 MoMa 的 SubtaskEnvironment,它公开了一个单例 agentflow.SubTask
,具有 Deepmind 标准的强化学习环境接口 dm_env.Environment。
这是一个图示,展示了MoMa子任务环境的不同组件,以及信息流和代码中不同链接的解释。
-
代理将动作发送给MoMa的
SubTaskEnvironment
,该环境用作任务中使用的不同组件的容器。动作传递给AgentFlow的ActionSpace
,将代理的动作投影到一个与底层执行器规格相匹配的新动作空间。 -
将投影的动作提供给执行器。这允许我们为同一任务同时使用模拟或真实机器人。
-
然后执行器在模拟或现实中激活机器人。
-
传感器随后从机器人环境中收集信息。传感器是模拟和真实环境之间的抽象层,类似于执行器。
-
然后
BaseTask
将时间步传递给AgentFlow的TimestepPreprocessor
。预处理程序可以更改时间步的观察和奖励,并在满足某些终止条件时终止RL过程。 -
然后修改后的时间步传递给代理。
多个任务
给定一个表示一组机器人和传感器的单个BaseTask
,我们可以支持多个RL任务并在它们之间“流动”。每个RL任务都是一个agentflow.SubTask
,包含自己的“游戏逻辑”,指定代理的动作空间、观察、奖励和过程终止标准。
AgentFlow包含指定这些不同子任务以及定义代理如何在不同子任务之间移动的实用工具。请参阅AgentFlow文档以获取更多信息。
使用MoMa创建任务
在新的环境中创建任务
要构建新的MoMa环境,您可以使用subtask_env_builder模式。此模式的示例可以在我们的示例任务和顶部的教程中找到。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。