MIKASA-Robo
收藏MIKASA-Robo
概述
MIKASA-Robo是一个针对记忆密集型机器人操作任务的全面基准测试套件,是MIKASA(Memory-Intensive Skills Assessment Suite for Agents)框架的一部分。它具有以下特点:
- 12种不同难度的独立任务类型
- 覆盖不同记忆方面的32个总任务
- 第一个专门设计用于测试机器人操作中代理记忆的基准测试
关键特性
-
多样化的记忆测试:涵盖四种基本的记忆类型:
- 物体记忆
- 空间记忆
- 顺序记忆
- 记忆容量
-
基于ManiSkill3:利用强大的ManiSkill3框架,提供:
- GPU并行化
- 用户友好的接口
- 可定制的环境
任务列表
| 预览 | 记忆任务 | 模式 | 简要描述 | 超时时间(T) | 记忆任务类型 |
|---|---|---|---|---|---|
ShellGame[Mode]-v0 |
Touch<br>Push<br>Pick |
记忆球在一段时间被杯子覆盖后的位置,然后与球所在的杯子互动。 | 90 | 物体 | |
Intercept[Mode]-v0 |
Slow<br>Medium<br>Fast |
记忆滚动球的位置,通过这些位置估计球的速率,然后瞄准球到目标。 | 90 | 空间 | |
InterceptGrab[Mode]-v0 |
Slow<br>Medium<br>Fast |
记忆滚动球的位置,通过这些位置估计球的速率,然后用夹爪抓住球并抬起。 | 90 | 空间 | |
RotateLenient[Mode]-v0 |
Pos<br>PosNeg |
记忆插头的初始位置,按给定角度旋转。 | 90 | 空间 | |
RotateStrict[Mode]-v0 |
Pos<br>PosNeg |
记忆插头的初始位置,旋转到给定角度而不移动其中心。 | 90 | 物体 | |
TakeItBack-v0 |
--- | 记忆立方体的初始位置,将其移动到目标区域,然后返回其初始位置。 | 180 | 空间 | |
RememberColor[Mode]-v0 |
3/5/9 |
记忆立方体的颜色,并在其他颜色中选择。 | 60 | 物体 | |
RememberShape[Mode]-v0 |
3/5/9 |
记忆立方体的形状,并在其他形状中选择。 | 60 | 物体 | |
RememberShapeAndColor[Mode]-v0 |
3×2/3×3<br>5×3 |
记忆立方体的形状和颜色,并在其他形状和颜色中选择。 | 60 | 物体 | |
BunchOfColors[Mode]-v0 |
3/5/7 |
记忆同时显示的一组立方体的颜色,并以任何顺序触摸它们。 | 120 | 容量 | |
SeqOfColors[Mode]-v0 |
3/5/7 |
记忆顺序显示的一组立方体的颜色,然后以任何顺序选择它们。 | 120 | 容量 | |
ChainOfColors[Mode]-v0 |
3/5/7 |
记忆顺序显示的一组立方体的颜色,然后按相同顺序选择它们。 | 120 | 顺序 |
总共:32个桌面机器人操作记忆密集型任务,分为12组。T - 机器人超时时间。
快速入门
安装
bash
本地安装
git clone git@github.com:CognitiveAISystems/MIKASA-Robo.git cd MIKASA-Robo pip install -e .
远程安装
pip install mikasa-robo-suite
基本使用
python import mikasa_robo from mikasa_robo_suite.utils.wrappers import *
num_envs, seed = 512, 123 env = gym.make("RememberColor9-v0", num_envs=num_envs, obs_mode="rgb", render_mode="all")
env = StateOnlyTensorToDictWrapper(env) # [总是]生成obs键
obs, _ = env.reset(seed) for i in tqdm(range(89)): action = torch.from_numpy(env.action_space.sample()) obs, reward, terminated, truncated, info = env.step(action) env.close()
高级使用:调试包装器
python import mikasa_robo from mikasa_robo_suite.utils.wrappers import * from mani_skill.utils.wrappers import RecordEpisode
num_envs, seed = 512, 123 env = gym.make("RememberColor9-v0", num_envs=num_envs, obs_mode="rgb", render_mode="all")
env = StateOnlyTensorToDictWrapper(env) # [总是]生成obs键 env = RememberColorInfoWrapper(env) # [调试]显示任务信息 env = RenderStepInfoWrapper(env) # [调试]显示环境步骤 env = RenderRewardInfoWrapper(env) # [调试]显示总奖励 env = DebugRewardWrapper(env) # [调试]显示奖励信息 env = RecordEpisode(env, "./videos/demo_remember-color-9")
obs, _ = env.reset(seed) for i in tqdm(range(89)): action = torch.from_numpy(env.action_space.sample()) obs, reward, terminated, truncated, info = env.step(action) env.close()
Video("./videos/demo_remember-color-9/0.mp4", embed=True)
训练
MIKASA-Robo支持多种训练配置:
PPO with MLP (基于状态的)
bash python3 baselines/ppo/ppo_memtasks.py --env_id=RememberColor9-v0 --exp-name=remember-color-9-v0 --num-steps=60 --num_eval_steps=180 --include-state
PPO with MLP (RGB + 关节)
bash python3 baselines/ppo/ppo_memtasks.py --env_id=RememberColor9-v0 --exp-name=remember-color-9-v0 --num-steps=60 --num_eval_steps=180 --include-rgb --include-joints
PPO with LSTM (RGB + 关节)
bash python3 baselines/ppo/ppo_memtasks_lstm.py --env_id=RememberColor9-v0 --exp-name=remember-color-9-v0 --num-steps=60 --num_eval_steps=180 --include-rgb --include-joints
若要使用稀疏奖励,请添加--reward-mode=sparse。
MIKASA-Robo理念
代理的记忆能力不仅可以当环境需要记忆时访问,还可以在提供正确格式的观察时访问。目前,我们已经实现了以下训练模式:
-
state:在这种模式下,代理接收到关于环境、关节和TCP姿态的全面、向量化信息,以及解决记忆密集型任务所必需的Oracle数据。在这种方式下训练的代理解决MDP问题,不需要记忆。 -
RGB+joints:在这里,代理接收到从上方摄像机和操纵器夹爪上安装的相机获取的图像数据,以及其关节的位置和速度。这种模式不提供任何额外信息,意味着代理必须学习存储和利用Oracle数据。它旨在测试代理的记忆能力。
这些训练模式通过使用正确的标志获得。因此, bash
在state模式下训练:
--include-state
在RGB+joints模式下训练:
--include-rgb --include-joints
此外,为了调试,你可以将Oracle信息添加到观察中:
--include-oracle
离线RL收集数据集
- 在
state模式下运行PPO-MLP训练,以在MIKASA-Robo任务上收集Oracle信息(即MDP模式): bash
对于单个任务:
python3 dataset_collectors/get_dataset_collectors_ckpt.py --env_id=ShellGameTouch-v0
对于所有任务:
python3 dataset_collectors/parallel_training_manager.py
- 使用Oracle checkpoints收集数据集: bash
对于单个任务:
python3 dataset_collectors/get_mikasa_robo_datasets.py --env-id=ShellGameTouch-v0 --path-to-save-data="data" --ckpt-dir="."
对于所有任务:
python3 dataset_collectors/parallel_dataset_collection_manager.py --path-to-save-data="data" --ckpt-dir="."
引用
如果您认为我们的工作有用,请引用我们的论文:
@misc{cherepanov2025mikasa, title={Memory, Benchmark & Robots: A Benchmark for Solving Complex Tasks with Reinforcement Learning}, author={Egor Cherepanov and Nikita Kachaev and Alexey K. Kovalev and Aleksandr I. Panov}, year={2025}, eprint={2502.10550}, archivePrefix={arXiv}, primaryClass={cs.LG}, url={https://arxiv.org/abs/2502.10550}, }




