├── .github ├── ISSUE_TEMPLATE │ ├── bug.yml │ ├── proposal.yml │ └── question.yml └── workflows │ ├── build-docs.yml │ ├── build.yml │ ├── pre-commit.yml │ └── pypi-publish.yml ├── .gitignore ├── .pre-commit-config.yaml ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── docker ├── Dockerfile ├── README.md └── entrypoint ├── docs ├── .gitignore ├── 404.md ├── Makefile ├── README.md ├── _scripts │ └── move_404.py ├── _static │ ├── img │ │ ├── PROJECT-github.png │ │ ├── favicon.svg │ │ ├── metaworld-text.svg │ │ ├── metaworld_black.svg │ │ ├── metaworld_white.svg │ │ ├── ml1-1.gif │ │ ├── ml1.gif │ │ ├── ml10-1.gif │ │ ├── ml10.gif │ │ ├── ml45-1.gif │ │ ├── ml45.gif │ │ ├── mt1-1.gif │ │ ├── mt1.gif │ │ ├── mt10-1.gif │ │ └── mt10.gif │ ├── metaworld-text.svg │ ├── ml1.gif │ ├── ml10.gif │ ├── ml45.gif │ ├── mt1.gif │ └── mt10.gif ├── benchmark │ ├── action_space.md │ ├── benchmark_descriptions.md │ ├── expert_trajectories.md │ ├── reward_functions.md │ ├── state_space.md │ └── task_descriptions.md ├── citation.md ├── conf.py ├── evaluation │ └── evaluation.md ├── index.md ├── installation │ └── installation.md ├── introduction │ └── basic_usage.md ├── make.bat ├── rendering │ └── rendering.md └── requirements.txt ├── metaworld-text-banner.svg ├── metaworld ├── __init__.py ├── asset_path_utils.py ├── assets │ ├── objects │ │ ├── assembly_peg.xml │ │ ├── assets │ │ │ ├── assembly_peg.xml │ │ │ ├── assembly_peg_dependencies.xml │ │ │ ├── basketball.xml │ │ │ ├── basketball_dependencies.xml │ │ │ ├── basketballhoop.xml │ │ │ ├── binA.xml │ │ │ ├── binB.xml │ │ │ ├── bin_dependencies.xml │ │ │ ├── block.xml │ │ │ ├── block_cyl.xml │ │ │ ├── block_dependencies.xml │ │ │ ├── box.xml │ │ │ ├── box_dependencies.xml │ │ │ ├── boxtop.xml │ │ │ ├── buttonbox.xml │ │ │ ├── buttonbox_dependencies.xml │ │ │ ├── club.xml │ │ │ ├── club_dependencies.xml │ │ │ ├── coffeemachine.xml │ │ │ ├── coffeemachine_dependencies.xml │ │ │ ├── dial.xml │ │ │ ├── dial_dependencies.xml │ │ │ ├── doorlockA.xml │ │ │ ├── doorlockB.xml │ │ │ ├── doorlock_dependencies.xml │ │ │ ├── drawer.xml │ │ │ ├── drawer_dependencies.xml │ │ │ ├── faucet.xml │ │ │ ├── faucet_dependencies.xml │ │ │ ├── hammer.xml │ │ │ ├── hammer_dependencies.xml │ │ │ ├── hammerblock.xml │ │ │ ├── handle_press.xml │ │ │ ├── handle_press_dependencies.xml │ │ │ ├── laptop.xml │ │ │ ├── laptop_dependencies.xml │ │ │ ├── lever.xml │ │ │ ├── lever_dependencies.xml │ │ │ ├── mug.xml │ │ │ ├── objA.xml │ │ │ ├── peg_block.xml │ │ │ ├── peg_block_dependencies.xml │ │ │ ├── peg_insert.xml │ │ │ ├── peg_insert_dependencies.xml │ │ │ ├── plug.xml │ │ │ ├── plug_dependencies.xml │ │ │ ├── plug_wall.xml │ │ │ ├── plug_wall_dependencies.xml │ │ │ ├── puck.xml │ │ │ ├── puck_goal.xml │ │ │ ├── puck_goal_dependencies.xml │ │ │ ├── shelf.xml │ │ │ ├── shelf_dependencies.xml │ │ │ ├── shelfb.xml │ │ │ ├── shelfb_dependencies.xml │ │ │ ├── soccer_ball.xml │ │ │ ├── soccer_dependencies.xml │ │ │ ├── soccer_goal.xml │ │ │ ├── stick.xml │ │ │ ├── stick_dependencies.xml │ │ │ ├── table.xml │ │ │ ├── table_dependencies.xml │ │ │ ├── table_hole.xml │ │ │ ├── thermos.xml │ │ │ ├── thermos_dependencies.xml │ │ │ ├── wall.xml │ │ │ ├── wall_dependencies.xml │ │ │ ├── window.xml │ │ │ ├── window_dependencies.xml │ │ │ ├── window_horiz.xml │ │ │ ├── xyz_base.xml │ │ │ └── xyz_base_dependencies.xml │ │ ├── basketball.xml │ │ ├── basketballhoop.xml │ │ ├── binA.xml │ │ ├── binB.xml │ │ ├── block.xml │ │ ├── block_cyl.xml │ │ ├── box.xml │ │ ├── buttonbox.xml │ │ ├── club.xml │ │ ├── coffeemachine.xml │ │ ├── dial.xml │ │ ├── doorlockA.xml │ │ ├── doorlockB.xml │ │ ├── drawer.xml │ │ ├── faucet.xml │ │ ├── hammer.xml │ │ ├── hammerblock.xml │ │ ├── handle_press.xml │ │ ├── laptop.xml │ │ ├── lever.xml │ │ ├── meshes │ │ │ ├── assembly_peg │ │ │ │ ├── assembly_peg_handle.stl │ │ │ │ ├── assembly_peg_ring.stl │ │ │ │ └── assembly_peg_rod.stl │ │ │ ├── basketball │ │ │ │ ├── backboard.stl │ │ │ │ ├── backboardsquareinner.stl │ │ │ │ ├── backboardsquareouter.stl │ │ │ │ ├── basketballinner.stl │ │ │ │ ├── basketballouter.stl │ │ │ │ ├── hoop.stl │ │ │ │ └── pole.stl │ │ │ ├── bin │ │ │ │ └── bin.stl │ │ │ ├── block │ │ │ │ └── block.stl │ │ │ ├── box │ │ │ │ ├── boxhandle.stl │ │ │ │ └── boxtop.stl │ │ │ ├── buttonbox │ │ │ │ ├── button.stl │ │ │ │ ├── buttonring.stl │ │ │ │ ├── stopbot.stl │ │ │ │ ├── stopbutton.stl │ │ │ │ ├── stopbuttonrim.stl │ │ │ │ ├── stopbuttonrod.stl │ │ │ │ └── stoptop.stl │ │ │ ├── coffeemachine │ │ │ │ ├── body1.stl │ │ │ │ ├── body2.stl │ │ │ │ ├── bodypiece1.stl │ │ │ │ ├── bodypiece2.stl │ │ │ │ ├── bodypiece3.stl │ │ │ │ ├── button.stl │ │ │ │ ├── buttonring.stl │ │ │ │ ├── cup.stl │ │ │ │ ├── handle.stl │ │ │ │ ├── mug.stl │ │ │ │ ├── spout.stl │ │ │ │ └── spoutconnect.stl │ │ │ ├── dial │ │ │ │ ├── dial.stl │ │ │ │ └── dialhead.stl │ │ │ ├── doorlock │ │ │ │ ├── door.stl │ │ │ │ ├── door_handle.stl │ │ │ │ ├── handle.stl │ │ │ │ ├── handle_base.stl │ │ │ │ ├── lock.stl │ │ │ │ ├── lock_base.stl │ │ │ │ └── safe.stl │ │ │ ├── drawer │ │ │ │ ├── drawer.stl │ │ │ │ ├── drawercase.stl │ │ │ │ └── drawerhandle.stl │ │ │ ├── faucet │ │ │ │ ├── faucetbase.stl │ │ │ │ ├── faucethandle1.stl │ │ │ │ └── faucethead.stl │ │ │ ├── golf_club │ │ │ │ ├── club_handle.stl │ │ │ │ ├── club_head.stl │ │ │ │ └── club_tape.stl │ │ │ ├── hammer │ │ │ │ ├── hammerblock.stl │ │ │ │ ├── hammerhandle.stl │ │ │ │ ├── hammerhead.stl │ │ │ │ └── nail.stl │ │ │ ├── handle_press │ │ │ │ ├── handle_press_base.stl │ │ │ │ ├── handle_press_col1.stl │ │ │ │ ├── handle_press_col2.stl │ │ │ │ ├── handle_press_col3.stl │ │ │ │ ├── handle_press_grip.stl │ │ │ │ ├── handle_press_lever.stl │ │ │ │ └── handle_press_trim.stl │ │ │ ├── laptop │ │ │ │ ├── laptop_base.stl │ │ │ │ ├── laptop_hinge.stl │ │ │ │ ├── laptop_keys.stl │ │ │ │ ├── laptop_screen.stl │ │ │ │ └── laptop_top.stl │ │ │ ├── lever │ │ │ │ ├── lever_axis.stl │ │ │ │ ├── lever_base.stl │ │ │ │ ├── lever_handle.stl │ │ │ │ ├── lever_rod.stl │ │ │ │ └── lever_rodbase.stl │ │ │ ├── peg_block │ │ │ │ ├── block_inner.stl │ │ │ │ └── block_outer.stl │ │ │ ├── plug │ │ │ │ ├── plug.stl │ │ │ │ ├── plug_head.stl │ │ │ │ ├── plug_plastic.stl │ │ │ │ └── plug_wall.stl │ │ │ ├── puck │ │ │ │ ├── goal_net.stl │ │ │ │ ├── goal_rim.stl │ │ │ │ ├── net1_col.stl │ │ │ │ ├── net2_col.stl │ │ │ │ ├── net3_col.stl │ │ │ │ ├── net4_col.stl │ │ │ │ └── puck.stl │ │ │ ├── shelf │ │ │ │ ├── shelf.stl │ │ │ │ └── shelf_supports.stl │ │ │ ├── shelfb │ │ │ │ ├── shelf_0.stl │ │ │ │ ├── shelf_1.stl │ │ │ │ └── shelf_frame.stl │ │ │ ├── soccer │ │ │ │ ├── goal_col1.stl │ │ │ │ ├── goal_col2.stl │ │ │ │ ├── goal_col3.stl │ │ │ │ ├── goal_col4.stl │ │ │ │ ├── soccer_black.stl │ │ │ │ ├── soccer_frame.stl │ │ │ │ ├── soccer_net.stl │ │ │ │ └── soccer_white.stl │ │ │ ├── stick │ │ │ │ └── stick.stl │ │ │ ├── table │ │ │ │ ├── table_hole.stl │ │ │ │ ├── table_hole2.stl │ │ │ │ ├── tablebody.stl │ │ │ │ └── tabletop.stl │ │ │ ├── thermos │ │ │ │ ├── therm_base.stl │ │ │ │ ├── therm_body.stl │ │ │ │ ├── therm_cap.stl │ │ │ │ ├── therm_handle.stl │ │ │ │ └── therm_trim.stl │ │ │ ├── window │ │ │ │ ├── window_base.stl │ │ │ │ ├── window_frame.stl │ │ │ │ ├── window_h_base.stl │ │ │ │ ├── window_h_frame.stl │ │ │ │ ├── windowa_frame.stl │ │ │ │ ├── windowa_glass.stl │ │ │ │ ├── windowa_h_frame.stl │ │ │ │ ├── windowa_h_glass.stl │ │ │ │ ├── windowb_frame.stl │ │ │ │ ├── windowb_glass.stl │ │ │ │ ├── windowb_h_frame.stl │ │ │ │ └── windowb_h_glass.stl │ │ │ └── xyz_base │ │ │ │ ├── base.stl │ │ │ │ ├── eGripperBase.stl │ │ │ │ ├── head.stl │ │ │ │ ├── l0.stl │ │ │ │ ├── l1.stl │ │ │ │ ├── l2.stl │ │ │ │ ├── l3.stl │ │ │ │ ├── l4.stl │ │ │ │ ├── l5.stl │ │ │ │ ├── l6.stl │ │ │ │ └── pedestal.stl │ │ ├── mug.xml │ │ ├── objA.xml │ │ ├── peg_block.xml │ │ ├── peg_insert.xml │ │ ├── plug.xml │ │ ├── plug_wall.xml │ │ ├── puck.xml │ │ ├── puck_goal.xml │ │ ├── shelf.xml │ │ ├── shelfb.xml │ │ ├── soccer_ball.xml │ │ ├── soccer_goal.xml │ │ ├── sphere.xml │ │ ├── stick.xml │ │ ├── table.xml │ │ ├── table_hole.xml │ │ ├── thermos.xml │ │ ├── wall.xml │ │ ├── window.xml │ │ ├── window_horiz.xml │ │ └── xyz_base.xml │ ├── sawyer_xyz │ │ ├── sawyer_assembly_peg.xml │ │ ├── sawyer_basketball.xml │ │ ├── sawyer_bin_picking.xml │ │ ├── sawyer_box.xml │ │ ├── sawyer_button_press.xml │ │ ├── sawyer_button_press_topdown.xml │ │ ├── sawyer_button_press_topdown_wall.xml │ │ ├── sawyer_button_press_wall.xml │ │ ├── sawyer_coffee.xml │ │ ├── sawyer_dial.xml │ │ ├── sawyer_door_lock.xml │ │ ├── sawyer_door_pull.xml │ │ ├── sawyer_drawer.xml │ │ ├── sawyer_faucet.xml │ │ ├── sawyer_hammer.xml │ │ ├── sawyer_handle_press.xml │ │ ├── sawyer_handle_press_sideways.xml │ │ ├── sawyer_laptop.xml │ │ ├── sawyer_lever_pull.xml │ │ ├── sawyer_peg_insertion_side.xml │ │ ├── sawyer_peg_unplug_side.xml │ │ ├── sawyer_pick_and_place.xml │ │ ├── sawyer_pick_out_of_hole.xml │ │ ├── sawyer_pick_place_v3.xml │ │ ├── sawyer_pick_place_wall_v3.xml │ │ ├── sawyer_plate_slide.xml │ │ ├── sawyer_plate_slide_sideway.xml │ │ ├── sawyer_push_back_v3.xml │ │ ├── sawyer_push_v3.xml │ │ ├── sawyer_push_wall_v3.xml │ │ ├── sawyer_reach_push_pick_and_place.xml │ │ ├── sawyer_reach_push_pick_and_place_wall.xml │ │ ├── sawyer_reach_v3.xml │ │ ├── sawyer_reach_wall_v3.xml │ │ ├── sawyer_shelf_placing.xml │ │ ├── sawyer_shelf_removing.xml │ │ ├── sawyer_soccer.xml │ │ ├── sawyer_stick_obj.xml │ │ ├── sawyer_sweep_tool.xml │ │ ├── sawyer_sweep_v3.xml │ │ ├── sawyer_table_with_hole.xml │ │ ├── sawyer_table_with_hole_no_puck.xml │ │ ├── sawyer_window.xml │ │ └── sawyer_window_horizontal.xml │ ├── scene │ │ ├── basic_scene.xml │ │ ├── basic_scene_b.xml │ │ ├── basic_scene_c.xml │ │ └── textures │ │ │ ├── fabricPattern.png │ │ │ ├── fabricPlain.png │ │ │ ├── height1.png │ │ │ ├── metal.png │ │ │ ├── metal1.png │ │ │ ├── plaster.png │ │ │ ├── white_marble_tile.png │ │ │ ├── white_marble_tile2.png │ │ │ ├── wood.png │ │ │ └── wood2.png │ └── textures │ │ ├── brick1.png │ │ ├── darkwood.png │ │ ├── floor1.png │ │ ├── floor2.png │ │ ├── granite.png │ │ ├── light_wood.png │ │ ├── light_wood_v2.png │ │ ├── light_wood_v3.jpeg │ │ ├── light_wood_v3.png │ │ ├── marble.png │ │ ├── metal.png │ │ ├── metal1.png │ │ ├── metal2.png │ │ ├── navy_blue.png │ │ ├── plaster1.png │ │ ├── real_door.png │ │ ├── tennis.png │ │ ├── wood.png │ │ ├── wood1.png │ │ ├── wood2.png │ │ ├── wood3.png │ │ ├── wood4.png │ │ └── wood_light.png ├── env_dict.py ├── envs │ ├── __init__.py │ ├── sawyer_assembly_peg_v3.py │ ├── sawyer_basketball_v3.py │ ├── sawyer_bin_picking_v3.py │ ├── sawyer_box_close_v3.py │ ├── sawyer_button_press_topdown_v3.py │ ├── sawyer_button_press_topdown_wall_v3.py │ ├── sawyer_button_press_v3.py │ ├── sawyer_button_press_wall_v3.py │ ├── sawyer_coffee_button_v3.py │ ├── sawyer_coffee_pull_v3.py │ ├── sawyer_coffee_push_v3.py │ ├── sawyer_dial_turn_v3.py │ ├── sawyer_disassemble_peg_v3.py │ ├── sawyer_door_close_v3.py │ ├── sawyer_door_lock_v3.py │ ├── sawyer_door_unlock_v3.py │ ├── sawyer_door_v3.py │ ├── sawyer_drawer_close_v3.py │ ├── sawyer_drawer_open_v3.py │ ├── sawyer_faucet_close_v3.py │ ├── sawyer_faucet_open_v3.py │ ├── sawyer_hammer_v3.py │ ├── sawyer_hand_insert_v3.py │ ├── sawyer_handle_press_side_v3.py │ ├── sawyer_handle_press_v3.py │ ├── sawyer_handle_pull_side_v3.py │ ├── sawyer_handle_pull_v3.py │ ├── sawyer_lever_pull_v3.py │ ├── sawyer_peg_insertion_side_v3.py │ ├── sawyer_peg_unplug_side_v3.py │ ├── sawyer_pick_out_of_hole_v3.py │ ├── sawyer_pick_place_v3.py │ ├── sawyer_pick_place_wall_v3.py │ ├── sawyer_plate_slide_back_side_v3.py │ ├── sawyer_plate_slide_back_v3.py │ ├── sawyer_plate_slide_side_v3.py │ ├── sawyer_plate_slide_v3.py │ ├── sawyer_push_back_v3.py │ ├── sawyer_push_v3.py │ ├── sawyer_push_wall_v3.py │ ├── sawyer_reach_v3.py │ ├── sawyer_reach_wall_v3.py │ ├── sawyer_shelf_place_v3.py │ ├── sawyer_soccer_v3.py │ ├── sawyer_stick_pull_v3.py │ ├── sawyer_stick_push_v3.py │ ├── sawyer_sweep_into_goal_v3.py │ ├── sawyer_sweep_v3.py │ ├── sawyer_window_close_v3.py │ └── sawyer_window_open_v3.py ├── evaluation.py ├── policies │ ├── __init__.py │ ├── action.py │ ├── policy.py │ ├── sawyer_assembly_v3_policy.py │ ├── sawyer_basketball_v3_policy.py │ ├── sawyer_bin_picking_v3_policy.py │ ├── sawyer_box_close_v3_policy.py │ ├── sawyer_button_press_topdown_v3_policy.py │ ├── sawyer_button_press_topdown_wall_v3_policy.py │ ├── sawyer_button_press_v3_policy.py │ ├── sawyer_button_press_wall_v3_policy.py │ ├── sawyer_coffee_button_v3_policy.py │ ├── sawyer_coffee_pull_v3_policy.py │ ├── sawyer_coffee_push_v3_policy.py │ ├── sawyer_dial_turn_v3_policy.py │ ├── sawyer_disassemble_v3_policy.py │ ├── sawyer_door_close_v3_policy.py │ ├── sawyer_door_lock_v3_policy.py │ ├── sawyer_door_open_v3_policy.py │ ├── sawyer_door_unlock_v3_policy.py │ ├── sawyer_drawer_close_v3_policy.py │ ├── sawyer_drawer_open_v3_policy.py │ ├── sawyer_faucet_close_v3_policy.py │ ├── sawyer_faucet_open_v3_policy.py │ ├── sawyer_hammer_v3_policy.py │ ├── sawyer_hand_insert_v3_policy.py │ ├── sawyer_handle_press_side_v3_policy.py │ ├── sawyer_handle_press_v3_policy.py │ ├── sawyer_handle_pull_side_v3_policy.py │ ├── sawyer_handle_pull_v3_policy.py │ ├── sawyer_lever_pull_v3_policy.py │ ├── sawyer_peg_insertion_side_v3_policy.py │ ├── sawyer_peg_unplug_side_v3_policy.py │ ├── sawyer_pick_out_of_hole_v3_policy.py │ ├── sawyer_pick_place_v3_policy.py │ ├── sawyer_pick_place_wall_v3_policy.py │ ├── sawyer_plate_slide_back_side_v3_policy.py │ ├── sawyer_plate_slide_back_v3_policy.py │ ├── sawyer_plate_slide_side_v3_policy.py │ ├── sawyer_plate_slide_v3_policy.py │ ├── sawyer_push_back_v3_policy.py │ ├── sawyer_push_v3_policy.py │ ├── sawyer_push_wall_v3_policy.py │ ├── sawyer_reach_v3_policy.py │ ├── sawyer_reach_wall_v3_policy.py │ ├── sawyer_shelf_place_v3_policy.py │ ├── sawyer_soccer_v3_policy.py │ ├── sawyer_stick_pull_v3_policy.py │ ├── sawyer_stick_push_v3_policy.py │ ├── sawyer_sweep_into_v3_policy.py │ ├── sawyer_sweep_v3_policy.py │ ├── sawyer_window_close_v3_policy.py │ └── sawyer_window_open_v3_policy.py ├── py.typed ├── sawyer_xyz_env.py ├── types.py ├── utils │ ├── __init__.py │ ├── reward_utils.py │ └── rotation.py └── wrappers.py ├── pyproject.toml ├── scripts ├── env_runtime.py ├── keyboard_control.py ├── plot_rewards_returns.ipynb ├── plot_rewards_returns_noise_3D.ipynb ├── policy_testing.py ├── profile_memory_usage.py └── scripted_policy_movies.ipynb ├── setup.py └── tests ├── __init__.py ├── helpers.py ├── integration ├── __init__.py ├── helpers.py ├── test_memory_usage.py ├── test_new_api.py └── test_single_goal_envs.py └── metaworld ├── __init__.py ├── envs ├── __init__.py └── mujoco │ ├── __init__.py │ └── sawyer_xyz │ ├── __init__.py │ ├── helpers.py │ ├── test_obs_space_hand.py │ ├── test_sawyer_xyz_env.py │ ├── test_scripted_policies.py │ ├── test_seeded_rand_vec.py │ └── utils.py ├── test_evaluation.py └── test_gym_make.py /.github/ISSUE_TEMPLATE/question.yml: -------------------------------------------------------------------------------- 1 | name: Question 2 | description: Ask a question 3 | title: "[Question] Question title" 4 | labels: ["question"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: > 9 | If you're a beginner and have basic questions, please ask on 10 | [r/reinforcementlearning](https://www.reddit.com/r/reinforcementlearning/) or in the 11 | [RL Discord](https://discord.com/invite/xhfNqQv) (if you're new please use the beginners channel). 12 | Basic questions that are not bugs or feature requests will be closed without reply, because GitHub 13 | issues are not an appropriate venue for these. Advanced/nontrivial questions, especially in areas where 14 | documentation is lacking, are very much welcome. 15 | - type: textarea 16 | id: question 17 | attributes: 18 | label: Question 19 | description: Your question 20 | validations: 21 | required: true 22 | -------------------------------------------------------------------------------- /.github/workflows/build-docs.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy Docs 2 | on: 3 | push: 4 | branches: [master] 5 | 6 | permissions: 7 | contents: write 8 | 9 | jobs: 10 | docs: 11 | name: Generate Website 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v3 16 | - uses: actions/setup-python@v4 17 | with: 18 | python-version: '3.10' 19 | 20 | - name: Install docs dependencies 21 | run: pip install -r docs/requirements.txt 22 | 23 | - name: Install Metaworld 24 | run: pip install . 25 | 26 | - name: Build 27 | run: sphinx-build -b dirhtml -v docs _build 28 | 29 | - name: Move 404 30 | run: mv _build/404/index.html _build/404.html 31 | 32 | - name: Update 404 links 33 | run: python docs/_scripts/move_404.py _build/404.html 34 | 35 | - name: Remove .doctrees 36 | run: rm -r _build/.doctrees 37 | 38 | - name: Upload to GitHub Pages 39 | uses: JamesIves/github-pages-deploy-action@v4 40 | with: 41 | folder: _build 42 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | on: [pull_request, push] 3 | 4 | permissions: 5 | contents: read # to fetch code (actions/checkout) 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | strategy: 11 | matrix: 12 | python-version: ['3.10', '3.11', '3.12'] 13 | steps: 14 | - uses: actions/checkout@v3 15 | - run: | 16 | docker build -f docker/Dockerfile \ 17 | --build-arg PYTHON_VERSION=${{ matrix.python-version }} \ 18 | --tag metaworld-docker . 19 | - name: Run tests 20 | run: docker run metaworld-docker pytest tests/* 21 | # - name: Run doctests 22 | # run: docker run metaworld-docker pytest --doctest-modules metaworld/ 23 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- 1 | # https://pre-commit.com 2 | # This GitHub Action assumes that the repo contains a valid .pre-commit-config.yaml file. 3 | name: pre-commit 4 | on: 5 | pull_request: 6 | push: 7 | branches: [master] 8 | 9 | permissions: 10 | contents: read # to fetch code (actions/checkout) 11 | 12 | jobs: 13 | pre-commit: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v3 17 | - uses: actions/setup-python@v4 18 | - run: python -m pip install pre-commit 19 | - run: python -m pre_commit --version 20 | - run: python -m pre_commit install 21 | - run: python -m pre_commit run --all-files 22 | -------------------------------------------------------------------------------- /.github/workflows/pypi-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build and (if release) publish Python distributions to PyPI 2 | # For more information see: 3 | # - https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 4 | # - https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ 5 | # 6 | # derived from https://github.com/Farama-Foundation/PettingZoo/blob/e230f4d80a5df3baf9bd905149f6d4e8ce22be31/.github/workflows/build-publish.yml 7 | name: Build artifact for PyPI 8 | 9 | on: 10 | push: 11 | branches: [main] 12 | pull_request: 13 | branches: [main] 14 | release: 15 | types: [published] 16 | 17 | jobs: 18 | build-wheels: 19 | runs-on: ubuntu-latest 20 | 21 | steps: 22 | - uses: actions/checkout@v4 23 | - uses: actions/setup-python@v5 24 | 25 | - name: Install dependencies 26 | run: pipx install build 27 | 28 | - name: Build sdist and wheels 29 | run: pyproject-build 30 | 31 | - name: Store wheels 32 | uses: actions/upload-artifact@v4 33 | with: 34 | path: dist 35 | 36 | publish: 37 | runs-on: ubuntu-latest 38 | needs: 39 | - build-wheels 40 | if: github.event_name == 'release' && github.event.action == 'published' 41 | steps: 42 | - name: Download dists 43 | uses: actions/download-artifact@v4 44 | with: 45 | name: artifact 46 | path: dist 47 | 48 | - name: Publish 49 | uses: pypa/gh-action-pypi-publish@release/v1 50 | with: 51 | password: ${{ secrets.PYPI_API_TOKEN }} 52 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Meta-World Team 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | graft metaworld/assets 2 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | # A Dockerfile that sets up a full Gymnasium install with test dependencies 2 | ARG PYTHON_VERSION 3 | FROM python:$PYTHON_VERSION 4 | 5 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 6 | 7 | RUN apt-get -y update \ 8 | && apt-get install --no-install-recommends -y \ 9 | libglu1-mesa-dev libgl1-mesa-dev libosmesa6-dev \ 10 | xvfb unzip patchelf ffmpeg cmake swig git\ 11 | && apt-get autoremove -y \ 12 | && apt-get clean \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | COPY . /usr/local/metaworld/ 16 | WORKDIR /usr/local/metaworld/ 17 | RUN free -g 18 | RUN pip install .[testing] 19 | RUN git clone https://github.com/Farama-Foundation/Gymnasium.git 20 | RUN pip install -e Gymnasium 21 | 22 | 23 | ENTRYPOINT ["/usr/local/metaworld/docker/entrypoint"] 24 | -------------------------------------------------------------------------------- /docker/entrypoint: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This script is the entrypoint for our Docker image. 3 | 4 | set -ex 5 | 6 | # Set up display; otherwise rendering will fail 7 | Xvfb -screen 0 1024x768x24 & 8 | export DISPLAY=:0 9 | 10 | # Wait for the file to come up 11 | display=0 12 | file="/tmp/.X11-unix/X$display" 13 | for i in $(seq 1 10); do 14 | if [ -e "$file" ]; then 15 | break 16 | fi 17 | 18 | echo "Waiting for $file to be created (try $i/10)" 19 | sleep "$i" 20 | done 21 | if ! [ -e "$file" ]; then 22 | echo "Timing out: $file was not created" 23 | exit 1 24 | fi 25 | 26 | exec "$@" 27 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | __pycache__ 3 | .vscode/ 4 | build/ 5 | _build/ 6 | -------------------------------------------------------------------------------- /docs/404.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide-toc: true 3 | --- 4 | 5 | # 404 - Page Not Found 6 | 7 | ## The requested page could not be found. 8 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= sphinx-build 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Meta-World documentation 2 | 3 | This directory contains the documentation for Meta-World. 4 | 5 | For more information about how to contribute to the documentation go to our [CONTRIBUTING.md](https://github.com/Farama-Foundation/Celshast/blob/main/CONTRIBUTING.md) 6 | -------------------------------------------------------------------------------- /docs/_scripts/move_404.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | if __name__ == "__main__": 4 | if len(sys.argv) < 2: 5 | print("Provide a path") 6 | filePath = sys.argv[1] 7 | 8 | with open(filePath, "r+") as fp: 9 | content = fp.read() 10 | content = content.replace('href="../', 'href="/').replace('src="../', 'src="/') 11 | fp.seek(0) 12 | fp.truncate() 13 | 14 | fp.write(content) 15 | -------------------------------------------------------------------------------- /docs/_static/img/PROJECT-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/PROJECT-github.png -------------------------------------------------------------------------------- /docs/_static/img/ml1-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/ml1-1.gif -------------------------------------------------------------------------------- /docs/_static/img/ml1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/ml1.gif -------------------------------------------------------------------------------- /docs/_static/img/ml10-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/ml10-1.gif -------------------------------------------------------------------------------- /docs/_static/img/ml10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/ml10.gif -------------------------------------------------------------------------------- /docs/_static/img/ml45-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/ml45-1.gif -------------------------------------------------------------------------------- /docs/_static/img/ml45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/ml45.gif -------------------------------------------------------------------------------- /docs/_static/img/mt1-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/mt1-1.gif -------------------------------------------------------------------------------- /docs/_static/img/mt1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/mt1.gif -------------------------------------------------------------------------------- /docs/_static/img/mt10-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/mt10-1.gif -------------------------------------------------------------------------------- /docs/_static/img/mt10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/img/mt10.gif -------------------------------------------------------------------------------- /docs/_static/ml1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/ml1.gif -------------------------------------------------------------------------------- /docs/_static/ml10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/ml10.gif -------------------------------------------------------------------------------- /docs/_static/ml45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/ml45.gif -------------------------------------------------------------------------------- /docs/_static/mt1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/mt1.gif -------------------------------------------------------------------------------- /docs/_static/mt10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/docs/_static/mt10.gif -------------------------------------------------------------------------------- /docs/benchmark/action_space.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: "contents" 3 | title: Action Space 4 | firstpage: 5 | --- 6 | 7 | # Action Space 8 | 9 | In the Meta-World benchmark, the agent must simultaneously solve multiple tasks that could be individually defined by their own Markov decision processes. 10 | As this is solved by current approaches using a single policy/model, it requires the action space for all tasks to have a constant size, hence sharing a common structure. 11 | 12 | The action space of the Sawyer robot is a ```Box(-1.0, 1.0, (4,), float32)```. 13 | An action represents the Cartesian displacement `dx`, `dy`, and `dz` of the end-effector, and an additional action for gripper control. 14 | 15 | For tasks that do not require the gripper, actions along those dimensions can be masked or ignored and set to a constant value that permanently closes the fingers. 16 | 17 | | Num | Action | Control Min | Control Max | Name (in XML file) | Joint | Unit | 18 | |-----|--------|-------------|-------------|---------------------|-------|------| 19 | | 0 | Displacement of the end-effector in x direction (dx) | -1 | 1 | mocap | N/A | position (m) | 20 | | 1 | Displacement of the end-effector in y direction (dy) | -1 | 1 | mocap | N/A | position (m) | 21 | | 2 | Displacement of the end-effector in z direction (dz) | -1 | 1 | mocap | N/A | position (m) | 22 | | 3 | Gripper adjustment (closing/opening) | -1 | 1 | rightclaw, leftclaw | r_close, l_close | position (normalized) | 23 | -------------------------------------------------------------------------------- /docs/benchmark/expert_trajectories.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: "contents" 3 | title: Expert Trajectories 4 | firstpage: 5 | --- 6 | 7 | # Expert Trajectories 8 | 9 | ## Expert Policies 10 | For each individual environment in Meta-World (i.e. ```reach-v3```, ```basketball-v3```, ```sweep-v3```) there are expert policies that solve the task. These policies can be used to generate expert data for imitation learning tasks. 11 | 12 | ## Using Expert Policies 13 | The below example provides sample code for the reach environment. This code can be extended to the ML10/ML45/MT10/MT50 sets if a list of policies is maintained. 14 | 15 | 16 | ```python 17 | import gymnasium as gym 18 | import metaworld 19 | from metaworld.policies.sawyer_reach_v3_policy import SawyerReachV3Policy 20 | 21 | env = gym.make('Meta-World/MT1', env_name='reach-v3') 22 | 23 | obs, info = env.reset() 24 | 25 | policy = SawyerReachV3Policy() 26 | 27 | done = False 28 | 29 | while not done: 30 | a = policy.get_action(obs) 31 | obs, _, _, _, info = env.step(a) 32 | done = int(info['success']) == 1 33 | ``` 34 | -------------------------------------------------------------------------------- /docs/benchmark/reward_functions.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: "contents" 3 | title: Reward Functions 4 | firstpage: 5 | --- 6 | 7 | # Reward Functions 8 | 9 | Similar structures are provided with the [action](action_space) and [state space](space_space). 10 | Meta-World provides well-shaped reward functions for the individual tasks that are solvable by current single-task reinforcement learning approaches. 11 | To assure equivalent learning in the settings with multiple tasks, all task rewards have the same magnitude. 12 | 13 | ## Options 14 | 15 | Meta-World currently implements two types of reward functions that can be selected 16 | by passing the `reward_func_version` keyword argument to `gym.make(...)`. 17 | 18 | ### Version 1 19 | 20 | Passing `reward_func_version=v1` configures the benchmark with the original 21 | reward function of Meta-World, which is actually a version of the 22 | `pick-place-wall` task that is modified to also work for the other tasks. Any paper that reports results on the 'env-name-v1' environments, uses this reward function. 23 | 24 | ### Version 2 25 | 26 | Passing `reward_func_version=v2` configures the benchmark with the updated 27 | reward functions of Meta-World. Any paper that reports results on the 'env-name-v2' environments, uses this reward function. 28 | -------------------------------------------------------------------------------- /docs/benchmark/state_space.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: "contents" 3 | title: State Space 4 | firstpage: 5 | --- 6 | 7 | # State Space 8 | 9 | Like the [action space](action_space), the state space among the tasks is maintains the same structure such that a single policy/model can be shared between tasks. 10 | Meta-World contains tasks that either manipulate a single object with a potentially variable goal position (e.g., reach, push, pick place) or to manipulate two objects with a fixed goal position (e.g., hammer, soccer, shelf place). 11 | To account for such variability, large parts of the observation space are kept as placeholders, e.g., for the second object, if only one object is available. 12 | 13 | The observation array consists of the end-effector's 3D Cartesian position and the composition of a single object with its goal coordinates or the positions of the first and second object. 14 | This always results in a 9D state vector. 15 | 16 | | Indices | Description | 17 | |---------|-------------| 18 | | 0:2 | the XYZ coordinates of the end-effector | 19 | | 3 | a scalar value that represents how open/closed the gripper is | 20 | | 4:6 | the XYZ coordinates of the first object | 21 | | 7:10 | the quaternion describing the spatial orientations and rotations of object #1 | 22 | | 11:13 | the XYZ coordinates of the second object | 23 | | 14:17 | the quaternion describing the spatial orientations and rotations of object #2 | 24 | -------------------------------------------------------------------------------- /docs/citation.md: -------------------------------------------------------------------------------- 1 | # Citation 2 | 3 | You can cite Meta-World (https://arxiv.org/abs/2505.11289) as follows: 4 | 5 | ```bibtex 6 | @misc{mclean2025metaworldimprovedstandardizedrl, 7 | title={Meta-World+: An Improved, Standardized, RL Benchmark}, 8 | author={Reginald McLean and Evangelos Chatzaroulas and Luc McCutcheon and Frank Röder and Tianhe Yu and Zhanpeng He and K. R. Zentner and Ryan Julian and J K Terry and Isaac Woungang and Nariman Farsad and Pablo Samuel Castro}, 9 | year={2025}, 10 | eprint={2505.11289}, 11 | archivePrefix={arXiv}, 12 | primaryClass={cs.AI}, 13 | url={https://arxiv.org/abs/2505.11289}, 14 | } 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide-toc: true 3 | firstpage: 4 | lastpage: 5 | --- 6 | 7 | ```{project-logo} ../metaworld-text-banner.svg 8 | :alt: Metaworld Logo 9 | ``` 10 | 11 | ```{project-heading} 12 | Meta-World is an open-source simulated benchmark for meta-reinforcement learning and multi-task learning consisting of 50 distinct robotic manipulation tasks. 13 | ``` 14 | 15 | ```{figure} _static/mt10.gif 16 | :alt: REPLACE ME 17 | :width: 500 18 | ``` 19 | 20 | **Basic example:** 21 | 22 | ```{code-block} python 23 | import gymnasium as gym 24 | import metaworld 25 | 26 | env = gym.make('Meta-World/MT1', env_name='reach-v3') 27 | 28 | obs = env.reset() 29 | a = env.action_space.sample() 30 | next_obs, reward, terminate, truncate, info = env.step(a) 31 | 32 | ``` 33 | 34 | ```{toctree} 35 | :hidden: 36 | :caption: Introduction 37 | 38 | introduction/basic_usage 39 | evaluation/evaluation 40 | installation/installation 41 | rendering/rendering 42 | ``` 43 | 44 | ```{toctree} 45 | :hidden: 46 | :caption: Benchmark Information 47 | benchmark/environment_creation 48 | benchmark/action_space 49 | benchmark/state_space 50 | benchmark/benchmark_descriptions 51 | benchmark/task_descriptions.md 52 | benchmark/reward_functions 53 | benchmark/expert_trajectories 54 | benchmark/resetting 55 | ``` 56 | 57 | ```{toctree} 58 | :hidden: 59 | :caption: Development 60 | 61 | Github 62 | citation 63 | release_notes/index 64 | Contribute to the Docs 65 | ``` 66 | -------------------------------------------------------------------------------- /docs/installation/installation.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | To install everything, run: 4 | 5 | ``` 6 | pip install git+https://github.com/Farama-Foundation/Metaworld.git@master#egg=metaworld 7 | ``` 8 | 9 | Alternatively, you can clone the repository and install an editable version locally: 10 | 11 | ```sh 12 | git clone https://github.com/Farama-Foundation/Metaworld.git 13 | cd Metaworld 14 | pip install -e . 15 | ``` 16 | 17 | For users attempting to reproduce results found in the [Meta-World paper](https://arxiv.org/abs/1910.10897) please use this command: 18 | ``` 19 | pip install git+https://github.com/Farama-Foundation/Metaworld.git@04be337a12305e393c0caf0cbf5ec7755c7c8feb 20 | ``` 21 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.https://www.sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /docs/rendering/rendering.md: -------------------------------------------------------------------------------- 1 | # Rendering 2 | 3 | Each Meta-World environment uses Gymnasium to handle the rendering functions following the [`gymnasium.MujocoEnv`](https://github.com/Farama-Foundation/Gymnasium/blob/94a7909042e846c496bcf54f375a5d0963da2b31/gymnasium/envs/mujoco/mujoco_env.py#L184) interface. 4 | 5 | Upon environment creation a user can select a render mode in ```('rgb_array', 'human')```. 6 | 7 | For example: 8 | 9 | ```python 10 | import metaworld 11 | import random 12 | 13 | env_name = '' # Pick an environment name 14 | 15 | render_mode = '' # set a render mode 16 | 17 | env = gym.make('Meta-World/MT1', env_name=env_name, render_mode=render_mode) 18 | 19 | obs = env.reset() # Reset environment 20 | a = env.action_space.sample() # Sample an action 21 | obs, reward, terminate, truncate, info = env.step(a) # Step the environment with the sampled random action 22 | ``` 23 | 24 | ## Render from a specific camera 25 | 26 | In addition to the base render functions, Meta-World supports multiple camera positions. 27 | 28 | ```python 29 | camera_name = '' # one of: ['corner', 'corner2', 'corner3', 'topview', 'behindGripper', 'gripperPOV'] 30 | 31 | env = gym.make(env_name=env_name, render_mode=render_mode, camera_name=camera_name) 32 | 33 | ``` 34 | 35 | The ID of the camera (from Mujoco) can also be passed if known. 36 | 37 | ```python 38 | 39 | camera_id = '' # this is an integer that represents the camera ID from Mujoco 40 | 41 | env = gym.make(env_name=env_name, render_mode=render_mode, camera_id=camera_id) 42 | 43 | ``` 44 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx 2 | sphinx-autobuild 3 | myst-parser 4 | git+https://github.com/Farama-Foundation/Celshast#egg=furo 5 | sphinx_github_changelog 6 | -------------------------------------------------------------------------------- /metaworld/asset_path_utils.py: -------------------------------------------------------------------------------- 1 | """Set of utilities for retrieving asset paths for the environments.""" 2 | 3 | from __future__ import annotations 4 | 5 | from pathlib import Path 6 | 7 | _CURRENT_FILE_DIR = Path(__file__).parent.absolute() 8 | 9 | ENV_ASSET_DIR_V3 = _CURRENT_FILE_DIR / "assets" 10 | 11 | 12 | def full_V3_path_for(file_name: str) -> str: 13 | """Retrieves the full, absolute path for a given V3 asset 14 | 15 | Args: 16 | file_name: Name of the asset file. Can include subdirectories. 17 | 18 | Returns: 19 | The full path to the asset file. 20 | """ 21 | return str(ENV_ASSET_DIR_V3 / file_name) 22 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assembly_peg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/basketball.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/binA.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/binB.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/bin_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/block.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/block_cyl.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/block_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/box.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/boxtop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/buttonbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/club.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/club_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/dial.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/dial_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/drawer_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/faucet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/hammer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/hammerblock.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/handle_press.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/laptop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/lever.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/mug.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/objA.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/peg_block.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/peg_block_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/peg_insert.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/peg_insert_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/plug.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/plug_wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/puck.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/puck_goal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/shelf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/shelf_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/shelfb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/shelfb_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/soccer_ball.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/soccer_goal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/stick.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/stick_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/table.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/table_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/table_hole.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/thermos.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/assets/wall_dependencies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /metaworld/assets/objects/basketball.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/basketballhoop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/binA.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/binB.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/block.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/block_cyl.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/box.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /metaworld/assets/objects/buttonbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/club.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/coffeemachine.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/dial.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/doorlockA.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/doorlockB.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/drawer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/faucet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/hammer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/hammerblock.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/handle_press.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/laptop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/lever.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/assembly_peg/assembly_peg_handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/assembly_peg/assembly_peg_handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/assembly_peg/assembly_peg_ring.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/assembly_peg/assembly_peg_ring.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/assembly_peg/assembly_peg_rod.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/assembly_peg/assembly_peg_rod.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/backboard.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/backboard.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/backboardsquareinner.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/backboardsquareinner.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/backboardsquareouter.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/backboardsquareouter.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/basketballinner.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/basketballinner.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/basketballouter.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/basketballouter.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/hoop.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/hoop.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/basketball/pole.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/basketball/pole.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/bin/bin.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/bin/bin.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/block/block.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/block/block.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/box/boxhandle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/box/boxhandle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/box/boxtop.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/box/boxtop.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/button.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/button.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/buttonring.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/buttonring.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/stopbot.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/stopbot.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/stopbutton.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/stopbutton.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/stopbuttonrim.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/stopbuttonrim.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/stopbuttonrod.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/stopbuttonrod.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/buttonbox/stoptop.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/buttonbox/stoptop.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/body1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/body1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/body2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/body2.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/bodypiece1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/bodypiece1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/bodypiece2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/bodypiece2.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/bodypiece3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/bodypiece3.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/button.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/button.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/buttonring.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/buttonring.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/cup.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/cup.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/mug.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/mug.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/spout.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/spout.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/coffeemachine/spoutconnect.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/coffeemachine/spoutconnect.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/dial/dial.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/dial/dial.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/dial/dialhead.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/dial/dialhead.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/door.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/door.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/door_handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/door_handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/handle_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/handle_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/lock.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/lock.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/lock_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/lock_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/doorlock/safe.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/doorlock/safe.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/drawer/drawer.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/drawer/drawer.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/drawer/drawercase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/drawer/drawercase.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/drawer/drawerhandle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/drawer/drawerhandle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/faucet/faucetbase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/faucet/faucetbase.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/faucet/faucethandle1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/faucet/faucethandle1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/faucet/faucethead.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/faucet/faucethead.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/golf_club/club_handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/golf_club/club_handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/golf_club/club_head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/golf_club/club_head.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/golf_club/club_tape.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/golf_club/club_tape.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/hammer/hammerblock.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/hammer/hammerblock.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/hammer/hammerhandle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/hammer/hammerhandle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/hammer/hammerhead.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/hammer/hammerhead.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/hammer/nail.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/hammer/nail.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_col1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_col1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_col2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_col2.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_col3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_col3.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_grip.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_grip.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_lever.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_lever.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/handle_press/handle_press_trim.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/handle_press/handle_press_trim.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/laptop/laptop_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/laptop/laptop_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/laptop/laptop_hinge.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/laptop/laptop_hinge.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/laptop/laptop_keys.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/laptop/laptop_keys.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/laptop/laptop_screen.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/laptop/laptop_screen.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/laptop/laptop_top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/laptop/laptop_top.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/lever/lever_axis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/lever/lever_axis.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/lever/lever_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/lever/lever_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/lever/lever_handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/lever/lever_handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/lever/lever_rod.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/lever/lever_rod.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/lever/lever_rodbase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/lever/lever_rodbase.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/peg_block/block_inner.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/peg_block/block_inner.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/peg_block/block_outer.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/peg_block/block_outer.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/plug/plug.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/plug/plug.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/plug/plug_head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/plug/plug_head.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/plug/plug_plastic.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/plug/plug_plastic.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/plug/plug_wall.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/plug/plug_wall.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/goal_net.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/goal_net.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/goal_rim.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/goal_rim.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/net1_col.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/net1_col.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/net2_col.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/net2_col.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/net3_col.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/net3_col.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/net4_col.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/net4_col.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/puck/puck.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/puck/puck.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/shelf/shelf.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/shelf/shelf.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/shelf/shelf_supports.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/shelf/shelf_supports.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/shelfb/shelf_0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/shelfb/shelf_0.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/shelfb/shelf_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/shelfb/shelf_1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/shelfb/shelf_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/shelfb/shelf_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/goal_col1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/goal_col1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/goal_col2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/goal_col2.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/goal_col3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/goal_col3.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/goal_col4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/goal_col4.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/soccer_black.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/soccer_black.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/soccer_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/soccer_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/soccer_net.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/soccer_net.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/soccer/soccer_white.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/soccer/soccer_white.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/stick/stick.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/stick/stick.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/table/table_hole.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/table/table_hole.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/table/table_hole2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/table/table_hole2.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/table/tablebody.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/table/tablebody.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/table/tabletop.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/table/tabletop.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/thermos/therm_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/thermos/therm_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/thermos/therm_body.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/thermos/therm_body.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/thermos/therm_cap.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/thermos/therm_cap.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/thermos/therm_handle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/thermos/therm_handle.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/thermos/therm_trim.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/thermos/therm_trim.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/window_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/window_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/window_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/window_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/window_h_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/window_h_base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/window_h_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/window_h_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowa_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowa_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowa_glass.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowa_glass.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowa_h_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowa_h_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowa_h_glass.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowa_h_glass.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowb_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowb_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowb_glass.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowb_glass.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowb_h_frame.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowb_h_frame.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/window/windowb_h_glass.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/window/windowb_h_glass.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/base.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/eGripperBase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/eGripperBase.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/head.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l0.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l1.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l2.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l3.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l4.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l5.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/l6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/l6.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/meshes/xyz_base/pedestal.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/objects/meshes/xyz_base/pedestal.stl -------------------------------------------------------------------------------- /metaworld/assets/objects/mug.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /metaworld/assets/objects/objA.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/peg_block.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/peg_insert.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/plug.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/plug_wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/puck.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/puck_goal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/shelf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/shelfb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/soccer_ball.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/soccer_goal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/sphere.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/stick.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /metaworld/assets/objects/table.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/table_hole.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/objects/thermos.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /metaworld/assets/objects/window.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/window_horiz.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metaworld/assets/objects/xyz_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_assembly_peg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_basketball.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_bin_picking.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_box.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_button_press.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_button_press_topdown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_button_press_topdown_wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_button_press_wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_coffee.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_dial.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | --> 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_door_lock.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_door_pull.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_drawer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_hammer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_handle_press.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_handle_press_sideways.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_laptop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_lever_pull.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_peg_unplug_side.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_pick_and_place.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_pick_place_v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_plate_slide.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_plate_slide_sideway.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_push_back_v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_push_v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_reach_push_pick_and_place.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_reach_push_pick_and_place_wall.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_reach_v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_shelf_placing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_shelf_removing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_soccer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_stick_obj.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_sweep_tool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_sweep_v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_table_with_hole.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_table_with_hole_no_puck.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_window.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /metaworld/assets/sawyer_xyz/sawyer_window_horizontal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/fabricPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/fabricPattern.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/fabricPlain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/fabricPlain.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/height1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/height1.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/metal.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/metal1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/metal1.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/plaster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/plaster.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/white_marble_tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/white_marble_tile.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/white_marble_tile2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/white_marble_tile2.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/wood.png -------------------------------------------------------------------------------- /metaworld/assets/scene/textures/wood2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/scene/textures/wood2.png -------------------------------------------------------------------------------- /metaworld/assets/textures/brick1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/brick1.png -------------------------------------------------------------------------------- /metaworld/assets/textures/darkwood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/darkwood.png -------------------------------------------------------------------------------- /metaworld/assets/textures/floor1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/floor1.png -------------------------------------------------------------------------------- /metaworld/assets/textures/floor2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/floor2.png -------------------------------------------------------------------------------- /metaworld/assets/textures/granite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/granite.png -------------------------------------------------------------------------------- /metaworld/assets/textures/light_wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/light_wood.png -------------------------------------------------------------------------------- /metaworld/assets/textures/light_wood_v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/light_wood_v2.png -------------------------------------------------------------------------------- /metaworld/assets/textures/light_wood_v3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/light_wood_v3.jpeg -------------------------------------------------------------------------------- /metaworld/assets/textures/light_wood_v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/light_wood_v3.png -------------------------------------------------------------------------------- /metaworld/assets/textures/marble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/marble.png -------------------------------------------------------------------------------- /metaworld/assets/textures/metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/metal.png -------------------------------------------------------------------------------- /metaworld/assets/textures/metal1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/metal1.png -------------------------------------------------------------------------------- /metaworld/assets/textures/metal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/metal2.png -------------------------------------------------------------------------------- /metaworld/assets/textures/navy_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/navy_blue.png -------------------------------------------------------------------------------- /metaworld/assets/textures/plaster1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/plaster1.png -------------------------------------------------------------------------------- /metaworld/assets/textures/real_door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/real_door.png -------------------------------------------------------------------------------- /metaworld/assets/textures/tennis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/tennis.png -------------------------------------------------------------------------------- /metaworld/assets/textures/wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/wood.png -------------------------------------------------------------------------------- /metaworld/assets/textures/wood1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/wood1.png -------------------------------------------------------------------------------- /metaworld/assets/textures/wood2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/wood2.png -------------------------------------------------------------------------------- /metaworld/assets/textures/wood3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/wood3.png -------------------------------------------------------------------------------- /metaworld/assets/textures/wood4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/wood4.png -------------------------------------------------------------------------------- /metaworld/assets/textures/wood_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/assets/textures/wood_light.png -------------------------------------------------------------------------------- /metaworld/policies/action.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | 9 | class Action: 10 | """Represents an action to be taken in an environment. 11 | 12 | Once initialized, fields can be assigned as if the action 13 | is a dictionary. Once filled, the corresponding array is 14 | available as an instance variable. 15 | """ 16 | 17 | def __init__(self, structure: dict[str, npt.NDArray[Any] | int]) -> None: 18 | """Action. 19 | 20 | Args: 21 | structure: Map from field names to output array indices 22 | """ 23 | self._structure = structure 24 | self.array = np.zeros(len(self), dtype=np.float32) 25 | 26 | def __len__(self) -> int: 27 | return sum( 28 | [1 if isinstance(idx, int) else len(idx) for idx in self._structure.items()] 29 | ) 30 | 31 | def __getitem__(self, key) -> npt.NDArray[np.float32]: 32 | assert key in self._structure, ( 33 | "This action's structure does not contain %s" % key 34 | ) 35 | return self.array[self._structure[key]] 36 | 37 | def __setitem__(self, key: str, value) -> None: 38 | assert key in self._structure, f"This action's structure does not contain {key}" 39 | self.array[self._structure[key]] = value 40 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_button_press_topdown_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerButtonPressTopdownV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "hand_closed": obs[3], 19 | "button_pos": obs[4:7], 20 | "unused_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=25.0 30 | ) 31 | action["grab_effort"] = 1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | pos_curr = o_d["hand_pos"] 38 | pos_button = o_d["button_pos"] 39 | 40 | if np.linalg.norm(pos_curr[:2] - pos_button[:2]) > 0.04: 41 | return pos_button + np.array([0.0, 0.0, 0.1]) 42 | else: 43 | return pos_button 44 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_button_press_topdown_wall_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerButtonPressTopdownWallV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "hand_closed": obs[3], 19 | "button_pos": obs[4:7], 20 | "unused_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=25.0 30 | ) 31 | action["grab_effort"] = -1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | pos_curr = o_d["hand_pos"] 38 | pos_button = o_d["button_pos"] + np.array([0.0, -0.06, 0.0]) 39 | 40 | if np.linalg.norm(pos_curr[:2] - pos_button[:2]) > 0.04: 41 | return pos_button + np.array([0.0, 0.0, 0.1]) 42 | else: 43 | return pos_button 44 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_coffee_button_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerCoffeeButtonV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "gripper": obs[3], 19 | "button_pos": obs[4:7], 20 | "unused_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=10.0 30 | ) 31 | action["grab_effort"] = -1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | pos_curr = o_d["hand_pos"] 38 | pos_button = o_d["button_pos"] + np.array([0.0, 0.0, -0.07]) 39 | 40 | if np.linalg.norm(pos_curr[[0, 2]] - pos_button[[0, 2]]) > 0.02: 41 | return np.array([pos_button[0], pos_curr[1], pos_button[2]]) 42 | else: 43 | return pos_button + np.array([0.0, 0.2, 0.0]) 44 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_dial_turn_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerDialTurnV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "unused_gripper_open": obs[3], 19 | "dial_pos": obs[4:7], 20 | "extra_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_pow": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=10.0 30 | ) 31 | action["grab_pow"] = 1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | hand_pos = o_d["hand_pos"] 38 | dial_pos = o_d["dial_pos"] + np.array([0.05, 0.02, 0.09]) 39 | 40 | if np.linalg.norm(hand_pos[:2] - dial_pos[:2]) > 0.02: 41 | return np.array([*dial_pos[:2], 0.2]) 42 | if abs(hand_pos[2] - dial_pos[2]) > 0.02: 43 | return dial_pos 44 | return dial_pos + np.array([-0.05, 0.005, 0.0]) 45 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_door_unlock_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerDoorUnlockV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "gripper": obs[3], 19 | "lock_pos": obs[4:7], 20 | "unused_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=25.0 30 | ) 31 | action["grab_effort"] = 1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | pos_curr = o_d["hand_pos"] 38 | pos_lock = o_d["lock_pos"] + np.array([-0.04, -0.02, -0.03]) 39 | 40 | if np.linalg.norm(pos_curr[:2] - pos_lock[:2]) > 0.02: 41 | if pos_curr[2] > 0.15: 42 | return pos_curr + np.array([0.0, -0.1, -0.1]) 43 | return pos_lock 44 | else: 45 | return pos_lock + np.array([0.1, 0.0, 0.01]) 46 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_handle_press_side_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerHandlePressSideV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "gripper": obs[3], 19 | "handle_pos": obs[4:7], 20 | "unused_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=25.0 30 | ) 31 | action["grab_effort"] = 1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | pos_curr = o_d["hand_pos"] 38 | pos_button = o_d["handle_pos"] 39 | 40 | if np.linalg.norm(pos_curr[:2] - pos_button[:2]) > 0.02: 41 | return pos_button + np.array([0.0, 0.0, 0.2]) 42 | else: 43 | return pos_button + np.array([0.0, 0.0, -0.5]) 44 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_handle_press_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | 8 | from metaworld.policies.action import Action 9 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 10 | 11 | 12 | class SawyerHandlePressV3Policy(Policy): 13 | @staticmethod 14 | @assert_fully_parsed 15 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 16 | return { 17 | "hand_pos": obs[:3], 18 | "gripper": obs[3], 19 | "handle_pos": obs[4:7], 20 | "unused_info": obs[7:], 21 | } 22 | 23 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 24 | o_d = self._parse_obs(obs) 25 | 26 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 27 | 28 | action["delta_pos"] = move( 29 | o_d["hand_pos"], to_xyz=self._desired_pos(o_d), p=25.0 30 | ) 31 | action["grab_effort"] = -1.0 32 | 33 | return action.array 34 | 35 | @staticmethod 36 | def _desired_pos(o_d: dict[str, npt.NDArray[np.float64]]) -> npt.NDArray[Any]: 37 | pos_curr = o_d["hand_pos"] 38 | pos_button = o_d["handle_pos"] + np.array([0.0, -0.02, 0.0]) 39 | 40 | if np.linalg.norm(pos_curr[:2] - pos_button[:2]) > 0.02: 41 | return pos_button + np.array([0.0, 0.0, 0.2]) 42 | else: 43 | return pos_button + np.array([0.0, 0.0, -0.5]) 44 | -------------------------------------------------------------------------------- /metaworld/policies/sawyer_reach_v3_policy.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import numpy as np 4 | import numpy.typing as npt 5 | 6 | from metaworld.policies.action import Action 7 | from metaworld.policies.policy import Policy, assert_fully_parsed, move 8 | 9 | 10 | class SawyerReachV3Policy(Policy): 11 | @staticmethod 12 | @assert_fully_parsed 13 | def _parse_obs(obs: npt.NDArray[np.float64]) -> dict[str, npt.NDArray[np.float64]]: 14 | return { 15 | "hand_pos": obs[:3], 16 | "unused_1": obs[3], 17 | "puck_pos": obs[4:7], 18 | "unused_2": obs[7:-3], 19 | "goal_pos": obs[-3:], 20 | } 21 | 22 | def get_action(self, obs: npt.NDArray[np.float64]) -> npt.NDArray[np.float32]: 23 | o_d = self._parse_obs(obs) 24 | 25 | action = Action({"delta_pos": np.arange(3), "grab_effort": 3}) 26 | 27 | action["delta_pos"] = move(o_d["hand_pos"], to_xyz=o_d["goal_pos"], p=5.0) 28 | action["grab_effort"] = 0.0 29 | 30 | return action.array 31 | -------------------------------------------------------------------------------- /metaworld/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/py.typed -------------------------------------------------------------------------------- /metaworld/types.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any, NamedTuple, Tuple 4 | 5 | import numpy as np 6 | import numpy.typing as npt 7 | from typing_extensions import NotRequired, TypeAlias, TypedDict 8 | 9 | 10 | class Task(NamedTuple): 11 | """All data necessary to describe a single MDP. 12 | 13 | Should be passed into a `MetaWorldEnv`'s `set_task` method. 14 | """ 15 | 16 | env_name: str 17 | data: bytes # Contains env parameters like random_init and *a* goal 18 | 19 | 20 | XYZ: TypeAlias = "Tuple[float, float, float]" 21 | """A 3D coordinate.""" 22 | 23 | 24 | class EnvironmentStateDict(TypedDict): 25 | state: dict[str, Any] 26 | mjb: str 27 | mocap: tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]] 28 | 29 | 30 | class ObservationDict(TypedDict): 31 | state_observation: npt.NDArray[np.float64] 32 | state_desired_goal: npt.NDArray[np.float64] 33 | state_achieved_goal: npt.NDArray[np.float64] 34 | 35 | 36 | class InitConfigDict(TypedDict): 37 | obj_init_angle: NotRequired[float] 38 | obj_init_pos: npt.NDArray[Any] 39 | hand_init_pos: npt.NDArray[Any] 40 | 41 | 42 | class HammerInitConfigDict(TypedDict): 43 | hammer_init_pos: npt.NDArray[Any] 44 | hand_init_pos: npt.NDArray[Any] 45 | 46 | 47 | class StickInitConfigDict(TypedDict): 48 | stick_init_pos: npt.NDArray[Any] 49 | hand_init_pos: npt.NDArray[Any] 50 | -------------------------------------------------------------------------------- /metaworld/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/metaworld/utils/__init__.py -------------------------------------------------------------------------------- /scripts/policy_testing.py: -------------------------------------------------------------------------------- 1 | import random 2 | import time 3 | 4 | import numpy as np 5 | 6 | import metaworld 7 | from metaworld.policies.sawyer_door_lock_v3_policy import ( 8 | SawyerDoorLockV3Policy as policy, 9 | ) 10 | 11 | np.set_printoptions(suppress=True) 12 | 13 | seed = 42 14 | env_name = "door-lock-v3" 15 | 16 | random.seed(seed) 17 | ml1 = metaworld.MT50(seed=seed) 18 | env = ml1.train_classes[env_name]() 19 | task = [t for t in ml1.train_tasks if t.env_name == env_name][0] 20 | env.set_task(task) 21 | env.seed(seed) 22 | env.action_space.seed(seed) 23 | env.observation_space.seed(seed) 24 | obs, _ = env.reset() 25 | 26 | p = policy() 27 | count = 0 28 | done = False 29 | 30 | info = {} 31 | 32 | while count < 500 and not done: 33 | action = p.get_action(obs) 34 | next_obs, _, _, _, info = env.step(action) 35 | # env.render() 36 | print(count, next_obs) 37 | if int(info["success"]) == 1: 38 | done = True 39 | obs = next_obs 40 | time.sleep(0.02) 41 | count += 1 42 | 43 | print(info) 44 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | """Sets up the project.""" 2 | 3 | from setuptools import setup 4 | 5 | setup() 6 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/tests/__init__.py -------------------------------------------------------------------------------- /tests/helpers.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def step_env(env, max_path_length=100, iterations=1, render=True): 5 | """Step env helper.""" 6 | for _ in range(iterations): 7 | obs, info = env.reset() 8 | for _ in range(max_path_length): 9 | next_obs, _, terminated, truncated, info = env.step( 10 | env.action_space.sample() 11 | ) 12 | if env._partially_observable: 13 | assert (next_obs[-3:] == np.zeros(3)).all() 14 | else: 15 | assert (next_obs[-3:] == env._get_pos_goal()).all() 16 | assert (next_obs[:3] == env.get_endeff_pos()).all() 17 | internal_obs = env._get_pos_objects() 18 | internal_quat = env._get_quat_objects() 19 | assert (next_obs[4:7] == internal_obs[:3]).all() 20 | assert (next_obs[7:11] == internal_quat[:4]).all() 21 | if internal_obs.shape == (6,): 22 | assert internal_quat.shape == (8,) 23 | assert (next_obs[11:14] == internal_obs[3:]).all() 24 | assert (next_obs[14:18] == internal_quat[4:]).all() 25 | else: 26 | assert (next_obs[11:14] == np.zeros(3)).all() 27 | assert (next_obs[14:18] == np.zeros(4)).all() 28 | assert (obs[:18] == next_obs[18:-3]).all() 29 | obs = next_obs 30 | if render: 31 | env.render() 32 | if truncated or terminated: 33 | break 34 | -------------------------------------------------------------------------------- /tests/integration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/tests/integration/__init__.py -------------------------------------------------------------------------------- /tests/integration/helpers.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def step_env(env, max_path_length=100, iterations=1, render=True): 5 | """Step env helper.""" 6 | for _ in range(iterations): 7 | obs = env.reset()[0] 8 | for _ in range(max_path_length): 9 | next_obs, _, terminated, truncated, info = env.step( 10 | env.action_space.sample() 11 | ) 12 | if env._partially_observable: 13 | assert (next_obs[-3:] == np.zeros(3)).all() 14 | else: 15 | assert (next_obs[-3:] == env._get_pos_goal()).all() 16 | assert (next_obs[:3] == env.get_endeff_pos()).all() 17 | internal_obs = env._get_pos_objects() 18 | internal_quat = env._get_quat_objects() 19 | assert (next_obs[4:7] == internal_obs[:3]).all() 20 | assert (next_obs[7:11] == internal_quat[:4]).all() 21 | if internal_obs.shape == (6,): 22 | assert internal_quat.shape == (8,) 23 | assert (next_obs[11:14] == internal_obs[3:]).all() 24 | assert (next_obs[14:18] == internal_quat[4:]).all() 25 | else: 26 | assert (next_obs[11:14] == np.zeros(3)).all() 27 | assert (next_obs[14:18] == np.zeros(4)).all() 28 | assert (obs[:18] == next_obs[18:-3]).all() 29 | obs = next_obs 30 | if render: 31 | env.render() 32 | if terminated or truncated: 33 | break 34 | -------------------------------------------------------------------------------- /tests/metaworld/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/tests/metaworld/__init__.py -------------------------------------------------------------------------------- /tests/metaworld/envs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/tests/metaworld/envs/__init__.py -------------------------------------------------------------------------------- /tests/metaworld/envs/mujoco/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/tests/metaworld/envs/mujoco/__init__.py -------------------------------------------------------------------------------- /tests/metaworld/envs/mujoco/sawyer_xyz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Farama-Foundation/Metaworld/cdafedfaaa896472fb7e76e2fe103e120b67a9b6/tests/metaworld/envs/mujoco/sawyer_xyz/__init__.py -------------------------------------------------------------------------------- /tests/metaworld/envs/mujoco/sawyer_xyz/helpers.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def step_env(env, max_path_length=100, iterations=1, render=True): 5 | """Step env helper.""" 6 | for _ in range(iterations): 7 | obs = env.reset()[0] 8 | for _ in range(max_path_length): 9 | next_obs, _, terminated, truncated, info = env.step( 10 | env.action_space.sample() 11 | ) 12 | if env._partially_observable: 13 | assert (next_obs[-3:] == np.zeros(3)).all() 14 | else: 15 | assert (next_obs[-3:] == env._get_pos_goal()).all() 16 | assert (next_obs[:3] == env.get_endeff_pos()).all() 17 | internal_obs = env._get_pos_objects() 18 | internal_quat = env._get_quat_objects() 19 | assert (next_obs[4:7] == internal_obs[:3]).all() 20 | assert (next_obs[7:11] == internal_quat[:4]).all() 21 | if internal_obs.shape == (6,): 22 | assert internal_quat.shape == (8,) 23 | assert (next_obs[11:14] == internal_obs[3:]).all() 24 | assert (next_obs[14:18] == internal_quat[4:]).all() 25 | else: 26 | assert (next_obs[11:14] == np.zeros(3)).all() 27 | assert (next_obs[14:18] == np.zeros(4)).all() 28 | assert (obs[:18] == next_obs[18:-3]).all() 29 | obs = next_obs 30 | if render: 31 | env.render() 32 | if terminated or truncated: 33 | break 34 | -------------------------------------------------------------------------------- /tests/metaworld/envs/mujoco/sawyer_xyz/test_scripted_policies.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | import numpy as np 4 | import pytest 5 | 6 | from metaworld import MT1 7 | from metaworld.policies import ENV_POLICY_MAP 8 | 9 | 10 | @pytest.mark.parametrize("env_name", MT1.ENV_NAMES) 11 | def test_policy(env_name): 12 | SEED = 42 13 | random.seed(SEED) 14 | np.random.random(SEED) 15 | 16 | mt1 = MT1(env_name, seed=SEED) 17 | env = mt1.train_classes[env_name]() 18 | env.seed(SEED) 19 | p = ENV_POLICY_MAP[env_name]() 20 | completed = 0 21 | for task in mt1.train_tasks: 22 | env.set_task(task) 23 | obs, info = env.reset() 24 | done = False 25 | count = 0 26 | while count < 500 and not done: 27 | count += 1 28 | a = p.get_action(obs) 29 | next_obs, _, trunc, termn, info = env.step(a) 30 | done = trunc or termn 31 | obs = next_obs 32 | if int(info["success"]) == 1: 33 | completed += 1 34 | break 35 | assert (float(completed) / 50) >= 0.80 36 | -------------------------------------------------------------------------------- /tests/metaworld/envs/mujoco/sawyer_xyz/test_seeded_rand_vec.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | import numpy as np 4 | import pytest 5 | 6 | from metaworld.env_dict import ALL_V3_ENVIRONMENTS_GOAL_OBSERVABLE 7 | 8 | 9 | @pytest.mark.parametrize("env_name", sorted(ALL_V3_ENVIRONMENTS_GOAL_OBSERVABLE.keys())) 10 | def test_observations_match(env_name): 11 | seed = random.randrange(1000) 12 | env1 = ALL_V3_ENVIRONMENTS_GOAL_OBSERVABLE[env_name](seed=seed) 13 | env1.seeded_rand_vec = True 14 | enV3 = ALL_V3_ENVIRONMENTS_GOAL_OBSERVABLE[env_name](seed=seed) 15 | enV3.seeded_rand_vec = True 16 | 17 | (obs1, _), (obs2, _) = env1.reset(), enV3.reset() 18 | assert (obs1 == obs2).all() 19 | 20 | for i in range(env1.max_path_length): 21 | a = np.random.uniform(low=-1, high=-1, size=4) 22 | obs1, r1, done1, _, _ = env1.step(a) 23 | obs2, r2, done2, _, _ = enV3.step(a) 24 | assert (obs1 == obs2).all() 25 | assert r1 == r2 26 | assert not done1 27 | assert not done2 28 | --------------------------------------------------------------------------------