Skip to content

Conversation

@yangchen73
Copy link
Collaborator

Description

This PR adds six new environments to EmbodiChain.

1. BlocksRankingRGB-v1 (BlocksRankingRGBEnv)

  • Task: Arrange three colored blocks in RGB order (Red → Green → Blue) from left to right.
  • Success Criteria:
    • Blocks are arranged in RGB order along the x-axis.
    • All blocks are close together

2. BlocksRankingSize-v1 (BlocksRankingSizeEnv)

  • Task: Arrange three blocks in size order (Large → Medium → Small) from left to right.
  • Success Criteria:
    • Blocks are arranged in size order along the x-axis.
    • All blocks are close together.

3. StackCups-v1 (StackCupsEnv)

  • Task: Stack two cups with the top cup properly aligned on the base cup.
  • Success Criteria:
    • Cups are aligned in the xy plane.
    • Top cup is slightly higher than the base cup.
    • Both cups haven't fallen over.

4. StackBlocksTwo-v1 (StackBlocksTwoEnv)

  • Task: Stack block_2 on top of block_1.
  • Success Criteria:
    • Block_2 is positioned on top of block_1.
    • Both blocks haven't fallen over.

5. MatchObjectContainer-v1 (MatchObjectContainerEnv)

  • Task: Place blocks into matching shaped containers (cubes → cube container, spheres → sphere container).
  • Success Criteria:
    • Both cube blocks are inside container_cube.
    • Both sphere blocks are inside container_sphere.
    • Both containers are upright (not fallen).

6. PlaceObjectDrawer-v1 (PlaceObjectDrawerEnv)

  • Task: Place an object inside a drawer and close it.
  • Success Criteria:
    • Object is within the drawer inner_box area.
    • Drawer joint position < 0.05.

Type of change

  • New feature (non-breaking change which adds functionality)

Screenshots

Task Screenshot
1. StackCups BlocksRankingRGB
2. StackBlocksTwo BlocksRankingSize
3. BlocksRankingRGB StackCups
4. BlocksRankingSize StackBlocksTwo
5. MatchObjectContainer MatchObjectContainer
6. PlaceObjectDrawer PlaceObjectDrawer

Checklist

  • I have run the black . command to format the code base.

@yangchen73 yangchen73 requested a review from yuecideng January 15, 2026 09:01
"uid": "red_block_mat"
}
},
"set_block_2_color": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we don't randomize the material params, we can use startup mode for this functor

"sim_update": true
}
},
"random_material": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should keep basic skill task env simple. Just remove the following randomization functors

"entity_cfg": {"uid": "block_3"}
}
},
"cam_high_semantic_mask_l": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same, we don't need these obs

}
}
},
"dataset": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refer to the updated dataset recorder example in configs/pour_water/gym_config.json

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the key "dataset" can be removed from gym_config.json if there's no need to save dataset

},
"sensor": [
{
"sensor_type": "StereoCamera",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may follow the common setup of cobotmagic robot (3 camera with the similar params)

}
]
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change the gym_config.json into cobot_magic_3cam.json to explicitly indicate that the robot and sensor setup. Also we may have different embodiment setup for one task

@@ -0,0 +1,182 @@
# ----------------------------------------------------------------------------
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe geometry is better for the file name

)


def randomize_rigid_object_body_scale(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we remove these two functors if they will not be used anymore

env: EmbodiedEnv,
env_ids: Union[torch.Tensor, None],
entity_cfg: SceneEntityCfg,
base_color: list[float] | None = None,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we just use VisualMaterialCfg? It can also created from dict



@register_env("BlocksRankingRGB-v1", max_episode_steps=600)
class BlocksRankingRGBEnv(EmbodiedEnv):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For these six task, we may create a simple expert trajectory for demonstration

@yuecideng yuecideng requested a review from yhnsu January 16, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants