Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Haosulab ManiSkill FMBAssembly

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation, Assembly
Last Updated 2026-02-15 08:00 GMT

Overview

Concrete implementation of the Functional Manipulation Benchmark (FMB) Assembly task in ManiSkill.

Description

The FMBAssembly1Env is a simulation version of the Multi-Object Multi-Stage Manipulation Assembly1 task from the Functional Manipulation Benchmark (Luo et al.). The goal is to assemble parts together using a reorienting fixture onto a red board. The scene includes a board, yellow peg, purple U-shape, blue U-shape, green bridge, and a reorienting fixture.

Registered as FMBAssembly1Easy-v1 with max_episode_steps=500. The supported robot is panda. Reward modes include "sparse" and "none".

The bridge piece position is randomized with noise of +/-0.025m. Success is determined by the bridge being within 0.005m of its goal position on the board. Objects are loaded from local GLB/PLY asset files.

Usage

Use this environment for multi-stage assembly manipulation research. It tests the ability to grasp, reorient, and precisely place parts in a specific order.

Code Reference

Source Location

Signature

@register_env("FMBAssembly1Easy-v1", max_episode_steps=500)
class FMBAssembly1Env(BaseEnv):
    SUPPORTED_REWARD_MODES = ["sparse", "none"]
    SUPPORTED_ROBOTS = ["panda"]
    agent: Panda

Import

import gymnasium as gym
import mani_skill.envs
env = gym.make("FMBAssembly1Easy-v1")

I/O Contract

Inputs

Name Type Required Description
obs_mode str No Observation mode
reward_mode str No Reward mode: "sparse", "none"
control_mode str No Control mode for the Panda robot

Outputs

Name Type Description
obs dict/array Observation including TCP pose, board position, bridge pose
reward float Sparse reward when bridge is placed correctly
terminated bool Whether episode ended by success/failure
truncated bool Whether episode hit max steps (500)
info dict Contains success flag

Usage Examples

Basic Usage

import gymnasium as gym
import mani_skill.envs

env = gym.make("FMBAssembly1Easy-v1", obs_mode="state", render_mode="rgb_array")
obs, info = env.reset()
for _ in range(100):
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        obs, info = env.reset()
env.close()

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment