├── .gitignore ├── .travis.yml ├── CMakeLists.txt ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README ├── README.md ├── cmake ├── FindEigen.cmake ├── FindNumPy.cmake └── FindTinyXML2.cmake ├── docs ├── Makefile └── source │ ├── conf.py │ ├── examples.rst │ ├── examples │ ├── biped_jump.rst │ ├── biped_stand.rst │ ├── chain.rst │ ├── gravity_compensation.rst │ ├── hello_pydart.rst │ ├── images │ │ ├── biped_jump.png │ │ ├── biped_stand.png │ │ ├── chain.png │ │ ├── gravity_compensation.png │ │ ├── hello_pydart.png │ │ ├── inverse_kinematics.png │ │ ├── simple_tracking.png │ │ ├── soft_bodies.png │ │ └── view_skeleton.png │ ├── inspect_skeleton.rst │ ├── inverse_kinematics.rst │ ├── simple_tracking.rst │ ├── soft_bodies.rst │ └── view_skeleton.rst │ ├── images │ ├── DARTlogo.png │ └── PYTHONlogo.png │ ├── index.rst │ └── install.rst ├── examples ├── biped_jump.py ├── biped_stand.py ├── chain.py ├── data │ ├── obj │ │ └── foot.obj │ ├── sdf │ │ ├── atlas │ │ │ ├── atlas_v3.urdf │ │ │ ├── atlas_v3_no_head.sdf │ │ │ ├── atlas_v3_no_head.urdf │ │ │ ├── atlas_v3_no_head_soft_feet.sdf │ │ │ ├── ground.urdf │ │ │ ├── head.dae │ │ │ ├── head.stl │ │ │ ├── head_camera.dae │ │ │ ├── head_camera.stl │ │ │ ├── l_clav.dae │ │ │ ├── l_clav.stl │ │ │ ├── l_farm.dae │ │ │ ├── l_farm.stl │ │ │ ├── l_foot.dae │ │ │ ├── l_foot.stl │ │ │ ├── l_hand.dae │ │ │ ├── l_hand.stl │ │ │ ├── l_larm.dae │ │ │ ├── l_larm.stl │ │ │ ├── l_lglut.dae │ │ │ ├── l_lglut.stl │ │ │ ├── l_lleg.dae │ │ │ ├── l_lleg.stl │ │ │ ├── l_scap.dae │ │ │ ├── l_scap.stl │ │ │ ├── l_talus.dae │ │ │ ├── l_talus.stl │ │ │ ├── l_uarm.dae │ │ │ ├── l_uarm.stl │ │ │ ├── l_uglut.dae │ │ │ ├── l_uglut.stl │ │ │ ├── l_uleg.dae │ │ │ ├── l_uleg.stl │ │ │ ├── ltorso.dae │ │ │ ├── ltorso.stl │ │ │ ├── mtorso.dae │ │ │ ├── mtorso.stl │ │ │ ├── pelvis.dae │ │ │ ├── pelvis.stl │ │ │ ├── r_clav.dae │ │ │ ├── r_clav.stl │ │ │ ├── r_farm.dae │ │ │ ├── r_farm.stl │ │ │ ├── r_foot.dae │ │ │ ├── r_foot.stl │ │ │ ├── r_hand.dae │ │ │ ├── r_hand.stl │ │ │ ├── r_larm.dae │ │ │ ├── r_larm.stl │ │ │ ├── r_lglut.dae │ │ │ ├── r_lglut.stl │ │ │ ├── r_lleg.dae │ │ │ ├── r_lleg.stl │ │ │ ├── r_scap.dae │ │ │ ├── r_scap.stl │ │ │ ├── r_talus.dae │ │ │ ├── r_talus.stl │ │ │ ├── r_uarm.dae │ │ │ ├── r_uarm.stl │ │ │ ├── r_uglut.dae │ │ │ ├── r_uglut.stl │ │ │ ├── r_uleg.dae │ │ │ ├── r_uleg.stl │ │ │ ├── utorso.dae │ │ │ ├── utorso.stl │ │ │ ├── utorso_mod.dae │ │ │ ├── utorso_mod.stl │ │ │ ├── utorso_pack.dae │ │ │ └── utorso_pack.stl │ │ ├── benchmark.world │ │ ├── double_pendulum.world │ │ ├── double_pendulum_with_base.world │ │ ├── empty.world │ │ ├── ground.world │ │ └── puppy.sdf │ ├── skel │ │ ├── chain.skel │ │ ├── cubes.skel │ │ ├── fullbody1.skel │ │ ├── shapes.skel │ │ ├── softBodies.skel │ │ ├── soft_fullbody.skel │ │ └── springStair.skel │ ├── urdf │ │ └── PR2 │ │ │ ├── cmake │ │ │ ├── pr2_descriptionConfig-version.cmake │ │ │ └── pr2_descriptionConfig.cmake │ │ │ ├── documents │ │ │ ├── 090224_link_data_with_motor_info.xls │ │ │ ├── 100416_floating_link.ppt │ │ │ └── head_pan_and_tilt_mass_props.zip │ │ │ ├── gazebo │ │ │ └── gazebo.urdf.xacro │ │ │ ├── materials │ │ │ └── textures │ │ │ │ ├── pr2_caster_texture.png │ │ │ │ ├── pr2_wheel_left.png │ │ │ │ └── pr2_wheel_right.png │ │ │ ├── meshes │ │ │ ├── base_v0 │ │ │ │ ├── base.dae │ │ │ │ ├── base.stl │ │ │ │ ├── base_L.stl │ │ │ │ ├── base_color.tif │ │ │ │ ├── base_normals.tif │ │ │ │ ├── caster.stl │ │ │ │ ├── caster_L.stl │ │ │ │ ├── convex │ │ │ │ │ ├── base.dae │ │ │ │ │ ├── base.obj │ │ │ │ │ ├── base.xml │ │ │ │ │ ├── base_L.dae │ │ │ │ │ ├── base_L.obj │ │ │ │ │ ├── base_L.xml │ │ │ │ │ ├── base_L_convex.iv │ │ │ │ │ ├── base_L_convex.obj │ │ │ │ │ ├── base_L_convex.stla │ │ │ │ │ ├── base_L_convex.stlb │ │ │ │ │ ├── base_convex.iv │ │ │ │ │ ├── base_convex.obj │ │ │ │ │ ├── base_convex.stla │ │ │ │ │ ├── base_convex.stlb │ │ │ │ │ ├── caster.dae │ │ │ │ │ ├── caster.obj │ │ │ │ │ ├── caster.xml │ │ │ │ │ ├── caster_L.dae │ │ │ │ │ ├── caster_L.obj │ │ │ │ │ ├── caster_L.xml │ │ │ │ │ ├── caster_L_convex.iv │ │ │ │ │ ├── caster_L_convex.obj │ │ │ │ │ ├── caster_L_convex.stla │ │ │ │ │ ├── caster_L_convex.stlb │ │ │ │ │ ├── caster_convex.iv │ │ │ │ │ ├── caster_convex.obj │ │ │ │ │ ├── caster_convex.stla │ │ │ │ │ ├── caster_convex.stlb │ │ │ │ │ ├── pr2_wheel.dae │ │ │ │ │ ├── pr2_wheel.obj │ │ │ │ │ ├── pr2_wheel.xml │ │ │ │ │ ├── pr2_wheel_convex.iv │ │ │ │ │ ├── pr2_wheel_convex.obj │ │ │ │ │ ├── pr2_wheel_convex.stla │ │ │ │ │ ├── pr2_wheel_convex.stlb │ │ │ │ │ ├── wheel.dae │ │ │ │ │ ├── wheel.obj │ │ │ │ │ ├── wheel.xml │ │ │ │ │ ├── wheel_convex.iv │ │ │ │ │ ├── wheel_convex.obj │ │ │ │ │ ├── wheel_convex.stla │ │ │ │ │ └── wheel_convex.stlb │ │ │ │ ├── iv │ │ │ │ │ ├── base.iv │ │ │ │ │ ├── base_L.iv │ │ │ │ │ ├── caster.iv │ │ │ │ │ ├── caster_L.iv │ │ │ │ │ ├── pr2_wheel.iv │ │ │ │ │ └── wheel.iv │ │ │ │ ├── pr2_wheel.stl │ │ │ │ ├── wheel.dae │ │ │ │ ├── wheel.stl │ │ │ │ ├── wheel_color.tif │ │ │ │ ├── wheel_h.dae │ │ │ │ ├── wheel_h_color.tif │ │ │ │ └── wheel_normals.tif │ │ │ ├── forearm_v0 │ │ │ │ ├── convex │ │ │ │ │ ├── forearm.dae │ │ │ │ │ ├── forearm.obj │ │ │ │ │ ├── forearm.xml │ │ │ │ │ ├── forearm_convex.iv │ │ │ │ │ ├── forearm_convex.obj │ │ │ │ │ ├── forearm_convex.stla │ │ │ │ │ ├── forearm_convex.stlb │ │ │ │ │ ├── wrist_flex.dae │ │ │ │ │ ├── wrist_flex.obj │ │ │ │ │ ├── wrist_flex.xml │ │ │ │ │ ├── wrist_flex_convex.iv │ │ │ │ │ ├── wrist_flex_convex.obj │ │ │ │ │ ├── wrist_flex_convex.stla │ │ │ │ │ ├── wrist_flex_convex.stlb │ │ │ │ │ ├── wrist_roll.dae │ │ │ │ │ ├── wrist_roll.obj │ │ │ │ │ ├── wrist_roll.xml │ │ │ │ │ ├── wrist_roll_L.dae │ │ │ │ │ ├── wrist_roll_L.obj │ │ │ │ │ ├── wrist_roll_L.xml │ │ │ │ │ ├── wrist_roll_L_convex.iv │ │ │ │ │ ├── wrist_roll_L_convex.obj │ │ │ │ │ ├── wrist_roll_L_convex.stla │ │ │ │ │ ├── wrist_roll_L_convex.stlb │ │ │ │ │ ├── wrist_roll_convex.iv │ │ │ │ │ ├── wrist_roll_convex.obj │ │ │ │ │ ├── wrist_roll_convex.stla │ │ │ │ │ └── wrist_roll_convex.stlb │ │ │ │ ├── forearm.dae │ │ │ │ ├── forearm.jpg │ │ │ │ ├── forearm.stl │ │ │ │ ├── forearm_color.tif │ │ │ │ ├── forearm_normals.tif │ │ │ │ ├── iv │ │ │ │ │ ├── forearm.iv │ │ │ │ │ ├── wrist_flex.iv │ │ │ │ │ ├── wrist_roll.iv │ │ │ │ │ └── wrist_roll_L.iv │ │ │ │ ├── wrist_color.tif │ │ │ │ ├── wrist_flex.dae │ │ │ │ ├── wrist_flex.stl │ │ │ │ ├── wrist_normals.tif │ │ │ │ ├── wrist_roll.stl │ │ │ │ └── wrist_roll_L.stl │ │ │ ├── gripper_v0 │ │ │ │ ├── convex │ │ │ │ │ ├── finger_tip_l.dae │ │ │ │ │ ├── finger_tip_l.obj │ │ │ │ │ ├── finger_tip_l.xml │ │ │ │ │ ├── finger_tip_l_convex.iv │ │ │ │ │ ├── finger_tip_l_convex.obj │ │ │ │ │ ├── finger_tip_l_convex.stla │ │ │ │ │ ├── finger_tip_l_convex.stlb │ │ │ │ │ ├── finger_tip_pad2_l.dae │ │ │ │ │ ├── finger_tip_pad2_l.obj │ │ │ │ │ ├── finger_tip_pad2_l.xml │ │ │ │ │ ├── finger_tip_pad2_l_convex.iv │ │ │ │ │ ├── finger_tip_pad2_l_convex.obj │ │ │ │ │ ├── finger_tip_pad2_l_convex.stla │ │ │ │ │ ├── finger_tip_pad2_l_convex.stlb │ │ │ │ │ ├── finger_tip_pad2_r.dae │ │ │ │ │ ├── finger_tip_pad2_r.obj │ │ │ │ │ ├── finger_tip_pad2_r.xml │ │ │ │ │ ├── finger_tip_pad2_r_convex.iv │ │ │ │ │ ├── finger_tip_pad2_r_convex.obj │ │ │ │ │ ├── finger_tip_pad2_r_convex.stla │ │ │ │ │ ├── finger_tip_pad2_r_convex.stlb │ │ │ │ │ ├── finger_tip_r.dae │ │ │ │ │ ├── finger_tip_r.obj │ │ │ │ │ ├── finger_tip_r.xml │ │ │ │ │ ├── finger_tip_r_convex.iv │ │ │ │ │ ├── finger_tip_r_convex.obj │ │ │ │ │ ├── finger_tip_r_convex.stla │ │ │ │ │ ├── finger_tip_r_convex.stlb │ │ │ │ │ ├── gripper_palm.dae │ │ │ │ │ ├── gripper_palm.obj │ │ │ │ │ ├── gripper_palm.xml │ │ │ │ │ ├── gripper_palm_convex.iv │ │ │ │ │ ├── gripper_palm_convex.obj │ │ │ │ │ ├── gripper_palm_convex.stla │ │ │ │ │ ├── gripper_palm_convex.stlb │ │ │ │ │ ├── l_finger.dae │ │ │ │ │ ├── l_finger.obj │ │ │ │ │ ├── l_finger.xml │ │ │ │ │ ├── l_finger_convex.iv │ │ │ │ │ ├── l_finger_convex.obj │ │ │ │ │ ├── l_finger_convex.stla │ │ │ │ │ ├── l_finger_convex.stlb │ │ │ │ │ ├── l_finger_tip.dae │ │ │ │ │ ├── l_finger_tip.obj │ │ │ │ │ ├── l_finger_tip.xml │ │ │ │ │ ├── l_finger_tip_convex.iv │ │ │ │ │ ├── l_finger_tip_convex.obj │ │ │ │ │ ├── l_finger_tip_convex.stla │ │ │ │ │ ├── l_finger_tip_convex.stlb │ │ │ │ │ ├── l_floating.dae │ │ │ │ │ ├── l_floating.obj │ │ │ │ │ ├── l_floating.xml │ │ │ │ │ ├── l_floating_convex.iv │ │ │ │ │ ├── l_floating_convex.obj │ │ │ │ │ ├── l_floating_convex.stla │ │ │ │ │ ├── l_floating_convex.stlb │ │ │ │ │ ├── upper_finger_l.dae │ │ │ │ │ ├── upper_finger_l.obj │ │ │ │ │ ├── upper_finger_l.xml │ │ │ │ │ ├── upper_finger_l_convex.iv │ │ │ │ │ ├── upper_finger_l_convex.obj │ │ │ │ │ ├── upper_finger_l_convex.stla │ │ │ │ │ ├── upper_finger_l_convex.stlb │ │ │ │ │ ├── upper_finger_r.dae │ │ │ │ │ ├── upper_finger_r.obj │ │ │ │ │ ├── upper_finger_r.xml │ │ │ │ │ ├── upper_finger_r_convex.iv │ │ │ │ │ ├── upper_finger_r_convex.obj │ │ │ │ │ ├── upper_finger_r_convex.stla │ │ │ │ │ └── upper_finger_r_convex.stlb │ │ │ │ ├── finger_H_Color_100430.tif │ │ │ │ ├── finger_H_UV_100430.dae │ │ │ │ ├── finger_tip_H_UV_100430.dae │ │ │ │ ├── finger_tip_l.stl │ │ │ │ ├── finger_tip_pad2_l.stl │ │ │ │ ├── finger_tip_pad2_r.stl │ │ │ │ ├── finger_tip_r.stl │ │ │ │ ├── fingertip_H_Color_100430.tif │ │ │ │ ├── float_H_Color_100430.tif │ │ │ │ ├── float_H_UV_100430.dae │ │ │ │ ├── gripper_palm.dae │ │ │ │ ├── gripper_palm.stl │ │ │ │ ├── gripper_palm_color.tif │ │ │ │ ├── gripper_palm_normals.tif │ │ │ │ ├── iv │ │ │ │ │ ├── finger_tip_l.iv │ │ │ │ │ ├── finger_tip_pad2_l.iv │ │ │ │ │ ├── finger_tip_pad2_r.iv │ │ │ │ │ ├── finger_tip_r.iv │ │ │ │ │ ├── gripper_palm.iv │ │ │ │ │ ├── l_finger.iv │ │ │ │ │ ├── l_finger_tip.iv │ │ │ │ │ ├── l_floating.iv │ │ │ │ │ ├── upper_finger_l.iv │ │ │ │ │ └── upper_finger_r.iv │ │ │ │ ├── l_finger.dae │ │ │ │ ├── l_finger.stl │ │ │ │ ├── l_finger_color.tif │ │ │ │ ├── l_finger_normals.tif │ │ │ │ ├── l_finger_tip.dae │ │ │ │ ├── l_finger_tip.stl │ │ │ │ ├── l_finger_tip_color.tif │ │ │ │ ├── l_finger_tip_normals.tif │ │ │ │ ├── l_float.dae │ │ │ │ ├── l_float_color.tif │ │ │ │ ├── l_float_normals.tif │ │ │ │ ├── l_floating.stl │ │ │ │ ├── palm_H_Color_100430.tif │ │ │ │ ├── palm_H_UV_100430.dae │ │ │ │ ├── upper_finger_l.stl │ │ │ │ └── upper_finger_r.stl │ │ │ ├── head_v0 │ │ │ │ ├── convex │ │ │ │ │ ├── head_pan.dae │ │ │ │ │ ├── head_pan.obj │ │ │ │ │ ├── head_pan.xml │ │ │ │ │ ├── head_pan_L.dae │ │ │ │ │ ├── head_pan_L.obj │ │ │ │ │ ├── head_pan_L.xml │ │ │ │ │ ├── head_pan_L_convex.iv │ │ │ │ │ ├── head_pan_L_convex.obj │ │ │ │ │ ├── head_pan_L_convex.stla │ │ │ │ │ ├── head_pan_L_convex.stlb │ │ │ │ │ ├── head_pan_convex.iv │ │ │ │ │ ├── head_pan_convex.obj │ │ │ │ │ ├── head_pan_convex.stla │ │ │ │ │ ├── head_pan_convex.stlb │ │ │ │ │ ├── head_tilt.dae │ │ │ │ │ ├── head_tilt.obj │ │ │ │ │ ├── head_tilt.xml │ │ │ │ │ ├── head_tilt_L.dae │ │ │ │ │ ├── head_tilt_L.obj │ │ │ │ │ ├── head_tilt_L.xml │ │ │ │ │ ├── head_tilt_L_convex.iv │ │ │ │ │ ├── head_tilt_L_convex.obj │ │ │ │ │ ├── head_tilt_L_convex.stla │ │ │ │ │ ├── head_tilt_L_convex.stlb │ │ │ │ │ ├── head_tilt_convex.iv │ │ │ │ │ ├── head_tilt_convex.obj │ │ │ │ │ ├── head_tilt_convex.stla │ │ │ │ │ └── head_tilt_convex.stlb │ │ │ │ ├── head_pan.dae │ │ │ │ ├── head_pan.stl │ │ │ │ ├── head_pan_L.stl │ │ │ │ ├── head_pan_color.tif │ │ │ │ ├── head_pan_normals.tif │ │ │ │ ├── head_tilt.dae │ │ │ │ ├── head_tilt.stl │ │ │ │ ├── head_tilt_L.stl │ │ │ │ ├── head_tilt_color.tif │ │ │ │ ├── head_tilt_color_red.tif │ │ │ │ ├── head_tilt_color_yellow.tif │ │ │ │ ├── head_tilt_green.tif │ │ │ │ ├── head_tilt_normals.tif │ │ │ │ └── iv │ │ │ │ │ ├── head_pan.iv │ │ │ │ │ ├── head_pan_L.iv │ │ │ │ │ ├── head_tilt.iv │ │ │ │ │ └── head_tilt_L.iv │ │ │ ├── sensors │ │ │ │ ├── kinect2_v0 │ │ │ │ │ └── kinect2_assembly.STL │ │ │ │ ├── kinect_prosilica_v0 │ │ │ │ │ ├── 115x100_swept_back--coarse.STL │ │ │ │ │ ├── 115x100_swept_back_no_sensors--coarse.STL │ │ │ │ │ ├── 115x100_swept_fwd--coarse.STL │ │ │ │ │ ├── 115x100_swept_fwd_no_sensors--coarse.STL │ │ │ │ │ ├── 68-04546_Kinect_Sensor--coarse.STL │ │ │ │ │ └── Prosilica_w_Lens--coarse.STL │ │ │ │ └── kinect_v0 │ │ │ │ │ ├── kinect.dae │ │ │ │ │ ├── kinect.tga │ │ │ │ │ ├── kinect_color.tga │ │ │ │ │ └── kinect_mount.stl │ │ │ ├── shoulder_v0 │ │ │ │ ├── convex │ │ │ │ │ ├── shoulder_lift.dae │ │ │ │ │ ├── shoulder_lift.obj │ │ │ │ │ ├── shoulder_lift.xml │ │ │ │ │ ├── shoulder_lift_convex.iv │ │ │ │ │ ├── shoulder_lift_convex.obj │ │ │ │ │ ├── shoulder_lift_convex.stla │ │ │ │ │ ├── shoulder_lift_convex.stlb │ │ │ │ │ ├── shoulder_pan.dae │ │ │ │ │ ├── shoulder_pan.obj │ │ │ │ │ ├── shoulder_pan.xml │ │ │ │ │ ├── shoulder_pan_convex.iv │ │ │ │ │ ├── shoulder_pan_convex.obj │ │ │ │ │ ├── shoulder_pan_convex.stla │ │ │ │ │ ├── shoulder_pan_convex.stlb │ │ │ │ │ ├── shoulder_yaw.dae │ │ │ │ │ ├── shoulder_yaw.obj │ │ │ │ │ ├── shoulder_yaw.xml │ │ │ │ │ ├── shoulder_yaw_convex.iv │ │ │ │ │ ├── shoulder_yaw_convex.obj │ │ │ │ │ ├── shoulder_yaw_convex.stla │ │ │ │ │ ├── shoulder_yaw_convex.stlb │ │ │ │ │ ├── upper_arm_roll.dae │ │ │ │ │ ├── upper_arm_roll.obj │ │ │ │ │ ├── upper_arm_roll.xml │ │ │ │ │ ├── upper_arm_roll_L.dae │ │ │ │ │ ├── upper_arm_roll_L.obj │ │ │ │ │ ├── upper_arm_roll_L.xml │ │ │ │ │ ├── upper_arm_roll_L_convex.iv │ │ │ │ │ ├── upper_arm_roll_L_convex.obj │ │ │ │ │ ├── upper_arm_roll_L_convex.stla │ │ │ │ │ ├── upper_arm_roll_L_convex.stlb │ │ │ │ │ ├── upper_arm_roll_convex.iv │ │ │ │ │ ├── upper_arm_roll_convex.obj │ │ │ │ │ ├── upper_arm_roll_convex.stla │ │ │ │ │ └── upper_arm_roll_convex.stlb │ │ │ │ ├── iv │ │ │ │ │ ├── shoulder_lift.iv │ │ │ │ │ ├── shoulder_pan.iv │ │ │ │ │ ├── shoulder_yaw.iv │ │ │ │ │ ├── upper_arm_roll.iv │ │ │ │ │ └── upper_arm_roll_L.iv │ │ │ │ ├── shoulder_lift.dae │ │ │ │ ├── shoulder_lift.stl │ │ │ │ ├── shoulder_lift_color.tif │ │ │ │ ├── shoulder_lift_normals.tif │ │ │ │ ├── shoulder_pan.dae │ │ │ │ ├── shoulder_pan.stl │ │ │ │ ├── shoulder_pan_color.tif │ │ │ │ ├── shoulder_pan_normals.tif │ │ │ │ ├── shoulder_yaw.stl │ │ │ │ ├── upper_arm_roll.dae │ │ │ │ ├── upper_arm_roll.stl │ │ │ │ ├── upper_arm_roll_L.stl │ │ │ │ ├── upper_arm_roll_color.tif │ │ │ │ └── upper_arm_roll_normals.tif │ │ │ ├── tilting_laser_v0 │ │ │ │ ├── convex │ │ │ │ │ ├── hok_tilt.dae │ │ │ │ │ ├── hok_tilt.obj │ │ │ │ │ ├── hok_tilt.xml │ │ │ │ │ ├── hok_tilt_convex.iv │ │ │ │ │ ├── hok_tilt_convex.obj │ │ │ │ │ ├── hok_tilt_convex.stla │ │ │ │ │ ├── hok_tilt_convex.stlb │ │ │ │ │ ├── tilting_hokuyo.dae │ │ │ │ │ ├── tilting_hokuyo.obj │ │ │ │ │ ├── tilting_hokuyo.xml │ │ │ │ │ ├── tilting_hokuyo_L.dae │ │ │ │ │ ├── tilting_hokuyo_L.obj │ │ │ │ │ ├── tilting_hokuyo_L.xml │ │ │ │ │ ├── tilting_hokuyo_L_convex.iv │ │ │ │ │ ├── tilting_hokuyo_L_convex.obj │ │ │ │ │ ├── tilting_hokuyo_L_convex.stla │ │ │ │ │ ├── tilting_hokuyo_L_convex.stlb │ │ │ │ │ ├── tilting_hokuyo_convex.iv │ │ │ │ │ ├── tilting_hokuyo_convex.obj │ │ │ │ │ ├── tilting_hokuyo_convex.stla │ │ │ │ │ └── tilting_hokuyo_convex.stlb │ │ │ │ ├── hok_tilt.stl │ │ │ │ ├── iv │ │ │ │ │ ├── hok_tilt.iv │ │ │ │ │ ├── tilting_hokuyo.iv │ │ │ │ │ └── tilting_hokuyo_L.iv │ │ │ │ ├── tilting_hokuyo.dae │ │ │ │ ├── tilting_hokuyo.stl │ │ │ │ ├── tilting_hokuyo_L.stl │ │ │ │ ├── tilting_hokuyo_color.tif │ │ │ │ └── tilting_hokuyo_normals.tif │ │ │ ├── torso_v0 │ │ │ │ ├── convex │ │ │ │ │ ├── torso.dae │ │ │ │ │ ├── torso.obj │ │ │ │ │ ├── torso.xml │ │ │ │ │ ├── torso_convex.iv │ │ │ │ │ ├── torso_convex.obj │ │ │ │ │ ├── torso_convex.stla │ │ │ │ │ ├── torso_convex.stlb │ │ │ │ │ ├── torso_lift.dae │ │ │ │ │ ├── torso_lift.obj │ │ │ │ │ ├── torso_lift.xml │ │ │ │ │ ├── torso_lift_L.dae │ │ │ │ │ ├── torso_lift_L.obj │ │ │ │ │ ├── torso_lift_L.xml │ │ │ │ │ ├── torso_lift_L_convex.iv │ │ │ │ │ ├── torso_lift_L_convex.obj │ │ │ │ │ ├── torso_lift_L_convex.stla │ │ │ │ │ ├── torso_lift_L_convex.stlb │ │ │ │ │ ├── torso_lift_convex.iv │ │ │ │ │ ├── torso_lift_convex.obj │ │ │ │ │ ├── torso_lift_convex.stla │ │ │ │ │ └── torso_lift_convex.stlb │ │ │ │ ├── iv │ │ │ │ │ ├── torso.iv │ │ │ │ │ ├── torso_lift.iv │ │ │ │ │ └── torso_lift_L.iv │ │ │ │ ├── torso.stl │ │ │ │ ├── torso_lift.dae │ │ │ │ ├── torso_lift.stl │ │ │ │ ├── torso_lift_L.stl │ │ │ │ ├── torso_lift_color.tif │ │ │ │ └── torso_lift_normals.tif │ │ │ └── upper_arm_v0 │ │ │ │ ├── convex │ │ │ │ ├── elbow_flex.dae │ │ │ │ ├── elbow_flex.obj │ │ │ │ ├── elbow_flex.xml │ │ │ │ ├── elbow_flex_convex.iv │ │ │ │ ├── elbow_flex_convex.obj │ │ │ │ ├── elbow_flex_convex.stla │ │ │ │ ├── elbow_flex_convex.stlb │ │ │ │ ├── forearm_roll.dae │ │ │ │ ├── forearm_roll.obj │ │ │ │ ├── forearm_roll.xml │ │ │ │ ├── forearm_roll_L.dae │ │ │ │ ├── forearm_roll_L.obj │ │ │ │ ├── forearm_roll_L.xml │ │ │ │ ├── forearm_roll_L_convex.iv │ │ │ │ ├── forearm_roll_L_convex.obj │ │ │ │ ├── forearm_roll_L_convex.stla │ │ │ │ ├── forearm_roll_L_convex.stlb │ │ │ │ ├── forearm_roll_convex.iv │ │ │ │ ├── forearm_roll_convex.obj │ │ │ │ ├── forearm_roll_convex.stla │ │ │ │ ├── forearm_roll_convex.stlb │ │ │ │ ├── upper_arm.dae │ │ │ │ ├── upper_arm.obj │ │ │ │ ├── upper_arm.xml │ │ │ │ ├── upper_arm_convex.iv │ │ │ │ ├── upper_arm_convex.obj │ │ │ │ ├── upper_arm_convex.stla │ │ │ │ └── upper_arm_convex.stlb │ │ │ │ ├── elbow_flex.dae │ │ │ │ ├── elbow_flex.stl │ │ │ │ ├── elbow_flex_color.tif │ │ │ │ ├── elbow_flex_normals.tif │ │ │ │ ├── forearm_roll.stl │ │ │ │ ├── forearm_roll_L.stl │ │ │ │ ├── iv │ │ │ │ ├── elbow_flex.iv │ │ │ │ ├── forearm_roll.iv │ │ │ │ ├── forearm_roll_L.iv │ │ │ │ └── upper_arm.iv │ │ │ │ ├── upper_arm.dae │ │ │ │ ├── upper_arm.jpg │ │ │ │ ├── upper_arm.stl │ │ │ │ ├── upper_arm_color.tif │ │ │ │ └── upper_arm_normals.tif │ │ │ ├── package.xml │ │ │ ├── pr2.urdf │ │ │ ├── pr2.urdf~ │ │ │ ├── robots │ │ │ ├── README │ │ │ ├── pr2.urdf.xacro │ │ │ ├── pr2_no_arms.urdf.xacro │ │ │ ├── pr2_no_kinect.urdf.xacro │ │ │ ├── pr2_se.urdf.xacro │ │ │ └── upload_pr2.launch │ │ │ └── urdf │ │ │ ├── base_v0 │ │ │ ├── base.gazebo.xacro │ │ │ ├── base.transmission.xacro │ │ │ └── base.urdf.xacro │ │ │ ├── common.xacro │ │ │ ├── forearm_v0 │ │ │ ├── forearm.gazebo.xacro │ │ │ ├── forearm.transmission.xacro │ │ │ └── forearm.urdf.xacro │ │ │ ├── gripper_v0 │ │ │ ├── gripper.gazebo.xacro │ │ │ ├── gripper.transmission.xacro │ │ │ └── gripper.urdf.xacro │ │ │ ├── head_v0 │ │ │ ├── head.gazebo.xacro │ │ │ ├── head.transmission.xacro │ │ │ └── head.urdf.xacro │ │ │ ├── materials.urdf.xacro │ │ │ ├── sensors │ │ │ ├── double_stereo_camera.gazebo.xacro │ │ │ ├── double_stereo_camera.urdf.xacro │ │ │ ├── head_sensor_package.gazebo.xacro │ │ │ ├── head_sensor_package.urdf.xacro │ │ │ ├── hokuyo_lx30_laser.gazebo.xacro │ │ │ ├── hokuyo_lx30_laser.urdf.xacro │ │ │ ├── kinect2.gazebo.xacro │ │ │ ├── kinect2.urdf.xacro │ │ │ ├── kinect_camera.gazebo.xacro │ │ │ ├── kinect_camera.urdf.xacro │ │ │ ├── kinect_prosilica_camera.gazebo.xacro │ │ │ ├── kinect_prosilica_camera.urdf.xacro │ │ │ ├── microstrain_3dmgx2_imu.gazebo.xacro │ │ │ ├── microstrain_3dmgx2_imu.urdf.xacro │ │ │ ├── projector_wg6802418.gazebo.xacro │ │ │ ├── projector_wg6802418.urdf.xacro │ │ │ ├── prosilica_gc2450_camera.gazebo.xacro │ │ │ ├── prosilica_gc2450_camera.urdf.xacro │ │ │ ├── stereo_camera.gazebo.xacro │ │ │ ├── stereo_camera.urdf.xacro │ │ │ ├── wge100_camera.gazebo.xacro │ │ │ └── wge100_camera.urdf.xacro │ │ │ ├── shoulder_v0 │ │ │ ├── shoulder.gazebo.xacro │ │ │ ├── shoulder.transmission.xacro │ │ │ └── shoulder.urdf.xacro │ │ │ ├── tilting_laser_v0 │ │ │ ├── tilting_laser.gazebo.xacro │ │ │ ├── tilting_laser.transmission.xacro │ │ │ └── tilting_laser.urdf.xacro │ │ │ ├── torso_v0 │ │ │ ├── torso.gazebo.xacro │ │ │ ├── torso.transmission.xacro │ │ │ └── torso.urdf.xacro │ │ │ └── upper_arm_v0 │ │ │ ├── upper_arm.gazebo.xacro │ │ │ ├── upper_arm.transmission.xacro │ │ │ └── upper_arm.urdf.xacro │ └── vsk │ │ └── fullbody.vsk ├── gravity_compensation.py ├── hello_pydart.py ├── ik.py ├── inspect_skeleton.py ├── shapes.py ├── simple_tracking.py ├── soft_bodies.py └── view_skeleton.py ├── pydart2 ├── __init__.py ├── bodynode.py ├── collision_result.py ├── constraints.py ├── contact.py ├── dof.py ├── gui │ ├── __init__.py │ ├── glut │ │ ├── __init__.py │ │ └── window.py │ ├── opengl │ │ ├── __init__.py │ │ ├── renderer.py │ │ └── scene.py │ ├── pyqt4 │ │ ├── __init__.py │ │ ├── glwidget.py │ │ ├── side_panel.py │ │ └── window.py │ ├── pyqt5 │ │ ├── __init__.py │ │ ├── glwidget.py │ │ ├── side_panel.py │ │ └── window.py │ ├── trackball.py │ └── viewer.py ├── joint.py ├── marker.py ├── muscle │ ├── __init__.py │ ├── model_geyer_2010.py │ ├── route.py │ ├── skeleton.py │ └── tendon_unit.py ├── numpy.i ├── pydart2_api.cpp ├── pydart2_api.h ├── pydart2_api.i ├── pydart2_bodynode_api.cpp ├── pydart2_bodynode_api.h ├── pydart2_dof_api.cpp ├── pydart2_dof_api.h ├── pydart2_draw.cpp ├── pydart2_draw.h ├── pydart2_joint_api.cpp ├── pydart2_joint_api.h ├── pydart2_manager.cpp ├── pydart2_manager.h ├── pydart2_shape_api.cpp ├── pydart2_shape_api.h ├── pydart2_skeleton_api.cpp ├── pydart2_skeleton_api.h ├── pydart2_world_api.cpp ├── pydart2_world_api.h ├── recording.py ├── shape.py ├── shapenode.py ├── skel_vector.py ├── skeleton.py ├── utils │ ├── __init__.py │ ├── colored_text.py │ ├── jsonpickle.py │ ├── log.py │ ├── misc.py │ ├── time_measure.py │ └── transformations.py └── world.py ├── requirements.txt ├── setup.cfg ├── setup.py ├── setup_cmake.py └── tests ├── __init__.py ├── config.py ├── test_basic.py └── test_skeleton.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | local_settings.py 55 | 56 | # Flask stuff: 57 | instance/ 58 | .webassets-cache 59 | 60 | # Scrapy stuff: 61 | .scrapy 62 | 63 | # Sphinx documentation 64 | docs/_build/ 65 | 66 | # PyBuilder 67 | target/ 68 | 69 | # IPython Notebook 70 | .ipynb_checkpoints 71 | 72 | # pyenv 73 | .python-version 74 | 75 | # celery beat schedule file 76 | celerybeat-schedule 77 | 78 | # dotenv 79 | .env 80 | 81 | # virtualenv 82 | venv/ 83 | ENV/ 84 | 85 | # Spyder project settings 86 | .spyderproject 87 | 88 | # Rope project settings 89 | .ropeproject 90 | 91 | # Auxiliary build files 92 | pydart2/pydart2_api.py 93 | pydart2/*wrap* 94 | 95 | examples/*.mp4 96 | examples/data/captures/*.png 97 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | sudo: required 3 | dist: trusty 4 | 5 | python: 6 | - "2.7" 7 | - "3.4" 8 | 9 | before_install: 10 | - sudo apt-add-repository ppa:libccd-debs -y 11 | - sudo apt-add-repository ppa:fcl-debs -y 12 | - sudo apt-add-repository ppa:dartsim -y 13 | - sudo apt-get update -q 14 | - sudo apt-get install libdart6-all-dev -y 15 | - sudo apt-get install swig -y 16 | - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then sudo apt-get install swig python-pip python-qt4 python-qt4-dev python-qt4-gl -y; fi 17 | - if [[ $TRAVIS_PYTHON_VERSION == 3.4 ]]; then sudo apt-get install python3-pip python3-pyqt4 python3-pyqt4.qtopengl -y; fi 18 | 19 | # command to install dependencies 20 | install: 21 | - pip install -r requirements.txt 22 | - python setup.py build build_ext 23 | 24 | # command to run tests 25 | script: 26 | - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then make runtests2; fi 27 | - if [[ $TRAVIS_PYTHON_VERSION == 3.4 ]]; then make runtests; fi 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Georgia Tech Research Corporation 2 | All rights reserved. 3 | 4 | Georgia Tech Graphics Lab and Humanoid Robotics Lab 5 | Directed by: 6 | - Prof. C. Karen Liu 7 | - Prof. Mike Stilman 8 | 9 | This file is provided under the following "BSD-style" License: 10 | Redistribution and use in source and binary forms, with or 11 | without modification, are permitted provided that the following 12 | conditions are met: 13 | * Redistributions of source code must retain the above copyright 14 | notice, this list of conditions and the following disclaimer. 15 | * Redistributions in binary form must reproduce the above 16 | copyright notice, this list of conditions and the following 17 | disclaimer in the documentation and/or other materials provided 18 | with the distribution. 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 20 | CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 21 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 22 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 24 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 27 | USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 30 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include pydart2/pydart2_joint_api.h 2 | include pydart2/pydart2_bodynode_api.h 3 | include pydart2/pydart2_shape_api.h 4 | include pydart2/pydart2_api.h 5 | include pydart2/pydart2_dof_api.h 6 | include pydart2/pydart2_manager.h 7 | include pydart2/pydart2_draw.h 8 | include pydart2/pydart2_skeleton_api.h 9 | include pydart2/pydart2_world_api.h 10 | include pydart2/numpy.i 11 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # ########################################33 2 | # An incomplete set of useful commands... 3 | SOURCES = $(wildcard pydart2/*.cpp) 4 | HEADERS = $(wildcard pydart2/*.h) 5 | INTERFACE = pydart2/pydart2_api.i 6 | 7 | build: $(SOURCES) $(HEADERS) $(INTERFACE) 8 | python3 setup.py build build_ext 9 | 10 | upload: 11 | python3 setup.py sdist upload 12 | 13 | clean: 14 | rm -r *.so pydart2/pydart2_api.py build pydart2/pydart2_api_wrap.cpp pydart2/*.pyc 15 | 16 | build2: $(SOURCES) $(HEADERS) $(INTERFACE) 17 | python2 setup.py build build_ext 18 | 19 | upload2: 20 | python2 setup.py sdist upload 21 | 22 | build3: $(SOURCES) $(HEADERS) $(INTERFACE) 23 | python3 setup.py build build_ext 24 | 25 | upload3: 26 | python3 setup.py sdist upload 27 | 28 | runtests: 29 | python3 -m unittest discover -s tests -p "test*.py" -v 30 | 31 | runtests2: 32 | python -m unittest discover -s tests -p "test*.py" -v 33 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | PyDART2 is an open source python binding of DART, an open source physics 2 | simulator. Its APIs are designed to provide concise and powerful control on 3 | DART physics worlds. Further, a user can write simulations with a numerous 4 | python scientific libraries, such as NumPy(linear algebra), 5 | SciPy(optimization), scikit-learn (machine learning), PyBrain(machine 6 | learning), and so on. 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## PyDart2 2 | 3 | 4 | 5 | 8 | 11 | 12 |
6 | 7 | 9 | 10 |
13 | 14 | - News! 15 | + [2016/09/24] PyDART2 now supports both Python2 and Python3. 16 | + [2016/08/05] PyDART is upgraded to PyDART2, for easier installation and richer APIs. 17 | 18 | ====== 19 | PyDART2 is an open source python binding of DART, an open source physics 20 | simulator. Its APIs are designed to provide concise and powerful control on 21 | DART physics worlds. Further, a user can write simulations with a numerous 22 | python scientific libraries, such as NumPy(linear algebra), 23 | SciPy(optimization), scikit-learn (machine learning), PyBrain(machine 24 | learning), and so on. 25 | 26 | ====== 27 | ## Environment 28 | + Ubuntu 16.04 29 | + Python2 / Python 3 30 | + DART 6.0.1 (or higher): https://github.com/dartsim/dart/ 31 | 32 | ====== 33 | ## Build Status 34 | 35 | [![Build Status](https://api.travis-ci.org/sehoonha/pydart2.svg)](https://travis-ci.org/sehoonha/pydart2) 36 | [![Doc Status](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](http://pydart2.readthedocs.io/en/latest/) 37 | [![Code Health](https://landscape.io/github/sehoonha/pydart2/master/landscape.svg?style=flat)](https://landscape.io/github/sehoonha/pydart2/master) 38 | 39 | 40 | ====== 41 | ## Documentation 42 | + http://pydart2.readthedocs.io/en/latest/ 43 | 44 | ====== 45 | ## Contact 46 | Please contact me when you have questions or suggestions: sehoon.ha@gmail.com 47 | Note: I am much more responsive for emails than pull-requests! 48 | -------------------------------------------------------------------------------- /cmake/FindEigen.cmake: -------------------------------------------------------------------------------- 1 | # Find Eigen 2 | # 3 | # This sets the following variables: 4 | # Eigen_FOUND 5 | # Eigen_INCLUDE_DIRS 6 | 7 | find_path(Eigen_INCLUDE_DIR 8 | NAMES Eigen/Core 9 | PATHS "${CMAKE_INSTALL_PREFIX}/include" 10 | PATH_SUFFIXES eigen3 eigen) 11 | 12 | set(Eigen_INCLUDE_DIRS ${Eigen_INCLUDE_DIR}) 13 | 14 | include(FindPackageHandleStandardArgs) 15 | find_package_handle_standard_args(Eigen DEFAULT_MSG Eigen_INCLUDE_DIR) 16 | 17 | mark_as_advanced(Eigen_INCLUDE_DIR) -------------------------------------------------------------------------------- /cmake/FindTinyXML2.cmake: -------------------------------------------------------------------------------- 1 | # Find TinyXML 2 | # 3 | # This sets the following variables: 4 | # TinyXML2_FOUND 5 | # TinyXML2_INCLUDE_DIRS 6 | # TinyXML2_LIBRARIES 7 | 8 | find_path(TinyXML2_INCLUDE_DIR tinyxml2.h 9 | PATHS "${CMAKE_INSTALL_PREFIX}/include") 10 | 11 | set(TinyXML2_INCLUDE_DIRS ${TinyXML2_INCLUDE_DIR}) 12 | 13 | if(MSVC) 14 | set(TinyXML2_LIBRARIES optimized tinyxml2 debug tinyxml2d) 15 | else() 16 | set(TinyXML2_LIBRARIES tinyxml2) 17 | endif() 18 | 19 | include(FindPackageHandleStandardArgs) 20 | find_package_handle_standard_args(TinyXML2 DEFAULT_MSG TinyXML2_INCLUDE_DIR) 21 | 22 | mark_as_advanced(TinyXML2_INCLUDE_DIR) -------------------------------------------------------------------------------- /docs/source/examples.rst: -------------------------------------------------------------------------------- 1 | Examples 2 | =================================== 3 | 4 | Unfortunately, I cannot write all the documentation by myself. 5 | Instead, please use the following examples as tutorial. 6 | 7 | For source codes and data files, please visit the repository 8 | . 9 | 10 | .. toctree:: 11 | :maxdepth: 1 12 | 13 | examples/hello_pydart.rst 14 | examples/view_skeleton.rst 15 | examples/chain.rst 16 | examples/simple_tracking.rst 17 | examples/inspect_skeleton.rst 18 | examples/biped_jump.rst 19 | examples/biped_stand.rst 20 | examples/soft_bodies.rst 21 | examples/gravity_compensation.rst 22 | examples/inverse_kinematics.rst 23 | -------------------------------------------------------------------------------- /docs/source/examples/chain.rst: -------------------------------------------------------------------------------- 1 | Chain: A basic controller 2 | =================================== 3 | This example demonstrates a simple damping controller for a single chain. 4 | 5 | 6 | Screenshot 7 | ^^^^^^^^^^^^ 8 | 9 | .. image:: images/chain.png 10 | 11 | Code 12 | ^^^^^^^^^^^^ 13 | 14 | .. code-block:: python 15 | :linenos: 16 | 17 | import numpy as np 18 | 19 | 20 | class DampingController: 21 | """ Add damping force to the skeleton """ 22 | def __init__(self, skel): 23 | self.skel = skel 24 | 25 | def compute(self): 26 | damping = -0.01 * self.skel.dq 27 | damping[1::3] *= 0.1 28 | return damping 29 | 30 | 31 | if __name__ == '__main__': 32 | import pydart2 as pydart 33 | 34 | pydart.init(verbose=True) 35 | print('pydart initialization OK') 36 | 37 | world = pydart.World(1.0 / 5000.0, './data/skel/chain.skel') 38 | print('pydart create_world OK') 39 | 40 | skel = world.skeletons[0] 41 | skel.q = (np.random.rand(skel.ndofs) - 0.5) 42 | print('init pose = %s' % skel.q) 43 | skel.controller = DampingController(skel) 44 | 45 | pydart.gui.viewer.launch(world) 46 | -------------------------------------------------------------------------------- /docs/source/examples/hello_pydart.rst: -------------------------------------------------------------------------------- 1 | Cubes: Hello, PyDART! 2 | =================================== 3 | This example loads the simulation of cubes and runs it for 2 seconds. 4 | 5 | 6 | Screenshot 7 | ^^^^^^^^^^^^ 8 | 9 | .. image:: images/hello_pydart.png 10 | 11 | Code 12 | ^^^^^^^^^^^^ 13 | 14 | .. code-block:: python 15 | :linenos: 16 | 17 | import pydart2 as pydart 18 | 19 | if __name__ == '__main__': 20 | print('Hello, PyDART!') 21 | 22 | pydart.init() 23 | print('pydart initialization OK') 24 | 25 | world = pydart.World(1.0 / 2000.0, './data/skel/cubes.skel') 26 | print('pydart create_world OK') 27 | 28 | while world.t < 2.0: 29 | if world.nframes % 100 == 0: 30 | skel = world.skeletons[-1] 31 | print("%.4fs: The last cube COM = %s" % (world.t, str(skel.C))) 32 | world.step() 33 | -------------------------------------------------------------------------------- /docs/source/examples/images/biped_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/biped_jump.png -------------------------------------------------------------------------------- /docs/source/examples/images/biped_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/biped_stand.png -------------------------------------------------------------------------------- /docs/source/examples/images/chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/chain.png -------------------------------------------------------------------------------- /docs/source/examples/images/gravity_compensation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/gravity_compensation.png -------------------------------------------------------------------------------- /docs/source/examples/images/hello_pydart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/hello_pydart.png -------------------------------------------------------------------------------- /docs/source/examples/images/inverse_kinematics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/inverse_kinematics.png -------------------------------------------------------------------------------- /docs/source/examples/images/simple_tracking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/simple_tracking.png -------------------------------------------------------------------------------- /docs/source/examples/images/soft_bodies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/soft_bodies.png -------------------------------------------------------------------------------- /docs/source/examples/images/view_skeleton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/examples/images/view_skeleton.png -------------------------------------------------------------------------------- /docs/source/examples/simple_tracking.rst: -------------------------------------------------------------------------------- 1 | Simple Tracking: Robot configuration and PD tracking 2 | ==================================================== 3 | This example demonstrates a PD-controller in zero gravity. 4 | Please note that the numeric vector of target positions can be configured 5 | semantically with names of degrees of freedom. 6 | 7 | 8 | Screenshot 9 | ^^^^^^^^^^^^ 10 | 11 | .. image:: images/simple_tracking.png 12 | 13 | Code 14 | ^^^^^^^^^^^^ 15 | 16 | .. code-block:: python 17 | :linenos: 18 | 19 | import pydart2 as pydart 20 | import numpy as np 21 | 22 | 23 | class Controller: 24 | def __init__(self, skel): 25 | self.skel = skel 26 | self.target = None 27 | self.Kp = np.array([0.0] * 6 + [400.0] * (self.skel.ndofs - 6)) 28 | self.Kd = np.array([0.0] * 6 + [40.0] * (self.skel.ndofs - 6)) 29 | 30 | def compute(self): 31 | return -self.Kp * (self.skel.q - self.target) - self.Kd * self.skel.dq 32 | 33 | 34 | if __name__ == '__main__': 35 | print('Example: bipedStand') 36 | 37 | pydart.init() 38 | print('pydart initialization OK') 39 | 40 | world = pydart.World(1.0 / 2000.0) 41 | world.set_gravity([0.0, 0.0, 0.0]) 42 | print('World OK') 43 | 44 | skel = world.add_skeleton('./data/sdf/atlas/atlas_v3_no_head.sdf') 45 | print('Skeleton = ' + str(skel)) 46 | 47 | # Set joint damping 48 | for dof in skel.dofs: 49 | dof.set_damping_coefficient(80.0) 50 | 51 | # Set target pose 52 | target = skel.positions() 53 | target[("l_arm_shy", "r_arm_shy")] = -1.0, 1.0 54 | target[("l_leg_hpy", "r_leg_hpy")] = -1.0, -1.0 55 | target[("l_leg_kny", "r_leg_kny")] = 1.0, 1.0 56 | 57 | # Initialize the controller 58 | controller = Controller(skel) 59 | controller.target = target 60 | skel.set_controller(controller) 61 | print('create controller OK') 62 | 63 | pydart.gui.viewer.launch(world, 64 | default_camera=1) # Use Z-up camera 65 | -------------------------------------------------------------------------------- /docs/source/examples/soft_bodies.rst: -------------------------------------------------------------------------------- 1 | Soft Bodies: Softbody simulation 2 | =================================== 3 | This example loads the simulation of soft bodies 4 | 5 | 6 | Screenshot 7 | ^^^^^^^^^^^^ 8 | 9 | .. image:: images/soft_bodies.png 10 | 11 | Code 12 | ^^^^^^^^^^^^ 13 | 14 | .. code-block:: python 15 | :linenos: 16 | 17 | import pydart2 as pydart 18 | if __name__ == '__main__': 19 | pydart.init() 20 | print('pydart initialization OK') 21 | 22 | world = pydart.World(1.0 / 2000.0, './data/skel/softBodies.skel') 23 | print('pydart create_world OK') 24 | 25 | pydart.gui.viewer.launch(world) 26 | -------------------------------------------------------------------------------- /docs/source/examples/view_skeleton.rst: -------------------------------------------------------------------------------- 1 | Skeleton Viewer: A basic GUI 2 | =================================== 3 | This example demonstrates how to load a skeleton, and visualize it using GUI. 4 | The following screenshot is the result of the following command. 5 | 6 | .. code-block:: bash 7 | 8 | python view_skeleton.py data/sdf/atlas/atlas_v3_no_head.sdf 9 | 10 | Note: you need to rotate the camera using drag, shift-drag, and control-drag. 11 | 12 | Screenshot 13 | ^^^^^^^^^^^^ 14 | 15 | .. image:: images/view_skeleton.png 16 | 17 | Code 18 | ^^^^^^^^^^^^ 19 | 20 | .. code-block:: python 21 | :linenos: 22 | 23 | if __name__ == '__main__': 24 | import sys 25 | import pydart2 as pydart 26 | 27 | if len(sys.argv) != 2: 28 | print("Usage: view_skeleton.py [*.urdf/*.sdf]") 29 | exit(0) 30 | 31 | skel_path = sys.argv[1] 32 | print("skeleton path = %s" % skel_path) 33 | 34 | pydart.init() 35 | print("Pydart init OK") 36 | 37 | world = pydart.World(1.0 / 1000.0) 38 | print("World init OK") 39 | 40 | skel = world.add_skeleton(skel_path) 41 | print("Skeleton add OK") 42 | 43 | print("Camera:") 44 | print(" drag: rotate camera") 45 | print(" shift-drag: zoom camera") 46 | print(" control-drag: translate camera") 47 | 48 | pydart.gui.viewer.launch(world) 49 | -------------------------------------------------------------------------------- /docs/source/images/DARTlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/images/DARTlogo.png -------------------------------------------------------------------------------- /docs/source/images/PYTHONlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/docs/source/images/PYTHONlogo.png -------------------------------------------------------------------------------- /docs/source/index.rst: -------------------------------------------------------------------------------- 1 | Welcome to PyDART2's documentation! 2 | =================================== 3 | 4 | .. image:: images/DARTlogo.png 5 | :width: 200pt 6 | .. image:: images/PYTHONlogo.png 7 | :width: 200pt 8 | 9 | PyDART2 is an open source python binding of DART(6.0.1), an open source physics 10 | simulator. Its APIs are designed to provide concise and powerful control on 11 | DART physics worlds. Further, a user can write simulations with a numerous 12 | python scientific libraries, such as NumPy(linear algebra), 13 | SciPy(optimization), scikit-learn (machine learning), PyBrain(machine 14 | learning), and so on. 15 | 16 | 17 | 18 | News 19 | ================== 20 | * [2016/09/24] PyDART2 now supports both Python2 and Python3. 21 | * [2016/08/05] PyDART2 supports the DART 6.0.1 22 | * [2016/08/05] PyDART is upgraded to PyDART2, for easier installation and richer APIs. 23 | 24 | Contents: 25 | ================= 26 | .. toctree:: 27 | :maxdepth: 2 28 | 29 | install.rst 30 | examples.rst 31 | 32 | Environment 33 | ================== 34 | * Ubuntu 16.04 35 | * Python2/Python3 36 | * DART 6.0.1 (or higher): https://github.com/dartsim/dart/ 37 | 38 | Contact 39 | ================== 40 | * GitHub Repository: https://github.com/sehoonha/pydart2 41 | Please contact me when you have questions or suggestions: sehoon.ha@gmail.com 42 | 43 | Indices and tables 44 | ================== 45 | 46 | * :ref:`genindex` 47 | * :ref:`modindex` 48 | * :ref:`search` 49 | -------------------------------------------------------------------------------- /docs/source/install.rst: -------------------------------------------------------------------------------- 1 | Installation Guide 2 | =================================== 3 | 4 | Install with pip (easy) 5 | ---------------------------------- 6 | In Ubuntu, PyDART2 can be easily installed using PyPI - the Python Package 7 | Index. 8 | The default Python environment is assumed to be Python3, although PyDART2 is also available in Python2. 9 | 10 | The first step is to install DART 6.0.1 (You can skip this if you already have it!). 11 | Please use your favorite method to install DART, such as, .. 12 | 13 | .. code-block:: bash 14 | 15 | sudo apt-add-repository ppa:dartsim 16 | sudo apt-get update 17 | sudo apt-get install libdart6-all-dev 18 | 19 | 20 | Please refer the official DART installation document 21 | () 22 | when you have problems. 23 | 24 | 25 | The next step is to install SWIG, pip3, and PyQt4. 26 | 27 | They can be installed by the following command: 28 | 29 | .. code-block:: bash 30 | 31 | sudo apt-get install swig python3-pip python3-pyqt4 python3-pyqt4.qtopengl 32 | 33 | 34 | The final step is to install PyDART2 using pip3. 35 | 36 | .. code-block:: bash 37 | 38 | sudo pip3 install pydart2 39 | 40 | All done! Please enjoy the simulation. 41 | 42 | .. code-block:: bash 43 | 44 | $ python3 45 | >>> import pydart2 as pydart 46 | >>> pydart.init(verbose=True) 47 | Msg [pydart2_api] Initialize pydart manager OK 48 | 49 | For Python2 users, please apply the following commands: 50 | 51 | .. code-block:: bash 52 | 53 | sudo apt-get install swig python-pip python-qt4 python-qt4-dev python-qt4-gl 54 | sudo pip install pydart2 55 | 56 | 57 | 58 | Install from source code 59 | ---------------------------------- 60 | Sometimes, you want to edit source codes by yourself. 61 | For the following steps, I assumed that you already installed the required 62 | packages - swig, pip, PyQt4, and so on. 63 | 64 | First, please check out the repository. 65 | 66 | .. code-block:: bash 67 | 68 | git clone https://github.com/sehoonha/pydart2.git 69 | cd pydart2 70 | 71 | The next step is to compile the package using setup.py 72 | 73 | .. code-block:: bash 74 | 75 | python setup.py build build_ext 76 | 77 | The final step is to install the python package as a development. 78 | 79 | .. code-block:: bash 80 | 81 | python setup.py develop 82 | 83 | 84 | Install using CMake (Old-style) 85 | ---------------------------------- 86 | I also wrote CMakeLists.txt, which is an old-style cross compilation system 87 | used in the original PyDART. 88 | -------------------------------------------------------------------------------- /examples/chain.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Disney Research 2 | # All rights reserved. 3 | # 4 | # Author(s): Sehoon Ha 5 | # Disney Research Robotics Group 6 | import numpy as np 7 | 8 | 9 | class DampingController(object): 10 | """ Add damping force to the skeleton """ 11 | def __init__(self, skel): 12 | self.skel = skel 13 | 14 | def compute(self): 15 | damping = -0.01 * self.skel.dq 16 | damping[1::3] *= 0.1 17 | return damping 18 | 19 | 20 | if __name__ == '__main__': 21 | import pydart2 as pydart 22 | 23 | pydart.init(verbose=True) 24 | print('pydart initialization OK') 25 | 26 | world = pydart.World(0.0002, './data/skel/chain.skel') 27 | print('pydart create_world OK') 28 | 29 | skel = world.skeletons[0] 30 | skel.q = (np.random.rand(skel.ndofs) - 0.5) 31 | print('init pose = %s' % skel.q) 32 | skel.controller = DampingController(skel) 33 | 34 | pydart.gui.viewer.launch(world) 35 | 36 | # # Or, you can manually create the window... 37 | # win = pydart.gui.viewer.PydartWindow(world) 38 | # win.camera_event(1) 39 | # win.run_application() 40 | -------------------------------------------------------------------------------- /examples/data/sdf/atlas/ground.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 | -------------------------------------------------------------------------------- /examples/data/sdf/atlas/head.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/head.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/head_camera.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/head_camera.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_clav.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_clav.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_farm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_farm.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_foot.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_foot.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_hand.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_hand.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_larm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_larm.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_lglut.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_lglut.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_lleg.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_lleg.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_scap.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_scap.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_talus.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_talus.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_uarm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_uarm.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_uglut.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_uglut.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/l_uleg.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/l_uleg.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/ltorso.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/ltorso.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/mtorso.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/mtorso.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/pelvis.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/pelvis.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_clav.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_clav.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_farm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_farm.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_foot.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_foot.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_hand.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_hand.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_larm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_larm.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_lglut.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_lglut.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_lleg.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_lleg.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_scap.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_scap.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_talus.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_talus.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_uarm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_uarm.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_uglut.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_uglut.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/r_uleg.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/r_uleg.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/utorso.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/utorso.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/utorso_mod.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/utorso_mod.stl -------------------------------------------------------------------------------- /examples/data/sdf/atlas/utorso_pack.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/sdf/atlas/utorso_pack.stl -------------------------------------------------------------------------------- /examples/data/sdf/empty.world: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://sun 7 | 8 | 9 | 10 | model://ground_plane 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/data/sdf/ground.world: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0 0.0 -9.81 6 | 0.000000 7 | 0.001000 8 | 9 | 10 | 11 | true 12 | 13 | 14 | 15 | 16 | 0 0 1 17 | 100 100 18 | 19 | 20 | 21 | 22 | 23 | 100 24 | 50 25 | 26 | 27 | 28 | 29 | 30 | false 31 | 32 | 33 | 0 0 1 34 | 100 100 35 | 36 | 37 | 38 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/cmake/pr2_descriptionConfig-version.cmake: -------------------------------------------------------------------------------- 1 | # generated from catkin/cmake/template/pkgConfig-version.cmake.in 2 | set(PACKAGE_VERSION "1.11.14") 3 | 4 | set(PACKAGE_VERSION_EXACT False) 5 | set(PACKAGE_VERSION_COMPATIBLE False) 6 | 7 | if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") 8 | set(PACKAGE_VERSION_EXACT True) 9 | set(PACKAGE_VERSION_COMPATIBLE True) 10 | endif() 11 | 12 | if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}") 13 | set(PACKAGE_VERSION_COMPATIBLE True) 14 | endif() 15 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/documents/090224_link_data_with_motor_info.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/documents/090224_link_data_with_motor_info.xls -------------------------------------------------------------------------------- /examples/data/urdf/PR2/documents/100416_floating_link.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/documents/100416_floating_link.ppt -------------------------------------------------------------------------------- /examples/data/urdf/PR2/documents/head_pan_and_tilt_mass_props.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/documents/head_pan_and_tilt_mass_props.zip -------------------------------------------------------------------------------- /examples/data/urdf/PR2/gazebo/gazebo.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | true 7 | 1000.0 8 | 9 | 10 | 11 | true 12 | 1.0 13 | 5 14 | power_state 15 | 10.0 16 | 87.78 17 | -474 18 | 525 19 | 15.52 20 | 16.41 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/materials/textures/pr2_caster_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/materials/textures/pr2_caster_texture.png -------------------------------------------------------------------------------- /examples/data/urdf/PR2/materials/textures/pr2_wheel_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/materials/textures/pr2_wheel_left.png -------------------------------------------------------------------------------- /examples/data/urdf/PR2/materials/textures/pr2_wheel_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/materials/textures/pr2_wheel_right.png -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/base.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/base_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/base_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/base_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/base_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/base_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/base_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/caster.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/caster.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/caster_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/caster_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/base_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/convex/base_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/base_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/convex/base_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/caster_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/convex/caster_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/caster_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/convex/caster_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/pr2_wheel_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/convex/pr2_wheel_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/wheel_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/base_v0/convex/wheel.obj 3 | # Input Mesh has 500 vertices and 1000 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v -0.078162998 -0.005960000 -0.001782000 14 | v 0.012242000 -0.032058999 0.003939000 15 | v 0.000344000 0.000045000 0.079213999 16 | v 0.053734999 -0.012483000 0.051895998 17 | v 0.078162998 0.005960000 -0.001782000 18 | v 0.056699000 -0.016726000 -0.040245000 19 | v -0.053734999 0.012483000 0.051895998 20 | v -0.049504001 0.018500000 0.008133000 21 | v -0.051314998 0.015494000 -0.049362998 22 | v 0.053734999 0.012483000 -0.051895998 23 | v 0.000344000 -0.000045000 -0.079213999 24 | v -0.053734999 -0.012483000 -0.051895998 25 | f 1 2 3 26 | f 4 3 2 27 | f 4 5 3 28 | f 6 5 4 29 | f 6 4 2 30 | f 7 3 5 31 | f 7 5 8 32 | f 7 1 3 33 | f 7 8 1 34 | f 9 1 8 35 | f 10 8 5 36 | f 10 9 8 37 | f 10 11 9 38 | f 10 5 6 39 | f 10 6 11 40 | f 12 1 9 41 | f 12 9 11 42 | f 12 11 6 43 | f 12 6 2 44 | f 12 2 1 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/convex/wheel_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/convex/wheel_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/pr2_wheel.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/pr2_wheel.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/wheel.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/wheel.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/wheel_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/wheel_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/wheel_h_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/wheel_h_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/base_v0/wheel_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/base_v0/wheel_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/forearm_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/convex/forearm_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_flex_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/forearm_v0/convex/wrist_flex.obj 3 | # Input Mesh has 55 vertices and 97 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.025457000 0.020663001 -0.034743000 14 | v 0.015515000 -0.019460000 -0.040504999 15 | v -0.022212001 0.020517999 -0.029461000 16 | v -0.034442000 0.019895000 0.014217000 17 | v -0.036899000 -0.020461001 -0.001638000 18 | v 0.027139001 0.020591000 0.024086000 19 | v -0.000089000 0.018634001 0.037420999 20 | v 0.002395000 -0.020493999 0.036761001 21 | v 0.027410001 -0.019743999 0.023720000 22 | v -0.019323001 -0.019563001 -0.031574000 23 | v -0.029633000 -0.020763000 0.021809001 24 | v 0.025807999 -0.020644000 -0.033820000 25 | f 1 2 3 26 | f 4 3 5 27 | f 6 7 8 28 | f 6 8 9 29 | f 6 1 3 30 | f 6 3 4 31 | f 6 4 7 32 | f 10 5 3 33 | f 10 3 2 34 | f 11 4 5 35 | f 11 8 7 36 | f 11 7 4 37 | f 12 8 11 38 | f 12 11 5 39 | f 12 5 10 40 | f 12 10 2 41 | f 12 1 6 42 | f 12 6 9 43 | f 12 2 1 44 | f 12 9 8 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_flex_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_flex_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_roll_L_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/forearm_v0/convex/wrist_roll_L.obj 3 | # Input Mesh has 77 vertices and 150 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.024800001 0.001728000 0.018894000 14 | v 0.024800001 0.001230000 -0.019080000 15 | v 0.024800001 -0.018900000 -0.000000000 16 | v 0.024800001 0.018900000 -0.000000000 17 | v 0.041700002 0.013250000 0.000000000 18 | v 0.041700002 -0.004116000 0.012713000 19 | v 0.041700002 -0.004622000 -0.012553000 20 | v 0.029449999 -0.012649000 0.014095000 21 | v 0.029449999 -0.018900000 0.000000000 22 | v 0.029449999 0.014179000 -0.012550000 23 | v 0.024800001 -0.013469000 -0.013400000 24 | v 0.041700002 -0.013250000 0.000000000 25 | f 1 2 3 26 | f 4 2 1 27 | f 4 1 5 28 | f 6 5 1 29 | f 7 5 6 30 | f 8 6 1 31 | f 8 1 3 32 | f 8 3 9 33 | f 10 5 7 34 | f 10 7 2 35 | f 10 2 4 36 | f 10 4 5 37 | f 11 2 7 38 | f 11 3 2 39 | f 11 9 3 40 | f 12 9 11 41 | f 12 11 7 42 | f 12 6 8 43 | f 12 8 9 44 | f 12 7 6 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_roll_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_roll_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_roll_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/forearm_v0/convex/wrist_roll.obj 3 | # Input Mesh has 500 vertices and 998 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.041700002 -0.008729000 0.009983000 14 | v 0.041700002 0.001897000 -0.013112000 15 | v 0.041700002 0.010912000 0.007516000 16 | v 0.029449999 -0.000000000 0.018900000 17 | v 0.041700002 -0.012297000 -0.004917000 18 | v 0.029449999 -0.018906999 0.000436000 19 | v 0.029449999 0.012823000 -0.013898000 20 | v 0.024800001 0.018900000 0.000000000 21 | v 0.024800001 0.000000000 -0.018900000 22 | v 0.029449999 -0.013194000 -0.013538000 23 | v 0.029449999 0.012899000 0.013834000 24 | v 0.024800001 -0.013201000 0.013535000 25 | f 1 2 3 26 | f 1 3 4 27 | f 5 2 1 28 | f 5 1 6 29 | f 7 8 3 30 | f 7 3 2 31 | f 7 2 9 32 | f 7 9 8 33 | f 10 9 2 34 | f 10 2 5 35 | f 10 6 9 36 | f 10 5 6 37 | f 11 4 3 38 | f 11 3 8 39 | f 12 4 11 40 | f 12 11 8 41 | f 12 6 1 42 | f 12 1 4 43 | f 12 9 6 44 | f 12 8 9 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_roll_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/convex/wrist_roll_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/forearm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/forearm.jpg -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/forearm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/forearm.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/forearm_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/forearm_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/forearm_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/forearm_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/wrist_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/wrist_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/wrist_flex.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/wrist_flex.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/wrist_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/wrist_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/wrist_roll.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/wrist_roll.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/forearm_v0/wrist_roll_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/forearm_v0/wrist_roll_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_l_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/finger_tip_l.obj 3 | # Input Mesh has 442 vertices and 866 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.009143921 0.012224864 -0.009146066 14 | v -0.004253981 -0.004575573 0.009148707 15 | v -0.004251286 -0.004572194 -0.009151294 16 | v 0.009140906 0.012221083 0.009153934 17 | v -0.011279000 0.027246000 0.009159000 18 | v -0.025429999 0.021803999 0.009157000 19 | v -0.011279000 0.027252000 -0.009141000 20 | v -0.019843999 0.028403001 -0.009141000 21 | v -0.025429999 0.021810001 -0.009143000 22 | v -0.019843999 0.028396999 0.009159000 23 | v -0.022887999 0.013551000 -0.009146000 24 | v -0.022887999 0.013545000 0.009154000 25 | f 1 2 3 26 | f 4 5 2 27 | f 4 2 1 28 | f 4 1 5 29 | f 6 2 5 30 | f 7 5 1 31 | f 8 5 7 32 | f 8 9 6 33 | f 10 6 5 34 | f 10 5 8 35 | f 10 8 6 36 | f 11 9 8 37 | f 11 8 7 38 | f 11 6 9 39 | f 11 3 2 40 | f 11 7 1 41 | f 11 1 3 42 | f 12 2 6 43 | f 12 6 11 44 | f 12 11 2 45 | ######################################################################## 46 | ## Hull Piece 2 with 12 vertices and 20 triangles. 47 | ######################################################################## 48 | v 0.009140906 0.012221083 0.009153934 49 | v 0.009143921 0.012224864 -0.009146066 50 | v -0.004253981 -0.004575573 0.009148707 51 | v 0.022750000 -0.006949000 0.011498000 52 | v 0.022750000 -0.014235000 -0.010439000 53 | v 0.028250000 -0.014946000 0.002995000 54 | v -0.001629000 -0.014948000 0.008322000 55 | v -0.001250000 -0.011942000 -0.011504000 56 | v 0.029036000 -0.006943000 -0.008724000 57 | v 0.030524001 -0.006947000 0.006434000 58 | v -0.004251286 -0.004572194 -0.009151294 59 | v 0.022750000 -0.013883000 0.010789000 60 | f 13 14 15 61 | f 13 15 16 62 | f 17 18 19 63 | f 17 19 20 64 | f 17 20 14 65 | f 17 14 21 66 | f 17 21 18 67 | f 22 21 14 68 | f 22 14 13 69 | f 22 13 16 70 | f 22 18 21 71 | f 23 20 19 72 | f 23 19 15 73 | f 23 14 20 74 | f 23 15 14 75 | f 24 18 22 76 | f 24 22 16 77 | f 24 16 15 78 | f 24 15 19 79 | f 24 19 18 80 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_l_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_l_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_pad2_l_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/finger_tip_pad2_l.obj 3 | # Input Mesh has 73 vertices and 138 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v -0.001250000 -0.011942000 -0.011504000 14 | v 0.022750000 -0.011949000 0.011496000 15 | v 0.028471000 -0.011942000 -0.009290000 16 | v -0.001629000 -0.014948000 0.008322000 17 | v 0.026675001 -0.014948000 0.006848000 18 | v 0.031250000 -0.011946000 0.002996000 19 | v -0.003661000 -0.011949000 0.010533000 20 | v -0.003684000 -0.014236000 -0.008005000 21 | v 0.022750000 -0.014943000 -0.008505000 22 | v 0.029036000 -0.011948000 0.008718000 23 | v -0.004750000 -0.011943000 -0.008004000 24 | v 0.030543000 -0.013879000 -0.003004000 25 | f 1 2 3 26 | f 4 5 2 27 | f 6 3 2 28 | f 7 2 1 29 | f 7 4 2 30 | f 8 4 7 31 | f 9 1 3 32 | f 9 8 1 33 | f 9 5 4 34 | f 9 4 8 35 | f 10 2 5 36 | f 10 5 6 37 | f 10 6 2 38 | f 11 7 1 39 | f 11 1 8 40 | f 11 8 7 41 | f 12 5 9 42 | f 12 9 3 43 | f 12 3 6 44 | f 12 6 5 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_pad2_l_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_pad2_l_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_pad2_r_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/finger_tip_pad2_r.obj 3 | # Input Mesh has 73 vertices and 138 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v -0.001250000 0.011945000 0.011500000 14 | v -0.004750000 0.011909000 -0.000062000 15 | v 0.022750000 0.011945000 0.011500000 16 | v -0.001576000 0.014945000 0.008379000 17 | v 0.027930001 0.014945000 0.004831000 18 | v 0.030524001 0.011945000 0.006436000 19 | v 0.029036000 0.011945000 -0.008721000 20 | v 0.022750000 0.014945000 -0.008500000 21 | v -0.003684000 0.014239000 -0.008000000 22 | v -0.001250000 0.011945000 -0.011500000 23 | v -0.004750000 0.011945000 0.008000000 24 | v 0.022750000 0.011945000 -0.011500000 25 | f 1 2 3 26 | f 1 3 4 27 | f 5 4 3 28 | f 6 7 5 29 | f 6 5 3 30 | f 6 3 2 31 | f 6 2 7 32 | f 8 4 5 33 | f 8 5 7 34 | f 9 4 8 35 | f 9 8 10 36 | f 9 10 2 37 | f 11 4 9 38 | f 11 9 2 39 | f 11 2 1 40 | f 11 1 4 41 | f 12 10 8 42 | f 12 8 7 43 | f 12 2 10 44 | f 12 7 2 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_pad2_r_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_pad2_r_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_r_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/finger_tip_r.obj 3 | # Input Mesh has 442 vertices and 866 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.009142916 -0.012222604 -0.009150000 14 | v -0.019843999 -0.028400000 -0.009150000 15 | v -0.022887999 -0.013548000 -0.009150000 16 | v 0.009142916 -0.012222604 0.009150000 17 | v -0.004252185 0.004574320 0.009150000 18 | v -0.019843999 -0.028400000 0.009150000 19 | v -0.004252185 0.004574320 -0.009150000 20 | v -0.022887999 -0.013548000 0.009150000 21 | v -0.025429999 -0.021807000 -0.009150000 22 | v -0.025429999 -0.021807000 0.009150000 23 | v -0.011279000 -0.027248999 -0.009150000 24 | v -0.011279000 -0.027248999 0.009150000 25 | f 1 2 3 26 | f 4 5 6 27 | f 4 1 5 28 | f 7 3 5 29 | f 7 5 1 30 | f 7 1 3 31 | f 8 6 5 32 | f 8 5 3 33 | f 9 8 3 34 | f 9 3 2 35 | f 9 2 6 36 | f 10 6 8 37 | f 10 8 9 38 | f 10 9 6 39 | f 11 1 4 40 | f 11 6 2 41 | f 11 2 1 42 | f 12 4 6 43 | f 12 6 11 44 | f 12 11 4 45 | ######################################################################## 46 | ## Hull Piece 2 with 12 vertices and 20 triangles. 47 | ######################################################################## 48 | v -0.003787000 0.011945000 0.010411000 49 | v 0.009142916 -0.012222604 0.009150000 50 | v 0.022750000 0.011945000 0.011500000 51 | v -0.001629000 0.014945000 -0.008326000 52 | v 0.029036000 0.011945000 -0.008721000 53 | v -0.001250000 0.006945000 -0.011500000 54 | v 0.030543000 0.013880000 0.003000000 55 | v 0.030543000 0.005011000 0.003000000 56 | v 0.025000000 -0.000555000 -0.009150000 57 | v 0.009142916 -0.012222604 -0.009150000 58 | v 0.025000000 -0.000555000 0.009150000 59 | v -0.004252185 0.004574320 0.009150000 60 | f 13 14 15 61 | f 16 17 18 62 | f 19 13 15 63 | f 19 16 13 64 | f 19 17 16 65 | f 19 20 17 66 | f 21 17 20 67 | f 21 14 22 68 | f 21 18 17 69 | f 21 22 18 70 | f 23 14 21 71 | f 23 21 20 72 | f 23 20 19 73 | f 23 19 15 74 | f 23 15 14 75 | f 24 13 16 76 | f 24 16 18 77 | f 24 18 22 78 | f 24 22 14 79 | f 24 14 13 80 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_r_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/finger_tip_r_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/gripper_palm_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/gripper_palm.obj 3 | # Input Mesh has 87 vertices and 170 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.111019000 0.034650002 -0.023600999 14 | v 0.078598998 -0.039413001 -0.024235001 15 | v 0.029448999 0.014263000 -0.016224001 16 | v 0.125112996 -0.010058000 0.019711001 17 | v 0.079140998 0.039462000 0.024231000 18 | v 0.075493999 -0.050204001 0.019570000 19 | v 0.029453000 0.004801000 0.021251000 20 | v 0.123117000 -0.023705000 -0.019640001 21 | v 0.073036999 0.050643001 -0.017542001 22 | v 0.118225001 0.033059999 0.019801000 23 | v 0.029448999 -0.020625001 -0.006675000 24 | v 0.061461002 0.046002001 0.018921999 25 | f 1 2 3 26 | f 4 5 6 27 | f 7 6 5 28 | f 8 2 1 29 | f 8 6 2 30 | f 8 4 6 31 | f 9 1 3 32 | f 10 1 9 33 | f 10 4 8 34 | f 10 8 1 35 | f 10 5 4 36 | f 11 6 7 37 | f 11 7 3 38 | f 11 3 2 39 | f 11 2 6 40 | f 12 5 10 41 | f 12 10 9 42 | f 12 7 5 43 | f 12 3 7 44 | f 12 9 3 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/gripper_palm_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/gripper_palm_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/l_finger_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/l_finger.obj 3 | # Input Mesh has 124 vertices and 210 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.094842002 0.004348000 -0.012694000 14 | v -0.000321000 -0.008701000 0.027184000 15 | v -0.008275000 -0.003271000 -0.027277000 16 | v 0.075985998 0.033755999 0.011061000 17 | v 0.013305000 0.045605000 -0.020346999 18 | v 0.005655000 0.044030000 0.021228001 19 | v 0.044702999 0.018928001 0.027502000 20 | v 0.092947997 0.001416000 0.012184000 21 | v 0.083155997 0.028278001 -0.012253000 22 | v -0.008536000 0.013827000 0.025865000 23 | v 0.045643002 0.018108999 -0.027522000 24 | v -0.006211000 0.023727000 -0.025350001 25 | f 1 2 3 26 | f 4 5 6 27 | f 4 6 7 28 | f 8 4 7 29 | f 8 7 2 30 | f 8 2 1 31 | f 9 4 8 32 | f 9 8 1 33 | f 9 5 4 34 | f 10 3 2 35 | f 10 2 7 36 | f 10 7 6 37 | f 11 5 9 38 | f 11 9 1 39 | f 11 1 3 40 | f 12 5 11 41 | f 12 11 3 42 | f 12 3 10 43 | f 12 10 6 44 | f 12 6 5 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/l_finger_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/l_finger_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/l_finger_tip_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/l_finger_tip.obj 3 | # Input Mesh has 77 vertices and 149 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.027906001 -0.007498000 -0.009591000 14 | v 0.028340001 -0.015813001 -0.007123000 15 | v -0.002450000 -0.014167000 -0.011198000 16 | v -0.013725000 0.027669000 -0.008827000 17 | v -0.002565000 -0.015655000 0.009938000 18 | v 0.024861000 -0.014207000 0.011154000 19 | v -0.019160001 0.027700000 0.007847000 20 | v -0.025920000 0.019189000 -0.006250000 21 | v 0.024281001 -0.001334000 0.007964000 22 | v -0.025955999 0.020009000 0.006249000 23 | v 0.030687001 -0.006507000 0.004747000 24 | v 0.031006999 -0.014298000 0.004149000 25 | f 1 2 3 26 | f 4 1 3 27 | f 5 6 7 28 | f 5 3 2 29 | f 5 2 6 30 | f 8 3 5 31 | f 8 7 4 32 | f 8 4 3 33 | f 9 4 7 34 | f 9 7 6 35 | f 10 5 7 36 | f 10 7 8 37 | f 10 8 5 38 | f 11 9 6 39 | f 11 1 4 40 | f 11 4 9 41 | f 12 6 2 42 | f 12 11 6 43 | f 12 2 1 44 | f 12 1 11 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/l_finger_tip_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/l_finger_tip_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/l_floating_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/l_floating.obj 3 | # Input Mesh has 498 vertices and 970 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.044964999 0.008311000 0.009150000 14 | v 0.022615001 0.006765000 0.015500000 15 | v 0.009660000 -0.005783000 0.013668000 16 | v 0.034541000 0.016674001 -0.009150000 17 | v 0.045669999 0.010050000 -0.009150000 18 | v 0.007176000 -0.001733000 -0.015500000 19 | v 0.035347998 0.016767001 0.009150000 20 | v -0.001829000 0.002197000 -0.009150000 21 | v -0.002267000 0.001571000 0.009150000 22 | v 0.009420000 -0.005958000 -0.013205000 23 | v 0.004613000 0.002240000 0.015300000 24 | v -0.002053000 -0.001869000 -0.009150000 25 | f 1 2 3 26 | f 4 5 6 27 | f 7 1 5 28 | f 7 5 4 29 | f 7 2 1 30 | f 8 9 7 31 | f 8 7 4 32 | f 8 4 6 33 | f 10 5 1 34 | f 10 1 3 35 | f 10 6 5 36 | f 11 2 7 37 | f 11 7 9 38 | f 11 3 2 39 | f 11 9 3 40 | f 12 8 6 41 | f 12 6 10 42 | f 12 9 8 43 | f 12 3 9 44 | f 12 10 3 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/l_floating_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/l_floating_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/upper_finger_l_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/upper_finger_l.obj 3 | # Input Mesh has 114 vertices and 220 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v 0.005305000 0.043804999 0.027750000 14 | v -0.000364000 -0.008993000 0.027750000 15 | v 0.049121998 0.039340999 0.027750000 16 | v 0.010290000 0.045731999 -0.027750000 17 | v 0.094215997 0.002999000 0.013000000 18 | v -0.002887000 -0.008524000 -0.027750000 19 | v 0.095311001 0.006001000 -0.013000000 20 | v -0.007728000 0.018541001 -0.027750000 21 | v -0.008842000 0.012118000 0.027750000 22 | v 0.082664996 0.029002000 0.013000000 23 | v 0.076724999 0.033383001 -0.013000000 24 | v 0.049121998 0.039340999 -0.027750000 25 | f 1 2 3 26 | f 1 3 4 27 | f 5 3 2 28 | f 5 2 6 29 | f 5 6 7 30 | f 8 4 6 31 | f 8 1 4 32 | f 9 2 1 33 | f 9 1 8 34 | f 9 6 2 35 | f 9 8 6 36 | f 10 5 7 37 | f 10 7 11 38 | f 10 3 5 39 | f 10 11 3 40 | f 12 4 3 41 | f 12 3 11 42 | f 12 11 7 43 | f 12 7 6 44 | f 12 6 4 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/upper_finger_l_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/upper_finger_l_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/upper_finger_r_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/gripper_v0/convex/upper_finger_r.obj 3 | # Input Mesh has 114 vertices and 220 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v -0.008955000 0.000899000 0.027750000 14 | v 0.049130999 -0.039326999 0.027753999 15 | v 0.051376000 -0.003584000 0.027750000 16 | v -0.002889000 0.008521000 -0.027751001 17 | v 0.005315000 -0.043800998 0.027753999 18 | v 0.007676000 -0.045109000 -0.027744999 19 | v 0.095312998 -0.005979000 0.013000000 20 | v 0.095311999 -0.005982000 -0.013000000 21 | v -0.007724000 -0.018546000 -0.027748000 22 | v 0.079870999 -0.031404000 0.013003000 23 | v 0.076732002 -0.033367999 -0.012997000 24 | v 0.049130999 -0.039333001 -0.027745999 25 | f 1 2 3 26 | f 1 3 4 27 | f 5 6 2 28 | f 5 2 1 29 | f 7 8 4 30 | f 7 4 3 31 | f 7 3 2 32 | f 9 6 5 33 | f 9 5 1 34 | f 9 4 6 35 | f 9 1 4 36 | f 10 7 2 37 | f 10 2 11 38 | f 10 8 7 39 | f 10 11 8 40 | f 12 8 11 41 | f 12 2 6 42 | f 12 11 2 43 | f 12 6 4 44 | f 12 4 8 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/convex/upper_finger_r_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/convex/upper_finger_r_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/finger_H_Color_100430.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/finger_H_Color_100430.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_l.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_l.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_pad2_l.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_pad2_l.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_pad2_r.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_pad2_r.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_r.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/finger_tip_r.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/fingertip_H_Color_100430.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/fingertip_H_Color_100430.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/float_H_Color_100430.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/float_H_Color_100430.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/gripper_palm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/gripper_palm.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/gripper_palm_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/gripper_palm_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/gripper_palm_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/gripper_palm_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_finger.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_finger.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_finger_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_finger_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_finger_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_finger_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_finger_tip.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_finger_tip.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_finger_tip_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_finger_tip_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_finger_tip_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_finger_tip_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_float_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_float_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_float_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_float_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/l_floating.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/l_floating.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/palm_H_Color_100430.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/palm_H_Color_100430.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/upper_finger_l.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/upper_finger_l.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/gripper_v0/upper_finger_r.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/gripper_v0/upper_finger_r.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/convex/head_pan_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/convex/head_pan_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/convex/head_pan_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/convex/head_pan_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/convex/head_tilt_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/convex/head_tilt_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/convex/head_tilt_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/convex/head_tilt_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_pan.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_pan.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_pan_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_pan_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_pan_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_pan_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_pan_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_pan_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt_color_red.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt_color_red.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt_color_yellow.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt_color_yellow.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt_green.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt_green.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/head_v0/head_tilt_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/head_v0/head_tilt_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect2_v0/kinect2_assembly.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect2_v0/kinect2_assembly.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_back--coarse.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_back--coarse.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_back_no_sensors--coarse.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_back_no_sensors--coarse.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_fwd--coarse.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_fwd--coarse.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_fwd_no_sensors--coarse.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/115x100_swept_fwd_no_sensors--coarse.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/68-04546_Kinect_Sensor--coarse.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/68-04546_Kinect_Sensor--coarse.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/Prosilica_w_Lens--coarse.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_prosilica_v0/Prosilica_w_Lens--coarse.STL -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_v0/kinect.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_v0/kinect.tga -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_v0/kinect_color.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_v0/kinect_color.tga -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/sensors/kinect_v0/kinect_mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/sensors/kinect_v0/kinect_mount.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/convex/shoulder_lift_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/convex/shoulder_lift_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/convex/shoulder_pan_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/convex/shoulder_pan_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/convex/shoulder_yaw_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/convex/shoulder_yaw_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/convex/upper_arm_roll_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/convex/upper_arm_roll_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/convex/upper_arm_roll_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/convex/upper_arm_roll_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_lift.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_lift.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_lift_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_lift_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_lift_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_lift_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_pan.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_pan.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_pan_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_pan_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_pan_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_pan_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_yaw.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/shoulder_yaw.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/shoulder_v0/upper_arm_roll_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/hok_tilt_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/hok_tilt_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/tilting_hokuyo_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/tilting_hokuyo_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/tilting_hokuyo_convex.obj: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Approximate convex decomposition for triangle mesh /tmp/binarydeb/ros-indigo-pr2-description-1.11.14/meshes/tilting_laser_v0/convex/tilting_hokuyo.obj 3 | # Input Mesh has 504 vertices and 998 triangles. 4 | # Recursion depth: 5 5 | # Concavity Threshold Percentage: 5.00 6 | # Hull Merge Volume Percentage: 10.00 7 | # Maximum output vertices per hull: 12 8 | # Hull Skin Width: 0.00 9 | ######################################################################## 10 | ######################################################################## 11 | ## Hull Piece 1 with 12 vertices and 20 triangles. 12 | ######################################################################## 13 | v -0.060715001 0.081500001 0.012950000 14 | v -0.001544000 -0.081500001 0.063855998 15 | v 0.002408000 0.079125002 0.063781001 16 | v -0.060713001 -0.081500001 0.011662000 17 | v 0.000000000 -0.081500001 -0.056318000 18 | v 0.056297000 -0.081500001 0.001557000 19 | v 0.034258999 0.081500001 -0.044833999 20 | v -0.035486002 0.081499003 -0.044036999 21 | v 0.056295998 0.081500001 0.001557000 22 | v 0.034832999 -0.081500001 0.052715000 23 | v -0.050522000 -0.081500001 -0.027881000 24 | v 0.035715941 0.081500001 0.051285725 25 | f 1 2 3 26 | f 4 5 2 27 | f 4 2 1 28 | f 6 2 5 29 | f 6 5 7 30 | f 8 1 7 31 | f 8 7 5 32 | f 9 6 7 33 | f 9 7 1 34 | f 10 3 2 35 | f 10 2 6 36 | f 11 4 1 37 | f 11 1 8 38 | f 11 5 4 39 | f 11 8 5 40 | f 12 3 10 41 | f 12 6 9 42 | f 12 10 6 43 | f 12 1 3 44 | f 12 9 1 45 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/tilting_hokuyo_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/convex/tilting_hokuyo_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/hok_tilt.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/hok_tilt.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/tilting_laser_v0/tilting_hokuyo_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/convex/torso_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/convex/torso_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/convex/torso_lift_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/convex/torso_lift_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/convex/torso_lift_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/convex/torso_lift_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/torso.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/torso.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/torso_lift.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/torso_lift.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/torso_lift_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/torso_lift_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/torso_lift_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/torso_lift_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/torso_v0/torso_lift_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/torso_v0/torso_lift_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/convex/elbow_flex_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/convex/elbow_flex_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/convex/forearm_roll_L_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/convex/forearm_roll_L_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/convex/forearm_roll_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/convex/forearm_roll_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/convex/upper_arm_convex.stlb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/convex/upper_arm_convex.stlb -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/elbow_flex.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/elbow_flex.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/elbow_flex_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/elbow_flex_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/elbow_flex_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/elbow_flex_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/forearm_roll.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/forearm_roll.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/forearm_roll_L.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/forearm_roll_L.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm.jpg -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm.stl -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm_color.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm_color.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm_normals.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/examples/data/urdf/PR2/meshes/upper_arm_v0/upper_arm_normals.tif -------------------------------------------------------------------------------- /examples/data/urdf/PR2/package.xml: -------------------------------------------------------------------------------- 1 | 2 | pr2_description 3 | 1.11.14 4 | This package contains the description (mechanical, kinematic, visual, 5 | etc.) of the PR2 robot. The files in this package are parsed and used by 6 | a variety of other components. Most users will not interact directly 7 | with this package. 8 | Devon Ash 9 | 10 | BSD 11 | 12 | http://ros.org/wiki/pr2_description 13 | https://github.com/PR2/pr2_common/issues 14 | 15 | John Hsu 16 | Eric Berger 17 | Austin Hendrix 18 | 19 | catkin 20 | 21 | convex_decomposition 22 | ivcon 23 | 24 | xacro 25 | 26 | gtest 27 | liburdfdom-dev 28 | 29 | 30 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/robots/README: -------------------------------------------------------------------------------- 1 | This is the directory that you would copy to create a new configuration of a robot (a head-cart, a robot without arms, or your own funky robot with a new sensor on the gripper). 2 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/robots/upload_pr2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/base_v0/base.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | false 24 | 25 | true 26 | 100.0 27 | 28 | ${name}_link_collision 29 | 30 | 31 | true 32 | 100.0 33 | ${name}_bumper 34 | world 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | true 44 | 100.0 45 | ${name}_link 46 | ${name}_pose_ground_truth 47 | 0.01 48 | map 49 | 0 0 0 50 | 0 0 0 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/base_v0/base.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ${reflect * 624/35 * 80/18} 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ${-1 * 624/35 * 80/18} 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/forearm_v0/forearm.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | true 11 | 12 | 13 | 14 | 15 | 16 | true 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/forearm_v0/forearm.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/head_v0/head.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/head_v0/head.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 6.0 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 6.0 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/materials.urdf.xacro: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/double_stereo_camera.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/double_stereo_camera.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 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 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/head_sensor_package.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/head_sensor_package.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 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 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/hokuyo_lx30_laser.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | true 9 | ${update_rate} 10 | 0 0 0 0 0 0 11 | false 12 | 13 | 14 | 15 | 640 16 | 1 17 | ${min_angle} 18 | ${max_angle} 19 | 20 | 21 | 22 | 0.08 23 | 10.0 24 | 0.01 25 | 26 | 27 | 28 | 0.005 29 | true 30 | ${update_rate} 31 | ${ros_topic} 32 | ${name}_link 33 | 101 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/hokuyo_lx30_laser.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/kinect_camera.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/microstrain_3dmgx2_imu.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | true 9 | ${update_rate} 10 | ${name}_link 11 | ${imu_topic} 12 | ${stdev*stdev} 13 | 0 0 0 14 | 0 -180.0 0 15 | /default_imu 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/microstrain_3dmgx2_imu.urdf.xacro: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/projector_wg6802418.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 0 0 0 0 -1.5707 0 11 | stereo_projection_pattern_high_res_red.png 12 | ${55.0/180.0*M_PI} 13 | 0.1 14 | 10 15 | 16 | 17 | 18 | 19 | ${name}_child_frame/${name}_projector_wg6802418 20 | true 21 | 15.0 22 | stereo_projection_pattern_high_res_red.png 23 | stereo_projection_pattern_filter.png 24 | ${name}_controller/image 25 | ${name}_controller/projector 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/projector_wg6802418.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/prosilica_gc2450_camera.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | true 8 | 20.0 9 | 10 | ${M_PI/4} 11 | 12 | R8G8B8 13 | 2448 14 | 2050 15 | 16 | 17 | 0.1 18 | 100 19 | 20 | 21 | 22 | 20.0 23 | ${camera_name} 24 | image_raw 25 | camera_info 26 | request_image 27 | ${frame_name}_optical_frame 28 | 1224.5 29 | 1224.5 30 | 1025.5 31 | 2954.998083 32 | 0.0 33 | 0.0 34 | 0.0 35 | 0.0 36 | 0.0 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/prosilica_gc2450_camera.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/stereo_camera.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/wge100_camera.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | true 7 | 25.0 8 | 9 | ${hfov*M_PI/180.0} 10 | 11 | ${image_format} 12 | ${image_width} 13 | ${image_height} 14 | 15 | 16 | 0.1 17 | 100 18 | 19 | 20 | 21 | true 22 | 25.0 23 | ${camera_name} 24 | ${image_topic_name} 25 | ${camera_info_topic_name} 26 | ${frame_id} 27 | ${hack_baseline} 28 | ${(image_width+1)/2} 29 | ${(image_width+1)/2} 30 | ${(image_height+1)/2} 31 | 32 | 33 | ${focal_length} 34 | 0.0 35 | 0.0 36 | 0.0 37 | 0.0 38 | 0.0 39 | 40 | 41 | true 42 | PR2/Blue 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/sensors/wge100_camera.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/shoulder_v0/shoulder.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | true 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | true 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/shoulder_v0/shoulder.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ${13/3 * 250.532/17.19 / cal_r_shoulder_pan_gearing} 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ${13/3 * 245.532/17.19 / cal_r_shoulder_lift_gearing} 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | ${13/3 * 129.53/17.19 / cal_r_upper_arm_roll_gearing} 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/tilting_laser_v0/tilting_laser.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/tilting_laser_v0/tilting_laser.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | -6.05 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/tilting_laser_v0/tilting_laser.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 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 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/torso_v0/torso.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ${name}_link_collision 11 | 12 | 100.0 13 | 14 | true 15 | 100.0 16 | ${name}_bumper 17 | world 18 | 19 | 20 | 21 | 22 | 23 | 24 | ${name}_link 25 | ${name}_motor_screw_link 26 | 27 | 0 0 1 28 | 29 | 3141.6 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/torso_v0/torso.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -47641.53 14 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/upper_arm_v0/upper_arm.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | true 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 22 | true 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | true 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /examples/data/urdf/PR2/urdf/upper_arm_v0/upper_arm.transmission.xacro: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ${-13/3 * 127.532/15.28} 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ${-576/25 * 55/14} 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /examples/hello_pydart.py: -------------------------------------------------------------------------------- 1 | 2 | import pydart2 as pydart 3 | 4 | if __name__ == '__main__': 5 | print('Hello, PyDART!') 6 | 7 | pydart.init() 8 | print('pydart initialization OK') 9 | 10 | world = pydart.World(0.0005, './data/skel/cubes.skel') 11 | print('pydart create_world OK') 12 | 13 | while world.t < 2.0: 14 | if world.nframes % 100 == 0: 15 | skel = world.skeletons[-1] 16 | print("%.4fs: The last cube COM = %s" % (world.t, str(skel.C))) 17 | world.step() 18 | -------------------------------------------------------------------------------- /examples/ik.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Disney Research 2 | # All rights reserved. 3 | # 4 | # Author(s): Sehoon Ha 5 | # Disney Research Robotics Group 6 | import pydart2 as pydart 7 | import numpy as np 8 | from scipy.optimize import minimize 9 | 10 | 11 | class MyWorld(pydart.World): 12 | 13 | def __init__(self, ): 14 | pydart.World.__init__(self, 0.001) 15 | self.set_gravity([0.0, 0.0, -9.81]) 16 | print('pydart create_world OK') 17 | 18 | filename = "./data/sdf/atlas/atlas_v3_no_head.sdf" 19 | self.robot = self.add_skeleton(filename) 20 | self.robot.set_root_joint_to_trans_and_euler() 21 | print('pydart add_skeleton OK') 22 | 23 | self.theta = 0.0 * np.pi 24 | self.update_target() 25 | self.solve() 26 | 27 | print("click step to rotate the target") 28 | 29 | def update_target(self, ): 30 | th, r = self.theta - 0.5 * np.pi, 0.6 31 | x, y = r * np.cos(th) + 0.4, r * np.sin(th) 32 | self.target = np.array([x, y, 0.3]) 33 | 34 | def set_params(self, x): 35 | q = self.robot.positions() 36 | q[6:] = x 37 | self.robot.set_positions(q) 38 | 39 | def f(self, x): 40 | self.set_params(x) 41 | 42 | lhs = self.robot.body("l_hand").to_world([0.0, 0.0, 0.0]) 43 | rhs = self.target 44 | return 0.5 * np.linalg.norm(lhs - rhs) ** 2 45 | 46 | def g(self, x): 47 | self.set_params(x) 48 | 49 | lhs = self.robot.body("l_hand").to_world([0.0, 0.0, 0.0]) 50 | rhs = self.target 51 | J = self.robot.body("l_hand").linear_jacobian() 52 | g = (lhs - rhs).dot(J)[6:] 53 | 54 | DEBUG = True 55 | if DEBUG: # Debug by comparing with the numerical computation 56 | from pydart2.utils.misc import grad 57 | lhs = g 58 | rhs = grad(self.f, x, 1e-5) 59 | print(lhs) 60 | print(rhs) 61 | print("OK" if np.allclose(lhs, rhs) else "NG!!!!") 62 | 63 | return g 64 | 65 | def solve(self, ): 66 | res = minimize(self.f, 67 | x0=self.robot.positions()[6:], 68 | jac=self.g, 69 | method="SLSQP") 70 | print(">>> theta = %.4f" % self.theta) 71 | print(res) 72 | 73 | def step(self, ): 74 | super(MyWorld, self).step() 75 | self.theta = (self.theta + pydart.utils.misc.deg2rad(10)) % np.pi 76 | self.update_target() 77 | self.solve() 78 | 79 | def render_with_ri(self, ri): 80 | ri.set_color(1.0, 0.0, 0.0) 81 | ri.render_sphere(self.target, 0.05) 82 | 83 | 84 | if __name__ == '__main__': 85 | print('Example: inverse kinematics') 86 | 87 | pydart.init() 88 | print('pydart initialization OK') 89 | 90 | world = MyWorld() 91 | 92 | win = pydart.gui.pyqt5.window.PyQt5Window(world) 93 | win.scene.set_camera(1) # Z-up Camera 94 | win.run() 95 | -------------------------------------------------------------------------------- /examples/inspect_skeleton.py: -------------------------------------------------------------------------------- 1 | 2 | if __name__ == '__main__': 3 | import sys 4 | import pydart2 as pydart 5 | 6 | if len(sys.argv) != 2: 7 | print("Usage: inspect_skeleton.py [*.urdf/*.sdf]") 8 | exit(0) 9 | 10 | skel_path = sys.argv[1] 11 | print("skeleton path = %s" % skel_path) 12 | 13 | pydart.init() 14 | print("pydart init OK") 15 | 16 | world = pydart.World(0.0002) 17 | print("World init OK") 18 | 19 | world.g = [0.0, 0.0, -9.8] 20 | print("gravity = %s" % str(world.g)) 21 | 22 | skel = world.add_skeleton(skel_path) 23 | print("Skeleton add OK") 24 | 25 | print('----------------------------------------') 26 | print('[Basic information]') 27 | print('\tmass = %.6f' % skel.m) 28 | print('\t# DoFs = %s' % skel.ndofs) 29 | 30 | print('[BodyNode]') 31 | print('root_bodynode[0] = ' + str(skel.root_bodynode(index=0))) 32 | for body in skel.bodynodes: 33 | print("\t" + str(body)) 34 | print("\t\tmass = %.4fKg" % body.m) 35 | print("\t\tparent = " + str(body.parent_bodynode)) 36 | print("\t\tchilds = " + str(body.child_bodynodes)) 37 | print("\t\tCOM = " + str(body.C)) 38 | print("\t\t# dependent dofs = %d" % len(body.dependent_dofs)) 39 | print("\t\t# shapenodes = %s" % str(body.shapenodes)) 40 | print("\t\t# markers = %d" % len(body.markers)) 41 | # print("J = %s" % str(body.J)) 42 | 43 | print('[DegreeOfFreedom]') 44 | for dof in skel.dofs: 45 | print("\t" + str(dof) + " belongs to " + str(dof.joint)) 46 | # print("\t\tindex in skeleton = " + str(dof.index_in_skeleton())) 47 | # print("\t\tposition = " + str(dof.position())) 48 | 49 | print('[Joint]') 50 | for joint in skel.joints: 51 | print("\t" + str(joint)) 52 | print("\t\tparent = " + str(joint.parent_bodynode)) 53 | print("\t\tchild = " + str(joint.child_bodynode)) 54 | print("\t\tdofs = " + str(joint.dofs)) 55 | 56 | print('[Markers]') 57 | for marker in skel.markers: 58 | print("\t" + str(marker) + " attached to " + str(marker.bodynode)) 59 | print("\t\t" + str(marker.world_position())) 60 | 61 | print('[Position]') 62 | print('\tpositions = %s' % str(skel.q)) 63 | print('\tvelocities = %s' % str(skel.dq)) 64 | print('\tstates = %s' % str(skel.x)) 65 | 66 | print('[Limits]') 67 | print('\tposition_lower_limits = %s' % str(skel.q_lower)) 68 | print('\tposition_upper_limits = %s' % str(skel.q_upper)) 69 | print('\tforce_lower_limits = %s' % str(skel.tau_lower)) 70 | print('\tforce_upper_limits = %s' % str(skel.tau_upper)) 71 | 72 | print('[Lagrangian]') 73 | print('\tmass matrix = %s' % str(skel.M)) 74 | print('\tcoriolis_and_gravity_forces = %s' % str(skel.c)) 75 | print('\tconstraint_forces = %s' % str(skel.constraint_forces())) 76 | print('----------------------------------------') 77 | -------------------------------------------------------------------------------- /examples/shapes.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Disney Research 2 | # All rights reserved. 3 | # 4 | # Author(s): Sehoon Ha 5 | # Disney Research Robotics Group 6 | 7 | import pydart2 as pydart 8 | if __name__ == '__main__': 9 | pydart.init() 10 | print('pydart initialization OK') 11 | 12 | world = pydart.World(0.0002, './data/skel/shapes.skel') 13 | print('pydart create_world OK') 14 | 15 | pydart.gui.viewer.launch(world) 16 | -------------------------------------------------------------------------------- /examples/simple_tracking.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Disney Research 2 | # All rights reserved. 3 | # 4 | # Author(s): Sehoon Ha 5 | # Disney Research Robotics Group 6 | import pydart2 as pydart 7 | import numpy as np 8 | 9 | 10 | class Controller(object): 11 | def __init__(self, skel): 12 | self.skel = skel 13 | self.target = None 14 | self.Kp = np.array([0.0] * 6 + [400.0] * (self.skel.ndofs - 6)) 15 | self.Kd = np.array([0.0] * 6 + [40.0] * (self.skel.ndofs - 6)) 16 | 17 | def compute(self): 18 | return -self.Kp * (self.skel.q - self.target) - self.Kd * self.skel.dq 19 | 20 | 21 | if __name__ == '__main__': 22 | print('Example: Simple Tracking') 23 | 24 | pydart.init() 25 | print('pydart initialization OK') 26 | 27 | world = pydart.World(0.0005) 28 | world.set_gravity([0.0, 0.0, 0.0]) 29 | print('World OK') 30 | 31 | skel = world.add_skeleton('./data/sdf/atlas/atlas_v3_no_head.sdf') 32 | skel.set_root_joint_to_trans_and_euler() 33 | print('Skeleton = ' + str(skel)) 34 | 35 | # Set joint damping 36 | for dof in skel.dofs: 37 | dof.set_damping_coefficient(80.0) 38 | 39 | # Set target pose 40 | target = skel.positions() 41 | target[("l_arm_shy", "r_arm_shy")] = -1.0, 1.0 42 | target[("l_leg_hpy", "r_leg_hpy")] = -1.0, -1.0 43 | target[("l_leg_kny", "r_leg_kny")] = 1.0, 1.0 44 | 45 | # Initialize the controller 46 | controller = Controller(skel) 47 | controller.target = target 48 | skel.set_controller(controller) 49 | print('create controller OK') 50 | 51 | pydart.gui.viewer.launch(world, 52 | default_camera=1) # Use Z-up camera 53 | -------------------------------------------------------------------------------- /examples/soft_bodies.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Disney Research 2 | # All rights reserved. 3 | # 4 | # Author(s): Sehoon Ha 5 | # Disney Research Robotics Group 6 | 7 | import pydart2 as pydart 8 | if __name__ == '__main__': 9 | pydart.init() 10 | print('pydart initialization OK') 11 | 12 | world = pydart.World(0.0002, './data/skel/softBodies.skel') 13 | print('pydart create_world OK') 14 | 15 | pydart.gui.viewer.launch(world) 16 | -------------------------------------------------------------------------------- /examples/view_skeleton.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | import sys 3 | import pydart2 as pydart 4 | 5 | if len(sys.argv) != 2: 6 | print("Usage: view_skeleton.py [*.urdf/*.sdf]") 7 | exit(0) 8 | 9 | skel_path = sys.argv[1] 10 | print("skeleton path = %s" % skel_path) 11 | 12 | pydart.init() 13 | print("Pydart init OK") 14 | 15 | world = pydart.World(0.0005) 16 | print("World init OK") 17 | 18 | skel = world.add_skeleton(skel_path) 19 | print("Skeleton add OK") 20 | 21 | print("Camera:") 22 | print(" drag: rotate camera") 23 | print(" shift-drag: zoom camera") 24 | print(" control-drag: translate camera") 25 | 26 | pydart.gui.viewer.launch(world) 27 | -------------------------------------------------------------------------------- /pydart2/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from __future__ import absolute_import 3 | import sys 4 | 5 | from . import pydart2_api as papi 6 | from . import world 7 | from . import constraints 8 | from . import utils 9 | from .world import World 10 | from .skel_vector import SkelVector 11 | 12 | assert utils 13 | assert World 14 | assert SkelVector 15 | 16 | assert world 17 | assert constraints 18 | 19 | # import os.path 20 | 21 | from . import gui 22 | 23 | # try: 24 | # from . import gui 25 | # assert gui 26 | # except Exception: 27 | # e = sys.exc_info()[1] 28 | # print("-" * 40) 29 | # print("Error while importing pydart2.gui") 30 | # print(e) 31 | # print("-" * 40) 32 | 33 | __version__ = (0, 5, 0) 34 | 35 | 36 | def init(verbose=True): 37 | papi.init(verbose) 38 | -------------------------------------------------------------------------------- /pydart2/collision_result.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from __future__ import absolute_import 3 | # from builtins import object 4 | from past.utils import old_div 5 | # Copyright (c) 2015, Disney Research 6 | # All rights reserved. 7 | # 8 | # Author(s): Sehoon Ha 9 | # Disney Research Robotics Group 10 | import numpy as np 11 | from . import pydart2_api as papi 12 | from .contact import Contact 13 | 14 | 15 | class CollisionResult(object): 16 | """ 17 | """ 18 | 19 | def __init__(self, _world): 20 | """ 21 | """ 22 | self.world = _world 23 | self.id = self.world.id 24 | self.contacts = list() 25 | self.contacted_bodies = list() 26 | 27 | def num_contacts(self,): 28 | return len(self.contacts) 29 | 30 | def num_contacted_bodies(self,): 31 | return len(self.contacted_bodies) 32 | 33 | def copy(self, ): 34 | ret = CollisionResult(self.world) 35 | ret.id = self.id 36 | ret.contacts = list(self.contacts) 37 | ret.contacted_bodies = list(self.contacted_bodies) 38 | return ret 39 | 40 | def update(self,): 41 | self.contacts = list() 42 | self.contacted_bodies = list() 43 | 44 | # contacts 45 | n = papi.collisionresult__getNumContacts(self.id) 46 | v = papi.collisionresult__getContacts(self.id, n * 10) 47 | if n > 0: 48 | self.contacts = [Contact(self.world, v_i) 49 | for v_i in np.split(v, n)] 50 | 51 | # contacted_bodies 52 | ids = np.array(papi.collisionresult__getCollidingBodyNodes(self.id)) 53 | n = old_div(len(ids), 2) 54 | if n > 0: 55 | self.contacted_bodies = [self.world.skeletons[i].bodynodes[j] 56 | for i, j in np.split(ids, n)] 57 | 58 | def __repr__(self,): 59 | ret = "[CollisionResult: %d contacts %d contacted bodies]" % ( 60 | self.num_contacts(), self.num_contacted_bodies()) 61 | return ret 62 | -------------------------------------------------------------------------------- /pydart2/constraints.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | # from builtins import object 3 | # Copyright (c) 2015, Disney Research 4 | # All rights reserved. 5 | # 6 | # Author(s): Sehoon Ha 7 | # Disney Research Robotics Group 8 | from . import pydart2_api as papi 9 | 10 | 11 | class BallJointConstraint(object): 12 | def __init__(self, body1, body2, jointPos): 13 | self.body1 = body1 14 | self.body2 = body2 15 | self.jointPos = jointPos 16 | 17 | def add_to_world(self, world): 18 | papi.addBallJointConstraint(world.id, 19 | self.body1.skid, 20 | self.body1.id, 21 | self.body2.skid, 22 | self.body2.id, 23 | self.jointPos) 24 | -------------------------------------------------------------------------------- /pydart2/contact.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | # from builtins import object 3 | # Copyright (c) 2015, Disney Research 4 | # All rights reserved. 5 | # 6 | # Author(s): Sehoon Ha 7 | # Disney Research Robotics Group 8 | from . import pydart2_api as papi 9 | 10 | 11 | class Contact(object): 12 | """ 13 | """ 14 | def __init__(self, _world, _state): 15 | """ 16 | """ 17 | self.world = _world 18 | self.state = _state 19 | self.point = _state[:3] 20 | self.force = _state[3:6] 21 | self.skel_id1 = int(_state[6]) 22 | self.bodynode_id1 = int(_state[7]) 23 | self.skel_id2 = int(_state[8]) 24 | self.bodynode_id2 = int(_state[9]) 25 | 26 | # self.skel_id1, self.bodynode_id1 = _state[6:8] 27 | # self.skel_id2, self.bodynode_id2 = _state[8:10] 28 | self.bodynode1 = None 29 | self.bodynode2 = None 30 | # print self.skel_id1, self.bodynode_id1, 31 | # print self.skel_id2, self.bodynode_id2, _state 32 | if self.skel_id1 >= 0 and self.bodynode_id1 >= 0: 33 | skel = self.world.skeletons[self.skel_id1] 34 | self.bodynode1 = skel.bodynodes[self.bodynode_id1] 35 | if self.skel_id2 >= 0 and self.bodynode_id2 >= 0: 36 | skel = self.world.skeletons[self.skel_id2] 37 | self.bodynode2 = skel.bodynodes[self.bodynode_id2] 38 | # print self.bodynode1, self.bodynode2 39 | 40 | @property 41 | def p(self, ): 42 | return self.point 43 | 44 | @property 45 | def f(self, ): 46 | return self.force 47 | 48 | def render(self, size, scale): 49 | papi.collisionresult__renderContact(self.state[:6], size, scale) 50 | 51 | def __repr__(self, ): 52 | return "[Contact %s %s]" % (self.point, self.force) 53 | -------------------------------------------------------------------------------- /pydart2/gui/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | # Copyright (c) 2015, Disney Research 3 | # All rights reserved. 4 | # 5 | # Author(s): Sehoon Ha 6 | # Disney Research Robotics Group 7 | 8 | from pydart2.gui import opengl 9 | assert(opengl) 10 | 11 | try: 12 | from pydart2.gui import glut 13 | assert(glut) 14 | except Exception: 15 | print("[Warn] fail to load GLUT -- check the installation") 16 | 17 | # try: 18 | # from pydart2.gui import pyqt4 19 | # assert(pyqt4) 20 | # except: 21 | # print("[Warn] fail to load PyQt4 -- check the installation") 22 | 23 | try: 24 | from pydart2.gui import pyqt5 25 | assert(pyqt5) 26 | except: 27 | print("[Warn] fail to load PyQt5 (pip install pyqt5)") 28 | 29 | try: 30 | from pydart2.gui import viewer 31 | assert(viewer) 32 | except: 33 | print("[Warn] fail to load viewer") 34 | 35 | 36 | # assert(pydart2.gui.opengl) 37 | # assert(pydart2.gui.pyqt4) 38 | 39 | # from pydart2.gui import viewer 40 | # from pydart2.gui import side_panel 41 | # assert viewer 42 | # assert side_panel 43 | -------------------------------------------------------------------------------- /pydart2/gui/glut/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | -------------------------------------------------------------------------------- /pydart2/gui/opengl/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | -------------------------------------------------------------------------------- /pydart2/gui/pyqt4/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | try: 4 | from pydart2.gui.pyqt4 import window 5 | from pydart2.gui.pyqt4 import side_panel 6 | 7 | assert window 8 | assert side_panel 9 | 10 | except Exception: 11 | print("failed to load pyqt4") 12 | -------------------------------------------------------------------------------- /pydart2/gui/pyqt5/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | try: 4 | from pydart2.gui.pyqt5 import window 5 | from pydart2.gui.pyqt5 import side_panel 6 | 7 | assert window 8 | assert side_panel 9 | except Exception: 10 | print("failed to load pyqt5") 11 | -------------------------------------------------------------------------------- /pydart2/gui/viewer.py: -------------------------------------------------------------------------------- 1 | def launch_window(sim, win, default_camera): 2 | if default_camera is not None: 3 | win.scene.set_camera(default_camera) 4 | win.run() 5 | 6 | 7 | def launch_pyqt4(sim, title=None, default_camera=None): 8 | from pydart2.gui.pyqt4.window import PyQt4Window 9 | win = PyQt4Window(sim, title) 10 | launch_window(sim, win, default_camera) 11 | 12 | 13 | def launch_pyqt5(sim, title=None, default_camera=None): 14 | from pydart2.gui.pyqt5.window import PyQt5Window 15 | 16 | win = PyQt5Window(sim, title) 17 | launch_window(sim, win, default_camera) 18 | 19 | 20 | def launch_glut(sim, title=None, default_camera=None): 21 | from pydart2.gui.glut.window import GLUTWindow 22 | win = GLUTWindow(sim, title) 23 | launch_window(sim, win, default_camera) 24 | 25 | 26 | def launch(sim, title=None, default_camera=None): 27 | """ 28 | default is PyQt5 29 | """ 30 | # launch_pyqt4(sim, title, default_camera) 31 | # launch_pyqt5(sim, title, default_camera) 32 | launch_glut(sim, title, default_camera) 33 | -------------------------------------------------------------------------------- /pydart2/marker.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | # from builtins import object 3 | # Copyright (c) 2015, Disney Research 4 | # All rights reserved. 5 | # 6 | # Author(s): Sehoon Ha 7 | # Disney Research Robotics Group 8 | from . import pydart2_api as papi 9 | 10 | 11 | class Marker(object): 12 | """ 13 | """ 14 | def __init__(self, _skeleton, _id): 15 | """ 16 | """ 17 | self.skeleton = _skeleton 18 | self.id = _id 19 | self.name = "M%04d" % _id 20 | self.bodynode = None 21 | 22 | @property 23 | def skel(self): 24 | return self.skeleton 25 | 26 | @property 27 | def wid(self): 28 | return self.skel.world.id 29 | 30 | @property 31 | def skid(self): 32 | return self.skel.id 33 | 34 | def build(self): 35 | self.bodynode = None 36 | 37 | ret_id = papi.marker__getBodyNode(self.wid, self.skid, self.id) 38 | if ret_id >= 0: 39 | self.bodynode = self.skel.bodynodes[ret_id] 40 | self.bodynode.markers.append(self) 41 | 42 | def local_position(self, ): 43 | return papi.marker__getLocalPosition(self.wid, self.skid, self.id) 44 | 45 | def set_local_position(self, inv3): 46 | papi.marker__setLocalPosition(self.wid, self.skid, self.id, inv3) 47 | 48 | def world_position(self, ): 49 | return papi.marker__getWorldPosition(self.wid, self.skid, self.id) 50 | 51 | @property 52 | def p(self, ): 53 | return self.world_position 54 | 55 | def render(self, ): 56 | return papi.marker__render(self.wid, self.skid, self.id) 57 | 58 | def __repr__(self): 59 | return '[Marker(%d)]' % (self.id) 60 | -------------------------------------------------------------------------------- /pydart2/muscle/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015, Disney Research 2 | # All rights reserved. 3 | # 4 | # Author(s): Sehoon Ha 5 | # Disney Research Robotics Group 6 | 7 | 8 | from pydart2.muscle.tendon_unit import MusculoTendonUnit as MTU 9 | from pydart2.muscle.route import Route 10 | -------------------------------------------------------------------------------- /pydart2/muscle/model_geyer_2010.py: -------------------------------------------------------------------------------- 1 | # Author(s): Seungmoon Song 2 | import numpy as np 3 | 4 | 5 | def fn_inv_f_vce0(f_vce0, K, N): 6 | if f_vce0 <= 1: 7 | v_ce0 = (f_vce0 - 1) / (K * f_vce0 + 1) 8 | elif f_vce0 > 1 and f_vce0 <= N: 9 | temp = (f_vce0 - N) / (f_vce0 - N + 1) 10 | v_ce0 = (temp + 1) / (1 - 7.56 * K * temp) 11 | else: # elif f_vce0 > N: 12 | v_ce0 = .01 * (f_vce0 - N) + 1 13 | 14 | return v_ce0 15 | 16 | 17 | def fn_f_lce0(l_ce0, w, c): 18 | f_lce0 = np.exp(c * np.abs((l_ce0 - 1) / (w))**3) 19 | return f_lce0 20 | 21 | # f_p0 is for both f_se0 and f_pe0 22 | 23 | 24 | def fn_f_p0(l0, e_ref): 25 | if l0 > 1: 26 | f_p0 = ((l0 - 1) / (e_ref))**2 27 | else: 28 | f_p0 = 0 29 | 30 | return f_p0 31 | 32 | # for both f_be0 33 | 34 | 35 | def fn_f_p0_ext(l0, e_ref, e_ref2): 36 | if l0 < e_ref2: 37 | f_p0 = ((l0 - e_ref2) / (e_ref))**2 38 | else: 39 | f_p0 = 0 40 | 41 | return f_p0 42 | -------------------------------------------------------------------------------- /pydart2/muscle/skeleton.py: -------------------------------------------------------------------------------- 1 | # Author(s): Sehoon Ha 2 | import numpy as np 3 | from pydart2.skeleton import Skeleton 4 | 5 | 6 | class MusculoSkeleton(Skeleton): 7 | """ 8 | world = pydart2.world.World(0.001) 9 | world.add_skeleton("data/skeleton_file", MusculoSkeleton) 10 | """ 11 | 12 | def __init__(self, _world, _filename=None, 13 | _id=None, _friction=None, ): 14 | Skeleton.__init__(self, _world, _filename, _id, _friction) 15 | self.muscles = list() 16 | 17 | def num_muscles(self, ): 18 | return len(self.muscles) 19 | 20 | def add_muscle(self, mtu, route): 21 | route.initialize_points(self) 22 | route.update_geometry_variables() 23 | self.muscles.append((mtu, route)) 24 | 25 | def update(self, ): 26 | for mtu in self.tendon_units: 27 | mtu.update() 28 | 29 | def update_route_geometry(self, ): 30 | for _, route in self.muscles: 31 | route.update_geometry_variables() 32 | 33 | def reset_muscles(self, ): 34 | for (mtu, route) in self.muscles: 35 | mtu.reset() 36 | 37 | def stimulate(self, stimulation): 38 | self.update_route_geometry() 39 | for S, (mtu, route) in zip(stimulation, self.muscles): 40 | mtu.update(S, route.length) 41 | 42 | def apply_muscle_forces(self, ): 43 | for (mtu, route) in self.muscles: 44 | f_mtu = mtu.F_mtu 45 | for (o0, o1), (b0, b1), u in zip(route.local_points_as_pair(), 46 | route.bodynodes_as_pair(), 47 | route.world_directions): 48 | if b0 == b1: 49 | continue 50 | F_ext = f_mtu * u 51 | b0.add_ext_force(F_ext, o0) 52 | b1.add_ext_force(-F_ext, o1) 53 | 54 | def render_with_ri(self, ri): 55 | r = np.array([1.0, 0.0, 0.0]) 56 | b = np.array([0.0, 0.0, 1.0]) 57 | for mtu, route in self.muscles: 58 | w = mtu.a 59 | color = (1 - w) * b + w * r 60 | ri.set_color(*color) 61 | route.render_with_ri(ri) 62 | 63 | def __repr__(self): 64 | args = (self.id, self.name, self.num_muscles()) 65 | return '[MusculoSkeleton(%d): %s # Muscles = %d]' % args 66 | -------------------------------------------------------------------------------- /pydart2/pydart2_api.h: -------------------------------------------------------------------------------- 1 | #ifndef PYDART2_PYDART2_API_H 2 | #define PYDART2_PYDART2_API_H 3 | 4 | 5 | // #if __has_include("dart/dynamics/CapsuleShape.hpp") 6 | // #define DART6_NEW_SHAPE_API 7 | // #endif 8 | 9 | 10 | #include 11 | 12 | //////////////////////////////////////////////////////////////////////////////// 13 | // Init Functions 14 | void init(bool verbose=true); 15 | void destroy(); 16 | 17 | void setVerbose(bool verbose=true); 18 | bool getVerbose(); 19 | 20 | //////////////////////////////////////////////////////////////////////////////// 21 | //////////////////////////////////////////////////////////////////////////////// 22 | // Miscellaneous API implementations 23 | 24 | //////////////////////////////////////////////////////////////////////////////// 25 | // Marker 26 | #define MARKER(funcname) marker__##funcname 27 | #define GET_MARKER(wid, skid, mid) Manager::skeleton(wid, skid)->getMarker(mid) 28 | 29 | int MARKER(getBodyNode)(int wid, int skid, int mid); 30 | void MARKER(getLocalPosition)(int wid, int skid, int mid, double outv3[3]); 31 | void MARKER(setLocalPosition)(int wid, int skid, int mid, double inv3[3]); 32 | void MARKER(getWorldPosition)(int wid, int skid, int mid, double outv3[3]); 33 | void MARKER(render)(int wid, int skid, int mid); 34 | 35 | //////////////////////////////////////////////////////////////////////////////// 36 | // Contacts 37 | #define COLLISION_RESULT(funcname) collisionresult__##funcname 38 | #define GET_COLLISION_RESULT(wid) Manager::world(wid)->getConstraintSolver()->getLastCollisionResult(); 39 | 40 | int COLLISION_RESULT(getNumContacts)(int wid); 41 | void COLLISION_RESULT(getContacts)(int wid, double* outv, int nout); 42 | std::vector COLLISION_RESULT(getCollidingBodyNodes)(int wid); 43 | void COLLISION_RESULT(renderContact)(double inv6[6], double size, double scale); 44 | 45 | //////////////////////////////////////////////////////////////////////////////// 46 | // Constraints 47 | int addBallJointConstraint(int wid, int skid1, int bid1, int skid2, int bid2, 48 | double inv3[3]); 49 | 50 | 51 | #endif // #ifndef PYDART2_PYDART2_API_H 52 | -------------------------------------------------------------------------------- /pydart2/pydart2_api.i: -------------------------------------------------------------------------------- 1 | %module pydart2_api 2 | 3 | %{ 4 | #define SWIG_FILE_WITH_INIT 5 | #include "pydart2_api.h" 6 | #include "pydart2_world_api.h" 7 | #include "pydart2_skeleton_api.h" 8 | #include "pydart2_bodynode_api.h" 9 | #include "pydart2_dof_api.h" 10 | #include "pydart2_joint_api.h" 11 | #include "pydart2_shape_api.h" 12 | %} 13 | 14 | /* Include the NumPy typemaps library */ 15 | %include "numpy.i" 16 | 17 | %init %{ 18 | import_array(); 19 | %} 20 | 21 | %include "std_vector.i" 22 | 23 | /* SWIG template for get_rand_list(int length) C++ routine */ 24 | namespace std { 25 | %template(IntVector) vector; 26 | } 27 | 28 | %apply (double IN_ARRAY1[ANY]) {(double inv3[3])}; 29 | %apply (double IN_ARRAY1[ANY]) {(double inv3_2[3])}; 30 | %apply (double IN_ARRAY1[ANY]) {(double inv4[4])}; 31 | %apply (double IN_ARRAY1[ANY]) {(double inv6[6])}; 32 | 33 | %apply (double ARGOUT_ARRAY1[ANY]) {(double outv3[3])}; 34 | %apply (double ARGOUT_ARRAY1[ANY]) {(double outv4[4])}; 35 | %apply (double ARGOUT_ARRAY1[ANY]) {(double outv6[6])}; 36 | 37 | %apply (double IN_ARRAY2[ANY][ANY]) {(double inv33[3][3])}; 38 | %apply (double IN_ARRAY2[ANY][ANY]) {(double inv44[4][4])}; 39 | %apply (double ARGOUT_ARRAY2[ANY][ANY]) {(double outv33[3][3])}; 40 | %apply (double ARGOUT_ARRAY2[ANY][ANY]) {(double outv44[4][4])}; 41 | 42 | %apply (double* IN_ARRAY1, int DIM1) {(double* inv, int ndofs)}; 43 | %apply (double* IN_ARRAY1, int DIM1) {(double* inv1, int indofs1)}; 44 | %apply (double* IN_ARRAY1, int DIM1) {(double* inv2, int indofs2)}; 45 | 46 | %apply (double* ARGOUT_ARRAY1, int DIM1) {(double* outv, int ndofs)}; 47 | %apply (double* ARGOUT_ARRAY1, int DIM1) {(double* outv1, int ondofs1)}; 48 | %apply (double* ARGOUT_ARRAY1, int DIM1) {(double* outv2, int ondofs2)}; 49 | %apply (double* ARGOUT_ARRAY1, int DIM1) {(double* outv, int nout)}; 50 | %apply (double* INPLACE_ARRAY2, int DIM1, int DIM2) {(double* outm, int nrows, int ncols)}; 51 | 52 | %include "pydart2_api.h" 53 | %include "pydart2_world_api.h" 54 | %include "pydart2_skeleton_api.h" 55 | %include "pydart2_bodynode_api.h" 56 | %include "pydart2_dof_api.h" 57 | %include "pydart2_joint_api.h" 58 | %include "pydart2_shape_api.h" 59 | -------------------------------------------------------------------------------- /pydart2/pydart2_dof_api.h: -------------------------------------------------------------------------------- 1 | #ifndef PYDART2_DOF_API_H 2 | #define PYDART2_DOF_API_H 3 | 4 | 5 | //////////////////////////////////////////////////////////////////////////////// 6 | // DegreeOfFreedom 7 | #define DOF(funcname) dof__##funcname 8 | #define GET_DOF(wid, skid, dofid) Manager::skeleton(wid, skid)->getDof(dofid) 9 | 10 | const char* DOF(getName)(int wid, int skid, int dofid); 11 | 12 | //////////////////////////////////////// 13 | // Dof::Index Functions 14 | int DOF(getIndexInSkeleton)(int wid, int skid, int dofid); 15 | int DOF(getIndexInTree)(int wid, int skid, int dofid); 16 | int DOF(getIndexInJoint)(int wid, int skid, int dofid); 17 | int DOF(getTreeIndex)(int wid, int skid, int dofid); 18 | 19 | //////////////////////////////////////// 20 | // Dof::Position Functions 21 | double DOF(getPosition)(int wid, int skid, int dofid); 22 | void DOF(setPosition)(int wid, int skid, int dofid, double _position); 23 | double DOF(getInitialPosition)(int wid, int skid, int dofid); 24 | void DOF(setInitialPosition)(int wid, int skid, int dofid, double _initial); 25 | bool DOF(hasPositionLimit)(int wid, int skid, int dofid); 26 | double DOF(getPositionLowerLimit)(int wid, int skid, int dofid); 27 | void DOF(setPositionLowerLimit)(int wid, int skid, int dofid, double _limit); 28 | double DOF(getPositionUpperLimit)(int wid, int skid, int dofid); 29 | void DOF(setPositionUpperLimit)(int wid, int skid, int dofid, double _limit); 30 | 31 | //////////////////////////////////////// 32 | // Dof::Velocity Functions 33 | double DOF(getVelocity)(int wid, int skid, int dofid); 34 | void DOF(setVelocity)(int wid, int skid, int dofid, double _velocity); 35 | double DOF(getInitialVelocity)(int wid, int skid, int dofid); 36 | void DOF(setInitialVelocity)(int wid, int skid, int dofid, double _initial); 37 | double DOF(getVelocityLowerLimit)(int wid, int skid, int dofid); 38 | void DOF(setVelocityLowerLimit)(int wid, int skid, int dofid, double _limit); 39 | double DOF(getVelocityUpperLimit)(int wid, int skid, int dofid); 40 | void DOF(setVelocityUpperLimit)(int wid, int skid, int dofid, double _limit); 41 | 42 | //////////////////////////////////////// 43 | // Dof::Passive Force Functions 44 | double DOF(getSpringStiffness)(int wid, int skid, int dofid); 45 | void DOF(setSpringStiffness)(int wid, int skid, int dofid, double _k); 46 | double DOF(getRestPosition)(int wid, int skid, int dofid); 47 | void DOF(setRestPosition)(int wid, int skid, int dofid, double _q0); 48 | double DOF(getDampingCoefficient)(int wid, int skid, int dofid); 49 | void DOF(setDampingCoefficient)(int wid, int skid, int dofid, double _coeff); 50 | double DOF(getCoulombFriction)(int wid, int skid, int dofid); 51 | void DOF(setCoulombFriction)(int wid, int skid, int dofid, double _friction); 52 | 53 | //////////////////////////////////////// 54 | // Dof::Constraint Force Functions 55 | double DOF(getConstraintImpulse)(int wid, int skid, int dofid); 56 | void DOF(setConstraintImpulse)(int wid, int skid, int dofid, double _impulse); 57 | 58 | 59 | #endif // #ifndef PYDART2_DOF_API_H 60 | -------------------------------------------------------------------------------- /pydart2/pydart2_draw.h: -------------------------------------------------------------------------------- 1 | #ifndef PYDART2_PYDART2_DRAW_H 2 | #define PYDART2_PYDART2_DRAW_H 3 | 4 | #include 5 | 6 | #include "dart/simulation/World.hpp" 7 | #include "dart/dynamics/Skeleton.hpp" 8 | #include "dart/dynamics/SoftBodyNode.hpp" 9 | #include "dart/dynamics/SphereShape.hpp" 10 | #include "dart/dynamics/BoxShape.hpp" 11 | #include "dart/dynamics/EllipsoidShape.hpp" 12 | #include "dart/dynamics/CylinderShape.hpp" 13 | #include "dart/dynamics/CapsuleShape.hpp" 14 | #include "dart/dynamics/ConeShape.hpp" 15 | #include "dart/dynamics/PlaneShape.hpp" 16 | #include "dart/dynamics/MultiSphereShape.hpp" 17 | #include "dart/dynamics/MeshShape.hpp" 18 | #include "dart/dynamics/SoftMeshShape.hpp" 19 | #include "dart/dynamics/LineSegmentShape.hpp" 20 | #include "dart/dynamics/Marker.hpp" 21 | #include "dart/constraint/ConstraintSolver.hpp" 22 | #include "dart/collision/CollisionDetector.hpp" 23 | #include "dart/gui/LoadGlut.hpp" 24 | #include "dart/gui/GLFuncs.hpp" 25 | #include "dart/gui/GraphWindow.hpp" 26 | #include "dart/utils/FileInfoWorld.hpp" 27 | 28 | 29 | void drawWorld( 30 | dart::gui::RenderInterface* ri, 31 | dart::simulation::WorldPtr world); 32 | 33 | void drawSkeletons( 34 | dart::gui::RenderInterface* ri, 35 | dart::simulation::WorldPtr world); 36 | 37 | void drawSkeleton( 38 | dart::gui::RenderInterface* ri, 39 | const dart::dynamics::Skeleton* skeleton, 40 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5), 41 | bool useDefaultColor = true); 42 | 43 | void drawEntity( 44 | dart::gui::RenderInterface* ri, 45 | const dart::dynamics::Entity* entity, 46 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5), 47 | bool useDefaultColor = true); 48 | 49 | void drawBodyNode( 50 | dart::gui::RenderInterface* ri, 51 | const dart::dynamics::BodyNode* bodyNode, 52 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5), 53 | bool useDefaultColor = true, 54 | bool recursive = false); 55 | 56 | void drawShapeFrame( 57 | dart::gui::RenderInterface* ri, 58 | const dart::dynamics::ShapeFrame* shapeFrame, 59 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5), 60 | bool useDefaultColor = true); 61 | 62 | void drawShape( 63 | dart::gui::RenderInterface* ri, 64 | const dart::dynamics::Shape* shape, 65 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5)); 66 | 67 | void drawPointMasses( 68 | dart::gui::RenderInterface* ri, 69 | const std::vector pointMasses, 70 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5), 71 | bool useDefaultColor = true); 72 | 73 | void drawMarker( 74 | dart::gui::RenderInterface* ri, 75 | const dart::dynamics::Marker* marker, 76 | const Eigen::Vector4d& color = Eigen::Vector4d::Constant(0.5), 77 | bool useDefaultColor = true); 78 | 79 | void drawContact( 80 | dart::gui::RenderInterface* ri, 81 | const Eigen::Vector6d& state, 82 | double size, 83 | double scale); 84 | 85 | #endif // #ifndef PYDART2_PYDART2_DRAW_H 86 | -------------------------------------------------------------------------------- /pydart2/pydart2_manager.h: -------------------------------------------------------------------------------- 1 | #ifndef PYDART2_MANAGER_H 2 | #define PYDART2_MANAGER_H 3 | 4 | 5 | 6 | // Dart headers 7 | #include "dart/dart.hpp" 8 | #ifdef PYDART2_BULLET_FOUND 9 | #include "dart/collision/bullet/BulletCollisionDetector.hpp" 10 | #endif 11 | #ifdef PYDART2_ODE_FOUND 12 | #include "dart/collision/ode/OdeCollisionDetector.hpp" 13 | #endif 14 | #include "dart/gui/gui.hpp" 15 | #include "dart/utils/utils.hpp" 16 | #include "dart/utils/urdf/DartLoader.hpp" 17 | 18 | namespace pydart { 19 | 20 | //////////////////////////////////////////////////////////// 21 | // class Manager 22 | class Manager { 23 | public: 24 | static void init(); 25 | static void destroy(); 26 | static Manager* getInstance() { return g_manager; } 27 | static dart::gui::RenderInterface* getRI() { 28 | return g_ri; 29 | } 30 | 31 | static dart::simulation::WorldPtr world(int index = 0); 32 | static dart::dynamics::SkeletonPtr skeleton(int index); 33 | static dart::dynamics::SkeletonPtr skeleton(int wid, int skid); 34 | static int createWorld(double timestep); 35 | static int createWorldFromSkel(const char* const path); 36 | static void destroyWorld(int id); 37 | static bool g_verbose; 38 | protected: 39 | static Manager* g_manager; 40 | static dart::gui::RenderInterface* g_ri; 41 | 42 | // std::vector worlds; 43 | int next_id; 44 | std::map worlds; 45 | 46 | }; 47 | 48 | } // namespace pydart 49 | 50 | void write(const Eigen::VectorXd& src, double* dst); 51 | void write_matrix(const Eigen::MatrixXd& src, double* dst); 52 | void write_isometry(const Eigen::Isometry3d& src, double dst[4][4]); 53 | Eigen::VectorXd read(double* src, int n); 54 | Eigen::Isometry3d read_isometry(double src[4][4]); 55 | 56 | #define MSG if (Manager::g_verbose) dtmsg 57 | #define DBG if (Manager::g_verbose) dtdbg 58 | #define WARN if (Manager::g_verbose) dtwarn 59 | #define ERR if (Manager::g_verbose) dterr 60 | 61 | #endif // #ifndef PYDART2_MANAGER_H 62 | -------------------------------------------------------------------------------- /pydart2/pydart2_world_api.h: -------------------------------------------------------------------------------- 1 | #ifndef PYDART2_WORLD_API_H 2 | #define PYDART2_WORLD_API_H 3 | 4 | //////////////////////////////////////////////////////////////////////////////// 5 | // World 6 | #define WORLD(funcname) world__##funcname 7 | #define GET_WORLD(wid) Manager::world(wid) 8 | 9 | int createWorld(double timestep); 10 | int createWorldFromSkel(const char* const path); 11 | void destroyWorld(int wid); 12 | 13 | int WORLD(addSkeleton)(int wid, const char* const path); 14 | int WORLD(getNumSkeletons)(int wid); 15 | 16 | void WORLD(reset)(int wid); 17 | void WORLD(step)(int wid); 18 | void WORLD(checkCollision)(int wid); 19 | void WORLD(render)(int wid); 20 | 21 | //////////////////////////////////////// 22 | // World::Time Functions 23 | void WORLD(setTimeStep)(int wid, double _timeStep); 24 | double WORLD(getTimeStep)(int wid); 25 | void WORLD(setTime)(int wid, double _time); 26 | double WORLD(getTime)(int wid); 27 | int WORLD(getSimFrames)(int wid); 28 | int WORLD(getIndex)(int wid, int _index); 29 | 30 | //////////////////////////////////////// 31 | // World::Property Functions 32 | void WORLD(setGravity)(int wid, double inv3[3]); 33 | void WORLD(getGravity)(int wid, double outv3[3]); 34 | 35 | //////////////////////////////////////// 36 | // World::CollisionDetector Functions 37 | void WORLD(setCollisionDetector)(int wid, int detector_type); 38 | int WORLD(getCollisionDetector)(int wid); 39 | 40 | 41 | //////////////////////////////////////// 42 | // World::Constraint Functions 43 | void WORLD(removeAllConstraints)(int wid); 44 | 45 | #endif // #ifndef PYDART2_WORLD_API_H 46 | -------------------------------------------------------------------------------- /pydart2/recording.py: -------------------------------------------------------------------------------- 1 | class Recording(object): 2 | """docstring for Recording""" 3 | def __init__(self, world): 4 | super(Recording, self).__init__() 5 | self.world = world 6 | self.clear() 7 | 8 | def clear(self, ): 9 | self.history = list() 10 | self.bake() 11 | 12 | def num_frames(self, ): 13 | return len(self.history) 14 | 15 | def bake(self, ): 16 | data = (self.world.x, self.world.collision_result.copy()) 17 | self.history.append(data) 18 | 19 | def set_frame(self, frame_index): 20 | if frame_index < 0 or frame_index >= self.num_frames(): 21 | return False 22 | x, col = self.history[frame_index] 23 | self.world.set_states(x) 24 | self.world.collision_result = col.copy() 25 | return True 26 | -------------------------------------------------------------------------------- /pydart2/skel_vector.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | class SkelVector(np.ndarray): 5 | def __new__(cls, data=None, skel=None): 6 | if data is None: 7 | data = np.zeros(skel.ndofs) 8 | obj = np.asarray(data).view(cls) 9 | obj.skel = skel 10 | obj.keys = [d.name for d in skel.dofs] 11 | return obj 12 | 13 | def to_index(self, key): 14 | if isinstance(key, int): 15 | if key < 0: 16 | return len(self) + key 17 | else: 18 | return key 19 | elif isinstance(key, str): 20 | return self.keys.index(key) 21 | else: 22 | return None 23 | 24 | def __getitem__(self, key): 25 | if isinstance(key, str): 26 | index = self.to_index(key) 27 | return self.__getitem__(index) 28 | elif isinstance(key, list) or isinstance(key, tuple): 29 | indices = [self.to_index(x) for x in key] 30 | ret = self.__getitem__(np.array(indices)) 31 | ret.keys = [self.keys[i] for i in indices] 32 | return ret 33 | else: 34 | return np.ndarray.__getitem__(self, key) 35 | 36 | def __getslice__(self, start, end): 37 | ret = np.ndarray.__getslice__(self, start, end) 38 | ret.keys = self.keys[start:end] 39 | return ret 40 | 41 | def __setitem__(self, key, value): 42 | if isinstance(key, str): 43 | index = self.to_index(key) 44 | return self.__setitem__(index, value) 45 | elif isinstance(key, list) or isinstance(key, tuple): 46 | indices = [self.to_index(x) for x in key] 47 | return self.__setitem__(np.array(indices), value) 48 | else: 49 | return np.ndarray.__setitem__(self, key, value) 50 | 51 | def __contains__(self, key): 52 | return key in self.keys 53 | 54 | def __array_finalize__(self, obj): 55 | if obj is None: 56 | return 57 | self.skel = getattr(obj, 'skel', None) 58 | self.keys = getattr(obj, 'keys', None) 59 | -------------------------------------------------------------------------------- /pydart2/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | # Copyright (c) 2015, Disney Research 3 | # All rights reserved. 4 | # 5 | # Author(s): Sehoon Ha 6 | # Disney Research Robotics Group 7 | from . import transformations 8 | from . import misc 9 | from . import log 10 | from . import jsonpickle 11 | from . import time_measure 12 | try: 13 | from . import colored_text 14 | assert(colored_text) 15 | except Exception: 16 | print("Error while importing colored_text (pip install colorama)") 17 | 18 | assert(transformations) 19 | assert(misc) 20 | assert(log) 21 | assert(jsonpickle) 22 | assert(time_measure) 23 | -------------------------------------------------------------------------------- /pydart2/utils/colored_text.py: -------------------------------------------------------------------------------- 1 | from colorama import Fore, Style 2 | 3 | 4 | def red(txt): 5 | return Fore.RED + txt + Style.RESET_ALL 6 | 7 | 8 | def blue(txt): 9 | return Fore.BLUE + txt + Style.RESET_ALL 10 | 11 | 12 | def green(txt): 13 | return Fore.GREEN + txt + Style.RESET_ALL 14 | 15 | 16 | def yello(txt): 17 | return Fore.YELLOW + txt + Style.RESET_ALL 18 | 19 | 20 | def magenta(txt): 21 | return Fore.MAGENTA + txt + Style.RESET_ALL 22 | 23 | 24 | def cyan(txt): 25 | return Fore.CYAN + Style.BRIGHT + txt + Style.RESET_ALL 26 | 27 | 28 | def bright_red(txt): 29 | return Fore.RED + Style.BRIGHT + txt + Style.RESET_ALL 30 | 31 | 32 | def bright_blue(txt): 33 | return Fore.BLUE + Style.BRIGHT + txt + Style.RESET_ALL 34 | 35 | 36 | def bright_green(txt): 37 | return Fore.GREEN + Style.BRIGHT + txt + Style.RESET_ALL 38 | 39 | 40 | def bright_yello(txt): 41 | return Fore.YELLOW + Style.BRIGHT + txt + Style.RESET_ALL 42 | 43 | 44 | def bright_magenta(txt): 45 | return Fore.MAGENTA + Style.BRIGHT + txt + Style.RESET_ALL 46 | 47 | 48 | def bright_cyan(txt): 49 | return Fore.CYAN + Style.BRIGHT + txt + Style.RESET_ALL 50 | 51 | 52 | def dim_red(txt): 53 | return Fore.RED + Style.DIM + txt + Style.RESET_ALL 54 | 55 | 56 | def dim_blue(txt): 57 | return Fore.BLUE + Style.DIM + txt + Style.RESET_ALL 58 | 59 | 60 | def dim_green(txt): 61 | return Fore.GREEN + Style.DIM + txt + Style.RESET_ALL 62 | 63 | 64 | def dim_yello(txt): 65 | return Fore.YELLOW + Style.DIM + txt + Style.RESET_ALL 66 | 67 | 68 | def dim_magenta(txt): 69 | return Fore.MAGENTA + Style.DIM + txt + Style.RESET_ALL 70 | 71 | 72 | def dim_cyan(txt): 73 | return Fore.CYAN + Style.DIM + txt + Style.RESET_ALL 74 | -------------------------------------------------------------------------------- /pydart2/utils/jsonpickle.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | 4 | def init_numpy_handler(): 5 | print("register jsonpickle.ext.numpy handlers...") 6 | try: 7 | import jsonpickle.ext.numpy 8 | jsonpickle.ext.numpy.register_handlers() 9 | except Exception: 10 | e = sys.exc_info()[1] 11 | print("exception = " + str(e)) 12 | print("register jsonpickle.ext.numpy handlers... NG") 13 | return 14 | print("register jsonpickle.ext.numpy handlers... OK") 15 | -------------------------------------------------------------------------------- /pydart2/utils/log.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import logging 3 | 4 | 5 | def setup(filename=None): 6 | logging.basicConfig() 7 | 8 | root = logging.getLogger() 9 | root.setLevel(logging.DEBUG) 10 | root.handlers = [] 11 | ch = logging.StreamHandler(sys.stdout) 12 | ch.setLevel(logging.DEBUG) 13 | logfmt = '[%(levelname)s][%(asctime)s][%(name)s:%(lineno)d] %(message)s' 14 | formatter = logging.Formatter(logfmt) 15 | ch.setFormatter(formatter) 16 | root.addHandler(ch) 17 | 18 | # set up logging to console 19 | if filename is not None: 20 | # filename = "output.log" 21 | console = logging.FileHandler(filename, "w+") 22 | console.setLevel(logging.DEBUG) 23 | console.setFormatter(formatter) 24 | root.addHandler(console) 25 | 26 | logging.addLevelName(logging.FATAL, 27 | "\033[1;41m%s\033[1;0m" % 28 | logging.getLevelName(logging.FATAL)) 29 | logging.addLevelName(logging.ERROR, 30 | "\033[1;41m%s\033[1;0m" % 31 | logging.getLevelName(logging.ERROR)) 32 | logging.addLevelName(logging.WARNING, 33 | "\033[1;43m%s\033[1;0m" % 34 | logging.getLevelName(logging.WARNING)) 35 | logging.addLevelName(logging.INFO, 36 | "\033[1;42m%s\033[1;0m" % 37 | logging.getLevelName(logging.INFO)) 38 | logging.addLevelName(logging.DEBUG, 39 | "\033[1;44m%s\033[1;0m" % 40 | logging.getLevelName(logging.DEBUG)) 41 | -------------------------------------------------------------------------------- /pydart2/utils/misc.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | # from builtins import range 3 | from past.utils import old_div 4 | # Copyright (c) 2015, Disney Research 5 | # All rights reserved. 6 | # 7 | # Author(s): Sehoon Ha 8 | # Disney Research Robotics Group 9 | 10 | import numpy as np 11 | 12 | 13 | def S(x, precision=6): 14 | if x is None: 15 | return "None" 16 | fmt = "%%.%df" % precision 17 | if isinstance(x, float): 18 | return fmt % x 19 | ret = "[" 20 | tokens = [fmt % v for v in x] 21 | ret += ", ".join(tokens) 22 | ret += "]" 23 | return ret 24 | 25 | 26 | def split_by_sizes(array, sizes): 27 | cum_indices = np.cumsum(sizes) 28 | return np.split(array, cum_indices[:-1]) 29 | 30 | 31 | def norm2(x): 32 | return (np.linalg.norm(x) ** 2) 33 | 34 | 35 | def penalize(x, lo, hi): 36 | if x < lo: 37 | return lo - x 38 | if hi < x: 39 | return x - hi 40 | return 0.0 41 | 42 | 43 | def confine(x, lo, hi): 44 | if isinstance(x, float): 45 | return min(max(lo, x), hi) 46 | else: 47 | return np.array([confine(v, lo, hi) for v in x]) 48 | 49 | 50 | def vel(h, x0, x1, x2): 51 | if x0 is not None and x2 is not None: 52 | return old_div((x2 - x0), (2 * h)) 53 | elif x0 is not None and x2 is None: 54 | return old_div((x1 - x0), h) 55 | elif x0 is None and x2 is not None: 56 | return old_div((x2 - x1), h) 57 | else: 58 | return np.zeros(x1.shape) 59 | 60 | 61 | def acc(h, x0, x1, x2): 62 | if x0 is not None and x2 is not None: 63 | return old_div((x2 - 2 * x1 + x0), (h * h)) 64 | else: 65 | return np.zeros(x1.shape) 66 | 67 | 68 | def grad(fun, x, h): 69 | n = len(x) 70 | g = np.zeros(n) 71 | for i in range(n): 72 | dx = np.zeros(n) 73 | dx[i] = h 74 | f1 = fun(x - dx) 75 | f2 = fun(x + dx) 76 | g[i] = old_div((0.5 * f2 - 0.5 * f1), h) 77 | return g 78 | 79 | 80 | def grad4(fun, x, h): 81 | n = len(x) 82 | g = np.zeros(n) 83 | for i in range(n): 84 | dx = np.zeros(n) 85 | dx[i] = h 86 | f0 = fun(x - 2.0 * dx) 87 | f1 = fun(x - 1.0 * dx) 88 | f2 = fun(x + 1.0 * dx) 89 | f3 = fun(x + 2.0 * dx) 90 | g[i] = old_div((1.0 / 12.0 * f0 - 2.0 / 3.0 * f1 + 91 | 2.0 / 3.0 * f2 - 1.0 / 12.0 * f3), (h)) 92 | return g 93 | 94 | 95 | def deg2rad(x): 96 | return x / 180.0 * np.pi 97 | 98 | 99 | def rad2deg(x): 100 | return x / np.pi * 180.0 101 | -------------------------------------------------------------------------------- /pydart2/utils/time_measure.py: -------------------------------------------------------------------------------- 1 | import time 2 | from functools import partial 3 | 4 | 5 | def decorator_time_measure(func, text_decor=None): 6 | def time_func_wrapper(self, *args, **kwargs): 7 | import time 8 | tic = time.time() 9 | ret = func(self, *args, **kwargs) 10 | toc = time.time() 11 | txt = "[%s] toc-tic = %.8fs" % (func.__name__, toc - tic) 12 | if text_decor is not None: 13 | txt = text_decor(txt) 14 | if hasattr(self, "logger"): 15 | self.logger.info(txt) 16 | else: 17 | print(txt) 18 | return ret 19 | return time_func_wrapper 20 | 21 | 22 | def decorator_time_measure_colored(text_decor): 23 | return partial(decorator_time_measure, text_decor=text_decor) 24 | 25 | 26 | class TimeMeasure(object): 27 | def __init__(self, logger=None, name=None, color=None): 28 | self.logger = logger 29 | self.name = name 30 | self.color = color 31 | 32 | def __enter__(self, ): 33 | self.tic = time.time() 34 | 35 | def __exit__(self, type, value, traceback): 36 | self.toc = time.time() 37 | txt = "" if self.name is None else self.name 38 | txt += "toc-tic = %.8f" % (self.toc - self.tic) 39 | if self.color: 40 | txt = self.color(txt) 41 | if self.logger is not None: 42 | self.logger.info(txt) 43 | else: 44 | print(txt) 45 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | PyOpenGL 3 | future 4 | six 5 | colorama 6 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [build_ext] 2 | inplace=1 -------------------------------------------------------------------------------- /setup_cmake.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | from setuptools import find_packages 3 | 4 | 5 | setup(name='pydart2', 6 | version='0.3.10', 7 | description='Python Interface for DART Simulator', 8 | url='https://github.com/sehoonha/pydart2', 9 | author='Sehoon Ha', 10 | author_email='sehoon.ha@gmail.com', 11 | license='BSD', 12 | install_requires=[ 13 | 'numpy', 'PyOpenGL', 'PyOpenGL_accelerate' 14 | ], 15 | keywords=['physics', 'robotics', 'simulation'], 16 | classifiers=['Development Status :: 2 - Pre-Alpha', 17 | 'License :: OSI Approved :: BSD License', 18 | 'Operating System :: POSIX :: Linux', 19 | 'Programming Language :: Python :: 2 :: Only', 20 | 'Topic :: Games/Entertainment :: Simulation'], 21 | packages=find_packages()) 22 | 23 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sehoonha/pydart2/113132aceaa40bfd0c2e8c85179fb19b68cf9b8d/tests/__init__.py -------------------------------------------------------------------------------- /tests/config.py: -------------------------------------------------------------------------------- 1 | DATA_DIR = "./examples/data/" 2 | -------------------------------------------------------------------------------- /tests/test_basic.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import pydart2 as pydart 3 | from tests.config import DATA_DIR 4 | 5 | 6 | class TestBasic(unittest.TestCase): 7 | def setUp(self): 8 | pydart.init(verbose=False) 9 | 10 | def test_world_create(self): 11 | world = pydart.world.World(0.001) 12 | self.assertIsNotNone(world) 13 | self.assertEqual(world.id, 0) 14 | 15 | def test_world_from_skeleton(self, ): 16 | world = pydart.world.World( 17 | 0.001, 18 | DATA_DIR + "skel/cubes.skel" 19 | ) 20 | self.assertIsNotNone(world) 21 | self.assertEqual(world.id, 0) 22 | 23 | def test_cube_collisions(self, ): 24 | world = pydart.world.World( 25 | 0.001, 26 | DATA_DIR + "skel/cubes.skel" 27 | ) 28 | self.assertIsNotNone(world) 29 | self.assertEqual(world.id, 0) 30 | 31 | skel = world.skeletons[-1] 32 | while world.t < 3.0: 33 | world.step() 34 | # target = [7.94625426e-02, -3.25000010e-01, -9.22240587e-18] 35 | # self.assertAlmostEqual(skel.C[0], target[0]) 36 | # self.assertAlmostEqual(skel.C[1], target[1]) 37 | # self.assertAlmostEqual(skel.C[2], target[2]) 38 | self.assertLess(0.0, skel.C[0]) 39 | -------------------------------------------------------------------------------- /tests/test_skeleton.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import pydart2 as pydart 3 | from tests.config import DATA_DIR 4 | 5 | 6 | class TestSkeleton(unittest.TestCase): 7 | def setUp(self): 8 | pydart.init(verbose=False) 9 | 10 | def test_atlas_sdf(self): 11 | world = pydart.world.World(0.001) 12 | self.assertEqual(world.id, 0) 13 | 14 | skel = world.add_skeleton( 15 | DATA_DIR + "sdf/atlas/atlas_v3_no_head.sdf") 16 | self.assertEqual(len(skel.bodynodes), 28) 17 | self.assertEqual(len(skel.joints), 28) 18 | self.assertEqual(len(skel.dofs), 33) 19 | 20 | def test_atlas_urdf(self): 21 | world = pydart.world.World(0.001) 22 | self.assertEqual(world.id, 0) 23 | 24 | skel = world.add_skeleton( 25 | DATA_DIR + "sdf/atlas/atlas_v3_no_head.urdf") 26 | self.assertEqual(len(skel.bodynodes), 34) 27 | self.assertEqual(len(skel.joints), 34) 28 | self.assertEqual(len(skel.dofs), 33) 29 | 30 | def test_puppy_sdf(self): 31 | world = pydart.world.World(0.001) 32 | self.assertEqual(world.id, 0) 33 | 34 | skel = world.add_skeleton(DATA_DIR + "sdf/puppy.sdf") 35 | self.assertEqual(len(skel.bodynodes), 15) 36 | self.assertEqual(len(skel.joints), 15) 37 | self.assertEqual(len(skel.dofs), 20) 38 | --------------------------------------------------------------------------------