mani_skill.envs.tasks.tabletop.two_robot_stack_cube#
Classes#
Task Description: |
Module Contents#
- class mani_skill.envs.tasks.tabletop.two_robot_stack_cube.TwoRobotStackCube(*args, robot_uids=('panda_wristcam', 'panda_wristcam'), robot_init_qpos_noise=0.02, **kwargs)[source]#
Bases:
mani_skill.envs.sapien_env.BaseEnvTask Description: A collaborative task where two robot arms need to work together to stack two cubes. One robot must pick up the green cube and place it on the target region, while the other robot picks up the blue cube and stacks it on top of the green cube.
The cubes are initially positioned such that each robot can only reach one cube - the green cube is near the right robot and the blue cube is near the left robot. This requires coordination between the robots to complete the stacking task.
Randomizations: - Both cubes have random rotations around their z-axis - The xy positions of both cubes on the table are randomized, while ensuring:
The cubes do not collide with each other
The green cube remains reachable by the right robot
The blue cube remains reachable by the left robot
The goal region is placed along the midline between the robots (y=0), with randomized x position
Success Conditions: - The blue cube is stacked on top of the green cube (within half a cube size) - The green cube is placed on the red/white target region - Both cubes are released by the robots (not being grasped)
- _get_obs_extra(info)[source]#
Get task-relevant extra observations. Usually defined on a task by task basis
- Parameters:
info (dict) –
- _initialize_episode(env_idx, options)[source]#
Initialize the episode, e.g., poses of actors and articulations, as well as task relevant data like randomizing goal positions
- Parameters:
env_idx (torch.Tensor) –
options (dict) –
- _load_agent(options)[source]#
loads the agent/controllable articulations into the environment. The default function provides a convenient way to setup the agent/robot by a robot_uid (stored in self.robot_uids) without requiring the user to have to write the robot building and controller code themselves. For more advanced use-cases you can override this function to have more control over the agent/robot building process.
- Parameters:
options (dict) – The options for the environment.
initial_agent_poses (Optional[Union[sapien.Pose, Pose]]) – The initial poses of the agent/robot. Providing these poses and ensuring they are picked such that they do not collide with objects if spawned there is highly recommended to ensure more stable simulation (the agent pose can be changed later during episode initialization).
build_separate (bool) – Whether to build the agent/robot separately. If True, the agent/robot will be built separately for each parallel environment and then merged together to be accessible under one view/object. This is useful for randomizing physical and visual properties of the agent/robot which is only permitted for articulations built separately in each environment.
- _load_scene(options)[source]#
Loads all objects like actors and articulations into the scene. Called by self._reconfigure. Given options argument is the same options dictionary passed to the self.reset function
- Parameters:
options (dict) –
- compute_dense_reward(obs, action, info)[source]#
Compute the dense reward.
- Parameters:
obs (Any) – The observation data. By default the observation data will be in its most raw form, a dictionary (no flattening, wrappers etc.)
action (torch.Tensor) – The most recent action.
info (dict) – The info dictionary.
- compute_normalized_dense_reward(obs, action, info)[source]#
Compute the normalized dense reward.
- Parameters:
obs (Any) – The observation data. By default the observation data will be in its most raw form, a dictionary (no flattening, wrappers etc.)
action (torch.Tensor) – The most recent action.
info (dict) – The info dictionary.
- evaluate()[source]#
Evaluate whether the environment is currently in a success state by returning a dictionary with a “success” key or a failure state via a “fail” key
This function may also return additional data that has been computed (e.g. is the robot grasping some object) that may be reused when generating observations and rewards.
By default if not overriden this function returns an empty dictionary
- SUPPORTED_ROBOTS = [('panda_wristcam', 'panda_wristcam')][source]#
Override this to enforce which robots or tuples of robots together are supported in the task. During env creation, setting robot_uids auto loads all desired robots into the scene, but not all tasks are designed to support some robot setups
- property _default_human_render_camera_configs[source]#
Add default cameras for rendering when using render_mode=’rgb_array’. These can be overriden by the user at env creation time
- property _default_sensor_configs[source]#
Add default (non-agent) sensors to the environment by returning sensor configurations. These can be overriden by the user at env creation time
- _sample_video_link = 'https://github.com/haosulab/ManiSkill/raw/main/figures/environment_demos/TwoRobotStackCube-v1_rt.mp4'[source]#
a link to a sample video of the task. This is mostly used for automatic documentation generation
- agent: mani_skill.agents.multi_agent.MultiAgent[Tuple[mani_skill.agents.robots.panda.Panda, mani_skill.agents.robots.panda.Panda]][source]#
- property left_agent: mani_skill.agents.robots.panda.Panda[source]#
- Return type:
mani_skill.agents.robots.panda.Panda