Timed Transfer#

Language Instructions

  • When the white lamp turns green, start counting steps from that exact moment. Move the blue cube from the green disc to the red disc exactly on step 300 of that count.

  • When the white lamp turns green, start counting steps from that exact moment. Move the blue cube from the green disc to the red disc exactly on step 100 of that count.

  • When the white lamp turns green, start counting steps from that exact moment. Move the blue cube from the green disc to the red disc exactly on step 1000 of that count.

  • When the white lamp turns green, start counting steps from that exact moment. Move the blue cube from the green disc to the red disc exactly on step 200 of that count.

  • When the white lamp turns green, start counting steps from that exact moment. Move the blue cube from the green disc to the red disc exactly on step 500 of that count.

  • When the white lamp turns green, start counting steps from that exact moment. Move the blue cube from the green disc to the red disc exactly on step 150 of that count.

Task Description

Delayed timing: after a lamp cue, move the cube at a precise future timestep.

Render preview for Timed Transfer

Source#

  • Module: mikasa_robo_suite.vla.memory_envs.timed_transfer_vla

  • Source file: mikasa_robo_suite/vla/memory_envs/timed_transfer_vla.py

Difficulty and Parameters#

Easy, Medium, Hard, and Long variants increase target count and horizon.

Variants#

Env ID

Horizon

Data Source

TimedTransferEasy-Long-VLA-v0

600

MP

TimedTransferEasy-VLA-v0

200

MP

TimedTransferHard-Long-VLA-v0

1200

MP

TimedTransferHard-VLA-v0

300

MP

TimedTransferMedium-Long-VLA-v0

900

MP

TimedTransferMedium-VLA-v0

250

MP

Run Example#

import gymnasium as gym
import torch

import mikasa_robo_suite.vla.memory_envs  # registers VLA env IDs
from mikasa_robo_suite.vla.utils.apply_wrappers import apply_mikasa_vla_wrappers

env = gym.make(
    "TimedTransferEasy-VLA-v0",
    num_envs=1,
    obs_mode="rgb",
    control_mode="pd_ee_delta_pose",
    render_mode="all",
)
env = apply_mikasa_vla_wrappers(env)
obs, info = env.reset(seed=42)
for _ in range(env.max_episode_steps):
    action = env.action_space.sample()
    if not torch.is_tensor(action):
        action = torch.as_tensor(action, device=env.unwrapped.device)
    obs, reward, terminated, truncated, info = env.step(action)
env.close()

Dataset Collection#

Motion-planning MIKASA-Robo-90 variants use planner plus replay collection:

uv run python mikasa_robo_suite/vla/dataset_collectors/get_mikasa_robo_datasets_motion_planning.py \
  --env-id TimedTransferEasy-VLA-v0 \
  --path-to-save-data data_mikasa_robo \
  --num-train-data 250 \
  --max-attempts 5000 \
  --seed 0

Render Videos#

Generate a fresh MP4/GIF render with:

uv run python utils/prepare_benchmark_demo_videos.py \
  --tasks TimedTransferEasy-VLA-v0 \
  --output-dir videos/benchmark_demos \
  --max-attempts-per-task 8 \
  --overwrite

Generated media stays under videos/ and should be published deliberately rather than committed by default.