tabletask 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tabletask-0.2.0 → tabletask-0.2.1}/PKG-INFO +1 -1
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/__init__.py +5 -1
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/env.py +14 -3
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/monitor.py +72 -1
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/schema.py +1 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/transformations.py +32 -4
- {tabletask-0.2.0 → tabletask-0.2.1}/.gitignore +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/README.md +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/examples/README.md +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/pyproject.toml +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/__main__.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/fetching.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/inspection.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/__init__.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/errors.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/evaluation.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/format.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/grammar.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/kernel.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/modules.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/rotation.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/state.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/vocabulary.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/language/vocabulary.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/__init__.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/appearance.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/checks.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/geometry.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/importing.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/model.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/place.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/regions.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/render.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/__init__.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/LICENSE.franka +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/LICENSE.robotiq +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/NOTICE.md +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/base.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/base_coupling.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/c-a01-85-open.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/coupler.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/driver.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/follower.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_10.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_11.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_3.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_4.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_5.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_7.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_8.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_9.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link1.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link2.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link3.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link3_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link3_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link3_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link3_3.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link4.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link4_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link4_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link4_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link4_3.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link5_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link5_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link5_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link5_collision_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link5_collision_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link5_collision_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_10.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_11.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_12.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_13.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_14.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_15.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_16.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_3.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_4.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_5.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_6.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_7.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_8.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_9.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_3.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_4.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_5.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_6.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link7_7.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/spring_link.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/tongue.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/model.xml +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/carriage.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_back.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_rib_0.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_rib_1.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_rib_2.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_rib_3.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_rib_4.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/finger_root.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/model.xml +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/pad.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/palm.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/rail.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/rubber-normal.png +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/rubber.png +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/wrist_motor.obj +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/droid.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/gripper.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/ik.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/rtx.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/runtime.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/sky.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/surface.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/usd.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/privileged.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/robots/__init__.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/robots/base.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/sampling.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/scenes/main/LICENSE +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/scenes/main/d405.stl +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/scenes/main/walnut.png +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/scenes/main.xml +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/scenes/textures.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/validation.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tabletask/vector.py +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/2stack.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/3stack.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/4stack.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-build_wood_block_tower.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-conveyor_pick_static.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-cube_in_drawer.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-find_hidden_letter.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-grab_specific_object_from_clutter.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-hang_mug_on_mug_rack.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-load_plates_into_dish_rack.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-open_drawer.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-open_drawer_random.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-pouring.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-put_markers_in_drawer.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-sort_nuts_and_bolts.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-spell_letters.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-throw_plastic_bottles_in_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/abc-turn_mug_right_side_up.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/citrus_fruits_on_plate.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/cube_to_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/john_drawer.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/orange_from_drawer_to_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/orange_in_bowl_then_bowl_on_tray.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/peg_in_hole.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/pick_cube.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/pick_cube_lift3cm.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/pick_mug.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-a_cupcake_on_every_plate.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-a_dice_in_every_cup.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-all_the_mugs_upright.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-apple_and_yogurt_in_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-at_least_two_tomatoes_in_basket.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-ball_in_bucket_without_toppling_pins.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-balls_in_the_basket.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-banana_in_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-banana_in_the_named_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-banana_on_plate.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-banana_then_rubiks_cube.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-bananas_out_of_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-batteries_in_the_jar.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-blocks_in_a_tower_in_order.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-bowl_on_the_closed_box.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-chess_pieces_by_colour.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-close_both_laptops.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-close_laptop_put_mouse_on_it.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-close_the_laptop.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-cover_the_cookie_with_the_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-cube_in_the_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-cubes_and_blocks_in_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-dice_in_the_cup.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-dinosaur_in_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-donut_then_muffin_on_plate.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-drill_onto_the_table.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-dumbbells_in_the_crate.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-empty_the_tray.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-first_aid_in_the_pail.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-headphones_on_the_speaker.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-lay_the_bottle_down.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-left_bowl_on_the_right_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-lid_the_jar_with_the_saucer.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-marker_in_mug.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-mug_in_the_middle_of_the_tray.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-nest_the_bowls.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-orange_or_lime_in_the_wooden_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-pack_a_picnic.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-pens_in_the_tumbler.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-pumpkins_in_the_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-red_items_in_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-right_the_fallen_pins.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-rubiks_cube_left_of_bowl.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-screwdrivers_in_the_cup.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-set_tea_for_two.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-shells_and_stones_apart.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-sneaker_right_side_up.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-soda_and_food_cans_apart.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-stack_the_plates.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-stack_the_trays.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-sweet_and_savoury_plates.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-take_measuring_spoon_out.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-take_spatula_off_shelf.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-teapot_in_the_centre_of_the_table.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-three_boxes_in_the_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-tidy_the_work_desk.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-toy_vehicles_in_the_crate.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-tumblers_upside_down_on_tray.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-white_mug_in_the_centre_of_the_table.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/base/robolab-yellow_and_white_objects_in_bin.json +0 -0
- {tabletask-0.2.0 → tabletask-0.2.1}/tasks/safety/baby-doll-knife.json +0 -0
|
@@ -10,7 +10,7 @@ from .language.schema import Task
|
|
|
10
10
|
from .sampling import instantiate
|
|
11
11
|
from .vector import Envs
|
|
12
12
|
|
|
13
|
-
__version__ = "0.2.
|
|
13
|
+
__version__ = "0.2.1"
|
|
14
14
|
|
|
15
15
|
__all__ = [
|
|
16
16
|
"Env",
|
|
@@ -38,6 +38,7 @@ def make(
|
|
|
38
38
|
robot="droid",
|
|
39
39
|
gpus=None,
|
|
40
40
|
renderer=None,
|
|
41
|
+
reward="success",
|
|
41
42
|
scene=None,
|
|
42
43
|
bindings=None,
|
|
43
44
|
monitor_interval=0.01,
|
|
@@ -52,6 +53,7 @@ def make(
|
|
|
52
53
|
robot: The robot that acts in the scene: "droid", "gripper", a `Robot`, or None.
|
|
53
54
|
gpus: With `num_envs`, CUDA GPU indices the environments render on, in turn.
|
|
54
55
|
renderer: None to rasterise images, or "rtx" to path-trace them.
|
|
56
|
+
reward: "success" for 1.0 on success, or "subtasks" for 1.0 at each new milestone.
|
|
55
57
|
scene: A scene XML file to use in place of the task's own.
|
|
56
58
|
bindings: Assets for abstract objects, as {name: {"asset": path, "properties": {...}}}.
|
|
57
59
|
monitor_interval: How often, in simulated seconds, task conditions are checked.
|
|
@@ -67,6 +69,7 @@ def make(
|
|
|
67
69
|
robot=robot,
|
|
68
70
|
gpus=gpus,
|
|
69
71
|
renderer=renderer,
|
|
72
|
+
reward=reward,
|
|
70
73
|
scene=scene,
|
|
71
74
|
bindings=bindings,
|
|
72
75
|
monitor_interval=monitor_interval,
|
|
@@ -76,6 +79,7 @@ def make(
|
|
|
76
79
|
raise ValueError("gpus go with num_envs")
|
|
77
80
|
env = Env(load(source), scene, bindings, monitor_interval=monitor_interval, backend=backend)
|
|
78
81
|
env.renderer = renderer
|
|
82
|
+
env.reward = reward
|
|
79
83
|
if isinstance(robot, str):
|
|
80
84
|
robot = _robot(robot)
|
|
81
85
|
return env if robot is None else env.add(robot)
|
|
@@ -26,6 +26,7 @@ class Env:
|
|
|
26
26
|
end_on_fall: Whether an object falling off the table ends the episode.
|
|
27
27
|
image_size: Observation image size as (width, height).
|
|
28
28
|
renderer: None to rasterise images, or "rtx" to path-trace them.
|
|
29
|
+
reward: "success" or "subtasks", as `step` describes.
|
|
29
30
|
"""
|
|
30
31
|
|
|
31
32
|
def __init__(
|
|
@@ -45,6 +46,7 @@ class Env:
|
|
|
45
46
|
self.end_on_fall = True
|
|
46
47
|
self.image_size = (640, 368) # 16:9, the shape of DROID's camera frames
|
|
47
48
|
self.renderer = None
|
|
49
|
+
self.reward = "success"
|
|
48
50
|
|
|
49
51
|
@property
|
|
50
52
|
def monitor_interval(self) -> float:
|
|
@@ -84,6 +86,8 @@ class Env:
|
|
|
84
86
|
"""
|
|
85
87
|
if self.renderer not in (None, "rtx"):
|
|
86
88
|
raise ValueError(f"unknown renderer {self.renderer!r}; use None or 'rtx'")
|
|
89
|
+
if self.reward not in ("success", "subtasks"):
|
|
90
|
+
raise ValueError(f"unknown reward {self.reward!r}; use 'success' or 'subtasks'")
|
|
87
91
|
self.close()
|
|
88
92
|
episode = episode if seed is None else seed
|
|
89
93
|
if self.robot is not None and hasattr(self.robot, "start_pose"):
|
|
@@ -103,6 +107,7 @@ class Env:
|
|
|
103
107
|
self.runtime.use_rtx(*self.image_size)
|
|
104
108
|
self.monitor = Monitor(self.task)
|
|
105
109
|
self.status = self.monitor.reset(self.runtime)
|
|
110
|
+
self._best = self.status.progress
|
|
106
111
|
return self.observe(), self._info()
|
|
107
112
|
except BaseException:
|
|
108
113
|
self.close()
|
|
@@ -120,8 +125,10 @@ class Env:
|
|
|
120
125
|
|
|
121
126
|
Returns:
|
|
122
127
|
(observation, reward, terminated, truncated, info). The reward is 1.0 once
|
|
123
|
-
the task has succeeded
|
|
124
|
-
|
|
128
|
+
the task has succeeded; with `reward` set to "subtasks", it is 1.0 at each step
|
|
129
|
+
that first reaches a new milestone (see `Monitor`), and never paid twice. An
|
|
130
|
+
episode terminates on success or on a broken always condition, and is truncated
|
|
131
|
+
at the task's `time_limit`, if it has one.
|
|
125
132
|
"""
|
|
126
133
|
self._require_reset()
|
|
127
134
|
if self.robot is None and action is not None:
|
|
@@ -147,7 +154,11 @@ class Env:
|
|
|
147
154
|
succeeded = self.status.succeeded(self.task)
|
|
148
155
|
terminated = succeeded or bool(self.status.violated)
|
|
149
156
|
truncated = bool(self.status.timed_out)
|
|
150
|
-
|
|
157
|
+
reward = float(succeeded)
|
|
158
|
+
if self.reward == "subtasks":
|
|
159
|
+
reward = float(max(self.status.progress - self._best, 0))
|
|
160
|
+
self._best = max(self._best, self.status.progress)
|
|
161
|
+
return self.observe(), reward, terminated, truncated, self._info()
|
|
151
162
|
|
|
152
163
|
def _info(self) -> dict:
|
|
153
164
|
return {
|
|
@@ -8,7 +8,7 @@ from dataclasses import dataclass, field
|
|
|
8
8
|
from .evaluation import evaluate, observe_history, unpack_expression
|
|
9
9
|
from .modules import require_capabilities
|
|
10
10
|
from .schema import Task
|
|
11
|
-
from .transformations import concrete
|
|
11
|
+
from .transformations import concrete, concrete_condition
|
|
12
12
|
from .vocabulary import CONNECTIVES
|
|
13
13
|
|
|
14
14
|
# An object that moved more than this between two checks is still moving.
|
|
@@ -24,6 +24,7 @@ class Status:
|
|
|
24
24
|
done: list[str] = field(default_factory=list)
|
|
25
25
|
violated: str = ""
|
|
26
26
|
timed_out: bool = False
|
|
27
|
+
progress: int = 0
|
|
27
28
|
|
|
28
29
|
@property
|
|
29
30
|
def failed(self) -> bool:
|
|
@@ -57,11 +58,52 @@ def _placed_in(tree) -> list[str]:
|
|
|
57
58
|
return [args[0]] if isinstance(args[0], str) else []
|
|
58
59
|
|
|
59
60
|
|
|
61
|
+
def _milestones(tree, task: Task):
|
|
62
|
+
"""A condition as the milestones it counts: its words, joined as the goal joins them."""
|
|
63
|
+
name, args = unpack_expression(tree)
|
|
64
|
+
if name == "and":
|
|
65
|
+
return ("all", [_milestones(a, task) for a in args])
|
|
66
|
+
if name == "or":
|
|
67
|
+
return ("any", [_milestones(a, task) for a in args])
|
|
68
|
+
if name in ("at_least", "between") and isinstance(args[0], dict) and "tally" in args[0]:
|
|
69
|
+
_, (parts,) = unpack_expression(args[0])
|
|
70
|
+
return ("count", [_milestones(p, task) for p in parts], int(args[1]))
|
|
71
|
+
placed = {n.split("/")[0] for n in _placed_in(tree)}
|
|
72
|
+
return ("word", concrete_condition(task, tree), placed)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _most(node) -> int:
|
|
76
|
+
"""How many milestones a node counts in all."""
|
|
77
|
+
if node[0] == "all":
|
|
78
|
+
return sum(_most(n) for n in node[1])
|
|
79
|
+
if node[0] == "any":
|
|
80
|
+
return max((_most(n) for n in node[1]), default=0)
|
|
81
|
+
if node[0] == "count":
|
|
82
|
+
return node[2]
|
|
83
|
+
return 1
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _reached(node, state, history, handled) -> int:
|
|
87
|
+
"""How many of a node's milestones hold now, with none of their objects handled."""
|
|
88
|
+
if node[0] == "all":
|
|
89
|
+
return sum(_reached(n, state, history, handled) for n in node[1])
|
|
90
|
+
if node[0] == "any":
|
|
91
|
+
return max((_reached(n, state, history, handled) for n in node[1]), default=0)
|
|
92
|
+
if node[0] == "count":
|
|
93
|
+
return min(sum(_reached(n, state, history, handled) for n in node[1]), node[2])
|
|
94
|
+
_, condition, placed = node
|
|
95
|
+
return int(not handled & placed and evaluate(condition, state, history))
|
|
96
|
+
|
|
97
|
+
|
|
60
98
|
class Monitor:
|
|
61
99
|
"""Evaluates a concrete task's stages and always conditions as an episode runs.
|
|
62
100
|
|
|
63
101
|
A stage completes once its condition has held for `hold` seconds while none of
|
|
64
102
|
the objects it places is touched by the robot or still moving.
|
|
103
|
+
|
|
104
|
+
Progress counts the milestones reached the same way: each word of a stage's
|
|
105
|
+
condition, with `and` adding, `or` taking the best and `at_least` of a `tally`
|
|
106
|
+
counting up to its bound. Milestones that hold at the start count from the start.
|
|
65
107
|
"""
|
|
66
108
|
|
|
67
109
|
def __init__(self, task: Task):
|
|
@@ -74,6 +116,10 @@ class Monitor:
|
|
|
74
116
|
name: {n.split("/")[0] for n in _placed_in(stage.condition)}
|
|
75
117
|
for name, stage in self.task.goal.stages.items()
|
|
76
118
|
}
|
|
119
|
+
self._milestones = {
|
|
120
|
+
name: _milestones(condition, self.task)
|
|
121
|
+
for name, condition in self.task.milestones.items()
|
|
122
|
+
}
|
|
77
123
|
|
|
78
124
|
def _moved(self, state) -> set[str]:
|
|
79
125
|
"""The placed objects that moved since the last check.
|
|
@@ -104,6 +150,7 @@ class Monitor:
|
|
|
104
150
|
self.status = Status()
|
|
105
151
|
self.history = {}
|
|
106
152
|
self._held = dict.fromkeys(self.task.goal.stages, 0.0)
|
|
153
|
+
self._levels = {name: [math.inf] * _most(tree) for name, tree in self._milestones.items()}
|
|
107
154
|
self._previous = dict.fromkeys(self.task.goal.stages, False)
|
|
108
155
|
self._started = True
|
|
109
156
|
self._finished_at = None
|
|
@@ -153,6 +200,7 @@ class Monitor:
|
|
|
153
200
|
else:
|
|
154
201
|
self._held[name] = 0.0
|
|
155
202
|
self._previous[name] = eligible and holding
|
|
203
|
+
self.status.progress = self._progress(state, dt, handled)
|
|
156
204
|
if self.status.succeeded(self.task) and self._finished_at is None:
|
|
157
205
|
self._finished_at = time
|
|
158
206
|
if self.task.time_limit is not None and time > self.task.time_limit:
|
|
@@ -160,3 +208,26 @@ class Monitor:
|
|
|
160
208
|
self._finished_at is None or self._finished_at > self.task.time_limit
|
|
161
209
|
)
|
|
162
210
|
return self.status
|
|
211
|
+
|
|
212
|
+
def _progress(self, state, dt: float, handled: set) -> int:
|
|
213
|
+
"""The milestones reached, each held for its stage's `hold` seconds."""
|
|
214
|
+
total = 0
|
|
215
|
+
for name, stage in self.task.goal.stages.items():
|
|
216
|
+
levels = self._levels[name]
|
|
217
|
+
if name in self.status.done:
|
|
218
|
+
total += len(levels)
|
|
219
|
+
continue
|
|
220
|
+
eligible = all(p in self.status.done for p in stage.after)
|
|
221
|
+
tree = self._milestones[name]
|
|
222
|
+
reached = (
|
|
223
|
+
_reached(tree, state, self.history, set() if stage.held else handled)
|
|
224
|
+
if eligible
|
|
225
|
+
else 0
|
|
226
|
+
)
|
|
227
|
+
for level, held in enumerate(levels):
|
|
228
|
+
if reached <= level:
|
|
229
|
+
levels[level] = None
|
|
230
|
+
else:
|
|
231
|
+
levels[level] = 0.0 if held is None else held + dt
|
|
232
|
+
total += sum(held is not None and held + 1e-9 >= stage.hold for held in levels)
|
|
233
|
+
return total
|
|
@@ -186,6 +186,7 @@ class Task(msgspec.Struct, omit_defaults=True):
|
|
|
186
186
|
states: dict[str, dict[str, Any]] = {}
|
|
187
187
|
time_limit: float | None = None
|
|
188
188
|
source: Any = msgspec.field(default=None, name="__source__")
|
|
189
|
+
milestones: dict[str, Any] = msgspec.field(default_factory=dict, name="__milestones__")
|
|
189
190
|
|
|
190
191
|
@property
|
|
191
192
|
def root(self) -> Path:
|
|
@@ -153,6 +153,12 @@ def inline(task: Task) -> Task:
|
|
|
153
153
|
|
|
154
154
|
|
|
155
155
|
def _expand_definitions(task: Task, words: dict) -> Task:
|
|
156
|
+
return _transform_conditions(task, _definitions(words))
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def _definitions(words: dict):
|
|
160
|
+
"""A function that expands the given words in a condition."""
|
|
161
|
+
|
|
156
162
|
def fill(node, bindings):
|
|
157
163
|
if isinstance(node, str):
|
|
158
164
|
if node in bindings:
|
|
@@ -201,11 +207,16 @@ def _expand_definitions(task: Task, words: dict) -> Task:
|
|
|
201
207
|
return {name: [args[0], walk(args[1]), *args[2:]]}
|
|
202
208
|
return {name: [walk(a) for a in args]}
|
|
203
209
|
|
|
204
|
-
return
|
|
210
|
+
return walk
|
|
205
211
|
|
|
206
212
|
|
|
207
213
|
def expand(task: Task) -> Task:
|
|
208
214
|
"""Expand `#tag` groups and quantifiers into conditions on named objects."""
|
|
215
|
+
return _transform_conditions(task, _quantifiers(task))
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def _quantifiers(task: Task):
|
|
219
|
+
"""A function that expands a task's `#tag` groups and quantifiers in a condition."""
|
|
209
220
|
|
|
210
221
|
def rename(node, names: dict):
|
|
211
222
|
if isinstance(node, str):
|
|
@@ -249,10 +260,27 @@ def expand(task: Task) -> Task:
|
|
|
249
260
|
return {name: walk(args)}
|
|
250
261
|
return {name: [members(a) if str(a).startswith("#") else walk(a) for a in args]}
|
|
251
262
|
|
|
252
|
-
return
|
|
263
|
+
return walk
|
|
253
264
|
|
|
254
265
|
|
|
255
266
|
def concrete(task: Task) -> Task:
|
|
256
|
-
"""Groups, quantifiers and defined words all expanded, ready to evaluate.
|
|
267
|
+
"""Groups, quantifiers and defined words all expanded, ready to evaluate.
|
|
268
|
+
|
|
269
|
+
The stage conditions as they were before their words were expanded are kept in
|
|
270
|
+
`milestones`, for counting progress.
|
|
271
|
+
"""
|
|
272
|
+
grouped = expand(task)
|
|
257
273
|
# expand again after inlining: a defined word's body can hold quantifiers too
|
|
258
|
-
|
|
274
|
+
result = expand(inline(grouped))
|
|
275
|
+
if not result.milestones:
|
|
276
|
+
result.milestones = {name: s.condition for name, s in grouped.goal.stages.items()}
|
|
277
|
+
return result
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def concrete_condition(task: Task, condition):
|
|
281
|
+
"""One of a task's conditions expanded as `concrete` expands the task's own."""
|
|
282
|
+
grow = _quantifiers(task)
|
|
283
|
+
condition = grow(condition)
|
|
284
|
+
if task.states:
|
|
285
|
+
condition = _definitions(task.states)(condition)
|
|
286
|
+
return grow(_definitions(VOCABULARY)(condition))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/base_coupling.stl
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/c-a01-85-open.stl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/follower.stl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_10.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link0_11.obj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_10.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_11.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_12.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_13.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_14.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_15.obj
RENAMED
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/link6_16.obj
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/droid/meshes/spring_link.stl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tabletask-0.2.0 → tabletask-0.2.1}/tabletask/mujoco/robots/assets/gripper/rubber-normal.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|