This document lists many instances of rearrange environments where some of them are designed for training and some of them are designed for testing generalization of a learned policy.
Training environments are classified based on the set of objects and the goal distribution.
By default, each training environments are designed to generate a fixed number of objects.
If you want to train a policy with a variable number of objects, num_objects
should be
randomized using the randomization interface.
We recommend to inherit the following default configs for all training environments.
constants: {
# For the reward, we do the following:
# - for every object that gets placed correctly, immediately provide +1
# - once all objects are properly placed, the policy needs to hold the goal
# state for 2 seconds (in simulation time) until it gets `success_reward` reward
# - the next goal is generated
success_reward: 5.0,
success_pause_range_s: [0.0, 0.5],
max_timesteps_per_goal_per_obj: 600,
vision: True, # use False if you don't want to use vision observations
vision_args: {
image_size: 200,
camera_names: ['vision_cam_front'],
mobile_camera_names: ['vision_cam_wrist']
},
goal_args: {
rot_dist_type: 'full',
randomize_goal_rot: true,
p_goal_hide_robot:: 1.0,
},
# 'obj_pos': l2 distance in meter; 'obj_rot' eular angle distance.
success_threshold: {'obj_pos': 0.04, 'obj_rot': 0.2},
},
parameters: {
simulation_params: {
num_objects: 1,
max_num_objects: 32,
object_size: 0.0254,
used_table_portion: 1.0,
goal_distance_ratio: 1.0,
cast_shadows:: false,
penalty: {
# Penalty for collisions (wrist camera, table)
wrist_collision:: 0.0,
table_collision:: 0.0,
# Penalty for safety stops
safety_stop_penalty:: 0.0,
}
}
}
The table below describes a set of training environment.
Name | File | Config (overwrite) | Description |
---|---|---|---|
blocks reach | blocks_reach.py | - | Place end-of-effector of a robot to the target position. This training environment is not compatible with holdout environments. |
blocks | blocks_train.py | - | Pushing blocks to targets on the surface of a table |
blocks (push + pick-and-place) | blocks_train.py | constants.goal_args.pickup_proba: 0.4 |
Pushing or pick-and-placing blocks to targets on the surface of a table or in the air |
k-composer | composer.py | parameters.simulation_params.num_max_geoms: k |
Pushing objects to targets on the surface of a table. Each objects are created by randomly composing [1, k] meshes. |
ycb | ycb.py | parameters.simulation_params.mesh_scale: 0.6 |
Pushing ycb objects to targets on the surface of a table |
mixture | mixture.py | constants: {normalize_mesh: True, normalized_mesh_size: 0.05} parameters.simulation_params.mesh_scale: 1.0 |
Pushing objects to targets on the surface of a table, objects are randomly sample from ycb or simple geom shapes. |
We design a set of holdout environment to evaluate generalization performance of a learned policy. To make holdout environment compatible with the recommended training environment, we recommend inheriting the same default configs from the training environment.
The table below describes a list of holdout environments and their configs.
As a common config for all holdout environments, n
-objects holdout environment overwrites
parameters.simulation_params.num_objects: n
.
Configs for some holdout environment can be found in robogym/envs/rearrange/holdouts/configs/
.
In this case the table will provide a pointer to these configs.
Name | File | Config (overwrite) | Description |
---|---|---|---|
n-blocks push | blocks.py | constants.goal_args.rot_dist_type: 'mod90' |
push blocks to targets on the surface of the table. |
n-blocks flip | blocks.py | constants.goal_args.rot_randomize_type: 'block' parameters.simulation_params.block_appearance: 'openai' |
push and flip blocks to targets on the surface of the table. Target block orientation may require flipping the block. |
n-blocks duplicate | blocks_duplicate.py | constants.goal_args.rot_dist_type: 'mod90' |
push n identical looking blocks to targets on the surface of the table. |
n-blocks pick-and-place | blocks_pickandplace.py | constants.goal_args.rot_dist_type: 'mod90' |
similar to block push, but one object target is in the air. |
n-blocks stack (1 < n < 5 ) |
blocks_stack.py | constants.goal_args.rot_dist_type: 'mod90' |
stack n blocks into a tower. |
attached blocks | blocks_attached.py | constants.goal_args.rot_dist_type: 'mod90' |
rearrange 8 blocks to a particular structured shape (at least one face of each blocks are attached to another). |
n-ycb push | ycb.py | - | push ycb objects to targets on the surface of the table. |
n-ycb pick-and-place | ycb_pickandplace.py | - | similar to ycb push, but one object target is in the air. |
ball_capture | ball_capture.jsonnet | - | see this figure |
ball_in_mug | bin_packing.jsonnet | - | see this figure |
bin_packing | bin_packing.jsonnet | - | see this figure |
bin_unpacking | bin_unpacking.jsonnet | - | see this figure |
bookshelf | bookshelf.jsonnet | - | see this figure |
chess4 | chessboard.py | parameters.simulation_params.num_objects: 4 |
see this figure |
chessboard | chess.jsonnet | - | see this figure |
domino5 | dominos.py | parameters.simulation_params.num_objects: 5 constants.is_holdout: True |
see this figure |
dominoes | dominoes.jsonnet | - | see this figure |
jenga_cross | jenga/cross.jsonnet | - | see this figure |
jenga_tower | jenga/leaning_tower.jsonnet | - | see this figure |
jenga_tower_disassemble | jenga/leaning_tower_disassemble.jsonnet | - | see this figure |
jenga_tower_stack6 | jenga/stack6.jsonnet | - | see this figure |
lego_easy_stack2 | lego/easy_stack2.jsonnet | - | see this figure |
lego_easy_stack3 | lego/easy_stack3.jsonnet | - | see this figure |
lego_stack2 | lego/stack2.jsonnet | - | see this figure |
lego_stack2L | lego/stack2L.jsonnet | - | see this figure |
lego_stack3 | lego/stack3.jsonnet | - | see this figure |
lego_stack5 | lego/stack5.jsonnet | - | see this figure |
rainbow | rainbow.jsonnet | - | see this figure |
rainbow_balance | rainbow_build/rainbow_balance.jsonnet | - | see this figure |
rainbow_stack2 | rainbow_build/rainbow_stack2.jsonnet | - | see this figure |
rainbow_stack4 | rainbow_build/rainbow_stack4.jsonnet | - | see this figure |
rainbow_stack6 | rainbow_build/rainbow_stack6.jsonnet | - | see this figure |
rainbow_stack_inv2 | rainbow_build/rainbow_stack_inv2.jsonnet | - | see this figure |
rainbow_stack_inv4 | rainbow_build/rainbow_stack_inv4.jsonnet | - | see this figure |
rainbow_stack_inv6 | rainbow_build/rainbow_stack_inv6.jsonnet | - | see this figure |
table_setting | table_setting.py | constants.goal_args.randomize_goal_rot: False constants.success_needed: 1 parameters.simulation_params.num_objects: 5 |
see this figure |
tangram | tangram.jsonnet | - | see this figure |
wordblocks | wordblocks.py | constants.goal_args.randomize_goal_rot: False constants.success_needed: 1 parameters.simulation_params.num_objects: 6 |
see this figure |