├── .gitignore ├── .gitmodules ├── README.md ├── __init__.py ├── data └── __init__.py ├── default_params.py ├── environment ├── __init__.py ├── pandaopendoorfktactile.py ├── robolite │ ├── AUTHORS │ ├── LICENSE │ ├── MANIFEST.in │ ├── README.md │ ├── docs │ │ ├── creating_environment.md │ │ ├── creating_object.md │ │ ├── demonstrations.md │ │ └── indicator_object.md │ ├── requirements-extra.txt │ ├── requirements.txt │ ├── resources │ │ ├── gallery.png │ │ └── indicator_object.png │ ├── robosuite │ │ ├── __init__.py │ │ ├── class_wrappers │ │ │ ├── __init__.py │ │ │ ├── action_noise_wrapper.py │ │ │ ├── latent_dynamics_provider.py │ │ │ ├── obs_delay_wrapper.py │ │ │ ├── obs_noise_wrapper.py │ │ │ ├── panda_ik_simple_wrapper.py │ │ │ └── panda_ik_wrapper.py │ │ ├── controllers │ │ │ ├── __init__.py │ │ │ ├── baxter_ik_controller.py │ │ │ ├── controller.py │ │ │ ├── panda_ik_controller.py │ │ │ └── sawyer_ik_controller.py │ │ ├── demo.py │ │ ├── devices │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── device.py │ │ │ ├── keyboard.py │ │ │ └── spacemouse.py │ │ ├── environments │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── baxter.py │ │ │ ├── baxter_lift.py │ │ │ ├── baxter_peg_in_hole.py │ │ │ ├── panda.py │ │ │ ├── panda_lift.py │ │ │ ├── panda_nut_assembly.py │ │ │ ├── panda_open_door.py │ │ │ ├── panda_pick_place.py │ │ │ ├── panda_push.py │ │ │ ├── panda_reach.py │ │ │ ├── panda_stack.py │ │ │ ├── panda_test.py │ │ │ ├── sawyer.py │ │ │ ├── sawyer_lift.py │ │ │ ├── sawyer_nut_assembly.py │ │ │ ├── sawyer_pick_place.py │ │ │ └── sawyer_stack.py │ │ ├── kdl │ │ │ ├── __init__.py │ │ │ └── panda_eef_velocity_controller.py │ │ ├── models │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── arenas │ │ │ │ ├── __init__.py │ │ │ │ ├── arena.py │ │ │ │ ├── bins_arena.py │ │ │ │ ├── empty_arena.py │ │ │ │ ├── pegs_arena.py │ │ │ │ ├── table_arena.py │ │ │ │ └── table_cabinet_arena.py │ │ │ ├── assets │ │ │ │ ├── arenas │ │ │ │ │ ├── bins_arena.xml │ │ │ │ │ ├── cabinet │ │ │ │ │ │ ├── cabinet_body.STL │ │ │ │ │ │ ├── cabinet_door.STL │ │ │ │ │ │ └── cabinet_knob.STL │ │ │ │ │ ├── empty_arena.xml │ │ │ │ │ ├── mujoco_load_xml_test.py │ │ │ │ │ ├── pegs_arena.xml │ │ │ │ │ ├── table_arena.xml │ │ │ │ │ ├── table_cabinet_arena.xml │ │ │ │ │ └── table_cabinet_arena_old.xml │ │ │ │ ├── base.xml │ │ │ │ ├── bullet_data │ │ │ │ │ ├── baxter_description │ │ │ │ │ │ ├── meshes │ │ │ │ │ │ │ ├── base │ │ │ │ │ │ │ │ ├── PEDESTAL.DAE │ │ │ │ │ │ │ │ ├── PEDESTAL.STL │ │ │ │ │ │ │ │ ├── pedestal_link_collision.DAE │ │ │ │ │ │ │ │ └── pedestal_link_collision.STL │ │ │ │ │ │ │ ├── head │ │ │ │ │ │ │ │ ├── H0.DAE │ │ │ │ │ │ │ │ ├── H0.STL │ │ │ │ │ │ │ │ ├── H1.DAE │ │ │ │ │ │ │ │ └── H1.STL │ │ │ │ │ │ │ ├── lower_elbow │ │ │ │ │ │ │ │ ├── E1.DAE │ │ │ │ │ │ │ │ └── E1.STL │ │ │ │ │ │ │ ├── lower_forearm │ │ │ │ │ │ │ │ ├── W1.DAE │ │ │ │ │ │ │ │ └── W1.STL │ │ │ │ │ │ │ ├── lower_shoulder │ │ │ │ │ │ │ │ ├── S1.DAE │ │ │ │ │ │ │ │ └── S1.STL │ │ │ │ │ │ │ ├── torso │ │ │ │ │ │ │ │ ├── base_link.DAE │ │ │ │ │ │ │ │ ├── base_link.STL │ │ │ │ │ │ │ │ ├── base_link_collision.DAE │ │ │ │ │ │ │ │ └── base_link_collision.STL │ │ │ │ │ │ │ ├── upper_elbow │ │ │ │ │ │ │ │ ├── E0.DAE │ │ │ │ │ │ │ │ └── E0.STL │ │ │ │ │ │ │ ├── upper_forearm │ │ │ │ │ │ │ │ ├── W0.DAE │ │ │ │ │ │ │ │ └── W0.STL │ │ │ │ │ │ │ ├── upper_shoulder │ │ │ │ │ │ │ │ ├── S0.DAE │ │ │ │ │ │ │ │ └── S0.STL │ │ │ │ │ │ │ └── wrist │ │ │ │ │ │ │ │ ├── W2.DAE │ │ │ │ │ │ │ │ └── W2.STL │ │ │ │ │ │ └── urdf │ │ │ │ │ │ │ └── baxter_mod.urdf │ │ │ │ │ ├── panda_description │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── mainpage.dox │ │ │ │ │ │ ├── meshes │ │ │ │ │ │ │ ├── collision │ │ │ │ │ │ │ │ ├── finger.stl │ │ │ │ │ │ │ │ ├── hand.stl │ │ │ │ │ │ │ │ ├── link0.stl │ │ │ │ │ │ │ │ ├── link1.stl │ │ │ │ │ │ │ │ ├── link2.stl │ │ │ │ │ │ │ │ ├── link3.stl │ │ │ │ │ │ │ │ ├── link4.stl │ │ │ │ │ │ │ │ ├── link5.stl │ │ │ │ │ │ │ │ ├── link6.stl │ │ │ │ │ │ │ │ └── link7.stl │ │ │ │ │ │ │ └── visual │ │ │ │ │ │ │ │ ├── finger.dae │ │ │ │ │ │ │ │ ├── hand.dae │ │ │ │ │ │ │ │ ├── link0.dae │ │ │ │ │ │ │ │ ├── link1.dae │ │ │ │ │ │ │ │ ├── link2.dae │ │ │ │ │ │ │ │ ├── link3.dae │ │ │ │ │ │ │ │ ├── link4.dae │ │ │ │ │ │ │ │ ├── link5.dae │ │ │ │ │ │ │ │ ├── link6.dae │ │ │ │ │ │ │ │ └── link7.dae │ │ │ │ │ │ ├── package.xml │ │ │ │ │ │ ├── rosdoc.yaml │ │ │ │ │ │ └── urdf │ │ │ │ │ │ │ ├── hand.urdf │ │ │ │ │ │ │ ├── hand.urdf.xacro │ │ │ │ │ │ │ ├── hand.xacro │ │ │ │ │ │ │ ├── panda_arm.urdf │ │ │ │ │ │ │ ├── panda_arm.urdf.xacro │ │ │ │ │ │ │ ├── panda_arm.xacro │ │ │ │ │ │ │ ├── panda_arm_hand.urdf │ │ │ │ │ │ │ └── panda_arm_hand.urdf.xacro │ │ │ │ │ └── sawyer_description │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── config │ │ │ │ │ │ └── sawyer.rviz │ │ │ │ │ │ ├── launch │ │ │ │ │ │ └── test_sawyer_description.launch.test │ │ │ │ │ │ ├── meshes │ │ │ │ │ │ ├── sawyer_ft │ │ │ │ │ │ │ ├── PEDESTAL.DAE │ │ │ │ │ │ │ ├── PEDESTAL.STL │ │ │ │ │ │ │ ├── base.DAE │ │ │ │ │ │ │ ├── base.STL │ │ │ │ │ │ │ ├── head.DAE │ │ │ │ │ │ │ ├── head.STL │ │ │ │ │ │ │ ├── l0.DAE │ │ │ │ │ │ │ ├── l0.STL │ │ │ │ │ │ │ ├── l1.DAE │ │ │ │ │ │ │ ├── l1.STL │ │ │ │ │ │ │ ├── l2.DAE │ │ │ │ │ │ │ ├── l2.STL │ │ │ │ │ │ │ ├── l3.DAE │ │ │ │ │ │ │ ├── l3.STL │ │ │ │ │ │ │ ├── l4.DAE │ │ │ │ │ │ │ ├── l4.STL │ │ │ │ │ │ │ ├── l5.DAE │ │ │ │ │ │ │ ├── l5.STL │ │ │ │ │ │ │ ├── l6.DAE │ │ │ │ │ │ │ └── l6.STL │ │ │ │ │ │ ├── sawyer_mp1 │ │ │ │ │ │ │ ├── l6.DAE │ │ │ │ │ │ │ └── l6.STL │ │ │ │ │ │ ├── sawyer_mp3 │ │ │ │ │ │ │ ├── l0.DAE │ │ │ │ │ │ │ ├── l0.STL │ │ │ │ │ │ │ ├── l1.DAE │ │ │ │ │ │ │ └── l1.STL │ │ │ │ │ │ └── sawyer_pv │ │ │ │ │ │ │ ├── base.DAE │ │ │ │ │ │ │ ├── base.STL │ │ │ │ │ │ │ ├── head.DAE │ │ │ │ │ │ │ ├── head.STL │ │ │ │ │ │ │ ├── l0.DAE │ │ │ │ │ │ │ ├── l0.STL │ │ │ │ │ │ │ ├── l1.DAE │ │ │ │ │ │ │ ├── l1.STL │ │ │ │ │ │ │ ├── l2.DAE │ │ │ │ │ │ │ ├── l2.STL │ │ │ │ │ │ │ ├── l3.DAE │ │ │ │ │ │ │ ├── l3.STL │ │ │ │ │ │ │ ├── l4.DAE │ │ │ │ │ │ │ ├── l4.STL │ │ │ │ │ │ │ ├── l5.DAE │ │ │ │ │ │ │ ├── l5.STL │ │ │ │ │ │ │ ├── l6.DAE │ │ │ │ │ │ │ ├── l6.STL │ │ │ │ │ │ │ ├── pedestal.DAE │ │ │ │ │ │ │ └── pedestal.STL │ │ │ │ │ │ ├── package.xml │ │ │ │ │ │ ├── params │ │ │ │ │ │ └── named_poses.yaml │ │ │ │ │ │ └── urdf │ │ │ │ │ │ ├── sawyer.urdf │ │ │ │ │ │ └── sawyer_arm.urdf │ │ │ │ ├── demonstrations │ │ │ │ │ ├── BaxterLift │ │ │ │ │ │ ├── demo.hdf5 │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── model_1.xml │ │ │ │ │ │ │ └── model_2.xml │ │ │ │ │ ├── BaxterPegInHole │ │ │ │ │ │ ├── demo.hdf5 │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── model_1.xml │ │ │ │ │ │ │ └── model_2.xml │ │ │ │ │ ├── SawyerLift │ │ │ │ │ │ ├── demo.hdf5 │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── model_1.xml │ │ │ │ │ │ │ └── model_2.xml │ │ │ │ │ ├── SawyerNutAssembly │ │ │ │ │ │ ├── demo.hdf5 │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── model_1.xml │ │ │ │ │ │ │ └── model_2.xml │ │ │ │ │ ├── SawyerPickPlace │ │ │ │ │ │ ├── demo.hdf5 │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── model_1.xml │ │ │ │ │ │ │ └── model_2.xml │ │ │ │ │ └── SawyerStack │ │ │ │ │ │ ├── demo.hdf5 │ │ │ │ │ │ └── models │ │ │ │ │ │ ├── model_1.xml │ │ │ │ │ │ └── model_2.xml │ │ │ │ ├── grippers │ │ │ │ │ ├── left_two_finger_gripper.xml │ │ │ │ │ ├── meshes │ │ │ │ │ │ ├── deprecated │ │ │ │ │ │ │ ├── basic_hard_tip.STL │ │ │ │ │ │ │ ├── basic_soft_tip.STL │ │ │ │ │ │ │ ├── electric_gripper_w_fingers.STL │ │ │ │ │ │ │ ├── extended_narrow.STL │ │ │ │ │ │ │ ├── extended_wide.STL │ │ │ │ │ │ │ ├── limiter.STL │ │ │ │ │ │ │ ├── paddle_tip.STL │ │ │ │ │ │ │ └── standard_wide.STL │ │ │ │ │ │ ├── panda_gripper │ │ │ │ │ │ │ ├── finger.stl │ │ │ │ │ │ │ ├── finger_longer.stl │ │ │ │ │ │ │ ├── finger_longer_a.stl │ │ │ │ │ │ │ ├── finger_longer_a_old.stl │ │ │ │ │ │ │ ├── finger_longer_b.stl │ │ │ │ │ │ │ ├── finger_longer_c.stl │ │ │ │ │ │ │ ├── finger_vis.stl │ │ │ │ │ │ │ ├── finger_vis_tactile.stl │ │ │ │ │ │ │ ├── hand.stl │ │ │ │ │ │ │ ├── hand_vis.stl │ │ │ │ │ │ │ └── pad.stl │ │ │ │ │ │ ├── pr2_gripper │ │ │ │ │ │ │ ├── gripper_palm.stl │ │ │ │ │ │ │ ├── l_finger.stl │ │ │ │ │ │ │ └── l_finger_tip.stl │ │ │ │ │ │ ├── robotiq_gripper │ │ │ │ │ │ │ ├── adapter_plate.dae.stl │ │ │ │ │ │ │ ├── adapter_plate.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_adapter_plate.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_base.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_0_L.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_0_R.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_1_L.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_1_R.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_2_L.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_2_R.stl │ │ │ │ │ │ │ ├── robotiq_85_gripper_joint_3_L.stl │ │ │ │ │ │ │ └── robotiq_85_gripper_joint_3_R.stl │ │ │ │ │ │ ├── robotiq_s_gripper │ │ │ │ │ │ │ ├── link_0.STL │ │ │ │ │ │ │ ├── link_1.STL │ │ │ │ │ │ │ ├── link_2.STL │ │ │ │ │ │ │ ├── link_3.STL │ │ │ │ │ │ │ └── palm.STL │ │ │ │ │ │ └── two_finger_gripper │ │ │ │ │ │ │ ├── electric_gripper_base.STL │ │ │ │ │ │ │ ├── half_round_tip.STL │ │ │ │ │ │ │ └── standard_narrow.STL │ │ │ │ │ ├── mujoco_load_xml_test.py │ │ │ │ │ ├── panda_gripper.xml │ │ │ │ │ ├── panda_gripper_mesh.xml │ │ │ │ │ ├── panda_gripper_original │ │ │ │ │ │ └── panda_gripper.xml │ │ │ │ │ ├── panda_gripper_tactile.xml │ │ │ │ │ ├── panda_gripper_tactile │ │ │ │ │ │ ├── panda_gripper_tactile.xml │ │ │ │ │ │ └── panda_gripper_tactile_unordered.xml │ │ │ │ │ ├── pr2_gripper.xml │ │ │ │ │ ├── robotiq_gripper.xml │ │ │ │ │ ├── robotiq_gripper_s.xml │ │ │ │ │ ├── tactile_finger.xml │ │ │ │ │ └── two_finger_gripper.xml │ │ │ │ ├── kdl │ │ │ │ │ └── panda_urdf │ │ │ │ │ │ ├── hand.urdf │ │ │ │ │ │ ├── panda_arm.urdf │ │ │ │ │ │ └── panda_arm_hand.urdf │ │ │ │ ├── objects │ │ │ │ │ ├── bottle.xml │ │ │ │ │ ├── bread-visual.xml │ │ │ │ │ ├── bread.xml │ │ │ │ │ ├── cabinet.xml │ │ │ │ │ ├── cabinet │ │ │ │ │ │ ├── cabinet_body.STL │ │ │ │ │ │ ├── cabinet_door.STL │ │ │ │ │ │ └── cabinet_knob.STL │ │ │ │ │ ├── cabinet_old.xml │ │ │ │ │ ├── can-visual.xml │ │ │ │ │ ├── can.xml │ │ │ │ │ ├── cereal-visual.xml │ │ │ │ │ ├── cereal.xml │ │ │ │ │ ├── lemon.xml │ │ │ │ │ ├── meshes │ │ │ │ │ │ ├── bottle.stl │ │ │ │ │ │ ├── bread.stl │ │ │ │ │ │ ├── can.stl │ │ │ │ │ │ ├── cereal.stl │ │ │ │ │ │ ├── handles.stl │ │ │ │ │ │ ├── lemon.stl │ │ │ │ │ │ └── milk.stl │ │ │ │ │ ├── milk-visual.xml │ │ │ │ │ ├── milk.xml │ │ │ │ │ ├── mujoco_load_xml_test.py │ │ │ │ │ ├── plate-with-hole.xml │ │ │ │ │ ├── round-nut.xml │ │ │ │ │ ├── soft_cuboid.xml │ │ │ │ │ └── square-nut.xml │ │ │ │ ├── robots │ │ │ │ │ ├── baxter │ │ │ │ │ │ ├── meshes │ │ │ │ │ │ │ ├── base │ │ │ │ │ │ │ │ ├── PEDESTAL.STL │ │ │ │ │ │ │ │ └── pedestal_link_collision.STL │ │ │ │ │ │ │ ├── electric_gripper │ │ │ │ │ │ │ │ ├── electric_gripper_base.STL │ │ │ │ │ │ │ │ └── fingers │ │ │ │ │ │ │ │ │ ├── extended_narrow.STL │ │ │ │ │ │ │ │ │ ├── extended_wide.STL │ │ │ │ │ │ │ │ │ ├── half_round_tip.STL │ │ │ │ │ │ │ │ │ └── paddle_tip.STL │ │ │ │ │ │ │ ├── head │ │ │ │ │ │ │ │ ├── H0.STL │ │ │ │ │ │ │ │ └── H1.STL │ │ │ │ │ │ │ ├── lower_elbow │ │ │ │ │ │ │ │ └── E1.STL │ │ │ │ │ │ │ ├── lower_forearm │ │ │ │ │ │ │ │ └── W1.STL │ │ │ │ │ │ │ ├── lower_shoulder │ │ │ │ │ │ │ │ └── S1.STL │ │ │ │ │ │ │ ├── torso │ │ │ │ │ │ │ │ ├── base_link.STL │ │ │ │ │ │ │ │ └── base_link_collision.STL │ │ │ │ │ │ │ ├── upper_elbow │ │ │ │ │ │ │ │ └── E0.STL │ │ │ │ │ │ │ ├── upper_forearm │ │ │ │ │ │ │ │ └── W0.STL │ │ │ │ │ │ │ ├── upper_shoulder │ │ │ │ │ │ │ │ └── S0.STL │ │ │ │ │ │ │ └── wrist │ │ │ │ │ │ │ │ └── W2.STL │ │ │ │ │ │ └── robot.xml │ │ │ │ │ ├── panda │ │ │ │ │ │ ├── meshes │ │ │ │ │ │ │ ├── finger.stl │ │ │ │ │ │ │ ├── finger_vis.stl │ │ │ │ │ │ │ ├── hand.stl │ │ │ │ │ │ │ ├── hand_vis.stl │ │ │ │ │ │ │ ├── link0.stl │ │ │ │ │ │ │ ├── link0_vis.stl │ │ │ │ │ │ │ ├── link1.stl │ │ │ │ │ │ │ ├── link1_vis.stl │ │ │ │ │ │ │ ├── link2.stl │ │ │ │ │ │ │ ├── link2_vis.stl │ │ │ │ │ │ │ ├── link3.stl │ │ │ │ │ │ │ ├── link3_vis.stl │ │ │ │ │ │ │ ├── link4.stl │ │ │ │ │ │ │ ├── link4_vis.stl │ │ │ │ │ │ │ ├── link5.stl │ │ │ │ │ │ │ ├── link5_vis.stl │ │ │ │ │ │ │ ├── link6.stl │ │ │ │ │ │ │ ├── link6_vis.stl │ │ │ │ │ │ │ ├── link7.stl │ │ │ │ │ │ │ ├── link7_vis.stl │ │ │ │ │ │ │ └── pedestal.stl │ │ │ │ │ │ └── robot.xml │ │ │ │ │ └── sawyer │ │ │ │ │ │ ├── meshes │ │ │ │ │ │ ├── base.stl │ │ │ │ │ │ ├── head.stl │ │ │ │ │ │ ├── l0.stl │ │ │ │ │ │ ├── l1.stl │ │ │ │ │ │ ├── l2.stl │ │ │ │ │ │ ├── l3.stl │ │ │ │ │ │ ├── l4.stl │ │ │ │ │ │ ├── l5.stl │ │ │ │ │ │ ├── l6.stl │ │ │ │ │ │ └── pedestal.stl │ │ │ │ │ │ ├── original │ │ │ │ │ │ ├── base.stl │ │ │ │ │ │ ├── head.stl │ │ │ │ │ │ ├── l0.stl │ │ │ │ │ │ ├── l1.stl │ │ │ │ │ │ ├── l2.stl │ │ │ │ │ │ ├── l3.stl │ │ │ │ │ │ ├── l4.stl │ │ │ │ │ │ ├── l5.stl │ │ │ │ │ │ ├── l6.stl │ │ │ │ │ │ └── pedestal.stl │ │ │ │ │ │ ├── robot.xml │ │ │ │ │ │ ├── robot_torque.xml │ │ │ │ │ │ └── smoothed │ │ │ │ │ │ ├── base.stl │ │ │ │ │ │ ├── head.stl │ │ │ │ │ │ ├── l0.stl │ │ │ │ │ │ ├── l1.stl │ │ │ │ │ │ ├── l2.stl │ │ │ │ │ │ ├── l3.stl │ │ │ │ │ │ ├── l4.stl │ │ │ │ │ │ ├── l5.stl │ │ │ │ │ │ ├── l6.stl │ │ │ │ │ │ └── pedestal.stl │ │ │ │ └── textures │ │ │ │ │ ├── bread.png │ │ │ │ │ ├── can.png │ │ │ │ │ ├── ceramic.png │ │ │ │ │ ├── cereal.png │ │ │ │ │ ├── clay.png │ │ │ │ │ ├── dark-wood.png │ │ │ │ │ ├── glass.png │ │ │ │ │ ├── lemon.png │ │ │ │ │ ├── light-wood.png │ │ │ │ │ └── metal.png │ │ │ ├── base.py │ │ │ ├── grippers │ │ │ │ ├── __init__.py │ │ │ │ ├── gripper.py │ │ │ │ ├── gripper_factory.py │ │ │ │ ├── gripper_tester.py │ │ │ │ ├── panda_gripper.py │ │ │ │ ├── panda_gripper_tactile.py │ │ │ │ ├── pr2_gripper.py │ │ │ │ ├── pushing_gripper.py │ │ │ │ ├── robotiq_gripper.py │ │ │ │ ├── robotiq_three_finger_gripper.py │ │ │ │ └── two_finger_gripper.py │ │ │ ├── objects │ │ │ │ ├── __init__.py │ │ │ │ ├── generated_objects.py │ │ │ │ ├── objects.py │ │ │ │ └── xml_objects.py │ │ │ ├── robots │ │ │ │ ├── __init__.py │ │ │ │ ├── baxter_robot.py │ │ │ │ ├── panda_robot.py │ │ │ │ ├── robot.py │ │ │ │ └── sawyer_robot.py │ │ │ ├── tasks │ │ │ │ ├── __init__.py │ │ │ │ ├── nut_assembly_task.py │ │ │ │ ├── pick_place_task.py │ │ │ │ ├── placement_sampler.py │ │ │ │ ├── table_top_task.py │ │ │ │ └── task.py │ │ │ └── world.py │ │ ├── scripts │ │ │ ├── README.md │ │ │ ├── browse_mjcf_model.py │ │ │ ├── collect_human_demonstrations.py │ │ │ ├── compile_mjcf_model.py │ │ │ ├── demo_baxter_ik_control.py │ │ │ ├── demo_collect_and_playback_data.py │ │ │ ├── demo_device_ik_control.py │ │ │ ├── demo_gripper_interaction.py │ │ │ ├── demo_gripper_selection.py │ │ │ ├── demo_gym_functionality.py │ │ │ ├── demo_learning_curriculum.py │ │ │ ├── demo_pygame_renderer.py │ │ │ ├── demo_video_recording.py │ │ │ ├── playback_demonstrations_from_hdf5.py │ │ │ └── tune_camera.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── errors.py │ │ │ ├── mjcf_utils.py │ │ │ ├── mujoco_py_renderer.py │ │ │ └── transform_utils.py │ │ └── wrappers │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── data_collection_wrapper.py │ │ │ ├── demo_sampler_wrapper.py │ │ │ ├── gym_wrapper.py │ │ │ ├── ik_wrapper.py │ │ │ └── wrapper.py │ ├── setup.py │ └── tests │ │ ├── test_environments │ │ └── test_all_environments.py │ │ └── test_grippers │ │ ├── test_all_grippers.py │ │ ├── test_pr2.py │ │ ├── test_pushing.py │ │ ├── test_robotiq_gripper.py │ │ ├── test_robotiq_threefinger.py │ │ └── test_two_finger.py └── syspath_robolite.py ├── img └── tactile_robot_door_open.png ├── requirements.txt ├── rl ├── buffers.py ├── initialize.py ├── optimizers.py ├── policy_networks.py ├── td3 │ ├── td3.py │ └── train_td3.py └── value_networks.py ├── tactile_finger.py ├── train.py └── utils ├── __init__.py ├── common_func.py ├── load_params.py └── logger.py /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "environment/robolite"] 2 | path = environment/robolite 3 | url = git@github.com:quantumiracle/robolite.git 4 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/__init__.py -------------------------------------------------------------------------------- /data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/data/__init__.py -------------------------------------------------------------------------------- /default_params.py: -------------------------------------------------------------------------------- 1 | def get_hyperparams(env_name): 2 | if 'pandaopendoorfk' in env_name: 3 | hyperparams_dict={ 4 | 'alg_name': 'td3', 5 | # 'max_steps': 300, 6 | 'max_steps': 1000, 7 | 'max_episodes': 10000, 8 | 'action_range': 0.05, # on joint 9 | # 'action_range': 0.1, # on joint 10 | 'batch_size': 640, 11 | 'explore_steps': 0, 12 | 'update_itr': 100, # iterative update 13 | 'eval_interval': 500, # evaluate the model and save it 14 | 'explore_noise_scale': 0.02, 15 | 'eval_noise_scale': 0.02, # noisy evaluation trick 16 | 'reward_scale': 1., # reward normalization in a batch 17 | 'gamma': 0.99, # reward discount 18 | 'soft_tau': 1e-2, # soft udpate coefficient 19 | 'hidden_dim': 512, 20 | 'noise_decay': 0.9999, # decaying exploration noise 21 | 'policy_target_update_interval': 5, # delayed update 22 | 'q_lr': 3e-4, 23 | 'policy_lr': 3e-4, 24 | 'replay_buffer_size': 1e6, 25 | 'randomized_params': ['knob_friction', 'hinge_stiffness', 'hinge_damping', 'hinge_frictionloss', 'door_mass', 'knob_mass', 'table_position_offset_x', 'table_position_offset_y'], # choose in: 'all', None, or a list of parameter keys 26 | 'deterministic': True, 27 | } 28 | 29 | else: 30 | raise NotImplementedError 31 | 32 | print('Hyperparameters: ', hyperparams_dict) 33 | return hyperparams_dict 34 | -------------------------------------------------------------------------------- /environment/__init__.py: -------------------------------------------------------------------------------- 1 | from .pandaopendoorfktactile import PandaOpenDoorFKTactile 2 | 3 | envs = { 4 | 'pandaopendoorfktactile': PandaOpenDoorFKTactile, 5 | } 6 | -------------------------------------------------------------------------------- /environment/pandaopendoorfktactile.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from gym import spaces 3 | from .syspath_robolite import * 4 | from robosuite.environments.panda_open_door import PandaOpenDoor 5 | 6 | import sys, os 7 | sys.path.append(os.path.dirname(os.getcwd())) 8 | from utils.common_func import Drawer 9 | 10 | class PandaOpenDoorFKTactile(PandaOpenDoor): 11 | def __init__(self, use_tactile=True, full_obs=True, **kwargs): 12 | super().__init__(use_tactile=use_tactile, full_obs=full_obs, gripper_type="PandaGripperTactile", **kwargs) 13 | obs_dim = 12 14 | act_dim = 8 15 | self.tactile_dim=30 16 | self.use_tactile=use_tactile 17 | if full_obs: 18 | obs_dim+=13 # 7 dim joint velocities, 3 dim eef positions, 3 dim eef velocities 19 | if use_tactile: 20 | obs_dim+=self.tactile_dim # 30 dim for binary tactile signals 21 | self.full_obs = full_obs 22 | self.name = self.__class__.__name__.lower() 23 | self.observation_space = spaces.Box(np.zeros(obs_dim, dtype=np.float32), np.zeros(obs_dim, dtype=np.float32)) 24 | self.action_space = spaces.Box(-np.ones(act_dim, dtype=np.float32), np.ones(act_dim, dtype=np.float32)) # 7 dim for robot arm and 1 dim for gripper 25 | 26 | self.plot_tactile = False 27 | 28 | if self.plot_tactile and self.use_tactile: 29 | self.drawer = Drawer() 30 | self.drawer.start() 31 | 32 | self.last_obs = None 33 | self.dist_threshold = 0.03 34 | self.gripper_width_threshold = 0.07 35 | self.p_tactile_signal_flip = 0.005 # with this probability the binary tactile singal will flip, e.g. 1 to 0 or 0 to 1 36 | 37 | def _final_obs(self, di): 38 | return di['task_state'] 39 | 40 | def step(self, action): 41 | 42 | norm_action = np.concatenate((action[:-1], action[-1:]*0.005)) # joint action norm during training 43 | obs, reward, done, info = super().step(norm_action) 44 | 45 | if self.plot_tactile and self.use_tactile: 46 | self.drawer.add_value(obs['tactile'].copy()) 47 | self.drawer.render() 48 | self.last_obs = self._final_obs(obs) 49 | 50 | # randomize the tactile signal 51 | if self.use_tactile: 52 | rands = np.random.uniform(0,1,size=self.tactile_dim) 53 | idx=np.where(rands 6 | # The email address is not required for organizations. 7 | 8 | Stanford University 9 | Yuke Zhu 10 | Jiren Zhu 11 | Ajay Mandlekar 12 | Joan Creus-Costa 13 | Anchit Gupta 14 | Josiah Wong 15 | -------------------------------------------------------------------------------- /environment/robolite/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Stanford Vision and Learning Lab 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 | -------------------------------------------------------------------------------- /environment/robolite/MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-include robosuite/models/assets/ * -------------------------------------------------------------------------------- /environment/robolite/docs/indicator_object.md: -------------------------------------------------------------------------------- 1 | # Using the indicator object 2 | When you are exploring an environment, it can be very helpful to have a free object moving wherever you want. This can be done by providing the `use_indicator_object` flag on environment initialization. 3 | 4 | ```python 5 | env = SawyerLiftEnv( 6 | ..., 7 | use_indicator_object=True 8 | ) 9 | ``` 10 | 11 | The indicator object is a red ball. Its location is specified as (x, y, z) coordinates in the word frame. It is initially located at (0,0,0) and can be moved by calling 12 | 13 | ```python 14 | env.move_indicator([x, y, z]) 15 | ``` 16 | 17 | Example: 18 | ![indicator object](../resources/indicator_object.png) 19 | -------------------------------------------------------------------------------- /environment/robolite/requirements-extra.txt: -------------------------------------------------------------------------------- 1 | # required for IK controllers 2 | pybullet==1.9.5 3 | 4 | # required for GymWrapper 5 | gym 6 | 7 | # Mac OS X only 8 | hidapi 9 | 10 | # required for demonstration utils 11 | h5py 12 | -------------------------------------------------------------------------------- /environment/robolite/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.13.3 2 | mujoco-py==2.0.2.2 3 | -e . 4 | -------------------------------------------------------------------------------- /environment/robolite/resources/gallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/resources/gallery.png -------------------------------------------------------------------------------- /environment/robolite/resources/indicator_object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/resources/indicator_object.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from robosuite.environments.base import make 4 | 5 | from robosuite.environments.sawyer_lift import SawyerLift 6 | from robosuite.environments.sawyer_stack import SawyerStack 7 | from robosuite.environments.sawyer_pick_place import SawyerPickPlace 8 | from robosuite.environments.sawyer_nut_assembly import SawyerNutAssembly 9 | 10 | from robosuite.environments.panda_lift import PandaLift 11 | from robosuite.environments.panda_stack import PandaStack 12 | from robosuite.environments.panda_pick_place import PandaPickPlace 13 | from robosuite.environments.panda_nut_assembly import PandaNutAssembly 14 | from robosuite.environments.panda_reach import PandaReach 15 | from robosuite.environments.panda_push import PandaPush 16 | from robosuite.environments.panda_open_door import PandaOpenDoor 17 | 18 | from robosuite.environments.baxter_lift import BaxterLift 19 | from robosuite.environments.baxter_peg_in_hole import BaxterPegInHole 20 | 21 | __version__ = "0.3.0" 22 | __logo__ = """ 23 | ; / ,--. 24 | ["] ["] ,< |__**| 25 | /[_]\ [~]\/ |// | 26 | ] [ OOO /o|__| 27 | """ 28 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/class_wrappers/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | def change_dof(Env, new_dof, old_dof=None): 3 | if old_dof is None: 4 | old_dof = Env.dof 5 | class DOFChangedEnv(Env): 6 | dof = new_dof 7 | 8 | def __init__(self, **kwargs): 9 | self.dof = old_dof 10 | super().__init__(**kwargs) 11 | self.dof = new_dof 12 | 13 | def step(self, action): 14 | self.dof = old_dof 15 | ret = super().step(action) 16 | self.dof = new_dof 17 | return ret 18 | 19 | return DOFChangedEnv 20 | 21 | # from .panda_ik_wrapper import panda_ik_wrapper 22 | from .panda_ik_simple_wrapper import panda_ik_simple_wrapper 23 | from .obs_noise_wrapper import obs_noise_wrapper 24 | from .obs_delay_wrapper import obs_delay_wrapper 25 | from .action_noise_wrapper import action_noise_wrapper 26 | from .latent_dynamics_provider import latent_dynamics_provider 27 | 28 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/class_wrappers/action_noise_wrapper.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def action_noise_wrapper(Env, add_range, add_default, mul_range, mul_default, sys_range, sys_default, dim=None): 4 | def add_noise_to(env, action, dim=dim): 5 | if dim: 6 | add = np.random.uniform(-1, 1, action[dim].shape) * env.action_noise_additive 7 | mul = 1.0 + np.random.uniform(-1, 1, action[dim].shape) * env.action_noise_multiplicative 8 | add_sys = env.action_noise_systematic 9 | action_ = action.copy() 10 | action_[dim] = (action[dim] + add + add_sys) * mul 11 | else: 12 | add = np.random.uniform(-1, 1, action.shape) * env.action_noise_additive 13 | mul = 1.0 + np.random.uniform(-1, 1, action.shape) * env.action_noise_multiplicative 14 | add_sys = env.action_noise_systematic 15 | action_ = (action + add + add_sys) * mul 16 | return action_ 17 | 18 | class ActionNoise(Env): 19 | parameters_spec = { 20 | **Env.parameters_spec, 21 | 'action_noise_additive': add_range, 22 | 'action_noise_multiplicative': mul_range, 23 | 'action_noise_systematic': sys_range, 24 | } 25 | 26 | def reset_props(self, action_noise_additive=add_default, action_noise_multiplicative=mul_default, action_noise_systematic=sys_default, **kwargs): 27 | self.action_noise_additive = action_noise_additive 28 | self.action_noise_multiplicative = action_noise_multiplicative 29 | self.action_noise_systematic = action_noise_systematic 30 | super().reset_props(**kwargs) 31 | self.params_dict.update({ 32 | 'action_noise_additive': action_noise_additive, 33 | 'action_noise_multiplicative': action_noise_multiplicative, 34 | 'action_noise_systematic': action_noise_systematic, 35 | }) 36 | 37 | def step(self, action): 38 | return super().step(add_noise_to(self, action)) 39 | 40 | return ActionNoise 41 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/class_wrappers/latent_dynamics_provider.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def latent_dynamics_provider(Env, params_to_attach='all'): 4 | class DynamicsParams(Env): 5 | if params_to_attach=='all': 6 | _params_dim = len(Env.params_dict.keys().tolist()) 7 | else: 8 | _params_dim = len(params_to_attach) 9 | _params_to_attach = None 10 | 11 | def reset(self, **kwargs): 12 | obs = super().reset(**kwargs) 13 | if params_to_attach == 'all': 14 | self._params_to_attach = self.params_dict 15 | else: 16 | self._params_to_attach = {k:v for k, v in self.params_dict.items() if k in params_to_attach} 17 | # print('reset: ', self.params_to_encode) 18 | info={} 19 | if self._params_to_attach: 20 | info['dynamics_params'] = list(self._params_to_attach.values()) 21 | else: 22 | info['dynamics_params'] = np.zeros(self._params_dim) 23 | return obs, info 24 | 25 | def step(self, action): 26 | obs, reward, done, info = super().step(action) 27 | if self._params_to_attach: 28 | info['dynamics_params'] = list(self._params_to_attach.values()) 29 | else: 30 | info['dynamics_params'] = np.zeros(self._params_dim) 31 | return obs, reward, done, info 32 | 33 | return DynamicsParams 34 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/class_wrappers/obs_delay_wrapper.py: -------------------------------------------------------------------------------- 1 | import copy 2 | from collections import deque 3 | 4 | def obs_delay_wrapper(Env, names, max_delay): 5 | def add_delay_to(env, obs): 6 | assert(all(name in obs for name in names)) 7 | for name in names: 8 | delay = getattr(env, 'obs_delay_' + name) 9 | queue = getattr(env, 'obs_delay_queue_' + name) 10 | queue.appendleft(copy.deepcopy(obs[name])) 11 | if len(queue) == delay + 1: # else keep it as-is 12 | obs[name] = queue.pop() 13 | return obs 14 | 15 | class ObservationDelay(Env): 16 | parameters_spec = { 17 | **Env.parameters_spec, 18 | **{'obs_delay_' + name: max_delay + 1 for name in names}, 19 | } 20 | 21 | def reset_props(self, **kwargs): 22 | tkeys = ['obs_delay_' + name for name in names] 23 | delays = {name: 0 for name in names} 24 | for name in names: 25 | if ('obs_delay_' + name) in kwargs: 26 | delays[name] = kwargs['obs_delay_' + name] 27 | for name in names: 28 | setattr(self, 'obs_delay_' + name, delays[name]) 29 | setattr(self, 'obs_delay_queue_' + name, deque(maxlen=max_delay + 1)) 30 | 31 | p2 = {} 32 | for k in kwargs: 33 | if k not in tkeys: 34 | p2[k] = kwargs[k] 35 | super().reset_props(**p2) 36 | self.params_dict.update(delays) 37 | 38 | 39 | def step(self, action): 40 | obs, reward, done, info = super().step(action) 41 | return add_delay_to(self, obs), reward, done, info 42 | 43 | def reset(self, **kwargs): 44 | return add_delay_to(self, super().reset(**kwargs)) 45 | 46 | return ObservationDelay 47 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/class_wrappers/obs_noise_wrapper.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def obs_noise_wrapper(Env, names, range_var, default): 4 | def add_noise_to(env, obs): 5 | assert(all(name in obs for name in names)) 6 | for name in names: 7 | var = getattr(env, 'obs_noise_' + name, default) 8 | noise = np.random.normal(scale=var, size=np.array(obs[name]).shape) 9 | obs[name] = obs[name] + noise 10 | return obs 11 | 12 | 13 | class ObservationNoise(Env): 14 | parameters_spec = { 15 | **Env.parameters_spec, 16 | **{'obs_noise_' + name: range_var for name in names}, 17 | } 18 | 19 | def reset_props(self, **kwargs): 20 | r = {'obs_noise_' + name: default for name in names} 21 | p2 = {} 22 | for k in kwargs: 23 | if k in r: r[k] = kwargs[k] 24 | else: p2[k] = kwargs[k] 25 | for k in r: 26 | setattr(self, k, r[k]) 27 | super().reset_props(**p2) 28 | self.params_dict.update(r) 29 | 30 | def step(self, action): 31 | obs, reward, done, info = super().step(action) 32 | return add_noise_to(self, obs), reward, done, info 33 | 34 | def reset(self, **kwargs): 35 | return add_noise_to(self, super().reset(**kwargs)) 36 | 37 | return ObservationNoise 38 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/controllers/__init__.py: -------------------------------------------------------------------------------- 1 | from .controller import Controller 2 | from .baxter_ik_controller import BaxterIKController 3 | from .sawyer_ik_controller import SawyerIKController 4 | from .panda_ik_controller import PandaIKController -------------------------------------------------------------------------------- /environment/robolite/robosuite/controllers/controller.py: -------------------------------------------------------------------------------- 1 | import abc # for abstract base class definitions 2 | 3 | 4 | class Controller(metaclass=abc.ABCMeta): 5 | """ 6 | Base class for all robot controllers. 7 | Defines basic interface for all controllers to adhere to. 8 | """ 9 | 10 | def __init__(self, bullet_data_path, robot_jpos_getter): 11 | """ 12 | Args: 13 | bullet_data_path (str): base path to bullet data. 14 | 15 | robot_jpos_getter (function): function that returns the position of the joints 16 | as a numpy array of the right dimension. 17 | """ 18 | raise NotImplementedError 19 | 20 | @abc.abstractmethod 21 | def get_control(self, *args, **kwargs): 22 | """ 23 | Retrieve a control input from the controller. 24 | """ 25 | raise NotImplementedError 26 | 27 | @abc.abstractmethod 28 | def sync_state(self): 29 | """ 30 | This function does internal bookkeeping to maintain 31 | consistency between the robot being controlled and 32 | the controller state. 33 | """ 34 | raise NotImplementedError 35 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/demo.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import robosuite as suite 3 | 4 | 5 | if __name__ == "__main__": 6 | 7 | # get the list of all environments 8 | envs = sorted(suite.environments.ALL_ENVS) 9 | 10 | # print info and select an environment 11 | print("Welcome to Surreal Robotics Suite v{}!".format(suite.__version__)) 12 | print(suite.__logo__) 13 | print("Here is a list of environments in the suite:\n") 14 | 15 | for k, env in enumerate(envs): 16 | print("[{}] {}".format(k, env)) 17 | print() 18 | try: 19 | s = input( 20 | "Choose an environment to run " 21 | + "(enter a number from 0 to {}): ".format(len(envs) - 1) 22 | ) 23 | # parse input into a number within range 24 | k = min(max(int(s), 0), len(envs)) 25 | except: 26 | print("Input is not valid. Use 0 by default.") 27 | k = 0 28 | 29 | # initialize the task 30 | env = suite.make( 31 | envs[k], 32 | has_renderer=True, 33 | ignore_done=True, 34 | use_camera_obs=False, 35 | control_freq=100, 36 | ) 37 | env.reset() 38 | env.viewer.set_camera(camera_id=0) 39 | 40 | # do visualization 41 | for i in range(1000): 42 | action = np.random.randn(env.dof) 43 | obs, reward, done, _ = env.step(action) 44 | env.render() 45 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/devices/README.md: -------------------------------------------------------------------------------- 1 | # Devices 2 | 3 | Devices are used to read user input and collect human demonstrations. Demonstrations can be collected by either using a keyboard or using a [SpaceNavigator 3D Mouse](https://www.3dconnexion.com/spacemouse_compact/en/) with the [collect_human_demonstrations](robosuite/scripts/collect_human_demonstrations.py) script. More generally, we support any interface that implements the [Device](device.py) abstract base class. In order to support your own custom device, simply subclass this base class and implement the required methods. 4 | 5 | ## Keyboard 6 | 7 | We support keyboard input through the GLFW window created by the mujoco-py renderer. 8 | 9 | **Keyboard controls** 10 | 11 | Note that the rendering window must be active for these commands to work. 12 | 13 | | Keys | Command | 14 | | :------: | :--------------------------------: | 15 | | q | reset simulation | 16 | | spacebar | toggle gripper (open/close) | 17 | | w-a-s-d | move arm horizontally in x-y plane | 18 | | r-f | move arm vertically | 19 | | z-x | rotate arm about x-axis | 20 | | t-g | rotate arm about y-axis | 21 | | c-v | rotate arm about z-axis | 22 | | ESC | quit | 23 | 24 | ## SpaceNavigator 3D Mouse 25 | 26 | We support the use of a [SpaceNavigator 3D Mouse](https://www.3dconnexion.com/spacemouse_compact/en/) as well. 27 | 28 | **SpaceNavigator 3D Mouse controls** 29 | 30 | | Control | Command | 31 | | :-----------------------: | :-----------------------------------: | 32 | | Right button | reset simulation | 33 | | Left button (hold) | close gripper | 34 | | Move mouse laterally | move arm horizontally in x-y plane | 35 | | Move mouse vertically | move arm vertically | 36 | | Twist mouse about an axis | rotate arm about a corresponding axis | 37 | | ESC (keyboard) | quit | 38 | 39 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/devices/__init__.py: -------------------------------------------------------------------------------- 1 | from .device import Device 2 | from .keyboard import Keyboard 3 | from .spacemouse import SpaceMouse 4 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/devices/device.py: -------------------------------------------------------------------------------- 1 | import abc # for abstract base class definitions 2 | 3 | 4 | class Device(metaclass=abc.ABCMeta): 5 | """ 6 | Base class for all robot controllers. 7 | Defines basic interface for all controllers to adhere to. 8 | """ 9 | 10 | @abc.abstractmethod 11 | def start_control(self): 12 | """ 13 | Method that should be called externally before controller can 14 | start receiving commands. 15 | """ 16 | raise NotImplementedError 17 | 18 | @abc.abstractmethod 19 | def get_controller_state(self): 20 | """Returns the current state of the device, a dictionary of pos, orn, grasp, and reset.""" 21 | raise NotImplementedError 22 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/environments/__init__.py: -------------------------------------------------------------------------------- 1 | from .base import REGISTERED_ENVS, MujocoEnv 2 | 3 | ALL_ENVS = REGISTERED_ENVS.keys() 4 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/kdl/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/kdl/__init__.py -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | from .world import MujocoWorldBase 3 | 4 | assets_root = os.path.join(os.path.dirname(__file__), "assets") 5 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/arenas/__init__.py: -------------------------------------------------------------------------------- 1 | from .arena import Arena 2 | from .bins_arena import BinsArena 3 | from .empty_arena import EmptyArena 4 | from .pegs_arena import PegsArena 5 | from .table_arena import TableArena 6 | from .table_cabinet_arena import TableCabinetArena 7 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/arenas/arena.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | from robosuite.models.base import MujocoXML 4 | from robosuite.utils.mjcf_utils import array_to_string, string_to_array 5 | from robosuite.utils.mjcf_utils import new_geom, new_body, new_joint 6 | 7 | 8 | class Arena(MujocoXML): 9 | """Base arena class.""" 10 | 11 | def set_origin(self, offset): 12 | """Applies a constant offset to all objects.""" 13 | offset = np.array(offset) 14 | for node in self.worldbody.findall("./*[@pos]"): 15 | cur_pos = string_to_array(node.get("pos")) 16 | new_pos = cur_pos + offset 17 | node.set("pos", array_to_string(new_pos)) 18 | 19 | def add_pos_indicator(self): 20 | """Adds a new position indicator.""" 21 | body = new_body(name="pos_indicator") 22 | body.append( 23 | new_geom( 24 | "sphere", 25 | [0.03], 26 | rgba=[1, 0, 0, 0.5], 27 | group=1, 28 | contype="0", 29 | conaffinity="0", 30 | ) 31 | ) 32 | body.append(new_joint(type="free", name="pos_indicator")) 33 | self.worldbody.append(body) 34 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/arenas/bins_arena.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from robosuite.models.arenas import Arena 3 | from robosuite.utils.mjcf_utils import xml_path_completion 4 | from robosuite.utils.mjcf_utils import array_to_string, string_to_array 5 | 6 | 7 | class BinsArena(Arena): 8 | """Workspace that contains two bins placed side by side.""" 9 | 10 | def __init__( 11 | self, table_full_size=(0.39, 0.49, 0.82), table_friction=(1, 0.005, 0.0001) 12 | ): 13 | """ 14 | Args: 15 | table_full_size: full dimensions of the table 16 | friction: friction parameters of the table 17 | """ 18 | super().__init__(xml_path_completion("arenas/bins_arena.xml")) 19 | 20 | self.table_full_size = np.array(table_full_size) 21 | self.table_half_size = self.table_full_size / 2 22 | self.table_friction = table_friction 23 | 24 | self.floor = self.worldbody.find("./geom[@name='floor']") 25 | self.bin1_body = self.worldbody.find("./body[@name='bin1']") 26 | self.bin2_body = self.worldbody.find("./body[@name='bin2']") 27 | 28 | self.configure_location() 29 | 30 | def configure_location(self): 31 | self.bottom_pos = np.array([0, 0, 0]) 32 | self.floor.set("pos", array_to_string(self.bottom_pos)) 33 | 34 | @property 35 | def bin_abs(self): 36 | """Returns the absolute position of table top""" 37 | return string_to_array(self.bin1_body.get("pos")) 38 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/arenas/empty_arena.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.arenas import Arena 2 | from robosuite.utils.mjcf_utils import xml_path_completion 3 | 4 | 5 | class EmptyArena(Arena): 6 | """Empty workspace.""" 7 | 8 | def __init__(self): 9 | super().__init__(xml_path_completion("arenas/empty_arena.xml")) 10 | self.floor = self.worldbody.find("./geom[@name='floor']") 11 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/arenas/pegs_arena.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from robosuite.models.arenas import Arena 3 | from robosuite.utils.mjcf_utils import xml_path_completion 4 | from robosuite.utils.mjcf_utils import array_to_string, string_to_array 5 | 6 | 7 | class PegsArena(Arena): 8 | """Workspace that contains a tabletop with two fixed pegs.""" 9 | 10 | def __init__( 11 | self, table_full_size=(0.45, 0.69, 0.82), table_friction=(1, 0.005, 0.0001) 12 | ): 13 | """ 14 | Args: 15 | table_full_size: full dimensions of the table 16 | table_friction: friction parameters of the table 17 | """ 18 | super().__init__(xml_path_completion("arenas/pegs_arena.xml")) 19 | 20 | self.table_full_size = np.array(table_full_size) 21 | self.table_half_size = self.table_full_size / 2 22 | self.table_friction = table_friction 23 | 24 | self.floor = self.worldbody.find("./geom[@name='floor']") 25 | self.table_body = self.worldbody.find("./body[@name='table']") 26 | self.peg1_body = self.worldbody.find("./body[@name='peg1']") 27 | self.peg2_body = self.worldbody.find("./body[@name='peg2']") 28 | self.table_collision = self.table_body.find("./geom[@name='table_collision']") 29 | 30 | self.configure_location() 31 | 32 | def configure_location(self): 33 | self.bottom_pos = np.array([0, 0, 0]) 34 | self.floor.set("pos", array_to_string(self.bottom_pos)) 35 | 36 | @property 37 | def table_top_abs(self): 38 | """ 39 | Returns the absolute position of table top. 40 | """ 41 | return string_to_array(self.table_body.get("pos")) 42 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/arenas/table_arena.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from robosuite.models.arenas import Arena 3 | from robosuite.utils.mjcf_utils import xml_path_completion 4 | from robosuite.utils.mjcf_utils import array_to_string, string_to_array 5 | 6 | 7 | class TableArena(Arena): 8 | """Workspace that contains an empty table.""" 9 | 10 | def __init__( 11 | self, table_full_size=(0.8, 0.8, 0.8), table_friction=(1, 0.005, 0.0001) 12 | ): 13 | """ 14 | Args: 15 | table_full_size: full dimensions of the table 16 | friction: friction parameters of the table 17 | """ 18 | super().__init__(xml_path_completion("arenas/table_arena.xml")) 19 | 20 | self.table_full_size = np.array(table_full_size) 21 | self.table_half_size = self.table_full_size / 2 22 | self.table_friction = table_friction 23 | 24 | self.floor = self.worldbody.find("./geom[@name='floor']") 25 | self.table_body = self.worldbody.find("./body[@name='table']") 26 | self.table_collision = self.table_body.find("./geom[@name='table_collision']") 27 | self.table_visual = self.table_body.find("./geom[@name='table_visual']") 28 | self.table_top = self.table_body.find("./site[@name='table_top']") 29 | 30 | self.configure_location() 31 | 32 | def configure_location(self): 33 | self.bottom_pos = np.array([0, 0, 0]) 34 | self.floor.set("pos", array_to_string(self.bottom_pos)) 35 | 36 | self.center_pos = self.bottom_pos + np.array([0, 0, self.table_half_size[2]]) # a good simulation pose 37 | self.table_body.set("pos", array_to_string(self.center_pos)) 38 | self.table_collision.set("size", array_to_string(self.table_half_size)) 39 | self.table_collision.set("friction", array_to_string(self.table_friction)) 40 | self.table_visual.set("size", array_to_string(self.table_half_size)) 41 | 42 | self.table_top.set( 43 | "pos", array_to_string(np.array([0, 0, self.table_half_size[2]])) 44 | ) 45 | 46 | @property 47 | def table_top_abs(self): 48 | """Returns the absolute position of table top""" 49 | table_height = np.array([0, 0, self.table_full_size[2]]) 50 | return string_to_array(self.floor.get("pos")) + table_height 51 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/cabinet/cabinet_body.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/arenas/cabinet/cabinet_body.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/cabinet/cabinet_door.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/arenas/cabinet/cabinet_door.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/cabinet/cabinet_knob.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/arenas/cabinet/cabinet_knob.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/empty_arena.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/mujoco_load_xml_test.py: -------------------------------------------------------------------------------- 1 | import mujoco_py 2 | from mujoco_py import load_model_from_path, MjSim, MjViewer 3 | import os 4 | # model = load_model_from_path('./table_arena.xml') 5 | model = load_model_from_path('./table_cabinet_arena.xml') 6 | 7 | sim = mujoco_py.MjSim(model) 8 | 9 | viewer = MjViewer(sim) 10 | t = 0 11 | while True: 12 | t += 1 13 | sim.step() 14 | viewer.render() 15 | 16 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/pegs_arena.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 | 36 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/table_arena.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 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/arenas/table_cabinet_arena_old.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 | 36 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/base.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/base/PEDESTAL.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/base/PEDESTAL.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/base/pedestal_link_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/base/pedestal_link_collision.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/head/H0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/head/H0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/head/H1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/head/H1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/lower_elbow/E1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/lower_elbow/E1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/lower_forearm/W1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/lower_forearm/W1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/lower_shoulder/S1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/lower_shoulder/S1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/torso/base_link.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/torso/base_link.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/torso/base_link_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/torso/base_link_collision.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/upper_elbow/E0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/upper_elbow/E0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/upper_forearm/W0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/upper_forearm/W0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/upper_shoulder/S0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/upper_shoulder/S0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/wrist/W2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/baxter_description/meshes/wrist/W2.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(franka_description) 3 | 4 | find_package(catkin REQUIRED) 5 | catkin_package(CATKIN_DEPENDS xacro) 6 | 7 | install(DIRECTORY meshes 8 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 9 | ) 10 | install(DIRECTORY robots 11 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 12 | ) 13 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | * @mainpage 3 | * @htmlinclude "manifest.html" 4 | * 5 | * Overview page for Franka Emika research robots: https://frankaemika.github.io 6 | */ 7 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/finger.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/finger.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/hand.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/hand.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link0.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link1.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link2.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link3.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link4.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link5.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link6.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link7.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/panda_description/meshes/collision/link7.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | franka_description 4 | 0.7.0 5 | franka_description contains URDF files and meshes of Franka Emika robots 6 | Franka Emika GmbH 7 | Apache 2.0 8 | 9 | http://wiki.ros.org/franka_description 10 | https://github.com/frankaemika/franka_ros 11 | https://github.com/frankaemika/franka_ros/issues 12 | Franka Emika GmbH 13 | 14 | catkin 15 | 16 | xacro 17 | 18 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: doxygen 2 | javadoc_autobrief: YES 3 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/urdf/hand.urdf: -------------------------------------------------------------------------------- 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 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/urdf/hand.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/urdf/panda_arm.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/panda_description/urdf/panda_arm_hand.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | 3 | project(sawyer_description) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | foreach(dir config meshes params urdf) 10 | install(DIRECTORY ${dir}/ 11 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir}) 12 | endforeach(dir) 13 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/launch/test_sawyer_description.launch.test: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | 20 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/PEDESTAL.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/PEDESTAL.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/base.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/base.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/head.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/head.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l2.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l3.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l3.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l4.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l4.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l5.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l5.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l6.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_ft/l6.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_mp1/l6.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_mp1/l6.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_mp3/l0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_mp3/l0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_mp3/l1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_mp3/l1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/base.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/base.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/head.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/head.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l2.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l3.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l3.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l4.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l4.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l5.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l5.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l6.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/l6.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/pedestal.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/meshes/sawyer_pv/pedestal.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sawyer_description 4 | 5.0.4 5 | 6 | Description of Sawyer Robot from Rethink Robotics. 7 | This package contains the URDF and meshes describing Sawyer. 8 | 9 | 10 | 11 | Rethink Robotics Inc. 12 | 13 | BSD 14 | http://sdk.rethinkrobotics.com/intera/ 15 | 16 | https://github.com/RethinkRobotics/sawyer_robot 17 | 18 | 19 | https://github.com/RethinkRobotics/sawyer_robot/issues 20 | 21 | Rethink Robotics Inc. 22 | catkin 23 | 24 | robot_state_publisher 25 | joint_state_publisher 26 | tf2_ros 27 | rviz 28 | 29 | 30 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/bullet_data/sawyer_description/params/named_poses.yaml: -------------------------------------------------------------------------------- 1 | # ------------------------------ Sawyer ------------------------------ 2 | named_poses: 3 | right: 4 | joint_names: ['right_j0', 'right_j1', 'right_j2', 'right_j3', 'right_j4', 'right_j5', 'right_j6'] 5 | poses: 6 | neutral: [0.00, -1.18, 0.00, 2.18, 0.00, 0.57, 3.3161] 7 | shipping: [0.00, -1.57, 0.00, 2.79, 0.00, -2.79, 3.3161] 8 | head: 9 | joint_names: ['head_pan'] 10 | poses: 11 | neutral: [0.00] 12 | shipping: [-3.14] 13 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/demonstrations/BaxterLift/demo.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/demonstrations/BaxterLift/demo.hdf5 -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/demonstrations/BaxterPegInHole/demo.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/demonstrations/BaxterPegInHole/demo.hdf5 -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/demonstrations/SawyerLift/demo.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/demonstrations/SawyerLift/demo.hdf5 -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/demonstrations/SawyerNutAssembly/demo.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/demonstrations/SawyerNutAssembly/demo.hdf5 -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/demonstrations/SawyerPickPlace/demo.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/demonstrations/SawyerPickPlace/demo.hdf5 -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/demonstrations/SawyerStack/demo.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/demonstrations/SawyerStack/demo.hdf5 -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/basic_hard_tip.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/basic_hard_tip.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/basic_soft_tip.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/basic_soft_tip.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/electric_gripper_w_fingers.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/electric_gripper_w_fingers.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/extended_narrow.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/extended_narrow.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/extended_wide.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/extended_wide.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/limiter.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/limiter.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/paddle_tip.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/paddle_tip.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/standard_wide.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/deprecated/standard_wide.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_a.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_a.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_a_old.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_a_old.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_b.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_b.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_c.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_longer_c.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_vis_tactile.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/finger_vis_tactile.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/hand.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/hand.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/hand_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/hand_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/pad.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/panda_gripper/pad.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/pr2_gripper/gripper_palm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/pr2_gripper/gripper_palm.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/pr2_gripper/l_finger.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/pr2_gripper/l_finger.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/pr2_gripper/l_finger_tip.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/pr2_gripper/l_finger_tip.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/adapter_plate.dae.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/adapter_plate.dae.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/adapter_plate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/adapter_plate.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_adapter_plate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_adapter_plate.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_base.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_0_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_0_L.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_0_R.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_0_R.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_1_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_1_L.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_1_R.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_1_R.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_2_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_2_L.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_2_R.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_2_R.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_3_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_3_L.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_3_R.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_gripper/robotiq_85_gripper_joint_3_R.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_2.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_3.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/link_3.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/palm.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/robotiq_s_gripper/palm.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/two_finger_gripper/electric_gripper_base.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/two_finger_gripper/electric_gripper_base.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/two_finger_gripper/half_round_tip.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/two_finger_gripper/half_round_tip.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/meshes/two_finger_gripper/standard_narrow.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/grippers/meshes/two_finger_gripper/standard_narrow.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/grippers/mujoco_load_xml_test.py: -------------------------------------------------------------------------------- 1 | import mujoco_py 2 | from mujoco_py import load_model_from_path, MjSim, MjViewer 3 | import os 4 | # model = load_model_from_path('./cabinet.xml') 5 | # model = load_model_from_path('./tactile_finger.xml') 6 | model = load_model_from_path('./panda_gripper.xml') 7 | 8 | sim = mujoco_py.MjSim(model) 9 | 10 | viewer = MjViewer(sim) 11 | t = 0 12 | while True: 13 | t += 1 14 | sim.step() 15 | viewer.render() 16 | 17 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/kdl/panda_urdf/hand.urdf: -------------------------------------------------------------------------------- 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 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/bottle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/bread-visual.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/bread.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/cabinet/cabinet_body.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/cabinet/cabinet_body.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/cabinet/cabinet_door.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/cabinet/cabinet_door.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/cabinet/cabinet_knob.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/cabinet/cabinet_knob.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/cabinet_old.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/can-visual.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/can.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/cereal-visual.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/cereal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/bottle.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/bottle.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/bread.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/bread.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/can.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/can.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/cereal.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/cereal.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/handles.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/handles.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/lemon.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/lemon.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/meshes/milk.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/objects/meshes/milk.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/milk-visual.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/milk.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/mujoco_load_xml_test.py: -------------------------------------------------------------------------------- 1 | import mujoco_py 2 | from mujoco_py import load_model_from_path, MjSim, MjViewer 3 | import os 4 | # model = load_model_from_path('./cabinet.xml') 5 | model = load_model_from_path('./soft_cuboid.xml') 6 | 7 | sim = mujoco_py.MjSim(model) 8 | 9 | viewer = MjViewer(sim) 10 | t = 0 11 | while True: 12 | t += 1 13 | sim.step() 14 | viewer.render() 15 | 16 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/plate-with-hole.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/round-nut.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 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/objects/square-nut.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/base/PEDESTAL.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/base/PEDESTAL.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/base/pedestal_link_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/base/pedestal_link_collision.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/electric_gripper_base.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/electric_gripper_base.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/extended_narrow.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/extended_narrow.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/extended_wide.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/extended_wide.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/half_round_tip.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/half_round_tip.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/paddle_tip.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/electric_gripper/fingers/paddle_tip.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/head/H0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/head/H0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/head/H1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/head/H1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/lower_elbow/E1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/lower_elbow/E1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/lower_forearm/W1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/lower_forearm/W1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/lower_shoulder/S1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/lower_shoulder/S1.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/torso/base_link.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/torso/base_link.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/torso/base_link_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/torso/base_link_collision.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/upper_elbow/E0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/upper_elbow/E0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/upper_forearm/W0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/upper_forearm/W0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/upper_shoulder/S0.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/upper_shoulder/S0.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/baxter/meshes/wrist/W2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/baxter/meshes/wrist/W2.STL -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/finger.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/finger.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/finger_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/finger_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/hand.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/hand.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/hand_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/hand_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link0.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link0_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link0_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link1.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link1_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link1_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link2.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link2_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link2_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link3.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link3_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link3_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link4.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link4_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link4_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link5.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link5_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link5_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link6.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link6_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link6_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link7.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link7.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/link7_vis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/link7_vis.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/panda/meshes/pedestal.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/panda/meshes/pedestal.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/base.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/head.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l0.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l1.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l2.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l3.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l4.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l5.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/l6.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/meshes/pedestal.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/meshes/pedestal.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/base.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/head.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l0.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l1.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l2.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l3.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l4.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l5.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/l6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/l6.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/original/pedestal.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/original/pedestal.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/base.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/head.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l0.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l1.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l2.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l3.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l4.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l5.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/l6.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/pedestal.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/robots/sawyer/smoothed/pedestal.stl -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/bread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/bread.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/can.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/can.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/ceramic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/ceramic.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/cereal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/cereal.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/clay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/clay.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/dark-wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/dark-wood.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/glass.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/lemon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/lemon.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/light-wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/light-wood.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/assets/textures/metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/environment/robolite/robosuite/models/assets/textures/metal.png -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/__init__.py: -------------------------------------------------------------------------------- 1 | from .gripper import Gripper 2 | from .gripper_factory import gripper_factory 3 | from .two_finger_gripper import TwoFingerGripper, LeftTwoFingerGripper 4 | from .gripper_tester import GripperTester 5 | from .pr2_gripper import PR2Gripper 6 | from .pushing_gripper import PushingGripper 7 | from .robotiq_gripper import RobotiqGripper 8 | from .robotiq_three_finger_gripper import RobotiqThreeFingerGripper 9 | from .panda_gripper import PandaGripper 10 | from .panda_gripper_tactile import PandaGripperTactile 11 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/gripper.py: -------------------------------------------------------------------------------- 1 | """ 2 | Defines the base class of all grippers 3 | """ 4 | from robosuite.models.base import MujocoXML 5 | 6 | 7 | class Gripper(MujocoXML): 8 | """Base class for grippers""" 9 | 10 | def __init__(self, fname): 11 | super().__init__(fname) 12 | 13 | def format_action(self, action): 14 | """ 15 | Given (-1,1) abstract control as np-array 16 | returns the (-1,1) control signals 17 | for underlying actuators as 1-d np array 18 | """ 19 | raise NotImplementedError 20 | 21 | @property 22 | def init_qpos(self): 23 | """ 24 | Returns rest(open) qpos of the gripper 25 | """ 26 | raise NotImplementedError 27 | 28 | @property 29 | def dof(self): 30 | """ 31 | Returns the number of DOF of the gripper 32 | """ 33 | raise NotImplementedError 34 | 35 | @property 36 | def joints(self): 37 | """ 38 | Returns a list of joint names of the gripper 39 | """ 40 | raise NotImplementedError 41 | 42 | def contact_geoms(self): 43 | """ 44 | Returns a list of names corresponding to the geoms 45 | used to determine contact with the gripper. 46 | """ 47 | return [] 48 | 49 | @property 50 | def visualization_sites(self): 51 | """ 52 | Returns a list of sites corresponding to the geoms 53 | used to aid visualization by human. 54 | (and should be hidden from robots) 55 | """ 56 | return [] 57 | 58 | @property 59 | def visualization_geoms(self): 60 | """ 61 | Returns a list of sites corresponding to the geoms 62 | used to aid visualization by human. 63 | (and should be hidden from robots) 64 | """ 65 | return [] 66 | 67 | @property 68 | def left_finger_geoms(self): 69 | """ 70 | Geoms corresponding to left finger of a gripper 71 | """ 72 | raise NotImplementedError 73 | 74 | # @property 75 | # def right_finger_geoms(self): 76 | # """ 77 | # Geoms corresponding to raise finger of a gripper 78 | # """ 79 | # raise NotImplementedError 80 | 81 | def hide_visualization(self): 82 | """ 83 | Hides all visualization geoms and sites. 84 | This should be called before rendering to agents 85 | """ 86 | for site_name in self.visualization_sites: 87 | site = self.worldbody.find(".//site[@name='{}']".format(site_name)) 88 | site.set("rgba", "0 0 0 0") 89 | for geom_name in self.visualization_geoms: 90 | geom = self.worldbody.find(".//geom[@name='{}']".format(geom_name)) 91 | geom.set("rgba", "0 0 0 0") 92 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/gripper_factory.py: -------------------------------------------------------------------------------- 1 | """ 2 | Defines a string based method of initializing grippers 3 | """ 4 | from .two_finger_gripper import TwoFingerGripper, LeftTwoFingerGripper 5 | from .pr2_gripper import PR2Gripper 6 | from .robotiq_gripper import RobotiqGripper 7 | from .pushing_gripper import PushingGripper 8 | from .robotiq_three_finger_gripper import RobotiqThreeFingerGripper 9 | from .panda_gripper import PandaGripper 10 | from .panda_gripper_tactile import PandaGripperTactile 11 | 12 | 13 | 14 | def gripper_factory(name): 15 | """ 16 | Genreator for grippers 17 | 18 | Creates a Gripper instance with the provided name. 19 | 20 | Args: 21 | name: the name of the gripper class 22 | 23 | Returns: 24 | gripper: Gripper instance 25 | 26 | Raises: 27 | XMLError: [description] 28 | """ 29 | if name == "TwoFingerGripper": 30 | return TwoFingerGripper() 31 | if name == "LeftTwoFingerGripper": 32 | return LeftTwoFingerGripper() 33 | if name == "PR2Gripper": 34 | return PR2Gripper() 35 | if name == "RobotiqGripper": 36 | return RobotiqGripper() 37 | if name == "PushingGripper": 38 | return PushingGripper() 39 | if name == "RobotiqThreeFingerGripper": 40 | return RobotiqThreeFingerGripper() 41 | if name == "PandaGripper": 42 | return PandaGripper() 43 | if name == "PandaGripperTactile": 44 | return PandaGripperTactile() 45 | raise ValueError("Unknown gripper name {}".format(name)) 46 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/panda_gripper.py: -------------------------------------------------------------------------------- 1 | """ 2 | Gripper for Franka's Panda (has two fingers). 3 | """ 4 | import numpy as np 5 | from robosuite.utils.mjcf_utils import xml_path_completion 6 | from robosuite.models.grippers.gripper import Gripper 7 | 8 | 9 | class PandaGripperBase(Gripper): 10 | """ 11 | Gripper for Franka's Panda (has two fingers). 12 | """ 13 | 14 | def __init__(self, path=None): 15 | if path: 16 | super().__init__(path) 17 | else: 18 | super().__init__(xml_path_completion("grippers/panda_gripper.xml")) 19 | 20 | def format_action(self, action): 21 | return action 22 | 23 | @property 24 | def init_qpos(self): 25 | return np.array([0.020833, -0.020833]) 26 | 27 | @property 28 | def joints(self): 29 | return ["finger_joint1", "finger_joint2"] 30 | 31 | @property 32 | def dof(self): 33 | return 2 34 | 35 | @property 36 | def visualization_sites(self): 37 | return ["grip_site", "grip_site_cylinder"] 38 | 39 | def contact_geoms(self): 40 | return [ 41 | "hand_collision", 42 | "finger1_collision", 43 | "finger2_collision", 44 | "finger1_tip_collision", 45 | "finger2_tip_collision", 46 | ] 47 | 48 | @property 49 | def left_finger_geoms(self): 50 | return [ 51 | "finger1_tip_collision", 52 | ] 53 | 54 | @property 55 | def right_finger_geoms(self): 56 | return [ 57 | "finger2_tip_collision", 58 | ] 59 | 60 | 61 | class PandaGripper(PandaGripperBase): 62 | """ 63 | Modifies PandaGripperBase to only take one action. 64 | """ 65 | 66 | def format_action(self, action): 67 | """ 68 | 1 => closed, -1 => open 69 | """ 70 | assert len(action) == 1 71 | return np.array([-1 * action[0], 1 * action[0]]) 72 | 73 | @property 74 | def dof(self): 75 | return 1 76 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/panda_gripper_tactile.py: -------------------------------------------------------------------------------- 1 | """ 2 | Gripper for Franka's Panda (has two fingers). 3 | """ 4 | import numpy as np 5 | from robosuite.utils.mjcf_utils import xml_path_completion 6 | from robosuite.models.grippers.panda_gripper import PandaGripper 7 | 8 | 9 | class PandaGripperTactile(PandaGripper): 10 | """ 11 | Gripper for Franka's Panda (has two fingers) with tactile sensors attached. 12 | """ 13 | 14 | def __init__(self): 15 | super().__init__(xml_path_completion("grippers/panda_gripper_tactile.xml")) 16 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/pr2_gripper.py: -------------------------------------------------------------------------------- 1 | """ 2 | 4 dof gripper with two fingers and its open/close variant 3 | """ 4 | import numpy as np 5 | 6 | from robosuite.models.grippers import Gripper 7 | from robosuite.utils.mjcf_utils import xml_path_completion 8 | 9 | 10 | class PR2GripperBase(Gripper): 11 | """ 12 | A 4 dof gripper with two fingers. 13 | """ 14 | 15 | def __init__(self): 16 | super().__init__(xml_path_completion("grippers/pr2_gripper.xml")) 17 | 18 | def format_action(self, action): 19 | return action 20 | 21 | @property 22 | def init_qpos(self): 23 | return np.zeros(4) 24 | 25 | @property 26 | def joints(self): 27 | return [ 28 | "r_gripper_r_finger_joint", 29 | "r_gripper_l_finger_joint", 30 | "r_gripper_r_finger_tip_joint", 31 | "r_gripper_l_finger_tip_joint", 32 | ] 33 | 34 | @property 35 | def dof(self): 36 | return 4 37 | 38 | def contact_geoms(self): 39 | return [ 40 | "r_gripper_l_finger", 41 | "r_gripper_l_finger_tip", 42 | "r_gripper_r_finger", 43 | "r_gripper_r_finger_tip", 44 | ] 45 | 46 | @property 47 | def visualization_sites(self): 48 | return ["grip_site", "grip_site_cylinder"] 49 | 50 | @property 51 | def left_finger_geoms(self): 52 | return ["r_gripper_l_finger", "r_gripper_l_finger_tip"] 53 | 54 | @property 55 | def right_finger_geoms(self): 56 | return ["r_gripper_r_finger", "r_gripper_r_finger_tip"] 57 | 58 | 59 | class PR2Gripper(PR2GripperBase): 60 | """ 61 | Open/close variant of PR2 gripper. 62 | """ 63 | 64 | def format_action(self, action): 65 | """ 66 | Args: 67 | action: 1 => open, -1 => closed 68 | """ 69 | assert len(action) == 1 70 | return np.ones(4) * action 71 | 72 | @property 73 | def dof(self): 74 | return 1 75 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/pushing_gripper.py: -------------------------------------------------------------------------------- 1 | """ 2 | A version of TwoFingerGripper but always closed. 3 | """ 4 | import numpy as np 5 | from robosuite.models.grippers.two_finger_gripper import TwoFingerGripper 6 | 7 | 8 | class PushingGripper(TwoFingerGripper): 9 | """ 10 | Same as TwoFingerGripper, but always closed 11 | """ 12 | 13 | def format_action(self, action): 14 | return np.array([1, -1]) 15 | 16 | @property 17 | def dof(self): 18 | return 1 19 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/robotiq_gripper.py: -------------------------------------------------------------------------------- 1 | """ 2 | 6-DoF gripper with its open/close variant 3 | """ 4 | import numpy as np 5 | 6 | from robosuite.models.grippers import Gripper 7 | from robosuite.utils.mjcf_utils import xml_path_completion 8 | 9 | 10 | class RobotiqGripperBase(Gripper): 11 | """ 12 | 6-DoF Robotiq gripper. 13 | """ 14 | 15 | def __init__(self): 16 | super().__init__(xml_path_completion("grippers/robotiq_gripper.xml")) 17 | 18 | @property 19 | def init_qpos(self): 20 | return [3.3161, 0., 0., 0., 0., 0.] 21 | 22 | @property 23 | def joints(self): 24 | return [ 25 | "robotiq_85_left_knuckle_joint", 26 | "robotiq_85_left_inner_knuckle_joint", 27 | "robotiq_85_left_finger_tip_joint", 28 | "robotiq_85_right_knuckle_joint", 29 | "robotiq_85_right_inner_knuckle_joint", 30 | "robotiq_85_right_finger_tip_joint", 31 | ] 32 | 33 | @property 34 | def dof(self): 35 | return 6 36 | 37 | def contact_geoms(self): 38 | return [ 39 | "robotiq_85_gripper_joint_0_L", 40 | "robotiq_85_gripper_joint_1_L", 41 | "robotiq_85_gripper_joint_0_R", 42 | "robotiq_85_gripper_joint_1_R", 43 | "robotiq_85_gripper_joint_2_L", 44 | "robotiq_85_gripper_joint_3_L", 45 | "robotiq_85_gripper_joint_2_R", 46 | "robotiq_85_gripper_joint_3_R", 47 | ] 48 | 49 | @property 50 | def visualization_sites(self): 51 | return ["grip_site", "grip_site_cylinder"] 52 | 53 | @property 54 | def left_finger_geoms(self): 55 | return [ 56 | "robotiq_85_gripper_joint_0_L", 57 | "robotiq_85_gripper_joint_1_L", 58 | "robotiq_85_gripper_joint_2_L", 59 | "robotiq_85_gripper_joint_3_L", 60 | ] 61 | 62 | @property 63 | def right_finger_geoms(self): 64 | return [ 65 | "robotiq_85_gripper_joint_0_R", 66 | "robotiq_85_gripper_joint_1_R", 67 | "robotiq_85_gripper_joint_2_R", 68 | "robotiq_85_gripper_joint_3_R", 69 | ] 70 | 71 | 72 | class RobotiqGripper(RobotiqGripperBase): 73 | """ 74 | 1-DoF variant of RobotiqGripperBase. 75 | """ 76 | 77 | def format_action(self, action): 78 | """ 79 | Args: 80 | action: 1 => open, -1 => closed 81 | """ 82 | assert len(action) == 1 83 | return -1 * np.ones(6) * action 84 | 85 | @property 86 | def dof(self): 87 | return 1 88 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/grippers/robotiq_three_finger_gripper.py: -------------------------------------------------------------------------------- 1 | """ 2 | Gripper with 11-DoF controlling three fingers and its open/close variant. 3 | """ 4 | import numpy as np 5 | 6 | from robosuite.models.grippers import Gripper 7 | from robosuite.utils.mjcf_utils import xml_path_completion 8 | 9 | 10 | class RobotiqThreeFingerGripperBase(Gripper): 11 | """ 12 | Gripper with 11 dof controlling three fingers. 13 | """ 14 | 15 | def __init__(self): 16 | super().__init__(xml_path_completion("grippers/robotiq_gripper_s.xml")) 17 | 18 | def format_action(self, action): 19 | return action 20 | 21 | @property 22 | def init_qpos(self): 23 | return np.zeros(11) 24 | 25 | @property 26 | def joints(self): 27 | return [ 28 | "palm_finger_1_joint", 29 | "finger_1_joint_1", 30 | "finger_1_joint_2", 31 | "finger_1_joint_3", 32 | "palm_finger_2_joint", 33 | "finger_2_joint_1", 34 | "finger_2_joint_2", 35 | "finger_2_joint_3", 36 | "finger_middle_joint_1", 37 | "finger_middle_joint_2", 38 | "finger_middle_joint_3", 39 | ] 40 | 41 | @property 42 | def dof(self): 43 | return 11 44 | 45 | def contact_geoms(self): 46 | return [ 47 | "f1_l0", 48 | "f1_l1", 49 | "f1_l2", 50 | "f1_l3", 51 | "f2_l0", 52 | "f2_l1", 53 | "f2_l2", 54 | "f2_l3", 55 | "f3_l0", 56 | "f3_l1", 57 | "f3_l2", 58 | "f3_l3", 59 | ] 60 | 61 | @property 62 | def visualization_sites(self): 63 | return ["grip_site", "grip_site_cylinder"] 64 | 65 | 66 | class RobotiqThreeFingerGripper(RobotiqThreeFingerGripperBase): 67 | """ 68 | 1-DoF variant of RobotiqThreeFingerGripperBase. 69 | """ 70 | 71 | def format_action(self, action): 72 | """ 73 | Args: 74 | action: 1 => open, -1 => closed 75 | """ 76 | movement = np.array([0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1]) 77 | return -1 * movement * action 78 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/objects/__init__.py: -------------------------------------------------------------------------------- 1 | from .objects import MujocoObject, MujocoXMLObject, MujocoGeneratedObject 2 | 3 | from .xml_objects import ( 4 | BottleObject, 5 | CanObject, 6 | LemonObject, 7 | MilkObject, 8 | BreadObject, 9 | CerealObject, 10 | SquareNutObject, 11 | RoundNutObject, 12 | MilkVisualObject, 13 | BreadVisualObject, 14 | CerealVisualObject, 15 | CanVisualObject, 16 | PlateWithHoleObject, 17 | ) 18 | 19 | from .generated_objects import ( 20 | PotWithHandlesObject, 21 | BoxObject, 22 | FullyFrictionalBoxObject, 23 | CylinderObject, 24 | BallObject, 25 | CapsuleObject, 26 | ) 27 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/robots/__init__.py: -------------------------------------------------------------------------------- 1 | from .robot import Robot 2 | from .sawyer_robot import Sawyer 3 | from .baxter_robot import Baxter 4 | from .panda_robot import Panda 5 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/robots/baxter_robot.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from robosuite.models.robots.robot import Robot 3 | from robosuite.utils.mjcf_utils import xml_path_completion, array_to_string 4 | 5 | 6 | class Baxter(Robot): 7 | """Baxter is a hunky bimanual robot designed by Rethink Robotics.""" 8 | 9 | def __init__(self): 10 | super().__init__(xml_path_completion("robots/baxter/robot.xml")) 11 | 12 | self.bottom_offset = np.array([0, 0, -0.913]) 13 | self.left_hand = self.worldbody.find(".//body[@name='left_hand']") 14 | 15 | def set_base_xpos(self, pos): 16 | """Places the robot on position @pos.""" 17 | node = self.worldbody.find("./body[@name='base']") 18 | node.set("pos", array_to_string(pos - self.bottom_offset)) 19 | 20 | @property 21 | def dof(self): 22 | return 14 23 | 24 | @property 25 | def joints(self): 26 | out = [] 27 | for s in ["right_", "left_"]: 28 | out.extend(s + a for a in ["s0", "s1", "e0", "e1", "w0", "w1", "w2"]) 29 | return out 30 | 31 | @property 32 | def init_qpos(self): 33 | # Arms ready to work on the table 34 | return np.array([ 35 | 0.535, -0.093, 0.038, 0.166, 0.643, 1.960, -1.297, 36 | -0.518, -0.026, -0.076, 0.175, -0.748, 1.641, -0.158]) 37 | 38 | # Arms half extended 39 | return np.array([ 40 | 0.752, -0.038, -0.021, 0.161, 0.348, 2.095, -0.531, 41 | -0.585, -0.117, -0.037, 0.164, -0.536, 1.543, 0.204]) 42 | 43 | # Arms fully extended 44 | return np.zeros(14) 45 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/robots/panda_robot.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from robosuite.models.robots.robot import Robot 3 | from robosuite.utils.mjcf_utils import xml_path_completion, array_to_string 4 | 5 | 6 | class Panda(Robot): 7 | """Panda is a sensitive single-arm robot designed by Franka.""" 8 | 9 | def __init__(self): 10 | super().__init__(xml_path_completion("robots/panda/robot.xml")) 11 | 12 | self.bottom_offset = np.array([0, 0, -0.913]) 13 | self.set_joint_damping() 14 | self._model_name = "panda" 15 | # Careful of init_qpos -- certain init poses cause ik controller to go unstable (e.g: pi/4 instead of -pi/4 16 | # for the final joint angle) 17 | self._init_qpos = np.array([0, np.pi / 16.0, 0.00, -np.pi / 2.0 - np.pi / 3.0, 0.00, np.pi - 0.2, -np.pi/4]) 18 | 19 | def set_base_xpos(self, pos): 20 | """Places the robot on position @pos.""" 21 | node = self.worldbody.find("./body[@name='link0']") 22 | node.set("pos", array_to_string(pos - self.bottom_offset)) 23 | 24 | def set_joint_damping(self, damping=np.array((0.1, 0.1, 0.1, 0.1, 0.1, 0.01, 0.01))): 25 | """Set joint damping """ 26 | body = self._base_body 27 | for i in range(len(self._link_body)): 28 | body = body.find("./body[@name='{}']".format(self._link_body[i])) 29 | joint = body.find("./joint[@name='{}']".format(self._joints[i])) 30 | joint.set("damping", array_to_string(np.array([damping[i]]))) 31 | 32 | def set_joint_frictionloss(self, friction=np.array((0.1, 0.1, 0.1, 0.1, 0.1, 0.01, 0.01))): 33 | """Set joint friction loss (static friction)""" 34 | body = self._base_body 35 | for i in range(len(self._link_body)): 36 | body = body.find("./body[@name='{}']".format(self._link_body[i])) 37 | joint = body.find("./joint[@name='{}']".format(self._joints[i])) 38 | joint.set("frictionloss", array_to_string(np.array([friction[i]]))) 39 | 40 | @property 41 | def dof(self): 42 | return 7 43 | 44 | @property 45 | def joints(self): 46 | return ["joint{}".format(x) for x in range(1, 8)] 47 | 48 | @property 49 | def init_qpos(self): 50 | return self._init_qpos 51 | 52 | @property 53 | def contact_geoms(self): 54 | return ["link{}_collision".format(x) for x in range(1, 8)] 55 | 56 | @property 57 | def _base_body(self): 58 | node = self.worldbody.find("./body[@name='link0']") 59 | return node 60 | 61 | @property 62 | def _link_body(self): 63 | return ["link1", "link2", "link3", "link4", "link5", "link6", "link7"] 64 | 65 | @property 66 | def _joints(self): 67 | return ["joint1", "joint2", "joint3", "joint4", "joint5", "joint6", "joint7"] 68 | 69 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/robots/robot.py: -------------------------------------------------------------------------------- 1 | from collections import OrderedDict 2 | 3 | from robosuite.models.base import MujocoXML 4 | from robosuite.utils import XMLError 5 | 6 | 7 | class Robot(MujocoXML): 8 | """Base class for all robot models.""" 9 | 10 | def __init__(self, fname): 11 | """Initializes from file @fname.""" 12 | super().__init__(fname) 13 | # key: gripper name and value: gripper model 14 | self.grippers = OrderedDict() 15 | 16 | def add_gripper(self, arm_name, gripper): 17 | """ 18 | Mounts gripper to arm. 19 | 20 | Throws error if robot already has a gripper or gripper type is incorrect. 21 | 22 | Args: 23 | arm_name (str): name of arm mount 24 | gripper (MujocoGripper instance): gripper MJCF model 25 | """ 26 | if arm_name in self.grippers: 27 | raise ValueError("Attempts to add multiple grippers to one body") 28 | 29 | arm_subtree = self.worldbody.find(".//body[@name='{}']".format(arm_name)) 30 | 31 | for actuator in gripper.actuator: 32 | 33 | if actuator.get("name") is None: 34 | raise XMLError("Actuator has no name") 35 | 36 | if not actuator.get("name").startswith("gripper"): 37 | raise XMLError( 38 | "Actuator name {} does not have prefix 'gripper'".format( 39 | actuator.get("name") 40 | ) 41 | ) 42 | 43 | for body in gripper.worldbody: 44 | arm_subtree.append(body) 45 | 46 | self.merge(gripper, merge_body=False) 47 | self.grippers[arm_name] = gripper 48 | 49 | @property 50 | def dof(self): 51 | """Returns the number of DOF of the robot, not including gripper.""" 52 | raise NotImplementedError 53 | 54 | @property 55 | def joints(self): 56 | """Returns a list of joint names of the robot.""" 57 | raise NotImplementedError 58 | 59 | @property 60 | def init_qpos(self): 61 | """Returns default qpos.""" 62 | raise NotImplementedError 63 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/robots/sawyer_robot.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from robosuite.models.robots.robot import Robot 3 | from robosuite.utils.mjcf_utils import xml_path_completion, array_to_string 4 | 5 | 6 | class Sawyer(Robot): 7 | """Sawyer is a witty single-arm robot designed by Rethink Robotics.""" 8 | 9 | def __init__(self): 10 | super().__init__(xml_path_completion("robots/sawyer/robot.xml")) 11 | 12 | self.bottom_offset = np.array([0, 0, -0.913]) 13 | 14 | def set_base_xpos(self, pos): 15 | """Places the robot on position @pos.""" 16 | node = self.worldbody.find("./body[@name='base']") 17 | node.set("pos", array_to_string(pos - self.bottom_offset)) 18 | 19 | @property 20 | def dof(self): 21 | return 7 22 | 23 | @property 24 | def joints(self): 25 | return ["right_j{}".format(x) for x in range(7)] 26 | 27 | @property 28 | def init_qpos(self): 29 | return np.array([0, -1.18, 0.00, 2.18, 0.00, 0.57, 3.3161]) 30 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | from .task import Task 2 | 3 | from .placement_sampler import ( 4 | ObjectPositionSampler, 5 | UniformRandomSampler, 6 | UniformRandomPegsSampler, 7 | UniformRandomSamplerObjectSpecific, 8 | ) 9 | 10 | from .pick_place_task import PickPlaceTask 11 | from .nut_assembly_task import NutAssemblyTask 12 | from .table_top_task import TableTopTask 13 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/tasks/task.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.world import MujocoWorldBase 2 | 3 | 4 | class Task(MujocoWorldBase): 5 | """ 6 | Base class for creating MJCF model of a task. 7 | 8 | A task typically involves a robot interacting with objects in an arena 9 | (workshpace). The purpose of a task class is to generate a MJCF model 10 | of the task by combining the MJCF models of each component together and 11 | place them to the right positions. Object placement can be done by 12 | ad-hoc methods or placement samplers. 13 | """ 14 | 15 | def merge_robot(self, mujoco_robot): 16 | """Adds robot model to the MJCF model.""" 17 | pass 18 | 19 | def merge_arena(self, mujoco_arena): 20 | """Adds arena model to the MJCF model.""" 21 | pass 22 | 23 | def merge_objects(self, mujoco_objects): 24 | """Adds physical objects to the MJCF model.""" 25 | pass 26 | 27 | def merge_visual(self, mujoco_objects): 28 | """Adds visual objects to the MJCF model.""" 29 | 30 | def place_objects(self): 31 | """Places objects randomly until no collisions or max iterations hit.""" 32 | pass 33 | 34 | def place_visual(self): 35 | """Places visual objects randomly until no collisions or max iterations hit.""" 36 | pass 37 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/models/world.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.base import MujocoXML 2 | from robosuite.utils.mjcf_utils import xml_path_completion 3 | 4 | 5 | class MujocoWorldBase(MujocoXML): 6 | """Base class to inherit all mujoco worlds from.""" 7 | 8 | def __init__(self): 9 | super().__init__(xml_path_completion("base.xml")) 10 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/README.md: -------------------------------------------------------------------------------- 1 | Scripts 2 | ======= 3 | 4 | This folder contains a collection of scripts to demonstrate the functionalities of robosuite. Check the documentation in the script files for detailed instructions. -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/browse_mjcf_model.py: -------------------------------------------------------------------------------- 1 | """Visualize MJCF models. 2 | 3 | Loads MJCF XML models from file and renders it on screen. 4 | 5 | Example: 6 | $ python browse_arena_model.py --filepath ../models/assets/arenas/table_arena.xml 7 | """ 8 | 9 | import sys 10 | import argparse 11 | import numpy as np 12 | import os 13 | 14 | from mujoco_py import load_model_from_path 15 | from mujoco_py import MjSim, MjViewer 16 | 17 | import robosuite 18 | 19 | 20 | if __name__ == "__main__": 21 | 22 | arena_file = os.path.join(robosuite.models.assets_root, "arenas/pegs_arena.xml") 23 | 24 | parser = argparse.ArgumentParser() 25 | parser.add_argument("--filepath", type=str, default=arena_file) 26 | args = parser.parse_args() 27 | 28 | model = load_model_from_path(args.filepath) 29 | sim = MjSim(model) 30 | viewer = MjViewer(sim) 31 | 32 | print("Press ESC to exit...") 33 | while True: 34 | sim.step() 35 | viewer.render() 36 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/compile_mjcf_model.py: -------------------------------------------------------------------------------- 1 | """Loads a raw mjcf file and saves a compiled mjcf file. 2 | 3 | This avoids mujoco-py from complaining about .urdf extension. 4 | Also allows assets to be compiled properly. 5 | 6 | Example: 7 | $ python compile_mjcf_model.py source_mjcf.xml target_mjcf.xml 8 | """ 9 | 10 | import os 11 | import sys 12 | from shutil import copyfile 13 | from mujoco_py import load_model_from_path 14 | 15 | 16 | def print_usage(): 17 | print("""python compile.py input_file output_file""") 18 | 19 | 20 | if __name__ == "__main__": 21 | 22 | if len(sys.argv) != 3: 23 | print_usage() 24 | exit(0) 25 | 26 | input_file = sys.argv[1] 27 | output_file = sys.argv[2] 28 | input_folder = os.path.dirname(input_file) 29 | 30 | tempfile = os.path.join(input_folder, ".surreal_temp_model.xml") 31 | copyfile(input_file, tempfile) 32 | 33 | model = load_model_from_path(tempfile) 34 | xml_string = model.get_xml() 35 | with open(output_file, "w") as f: 36 | f.write(xml_string) 37 | 38 | os.remove(tempfile) 39 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/demo_baxter_ik_control.py: -------------------------------------------------------------------------------- 1 | """End-effector control for bimanual Baxter robot. 2 | 3 | This script shows how to use inverse kinematics solver from Bullet 4 | to command the end-effectors of two arms of the Baxter robot. 5 | """ 6 | 7 | import os 8 | import numpy as np 9 | 10 | import robosuite 11 | from robosuite.wrappers import IKWrapper 12 | 13 | 14 | if __name__ == "__main__": 15 | 16 | # initialize a Baxter environment 17 | env = robosuite.make( 18 | "BaxterLift", 19 | ignore_done=True, 20 | has_renderer=True, 21 | gripper_visualization=True, 22 | use_camera_obs=False, 23 | ) 24 | env = IKWrapper(env) 25 | 26 | obs = env.reset() 27 | 28 | # rotate the gripper so we can see it easily 29 | env.set_robot_joint_positions([ 30 | 0.00, -0.55, 0.00, 1.28, 0.00, 0.26, 0.00, 31 | 0.00, -0.55, 0.00, 1.28, 0.00, 0.26, 0.00, 32 | ]) 33 | 34 | bullet_data_path = os.path.join(robosuite.models.assets_root, "bullet_data") 35 | 36 | def robot_jpos_getter(): 37 | return np.array(env._joint_positions) 38 | 39 | for t in range(100000): 40 | omega = 2 * np.pi / 1000. 41 | A = 5e-4 42 | dpos_right = np.array([A * np.cos(omega * t), 0, A * np.sin(omega * t)]) 43 | dpos_left = np.array([A * np.sin(omega * t), A * np.cos(omega * t), 0]) 44 | dquat = np.array([0, 0, 0, 1]) 45 | grasp = 0. 46 | action = np.concatenate([dpos_right, dquat, dpos_left, dquat, [grasp, grasp]]) 47 | 48 | obs, reward, done, info = env.step(action) 49 | env.render() 50 | 51 | if done: 52 | break 53 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/demo_gripper_selection.py: -------------------------------------------------------------------------------- 1 | """ 2 | This script shows you how to select gripper for an environment. 3 | This is controlled by gripper_type keyword argument 4 | """ 5 | import robosuite as suite 6 | from robosuite.wrappers import GymWrapper 7 | 8 | 9 | if __name__ == "__main__": 10 | 11 | grippers = ["TwoFingerGripper", "PR2Gripper", "RobotiqGripper"] 12 | 13 | for gripper in grippers: 14 | 15 | # create environment with selected grippers 16 | env = GymWrapper( 17 | suite.make( 18 | "SawyerPickPlace", 19 | gripper_type=gripper, 20 | use_camera_obs=False, # do not use pixel observations 21 | has_offscreen_renderer=False, # not needed since not using pixel obs 22 | has_renderer=True, # make sure we can render to the screen 23 | reward_shaping=True, # use dense rewards 24 | control_freq=100, # control should happen fast enough so that simulation looks smooth 25 | ) 26 | ) 27 | 28 | # run a random policy 29 | observation = env.reset() 30 | for t in range(500): 31 | env.render() 32 | action = env.action_space.sample() 33 | observation, reward, done, info = env.step(action) 34 | if done: 35 | print("Episode finished after {} timesteps".format(t + 1)) 36 | break 37 | 38 | # close window 39 | env.close() 40 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/demo_learning_curriculum.py: -------------------------------------------------------------------------------- 1 | """Demo of learning curriculum utilities. 2 | 3 | Several prior works have demonstrated the effectiveness of altering the 4 | start state distribution of training episodes for learning RL policies. 5 | We provide a generic utility for setting various types of learning 6 | curriculums which dictate how to sample from demonstration episodes 7 | when doing an environment reset. For more information see the 8 | `DemoSamplerWrapper` class. 9 | 10 | Related work: 11 | 12 | [1] Reinforcement and Imitation Learning for Diverse Visuomotor Skills 13 | Yuke Zhu, Ziyu Wang, Josh Merel, Andrei Rusu, Tom Erez, Serkan Cabi,Saran Tunyasuvunakool, 14 | János Kramár, Raia Hadsell, Nando de Freitas, Nicolas Heess 15 | RSS 2018 16 | 17 | [2] Backplay: "Man muss immer umkehren" 18 | Cinjon Resnick, Roberta Raileanu, Sanyam Kapoor, Alex Peysakhovich, Kyunghyun Cho, Joan Bruna 19 | arXiv:1807.06919 20 | 21 | [3] DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills 22 | Xue Bin Peng, Pieter Abbeel, Sergey Levine, Michiel van de Panne 23 | Transactions on Graphics 2018 24 | 25 | [4] Approximately optimal approximate reinforcement learning 26 | Sham Kakade and John Langford 27 | ICML 2002 28 | """ 29 | 30 | import os 31 | import time 32 | import numpy as np 33 | 34 | import robosuite 35 | from robosuite import make 36 | from robosuite.wrappers import DemoSamplerWrapper 37 | 38 | 39 | if __name__ == "__main__": 40 | 41 | env = make( 42 | "SawyerPickPlace", 43 | has_renderer=True, 44 | has_offscreen_renderer=False, 45 | ignore_done=True, 46 | use_camera_obs=False, 47 | reward_shaping=True, 48 | gripper_visualization=True, 49 | ) 50 | 51 | env = DemoSamplerWrapper( 52 | env, 53 | demo_path=os.path.join( 54 | robosuite.models.assets_root, "demonstrations/SawyerPickPlace" 55 | ), 56 | need_xml=True, 57 | num_traj=-1, 58 | sampling_schemes=["uniform", "random"], 59 | scheme_ratios=[0.9, 0.1], 60 | ) 61 | 62 | for _ in range(100): 63 | env.reset() 64 | env.viewer.set_camera(0) 65 | env.render() 66 | for i in range(100): 67 | if i == 0: 68 | reward = env.reward() 69 | print("reward", reward) 70 | env.render() 71 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/demo_pygame_renderer.py: -------------------------------------------------------------------------------- 1 | """pygame rendering demo. 2 | 3 | This script provides an example of using the pygame library for rendering 4 | camera observations as an alternative to the default mujoco_py renderer. 5 | 6 | Example: 7 | $ python run_pygame_renderer.py --environment BaxterPegInHole --width 1000 --height 1000 8 | """ 9 | 10 | import sys 11 | import argparse 12 | import pygame 13 | import numpy as np 14 | 15 | import robosuite 16 | 17 | 18 | if __name__ == "__main__": 19 | 20 | parser = argparse.ArgumentParser() 21 | parser.add_argument("--environment", type=str, default="BaxterLift") 22 | parser.add_argument("--timesteps", type=int, default=10000) 23 | parser.add_argument("--width", type=int, default=512) 24 | parser.add_argument("--height", type=int, default=384) 25 | args = parser.parse_args() 26 | 27 | width = args.width 28 | height = args.height 29 | screen = pygame.display.set_mode((width, height)) 30 | 31 | env = robosuite.make( 32 | args.environment, 33 | has_renderer=False, 34 | ignore_done=True, 35 | camera_height=height, 36 | camera_width=width, 37 | show_gripper_visualization=True, 38 | use_camera_obs=True, 39 | use_object_obs=False, 40 | ) 41 | 42 | for i in range(args.timesteps): 43 | 44 | # issue random actions 45 | action = 0.5 * np.random.randn(env.dof) 46 | obs, reward, done, info = env.step(action) 47 | 48 | for event in pygame.event.get(): 49 | if event.type == pygame.QUIT: 50 | sys.exit() 51 | 52 | # read camera observation 53 | im = np.flip(obs["image"].transpose((1, 0, 2)), 1) 54 | pygame.pixelcopy.array_to_surface(screen, im) 55 | pygame.display.update() 56 | 57 | if i % 100 == 0: 58 | print("step #{}".format(i)) 59 | 60 | if done: 61 | break 62 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/scripts/demo_video_recording.py: -------------------------------------------------------------------------------- 1 | """ 2 | Record video of agent episodes with the imageio library. 3 | This script uses offscreen rendering. 4 | 5 | Example: 6 | $ python demo_video_recording.py --environment SawyerLift 7 | """ 8 | 9 | import argparse 10 | import imageio 11 | import numpy as np 12 | 13 | from robosuite import make 14 | 15 | 16 | if __name__ == "__main__": 17 | 18 | parser = argparse.ArgumentParser() 19 | parser.add_argument("--environment", type=str, default="SawyerStack") 20 | parser.add_argument("--video_path", type=str, default="video.mp4") 21 | parser.add_argument("--timesteps", type=int, default=500) 22 | parser.add_argument("--height", type=int, default=512) 23 | parser.add_argument("--width", type=int, default=512) 24 | parser.add_argument("--skip_frame", type=int, default=1) 25 | args = parser.parse_args() 26 | 27 | # initialize an environment with offscreen renderer 28 | env = make( 29 | args.environment, 30 | has_renderer=False, 31 | ignore_done=True, 32 | use_camera_obs=True, 33 | use_object_obs=False, 34 | camera_height=args.height, 35 | camera_width=args.width, 36 | ) 37 | 38 | obs = env.reset() 39 | dof = env.dof 40 | 41 | # create a video writer with imageio 42 | writer = imageio.get_writer(args.video_path, fps=20) 43 | 44 | frames = [] 45 | for i in range(args.timesteps): 46 | 47 | # run a uniformly random agent 48 | action = 0.5 * np.random.randn(dof) 49 | obs, reward, done, info = env.step(action) 50 | 51 | # dump a frame from every K frames 52 | if i % args.skip_frame == 0: 53 | frame = obs["image"][::-1] 54 | writer.append_data(frame) 55 | print("Saving frame #{}".format(i)) 56 | 57 | if done: 58 | break 59 | 60 | writer.close() 61 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .errors import robosuiteError, XMLError, SimulationError, RandomizationError 2 | from .mujoco_py_renderer import MujocoPyRenderer 3 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/utils/errors.py: -------------------------------------------------------------------------------- 1 | class robosuiteError(Exception): 2 | """Base class for exceptions in robosuite.""" 3 | 4 | pass 5 | 6 | 7 | class XMLError(robosuiteError): 8 | """Exception raised for errors related to xml.""" 9 | 10 | pass 11 | 12 | 13 | class SimulationError(robosuiteError): 14 | """Exception raised for errors during runtime.""" 15 | 16 | pass 17 | 18 | 19 | class RandomizationError(robosuiteError): 20 | """Exception raised for really really bad RNG.""" 21 | 22 | pass 23 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/wrappers/README.md: -------------------------------------------------------------------------------- 1 | Wrappers 2 | ======== 3 | 4 | Wrappers offer additional features to an environment. Custom wrappers can be implemented for the purpose of collecting data, recording videos, and modifying environments. We provide some example wrapper implementations in this folder. All wrappers should inherit a base [Wrapper](wrapper.py) class. 5 | 6 | To use a wrapper for the environment, import it and wrap it around the environment. 7 | 8 | ```python 9 | import robosuite 10 | from robosuite.wrappers import CustomWrapper 11 | 12 | env = robosuite.make("SawyerLift") 13 | env = CustomWrapper(env) 14 | ``` 15 | 16 | DataCollectionWrapper 17 | --------------------- 18 | [DataCollectionWrapper](data_collection_wrapper.py) saves trajectory information to disk. This [demo script](../scripts/demo_collect_and_playback_data.py) illustrates how to collect the rollout trajectories and replay them in the simulation. 19 | 20 | DemoSamplerWrapper 21 | ------------------ 22 | [DemoSamplerWrapper](demo_sampler_wrapper.py) loads demonstrations as a dataset of trajectories and randomly resets the start state of episodes along the demonstration trajectories based on a certain schedule. This functionality is useful for training RL agents and has been adopted in several prior work (see [references](../scripts/demo_learning_curriculum.py)). We provide a [demo script](../scripts/demo_learning_curriculum.py) to show how to configure the demo sampler to load demonstrations from files and use them to change the initial state distribution of episodes. 23 | 24 | GymWrapper 25 | ---------- 26 | [GymWrapper](gym_wrapper.py) implements the standard methods in [OpenAI Gym](https://github.com/openai/gym), which allows popular RL libraries to run with our environments using the same APIs as Gym. This [demo script](../scripts/demo_gym_functionality.py) shows how to convert robosuite environments into Gym interfaces using this wrapper. 27 | 28 | ```bash 29 | pip install gym 30 | ``` 31 | 32 | ## IKWrapper 33 | 34 | [IKWrapper](ik_wrapper.py) allows for using an end effector action space to control the robot in an environment instead of the default joint velocity action space. It uses our inverse kinematics robot controllers, located in the [controllers](../controllers) directory, which depend on PyBullet. In order to use this wrapper, you must run the following command to install PyBullet. 35 | 36 | ```bash 37 | pip install pybullet==1.9.5 38 | ``` 39 | 40 | The main difference between the joint velocity action space and the end effector action space supported by this wrapper is that instead of supplying joint velocities per arm, a **delta position** vector and **delta quaternion** (xyzw) should be supplied per arm, where these correspond to the relative changes in position and rotation of the end effector from its current pose. 41 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/wrappers/__init__.py: -------------------------------------------------------------------------------- 1 | from robosuite.wrappers.wrapper import Wrapper 2 | from robosuite.wrappers.ik_wrapper import IKWrapper 3 | from robosuite.wrappers.data_collection_wrapper import DataCollectionWrapper 4 | from robosuite.wrappers.demo_sampler_wrapper import DemoSamplerWrapper 5 | 6 | try: 7 | from robosuite.wrappers.gym_wrapper import GymWrapper 8 | except: 9 | print("Warning: make sure gym is installed if you want to use the GymWrapper.") 10 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/wrappers/gym_wrapper.py: -------------------------------------------------------------------------------- 1 | """ 2 | This file implements a wrapper for facilitating compatibility with OpenAI gym. 3 | This is useful when using these environments with code that assumes a gym-like 4 | interface. 5 | """ 6 | 7 | import numpy as np 8 | from gym import spaces 9 | from robosuite.wrappers import Wrapper 10 | 11 | 12 | class GymWrapper(Wrapper): 13 | env = None 14 | 15 | def __init__(self, env, keys=None): 16 | """ 17 | Initializes the Gym wrapper. 18 | 19 | Args: 20 | env (MujocoEnv instance): The environment to wrap. 21 | keys (list of strings): If provided, each observation will 22 | consist of concatenated keys from the wrapped environment's 23 | observation dictionary. Defaults to robot-state and object-state. 24 | """ 25 | self.env = env 26 | 27 | if keys is None: 28 | assert self.env.use_object_obs, "Object observations need to be enabled." 29 | keys = ["robot-state", "object-state"] 30 | self.keys = keys 31 | 32 | # set up observation and action spaces 33 | flat_ob = self._flatten_obs(self.env.reset(), verbose=True) 34 | self.obs_dim = flat_ob.size 35 | high = np.inf * np.ones(self.obs_dim, dtype=np.float32) 36 | low = -high 37 | self.observation_space = spaces.Box(low=low, high=high) 38 | low, high = self.env.action_spec 39 | self.action_space = spaces.Box(low=low, high=high) 40 | 41 | def _flatten_obs(self, obs_dict, verbose=False): 42 | """ 43 | Filters keys of interest out and concatenate the information. 44 | 45 | Args: 46 | obs_dict: ordered dictionary of observations 47 | """ 48 | ob_lst = [] 49 | for key in obs_dict: 50 | if key in self.keys: 51 | if verbose: 52 | print("adding key: {}".format(key)) 53 | ob_lst.append(obs_dict[key]) 54 | return np.concatenate(ob_lst) 55 | 56 | def reset(self): 57 | ob_dict = self.env.reset() 58 | return self._flatten_obs(ob_dict) 59 | 60 | def step(self, action): 61 | ob_dict, reward, done, info = self.env.step(action) 62 | return self._flatten_obs(ob_dict), reward, done, info 63 | -------------------------------------------------------------------------------- /environment/robolite/robosuite/wrappers/wrapper.py: -------------------------------------------------------------------------------- 1 | """ 2 | This file contains the base wrapper class for Mujoco environments. 3 | Wrappers are useful for data collection and logging. Highly recommended. 4 | """ 5 | 6 | 7 | class Wrapper: 8 | env = None 9 | 10 | def __init__(self, env): 11 | self.env = env 12 | 13 | @classmethod 14 | def class_name(cls): 15 | return cls.__name__ 16 | 17 | def _warn_double_wrap(self): 18 | env = self.env 19 | while True: 20 | if isinstance(env, Wrapper): 21 | if env.class_name() == self.class_name(): 22 | raise Exception( 23 | "Attempted to double wrap with Wrapper: {}".format( 24 | self.__class__.__name__ 25 | ) 26 | ) 27 | env = env.env 28 | else: 29 | break 30 | 31 | def step(self, action): 32 | return self.env.step(action) 33 | 34 | def reset(self): 35 | return self.env.reset() 36 | 37 | def render(self, **kwargs): 38 | return self.env.render(**kwargs) 39 | 40 | def observation_spec(self): 41 | return self.env.observation_spec() 42 | 43 | def action_spec(self): 44 | return self.env.action_spec() 45 | 46 | @property 47 | def dof(self): 48 | return self.env.dof 49 | 50 | @property 51 | def unwrapped(self): 52 | if hasattr(self.env, "unwrapped"): 53 | return self.env.unwrapped 54 | else: 55 | return self.env 56 | 57 | # this method is a fallback option on any methods the original env might support 58 | def __getattr__(self, attr): 59 | # using getattr ensures that both __getattribute__ and __getattr__ (fallback) get called 60 | # (see https://stackoverflow.com/questions/3278077/difference-between-getattr-vs-getattribute) 61 | orig_attr = getattr(self.env, attr) 62 | if callable(orig_attr): 63 | 64 | def hooked(*args, **kwargs): 65 | result = orig_attr(*args, **kwargs) 66 | # prevent wrapped_class from becoming unwrapped 67 | if result == self.env: 68 | return self 69 | return result 70 | 71 | return hooked 72 | else: 73 | return orig_attr 74 | -------------------------------------------------------------------------------- /environment/robolite/setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | # read the contents of your README file 4 | from os import path 5 | this_directory = path.abspath(path.dirname(__file__)) 6 | with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f: 7 | lines = f.readlines() 8 | 9 | # remove images from README 10 | lines = [x for x in lines if '.png' not in x] 11 | long_description = ''.join(lines) 12 | 13 | setup( 14 | name="robosuite", 15 | packages=[ 16 | package for package in find_packages() if package.startswith("robosuite") 17 | ], 18 | install_requires=[ 19 | "numpy>=1.13.3", 20 | "mujoco-py==2.0.2.2", 21 | ], 22 | eager_resources=['*'], 23 | include_package_data=True, 24 | python_requires='>=3', 25 | description="Surreal Robotics Suite: Standardized and Accessible Robot Manipulation Benchmark in Physics Simulation", 26 | author="Yuke Zhu, Ajay Mandlekar, Jiren Zhu, Joan Creus-Costa, Anchit Gupta", 27 | url="https://github.com/StanfordVL/robosuite", 28 | author_email="yukez@cs.stanford.edu", 29 | version="0.3.0", 30 | long_description=long_description, 31 | long_description_content_type='text/markdown' 32 | ) 33 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_environments/test_all_environments.py: -------------------------------------------------------------------------------- 1 | """ 2 | Test all environments with random policies. 3 | """ 4 | import numpy as np 5 | 6 | import robosuite as suite 7 | 8 | 9 | def test_all_environments(): 10 | 11 | envs = sorted(suite.environments.ALL_ENVS) 12 | 13 | for env_name in envs: 14 | 15 | # create an environment for learning on pixels 16 | env = suite.make( 17 | env_name, 18 | has_renderer=False, # no on-screen renderer 19 | has_offscreen_renderer=True, # off-screen renderer is required for camera observations 20 | ignore_done=True, # (optional) never terminates episode 21 | use_camera_obs=True, # use camera observations 22 | camera_height=84, # set camera height 23 | camera_width=84, # set camera width 24 | camera_name="agentview", # use "agentview" camera 25 | use_object_obs=False, # no object feature when training on pixels 26 | reward_shaping=True, # (optional) using a shaping reward 27 | ) 28 | 29 | obs = env.reset() 30 | 31 | # get action range 32 | action_min, action_max = env.action_spec 33 | assert action_min.shape == action_max.shape 34 | 35 | # run 10 random actions 36 | for _ in range(10): 37 | 38 | assert "robot-state" in obs 39 | assert obs["robot-state"].ndim == 1 40 | 41 | assert "image" in obs 42 | assert obs["image"].shape == (84, 84, 3) 43 | 44 | assert "object-state" not in obs 45 | 46 | action = np.random.uniform(action_min, action_max) 47 | obs, reward, done, info = env.step(action) 48 | 49 | 50 | if __name__ == "__main__": 51 | 52 | test_all_environments() 53 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_grippers/test_all_grippers.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests the basic interface of all grippers 3 | """ 4 | from robosuite.models.grippers import ( 5 | TwoFingerGripper, 6 | LeftTwoFingerGripper, 7 | PR2Gripper, 8 | PushingGripper, 9 | RobotiqGripper, 10 | RobotiqThreeFingerGripper, 11 | ) 12 | 13 | 14 | def test_all_gripper(): 15 | grippers = [ 16 | TwoFingerGripper(), 17 | LeftTwoFingerGripper(), 18 | PR2Gripper(), 19 | PushingGripper(), 20 | RobotiqGripper(), 21 | RobotiqThreeFingerGripper(), 22 | ] 23 | for gripper in grippers: 24 | _test_gripper(gripper) 25 | 26 | 27 | def _test_gripper(gripper): 28 | action = gripper.format_action([1] * gripper.dof) 29 | assert action is not None 30 | action = list(action) 31 | 32 | assert gripper.init_qpos is not None 33 | init_qpos = list(gripper.init_qpos) 34 | 35 | assert gripper.dof > 0 36 | 37 | assert gripper.joints is not None 38 | joints = list(gripper.joints) 39 | 40 | assert gripper.contact_geoms() is not None 41 | 42 | assert gripper.visualization_sites is not None 43 | 44 | assert gripper.visualization_geoms is not None 45 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_grippers/test_pr2.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.grippers import GripperTester, PR2Gripper 2 | 3 | 4 | def test_pr2(): 5 | pr2_tester(False) 6 | 7 | 8 | def pr2_tester(render, 9 | total_iters=1, 10 | test_y=True): 11 | gripper = PR2Gripper() 12 | tester = GripperTester( 13 | gripper=gripper, 14 | pos="0 0 0.3", 15 | quat="0 0 1 0", 16 | gripper_low_pos=-0.02, 17 | gripper_high_pos=0.05, 18 | render=render, 19 | ) 20 | tester.start_simulation() 21 | tester.loop(total_iters=total_iters, 22 | test_y=test_y) 23 | 24 | 25 | if __name__ == "__main__": 26 | pr2_tester(True, 20, False) 27 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_grippers/test_pushing.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.grippers import GripperTester, PushingGripper 2 | 3 | 4 | def test_pushing(): 5 | pushing_tester(False) 6 | 7 | 8 | def pushing_tester(render, 9 | total_iters=1, 10 | test_y=False): 11 | gripper = PushingGripper() 12 | tester = GripperTester( 13 | gripper=gripper, 14 | pos="0 0 0.3", 15 | quat="0 0 1 0", 16 | gripper_low_pos=-0.07, 17 | gripper_high_pos=0.02, 18 | render=render, 19 | ) 20 | tester.start_simulation() 21 | tester.loop(total_iters=total_iters, test_y=test_y) 22 | 23 | 24 | if __name__ == "__main__": 25 | pushing_tester(True, 20, False) 26 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_grippers/test_robotiq_gripper.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.grippers import GripperTester, RobotiqGripper 2 | 3 | 4 | def test_robotiq(): 5 | robotiq_tester(False) 6 | 7 | 8 | def robotiq_tester(render, 9 | total_iters=1, 10 | test_y=True): 11 | gripper = RobotiqGripper() 12 | tester = GripperTester( 13 | gripper=gripper, 14 | pos="0 0 0.3", 15 | quat="0 0 1 0", 16 | gripper_low_pos=-0.07, 17 | gripper_high_pos=0.02, 18 | box_size=[0.025] * 3, 19 | render=render, 20 | ) 21 | tester.start_simulation() 22 | tester.loop(total_iters=total_iters, 23 | test_y=test_y) 24 | 25 | 26 | if __name__ == "__main__": 27 | robotiq_tester(True, 20, False) 28 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_grippers/test_robotiq_threefinger.py: -------------------------------------------------------------------------------- 1 | from robosuite.models.grippers import GripperTester, RobotiqThreeFingerGripper 2 | 3 | 4 | def test_robotiq_three_finger(): 5 | robotiq_three_finger_tester(False) 6 | 7 | 8 | def robotiq_three_finger_tester(render, 9 | total_iters=1, 10 | test_y=True): 11 | gripper = RobotiqThreeFingerGripper() 12 | tester = GripperTester( 13 | gripper=gripper, 14 | pos="0 0 0.3", 15 | quat="0 0 1 0", 16 | gripper_low_pos=-0.02, 17 | gripper_high_pos=0.1, 18 | box_size=[0.04] * 3, 19 | box_density=500, 20 | render=render, 21 | ) 22 | tester.start_simulation() 23 | tester.loop(total_iters=total_iters, 24 | test_y=test_y) 25 | 26 | 27 | if __name__ == "__main__": 28 | robotiq_three_finger_tester(True, 20, False) 29 | -------------------------------------------------------------------------------- /environment/robolite/tests/test_grippers/test_two_finger.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tests two finger gripper and left two finger gripper on grabbing task 3 | """ 4 | from robosuite.models.grippers import ( 5 | TwoFingerGripper, 6 | GripperTester, 7 | LeftTwoFingerGripper, 8 | ) 9 | 10 | 11 | def test_two_finger(): 12 | two_finger_tester(False) 13 | 14 | 15 | def two_finger_tester(render, 16 | total_iters=1, 17 | test_y=True): 18 | gripper = TwoFingerGripper() 19 | tester = GripperTester( 20 | gripper=gripper, 21 | pos="0 0 0.3", 22 | quat="0 0 1 0", 23 | gripper_low_pos=-0.07, 24 | gripper_high_pos=0.02, 25 | render=render, 26 | ) 27 | tester.start_simulation() 28 | tester.loop(total_iters=total_iters, 29 | test_y=test_y) 30 | 31 | 32 | def test_left_two_finger(): 33 | left_two_finger_tester(False) 34 | 35 | 36 | def left_two_finger_tester(render, 37 | total_iters=1, 38 | test_y=True): 39 | gripper = LeftTwoFingerGripper() 40 | tester = GripperTester( 41 | gripper=gripper, 42 | pos="0 0 0.3", 43 | quat="0 0 1 0", 44 | gripper_low_pos=-0.07, 45 | gripper_high_pos=0.02, 46 | render=render, 47 | ) 48 | tester.start_simulation() 49 | tester.loop(total_iters=total_iters, 50 | test_y=test_y) 51 | 52 | 53 | if __name__ == "__main__": 54 | two_finger_tester(True, 20, True) 55 | left_two_finger_tester(True, 20, True) 56 | -------------------------------------------------------------------------------- /environment/syspath_robolite.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Add robolite/robosuite into sys.path 3 | Don't need to `pip install -e .` 4 | ''' 5 | 6 | import os 7 | import sys 8 | 9 | sys.path.insert(1, os.path.join(os.path.abspath(os.path.dirname(__file__)), 'robolite')) 10 | 11 | import robosuite 12 | 13 | __all__ = [] 14 | -------------------------------------------------------------------------------- /img/tactile_robot_door_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quantumiracle/Robotic_Door_Opening_with_Tactile_Simulation/20d7ffec41f9e1d2f6e372ce86eceadb4ce41af3/img/tactile_robot_door_open.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | torch 3 | tensorboard 4 | matplotlib 5 | 6 | -------------------------------------------------------------------------------- /rl/buffers.py: -------------------------------------------------------------------------------- 1 | import math 2 | import random 3 | import numpy as np 4 | import torch 5 | 6 | 7 | 8 | class ReplayBuffer: 9 | def __init__(self, capacity): 10 | self.capacity = capacity 11 | self.buffer = [] 12 | self.position = 0 13 | 14 | def push(self, state, action, reward, next_state, done): 15 | if len(self.buffer) < self.capacity: 16 | self.buffer.append(None) 17 | self.buffer[self.position] = (state, action, reward, next_state, done) 18 | self.position = int((self.position + 1) % self.capacity) # as a ring buffer 19 | 20 | def display(self): 21 | print(self.capacity, self.buffer) 22 | 23 | def sample(self, batch_size): 24 | try: 25 | batch = random.sample(self.buffer, batch_size) 26 | except: 27 | print('buffer: ', self.buffer) 28 | try: 29 | state, action, reward, next_state, done = map(np.stack, 30 | zip(*batch)) # stack for each element 31 | except: 32 | print('shape: ', batch.shape) 33 | print('*batch: ', *batch) 34 | print('state: ', state) 35 | print('action: ', action) 36 | print('reward: ', reward) 37 | print('done: ', done) 38 | 39 | ''' 40 | the * serves as unpack: sum(a,b) <=> batch=(a,b), sum(*batch) ; 41 | zip: a=[1,2], b=[2,3], zip(a,b) => [(1, 2), (2, 3)] ; 42 | the map serves as mapping the function on each list element: map(square, [2,3]) => [4,9] ; 43 | np.stack((1,2)) => array([1, 2]) 44 | ''' 45 | return state, action, reward, next_state, done 46 | 47 | def __len__( 48 | self): # cannot work in multiprocessing case, len(replay_buffer) is not available in proxy of manager! 49 | return len(self.buffer) 50 | 51 | def get_length(self): 52 | return len(self.buffer) 53 | -------------------------------------------------------------------------------- /rl/initialize.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import torch.nn as nn 4 | import torch.nn.functional as F 5 | import math 6 | 7 | def linear_weights_init(m): 8 | if isinstance(m, nn.Linear): 9 | stdv = 1. / math.sqrt(m.weight.size(1)) 10 | m.weight.data.uniform_(-stdv, stdv) 11 | if m.bias is not None: 12 | m.bias.data.uniform_(-stdv, stdv) 13 | 14 | 15 | def conv_weights_init(m): 16 | if isinstance(m, nn.Conv2d): 17 | torch.nn.init.xavier_uniform_(m.weight.data) 18 | if m.bias is not None: 19 | torch.nn.init.zeros_(m.bias) 20 | 21 | 22 | class AddBias(nn.Module): 23 | def __init__(self, bias): 24 | super(AddBias, self).__init__() 25 | self._bias = nn.Parameter(bias.unsqueeze(1)) 26 | 27 | def forward(self, x): 28 | if x.dim() == 2: 29 | bias = self._bias.t().view(1, -1) 30 | else: 31 | bias = self._bias.t().view(1, -1, 1, 1) 32 | 33 | return x + bias 34 | -------------------------------------------------------------------------------- /rl/value_networks.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import torch.nn as nn 4 | import torch.nn.functional as F 5 | import math 6 | import copy 7 | from .initialize import * 8 | 9 | 10 | class ValueNetworkBase(nn.Module): 11 | """ Base network class for value function approximation """ 12 | def __init__(self, state_space, activation): 13 | super(ValueNetworkBase, self).__init__() 14 | if isinstance(state_space, int): # pass in state_dim rather than state_space 15 | self._state_dim = state_space 16 | else: 17 | self._state_space = state_space 18 | self._state_shape = state_space.shape 19 | if len(self._state_shape) == 1: 20 | self._state_dim = self._state_shape[0] 21 | else: # high-dim state 22 | pass 23 | 24 | self.activation = activation 25 | 26 | def forward(self): 27 | pass 28 | 29 | class QNetworkBase(ValueNetworkBase): 30 | def __init__(self, state_space, action_space, activation ): 31 | super().__init__( state_space, activation) 32 | self._action_space = action_space 33 | self._action_shape = action_space.shape 34 | self._action_dim = self._action_shape[0] 35 | 36 | 37 | class QNetwork(QNetworkBase): 38 | def __init__(self, state_space, action_space, hidden_dim, output_dim=1, activation=F.relu, output_activation=None): 39 | super().__init__(state_space, action_space, activation) 40 | 41 | self.linear1 = nn.Linear(self._state_dim+self._action_dim, hidden_dim) 42 | self.linear2 = nn.Linear(hidden_dim, hidden_dim) 43 | self.linear3 = nn.Linear(hidden_dim, hidden_dim) 44 | self.linear4 = nn.Linear(hidden_dim, output_dim) 45 | # weights initialization 46 | # self.linear4.apply(linear_weights_init) 47 | torch.nn.init.xavier_uniform_(self.linear1.weight) 48 | torch.nn.init.xavier_uniform_(self.linear2.weight) 49 | torch.nn.init.xavier_uniform_(self.linear3.weight) 50 | torch.nn.init.xavier_uniform_(self.linear4.weight) 51 | 52 | def forward(self, state, action): 53 | x = torch.cat([state, action], 1) # the dim 0 is number of samples 54 | x = self.activation(self.linear1(x)) 55 | x = self.activation(self.linear2(x)) 56 | x = self.activation(self.linear3(x)) 57 | x = self.linear4(x) 58 | return x 59 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | 2 | import gym 3 | import argparse 4 | from gym import envs 5 | import os 6 | from rl.td3.train_td3 import train_td3 7 | 8 | if __name__ == '__main__': 9 | parser = argparse.ArgumentParser(description='Train or test neural net motor controller.') 10 | parser.add_argument('--train', dest='train', action='store_true', default=False) 11 | parser.add_argument('--test', dest='test', action='store_true', default=False) 12 | parser.add_argument('--env', type=str, help='Environment', required=True) 13 | parser.add_argument('--render', dest='render', action='store_true', 14 | help='Enable openai gym real-time rendering') 15 | parser.add_argument('--process', type=int, default=1, 16 | help='Process count for parallel exploration') 17 | parser.add_argument('--model', dest='path', type=str, default=None, 18 | help='Moddel weights location') 19 | parser.add_argument('--model_id', dest='model_id', type=int, default=0, 20 | help='Moddel weights id (step for saving the model)') 21 | parser.add_argument('--finetune', dest='finetune', action='store_true', default=False, 22 | help='Load a pretrained model and finetune it') 23 | parser.add_argument('--seed', dest='seed', type=int, default=1234, 24 | help='Random seed') 25 | parser.add_argument('--alg', dest='alg', type=str, default='td3', 26 | help='Choose algorithm type') 27 | args = parser.parse_args() 28 | 29 | ROBOT_ENVS = ['pandaopendoorfktactile'] 30 | envs = envs.registry.all() 31 | 32 | if args.env in ROBOT_ENVS: 33 | from environment import envs 34 | env = envs[args.env]() 35 | else: 36 | print('Environment {} not exists!'.format(args.env)) 37 | print('Environment Name:', args.env) 38 | print('Observation space: {} Action space: {}'.format(env.observation_space, env.action_space)) 39 | 40 | if args.alg=='td3': 41 | train_td3(env, envs, args.train, args.test, args.finetune, args.path, args.model_id, args.render, args.process, args.seed) 42 | else: 43 | print("Algorithm type is not implemented!") -------------------------------------------------------------------------------- /utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .logger import Logger -------------------------------------------------------------------------------- /utils/load_params.py: -------------------------------------------------------------------------------- 1 | # for consistence in comparison among different methods 2 | from importlib import import_module # dynamic module importing 3 | 4 | def load_params(alg_name, env_name, parmas_list): 5 | """ load default parameter values """ 6 | # module = import_module('.'.join(['sim2real_policies', alg_name, 'default_params'])) 7 | if alg_name=='td3': 8 | module = import_module('default_params') 9 | elif alg_name=='ppo': 10 | module = import_module('default_params_ppo') 11 | print(module) 12 | default_params = getattr(module, 'get_hyperparams')(env_name) 13 | params_value_list = [] 14 | for param in parmas_list: 15 | assert param in default_params.keys(), "No param {} in default dictionary".format(param) 16 | params_value_list.append(default_params[param]) 17 | return params_value_list -------------------------------------------------------------------------------- /utils/logger.py: -------------------------------------------------------------------------------- 1 | import os 2 | class Logger: 3 | """Logger to record values to a CSV file.""" 4 | 5 | def __init__(self, labels, path, errase=True, verbatim=True): 6 | self.n_labels = len(labels) 7 | self.path = path 8 | self.verbatim = verbatim 9 | assert errase or not os.path.exists(os.path.dirname(path)), self.path 10 | print('[Logger] logging {} to {}'.format(labels, self.path)) 11 | if not os.path.exists(os.path.dirname(path)): 12 | os.makedirs(os.path.dirname(path)) 13 | with open(self.path, 'w') as csv_file: 14 | csv_file.write(','.join(labels) + '\n') 15 | 16 | def log(self, *values): 17 | assert len(values) == self.n_labels 18 | text = ','.join([str(v) for v in values]) 19 | if self.verbatim: 20 | print('[Logger] {}'.format(text)) 21 | with open(self.path, 'a') as csv_file: 22 | csv_file.write(text + '\n') 23 | --------------------------------------------------------------------------------