summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <erwin.coumans@gmail.com>2021-10-25 09:44:29 -0700
committerErwin Coumans <erwin.coumans@gmail.com>2021-10-25 09:44:29 -0700
commit1a670681f7d3c4bfed2211e0e98362888857044d (patch)
tree3baf0b59be5a8bcc9b8cf6da0b5cf17d2775f512
parente1ac14b23d631f114283cbd6f0ea9f13f5628180 (diff)
parent90e331a239aad1db5f0f38f7936afc9dc531bd97 (diff)
downloadbullet3-1a670681f7d3c4bfed2211e0e98362888857044d.tar.gz
Merge branch 'master' of github.com:erwincoumans/bullet3
-rw-r--r--Extras/CMakeLists.txt33
-rw-r--r--Extras/Serialize/BulletFileLoader/bFile.cpp3
-rw-r--r--Extras/Serialize/BulletFileLoader/btBulletFile.cpp1
-rw-r--r--Extras/Serialize/ReadBulletSample/main.cpp2
-rw-r--r--Extras/VHACD/inc/vhacdMutex.h2
-rw-r--r--Extras/obj2sdf/obj2sdf.cpp4
-rw-r--r--README.md35
-rw-r--r--VERSION2
-rw-r--r--build_visual_studio_vr_pybullet_double_cmake.bat2
-rw-r--r--data/cube_small.sdf2
-rw-r--r--data/gripper/wsg50_one_motor_gripper.sdf54
-rw-r--r--data/gripper/wsg50_one_motor_gripper_free_base.sdf58
-rw-r--r--data/gripper/wsg50_one_motor_gripper_new.sdf54
-rw-r--r--data/gripper/wsg50_one_motor_gripper_new_free_base.sdf58
-rw-r--r--data/gripper/wsg50_one_motor_gripper_no_finger.sdf42
-rw-r--r--data/gripper/wsg50_with_r2d2_gripper.sdf46
-rw-r--r--data/kitchens/1.sdf340
-rw-r--r--data/kuka_iiwa/kuka_with_gripper.sdf114
-rw-r--r--data/kuka_iiwa/kuka_with_gripper2.sdf120
-rw-r--r--data/kuka_iiwa/kuka_world.sdf64
-rw-r--r--data/kuka_iiwa/model.sdf66
-rw-r--r--data/kuka_iiwa/model2.sdf130
-rw-r--r--data/stadium.sdf6
-rw-r--r--data/threecubes/newsdf.sdf6
-rw-r--r--data/two_cubes.sdf22
-rw-r--r--examples/Benchmarks/BenchmarkDemo.cpp2
-rw-r--r--examples/Benchmarks/BenchmarkDemo.h2
-rw-r--r--examples/CommonInterfaces/CommonGUIHelperInterface.h2
-rw-r--r--examples/CommonInterfaces/CommonRenderInterface.h2
-rw-r--r--examples/Constraints/ConstraintDemo.cpp2
-rw-r--r--examples/Constraints/ConstraintDemo.h2
-rw-r--r--examples/ExampleBrowser/GL_ShapeDrawer.cpp2
-rw-r--r--examples/ExampleBrowser/GL_ShapeDrawer.h2
-rw-r--r--examples/ExampleBrowser/OpenGLGuiHelper.cpp8
-rw-r--r--examples/ExampleBrowser/OpenGLGuiHelper.h2
-rw-r--r--examples/ForkLift/ForkLiftDemo.cpp2
-rw-r--r--examples/ForkLift/ForkLiftDemo.h2
-rw-r--r--examples/FractureDemo/FractureDemo.cpp2
-rw-r--r--examples/FractureDemo/FractureDemo.h2
-rw-r--r--examples/HelloWorld/HelloWorld.cpp2
-rw-r--r--examples/Importers/ImportBsp/BspConverter.cpp2
-rw-r--r--examples/Importers/ImportBsp/BspConverter.h2
-rw-r--r--examples/Importers/ImportBsp/ImportBspExample.cpp2
-rw-r--r--examples/Importers/ImportBsp/ImportBspExample.h2
-rw-r--r--examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp4
-rw-r--r--examples/MultiBody/MultiBodyConstraintFeedback.cpp4
-rw-r--r--examples/MultiBody/MultiBodySoftContact.cpp2
-rw-r--r--examples/MultiBody/TestJointTorqueSetup.cpp4
-rw-r--r--examples/MultiBodyBaseline/MultiBodyBaseline.cpp4
-rw-r--r--examples/MultiBodyBaseline/MultiBodyBaseline.h2
-rw-r--r--examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp2
-rw-r--r--examples/MultiThreadedDemo/MultiThreadedDemo.cpp2
-rw-r--r--examples/MultiThreadedDemo/MultiThreadedDemo.h2
-rw-r--r--examples/OpenGLWindow/GLInstancingRenderer.cpp5
-rw-r--r--examples/OpenGLWindow/GLInstancingRenderer.h2
-rw-r--r--examples/OpenGLWindow/SimpleOpenGL2Renderer.h1
-rw-r--r--examples/Planar2D/Planar2D.cpp2
-rw-r--r--examples/Planar2D/Planar2D.h2
-rw-r--r--examples/Raycast/RaytestDemo.cpp2
-rw-r--r--examples/Raycast/RaytestDemo.h2
-rw-r--r--examples/RobotSimulator/CMakeLists.txt2
-rw-r--r--examples/RollingFrictionDemo/RollingFrictionDemo.cpp2
-rw-r--r--examples/RollingFrictionDemo/RollingFrictionDemo.h2
-rw-r--r--examples/SharedMemory/PhysicsClientC_API.cpp63
-rw-r--r--examples/SharedMemory/PhysicsClientC_API.h8
-rw-r--r--examples/SharedMemory/PhysicsClientSharedMemory.cpp6
-rw-r--r--examples/SharedMemory/PhysicsDirect.cpp8
-rw-r--r--examples/SharedMemory/PhysicsServerCommandProcessor.cpp246
-rw-r--r--examples/SharedMemory/PhysicsServerCommandProcessor.h2
-rw-r--r--examples/SharedMemory/PhysicsServerExample.cpp170
-rw-r--r--examples/SharedMemory/SharedMemoryCommands.h15
-rw-r--r--examples/SharedMemory/SharedMemoryPublic.h3
-rw-r--r--examples/SoftDemo/SoftDemo.cpp2
-rw-r--r--examples/SoftDemo/SoftDemo.h2
-rw-r--r--examples/TinyRenderer/TinyRenderer.cpp2
-rw-r--r--examples/TinyRenderer/main.cpp18
-rw-r--r--examples/Utils/b3BulletDefaultFileIO.h3
-rw-r--r--examples/Vehicles/Hinge2Vehicle.h2
-rw-r--r--examples/VoronoiFracture/VoronoiFractureDemo.cpp2
-rw-r--r--examples/VoronoiFracture/VoronoiFractureDemo.h2
-rw-r--r--examples/VoronoiFracture/btConvexConvexMprAlgorithm.cpp2
-rw-r--r--examples/VoronoiFracture/btConvexConvexMprAlgorithm.h2
-rw-r--r--examples/pybullet/examples/draw_frames.py370
-rw-r--r--examples/pybullet/examples/mimicJointConstraint.py8
-rw-r--r--examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper.sdf54
-rw-r--r--examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_free_base.sdf58
-rw-r--r--examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new.sdf54
-rw-r--r--examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new_free_base.sdf58
-rw-r--r--examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_no_finger.sdf42
-rw-r--r--examples/pybullet/gym/pybullet_data/gripper/wsg50_with_r2d2_gripper.sdf46
-rw-r--r--examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper.sdf114
-rw-r--r--examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper2.sdf120
-rw-r--r--examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_world.sdf64
-rw-r--r--examples/pybullet/gym/pybullet_data/kuka_iiwa/model.sdf66
-rw-r--r--examples/pybullet/gym/pybullet_data/kuka_iiwa/model2.sdf130
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/chassis_zup_lores.obj2525
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/hip_motor_lores.obj301
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/hip_motor_mirror_lores.obj268
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/laikago_toes_zup_lores.urdf598
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/lower_leg3_lores.obj334
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/upper_leg_left2_lores.obj437
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/upper_leg_left_lores.obj614
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror2_lores.obj551
-rw-r--r--examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror_lores.obj568
-rw-r--r--examples/pybullet/gym/pybullet_data/plane_stadium.sdf2
-rw-r--r--examples/pybullet/gym/pybullet_data/stadium.sdf6
-rw-r--r--examples/pybullet/gym/pybullet_data/stadium_no_collision.sdf6
-rw-r--r--examples/pybullet/gym/pybullet_data/toys/LICENSE (renamed from examples/pybullet/gym/pybullet_data/toys/LICENSE.txt)0
-rw-r--r--examples/pybullet/gym/pybullet_envs/examples/testEnv.py20
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/agents/baseline_controller/dummy_gait_generator.py1
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs/README.md1
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py2
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py13
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/alternating_legs_openloop.py1
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/fixed_steptime_wrapper_env.py1
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py6
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_run_policy.py148
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_train.py521
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py6
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py31
-rw-r--r--examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py7
-rw-r--r--examples/pybullet/gym/pybullet_envs/stable_baselines/enjoy.py84
-rw-r--r--examples/pybullet/gym/pybullet_envs/stable_baselines/train.py107
-rw-r--r--examples/pybullet/gym/pybullet_envs/stable_baselines/utils.py59
-rw-r--r--examples/pybullet/gym/pybullet_examples/sleeptest.py53
-rw-r--r--examples/pybullet/gym/pybullet_utils/bullet_client.py4
-rw-r--r--examples/pybullet/pybullet.c122
-rw-r--r--setup.py2
-rw-r--r--src/Bullet3Common/CMakeLists.txt4
-rw-r--r--src/Bullet3Common/b3AlignedObjectArray.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp2
-rw-r--r--src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h2
-rw-r--r--src/Bullet3Geometry/b3AabbUtil.h2
-rw-r--r--src/Bullet3Geometry/b3GeometryUtil.cpp2
-rw-r--r--src/Bullet3Geometry/b3GeometryUtil.h2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp2
-rw-r--r--src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btAxisSweep3.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btDbvt.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btDbvt.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btDispatcher.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btDispatcher.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp2
-rw-r--r--src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionObject.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionObject.h5
-rw-r--r--src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp8
-rw-r--r--src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btManifoldResult.cpp4
-rw-r--r--src/BulletCollision/CollisionDispatch/btManifoldResult.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h2
-rw-r--r--src/BulletCollision/CollisionDispatch/btUnionFind.cpp2
-rw-r--r--src/BulletCollision/CollisionDispatch/btUnionFind.h2
-rw-r--r--src/BulletCollision/CollisionShapes/btBox2dShape.cpp2
-rw-r--r--src/BulletCollision/CollisionShapes/btBox2dShape.h2
-rw-r--r--src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp2
-rw-r--r--src/BulletCollision/Gimpact/btGenericPoolAllocator.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btConvexCast.h4
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h12
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btPointCollector.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btConstraintSolver.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btContactConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btHingeConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btJacobianEntry.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h2
-rwxr-xr-xsrc/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp2
-rwxr-xr-xsrc/BulletDynamics/ConstraintSolver/btSliderConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSolverBody.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btSolverConstraint.h2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp2
-rw-r--r--src/BulletDynamics/ConstraintSolver/btTypedConstraint.h2
-rw-r--r--src/BulletDynamics/Dynamics/btActionInterface.h2
-rw-r--r--src/BulletDynamics/Dynamics/btDynamicsWorld.h2
-rw-r--r--src/BulletDynamics/Dynamics/btRigidBody.cpp2
-rw-r--r--src/BulletDynamics/Dynamics/btRigidBody.h2
-rw-r--r--src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp2
-rw-r--r--src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h2
-rw-r--r--src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp2
-rw-r--r--src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h2
-rw-r--r--src/BulletDynamics/Featherstone/btMultiBody.cpp11
-rw-r--r--src/BulletDynamics/Featherstone/btMultiBody.h18
-rw-r--r--src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp9
-rw-r--r--src/BulletDynamics/Vehicle/btRaycastVehicle.cpp2
-rw-r--r--src/BulletDynamics/Vehicle/btRaycastVehicle.h2
-rw-r--r--src/BulletDynamics/Vehicle/btWheelInfo.cpp2
-rw-r--r--src/BulletDynamics/Vehicle/btWheelInfo.h2
-rw-r--r--src/BulletSoftBody/btDefaultSoftBodySolver.cpp2
-rw-r--r--src/BulletSoftBody/btDefaultSoftBodySolver.h2
-rw-r--r--src/BulletSoftBody/btDeformableBodySolver.cpp9
-rw-r--r--src/BulletSoftBody/btDeformableContactConstraint.h4
-rw-r--r--src/BulletSoftBody/btSoftBody.cpp4
-rw-r--r--src/BulletSoftBody/btSoftBody.h2
-rw-r--r--src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp5
-rw-r--r--src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h2
-rw-r--r--src/BulletSoftBody/btSoftBodyData.h2
-rw-r--r--src/BulletSoftBody/btSoftBodyHelpers.cpp2
-rw-r--r--src/BulletSoftBody/btSoftBodyHelpers.h2
-rw-r--r--src/BulletSoftBody/btSoftBodyInternals.h20
-rw-r--r--src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp2
-rw-r--r--src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h2
-rw-r--r--src/BulletSoftBody/btSoftBodySolverVertexBuffer.h2
-rw-r--r--src/BulletSoftBody/btSoftBodySolvers.h2
-rw-r--r--src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp2
-rw-r--r--src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h2
-rw-r--r--src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp2
-rw-r--r--src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h2
-rw-r--r--src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp2
-rw-r--r--src/BulletSoftBody/btSoftRigidDynamicsWorld.h2
-rw-r--r--src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp2
-rw-r--r--src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h2
-rw-r--r--src/BulletSoftBody/btSparseSDF.h2
-rw-r--r--src/LinearMath/btAabbUtil2.h2
-rw-r--r--src/LinearMath/btAlignedAllocator.cpp9
-rw-r--r--src/LinearMath/btAlignedAllocator.h2
-rw-r--r--src/LinearMath/btAlignedObjectArray.h4
-rw-r--r--src/LinearMath/btGeometryUtil.cpp2
-rw-r--r--src/LinearMath/btGeometryUtil.h2
-rw-r--r--src/LinearMath/btIDebugDraw.h6
-rw-r--r--src/LinearMath/btList.h2
-rw-r--r--src/LinearMath/btMatrix3x3.h2
-rw-r--r--src/LinearMath/btMinMax.h2
-rw-r--r--src/LinearMath/btMotionState.h2
-rw-r--r--src/LinearMath/btPoolAllocator.h2
-rw-r--r--src/LinearMath/btQuadWord.h2
-rw-r--r--src/LinearMath/btQuaternion.h2
-rw-r--r--src/LinearMath/btRandom.h2
-rw-r--r--src/LinearMath/btScalar.h2
-rw-r--r--src/LinearMath/btSerializer.h4
-rw-r--r--src/LinearMath/btStackAlloc.h2
-rw-r--r--src/LinearMath/btTransform.h2
-rw-r--r--src/LinearMath/btTransformUtil.h2
-rw-r--r--src/LinearMath/btVector3.cpp2
-rw-r--r--src/LinearMath/btVector3.h2
-rw-r--r--src/btBulletCollisionCommon.h2
-rw-r--r--src/btBulletDynamicsCommon.h2
338 files changed, 9460 insertions, 1563 deletions
diff --git a/Extras/CMakeLists.txt b/Extras/CMakeLists.txt
index fc0d22604..58a161a45 100644
--- a/Extras/CMakeLists.txt
+++ b/Extras/CMakeLists.txt
@@ -1,5 +1,36 @@
-SUBDIRS( InverseDynamics BulletRoboticsGUI BulletRobotics obj2sdf Serialize ConvexDecomposition HACD GIMPACTUtils )
+OPTION(BUILD_INVERSE_DYNAMIC_EXTRA "Build InverseDynamic extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_BULLET_ROBOTICS_GUI_EXTRA "Build BulletRoboticsGUI extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_BULLET_ROBOTICS_EXTRA "Build BulletRobotics extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_OBJ2SDF_EXTRA "Build obj2sdf extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_SERIALIZE_EXTRA "Build Serialize extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_CONVEX_DECOMPOSITION_EXTRA "Build ConvexDecomposition extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_HACD_EXTRA "Build HACD extra module, only applied when BUILD_EXTRAS is ON" ON)
+OPTION(BUILD_GIMPACTUTILS_EXTRA "Build GIMPACTUtils extra module, only applied when BUILD_EXTRAS is ON" ON)
+IF(BUILD_INVERSE_DYNAMIC_EXTRA)
+ SUBDIRS( InverseDynamics )
+ENDIF()
+IF(BUILD_BULLET_ROBOTICS_GUI_EXTRA)
+ SUBDIRS( BulletRoboticsGUI )
+ENDIF()
+IF(BUILD_BULLET_ROBOTICS_EXTRA)
+ SUBDIRS( BulletRobotics )
+ENDIF()
+IF(BUILD_OBJ2SDF_EXTRA)
+ SUBDIRS( obj2sdf )
+ENDIF()
+IF(BUILD_SERIALIZE_EXTRA)
+ SUBDIRS( Serialize )
+ENDIF()
+IF(BUILD_CONVEX_DECOMPOSITION_EXTRA)
+ SUBDIRS( ConvexDecomposition )
+ENDIF()
+IF(BUILD_HACD_EXTRA)
+ SUBDIRS( HACD )
+ENDIF()
+IF(BUILD_GIMPACTUTILS_EXTRA)
+ SUBDIRS( GIMPACTUtils )
+ENDIF()
#Maya Dynamica plugin is moved to http://dynamica.googlecode.com
diff --git a/Extras/Serialize/BulletFileLoader/bFile.cpp b/Extras/Serialize/BulletFileLoader/bFile.cpp
index 5c8f54fe3..5f19dd576 100644
--- a/Extras/Serialize/BulletFileLoader/bFile.cpp
+++ b/Extras/Serialize/BulletFileLoader/bFile.cpp
@@ -75,6 +75,7 @@ bFile::bFile(const char *filename, const char headerString[7])
fseek(fp, 0L, SEEK_SET);
mFileBuffer = (char *)malloc(mFileLen + 1);
+ memset(mFileBuffer, 0, mFileLen+1);
size_t bytesRead;
bytesRead = fread(mFileBuffer, mFileLen, 1, fp);
@@ -736,7 +737,7 @@ void bFile::parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bo
if (new_dna == -1) return;
//disable this, because we need to fixup pointers/ListBase
- if (0) //mFileDNA->flagEqual(old_dna))
+ if (/* DISABLES CODE */ (0)) //mFileDNA->flagEqual(old_dna))
{
short *strc = mFileDNA->getStruct(old_dna);
int len = mFileDNA->getLength(strc[0]);
diff --git a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp
index 1f855f41f..74f27c4a5 100644
--- a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp
+++ b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp
@@ -333,6 +333,7 @@ void btBulletFile::parse(int verboseMode)
if (m_DnaCopy)
delete m_DnaCopy;
m_DnaCopy = (char*)btAlignedAlloc(sBulletDNAlen64, 16);
+ memset(m_DnaCopy, 0, sBulletDNAlen64);
memcpy(m_DnaCopy, sBulletDNAstr64, sBulletDNAlen64);
parseInternal(verboseMode, m_DnaCopy, sBulletDNAlen64);
}
diff --git a/Extras/Serialize/ReadBulletSample/main.cpp b/Extras/Serialize/ReadBulletSample/main.cpp
index 1513c6e55..42ed89e9c 100644
--- a/Extras/Serialize/ReadBulletSample/main.cpp
+++ b/Extras/Serialize/ReadBulletSample/main.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2011 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2011 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/Extras/VHACD/inc/vhacdMutex.h b/Extras/VHACD/inc/vhacdMutex.h
index 4d1ad2a7d..78c111383 100644
--- a/Extras/VHACD/inc/vhacdMutex.h
+++ b/Extras/VHACD/inc/vhacdMutex.h
@@ -69,7 +69,7 @@
#include <pthread.h>
#endif
-#if defined(__APPLE__)
+#if defined(__APPLE__) || !defined(__GLIBC__)
#define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE
#endif
diff --git a/Extras/obj2sdf/obj2sdf.cpp b/Extras/obj2sdf/obj2sdf.cpp
index 2f9d9da6f..a59cd68f5 100644
--- a/Extras/obj2sdf/obj2sdf.cpp
+++ b/Extras/obj2sdf/obj2sdf.cpp
@@ -271,7 +271,7 @@ int main(int argc, char* argv[])
fprintf(sdfFile,
"\t\t<model name='%s'>\n"
"\t\t\t<static>1</static>\n"
- "\t\t\t<pose frame=''>0 0 0 0 0 0</pose>\n"
+ "\t\t\t<pose >0 0 0 0 0 0</pose>\n"
"\t\t\t<link name='link_d%d'>\n"
"\t\t\t<inertial>\n"
"\t\t\t<mass>0</mass>\n"
@@ -411,7 +411,7 @@ int main(int argc, char* argv[])
fprintf(sdfFile,
"\t\t<model name='%s'>\n"
"\t\t\t<static>1</static>\n"
- "\t\t\t<pose frame=''>0 0 0 0 0 0</pose>\n"
+ "\t\t\t<pose>0 0 0 0 0 0</pose>\n"
"\t\t\t<link name='link_d%d'>\n"
"\t\t\t<inertial>\n"
"\t\t\t<mass>0</mass>\n"
diff --git a/README.md b/README.md
index e0fb2af97..44f222a6e 100644
--- a/README.md
+++ b/README.md
@@ -7,8 +7,11 @@ This is the official C++ source code repository of the Bullet Physics SDK: real-
![PyBullet](https://pybullet.org/wordpress/wp-content/uploads/2019/03/cropped-pybullet.png)
+## Issues ##
+The Issue tracker was flooded with support questions and is closed until it is cleaned up. Use the [PyBullet forums](http://pybullet.org) to discuss with others.
+
## PyBullet ##
-New in Bullet 2.85: pybullet Python bindings, improved support for robotics and VR. Use pip install pybullet and checkout the [PyBullet Quickstart Guide](https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/edit#heading=h.2ye70wns7io3).
+It is highly recommended to use PyBullet Python bindings for improved support for robotics, reinforcement learning and VR. Use pip install pybullet and checkout the [PyBullet Quickstart Guide](https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/edit#heading=h.2ye70wns7io3).
Installation is simple:
```
@@ -21,11 +24,11 @@ python3 -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_ar
If you use PyBullet in your research, please cite it like this:
```
-@MISC{coumans2019,
+@MISC{coumans2021,
author = {Erwin Coumans and Yunfei Bai},
title = {PyBullet, a Python module for physics simulation for games, robotics and machine learning},
howpublished = {\url{http://pybullet.org}},
-year = {2016--2019}
+year = {2016--2021}
}
```
@@ -63,7 +66,7 @@ You can download and install Bullet using the [vcpkg](https://github.com/Microso
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
- vcpkg install bullet3
+ ./vcpkg install bullet3
The Bullet port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
@@ -91,9 +94,9 @@ p.connect(p.SHARED_MEMORY) #or (p.TCP, "localhost", 6667) or (p.UDP, "192.168.86
Make sure cmake is installed (sudo apt-get install cmake, brew install cmake, or https://cmake.org)
In a terminal type:
-
- ./build_cmake_pybullet_double.sh
-
+```
+./build_cmake_pybullet_double.sh
+```
This script will invoke cmake and build in the build_cmake directory. You can find pybullet in Bullet/examples/pybullet.
The BulletExampleBrowser binary will be in Bullet/examples/ExampleBrowser.
@@ -101,15 +104,15 @@ You can also build Bullet using premake. There are premake executables in the bu
Depending on your system (Linux 32bit, 64bit or Mac OSX) use one of the following lines
Using premake:
```
- cd build3
- ./premake4_linux --double gmake
- ./premake4_linux64 --double gmake
- ./premake4_osx --double --enable_pybullet gmake
+cd build3
+./premake4_linux --double gmake
+./premake4_linux64 --double gmake
+./premake4_osx --double --enable_pybullet gmake
```
Then
```
- cd gmake
- make
+cd gmake
+make
```
Note that on Linux, you need to use cmake to build pybullet, since the compiler has issues of mixing shared and static libraries.
@@ -117,9 +120,9 @@ Note that on Linux, you need to use cmake to build pybullet, since the compiler
**Mac OSX Xcode**
Click on build3/xcode4.command or in a terminal window execute
-
- ./premake_osx xcode4
-
+```
+./premake_osx xcode4
+```
## Usage
The App_ExampleBrowser executables will be located in the bin folder.
diff --git a/VERSION b/VERSION
index 6fe94f3c6..b95829267 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.08
+3.20
diff --git a/build_visual_studio_vr_pybullet_double_cmake.bat b/build_visual_studio_vr_pybullet_double_cmake.bat
index 32cd01735..aaa1f9cc1 100644
--- a/build_visual_studio_vr_pybullet_double_cmake.bat
+++ b/build_visual_studio_vr_pybullet_double_cmake.bat
@@ -1,4 +1,4 @@
mkdir build_cmake
cd build_cmake
-cmake -DBUILD_PYBULLET=ON -DUSE_DOUBLE_PRECISION=ON -DCMAKE_BUILD_TYPE=Release -DPYTHON_INCLUDE_DIR=c:\python-3.5.3.amd64\include -DPYTHON_LIBRARY=c:\python-3.5.3.amd64\libs\python35.lib -DPYTHON_DEBUG_LIBRARY=c:\python-3.5.3.amd64\libs\python35_d.lib -G "Visual Studio 16 2019" ..
+cmake -DBUILD_PYBULLET=ON -DUSE_DOUBLE_PRECISION=ON -DCMAKE_BUILD_TYPE=Release -DPYTHON_INCLUDE_DIR=c:\python38\include -DPYTHON_LIBRARY=c:\python38\libs\python38.lib -DPYTHON_DEBUG_LIBRARY=c:\python38\libs\python38.lib -G "Visual Studio 16 2019" ..
start . \ No newline at end of file
diff --git a/data/cube_small.sdf b/data/cube_small.sdf
index 828b74df1..ee3cd8789 100644
--- a/data/cube_small.sdf
+++ b/data/cube_small.sdf
@@ -1,7 +1,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='unit_box_0'>
- <pose frame=''>0 0 0.107 0 0 0</pose>
+ <pose>0 0 0.107 0 0 0</pose>
<link name='unit_box_0::link'>
<inertial>
<mass>0.1</mass>
diff --git a/data/gripper/wsg50_one_motor_gripper.sdf b/data/gripper/wsg50_one_motor_gripper.sdf
index 1f19f174a..51d2e9abd 100644
--- a/data/gripper/wsg50_one_motor_gripper.sdf
+++ b/data/gripper/wsg50_one_motor_gripper.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.26 3.14 0 0</pose>
+ <pose>0 0 0.26 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -43,7 +43,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,9 +58,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -72,7 +72,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -102,9 +102,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -116,7 +116,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -147,9 +147,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -161,7 +161,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -192,9 +192,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -207,7 +207,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -216,7 +216,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -249,9 +249,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -264,7 +264,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -273,7 +273,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -305,7 +305,7 @@
</joint>
<link name='finger_right'>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -319,7 +319,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -329,7 +329,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -345,7 +345,7 @@
</joint>
<link name='finger_left'>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -359,7 +359,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -369,7 +369,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/gripper/wsg50_one_motor_gripper_free_base.sdf b/data/gripper/wsg50_one_motor_gripper_free_base.sdf
index 552c36d28..66dfb1a9d 100644
--- a/data/gripper/wsg50_one_motor_gripper_free_base.sdf
+++ b/data/gripper/wsg50_one_motor_gripper_free_base.sdf
@@ -3,11 +3,11 @@
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 -2.3 2.1 0 0 0</pose>
+ <pose>0 -2.3 2.1 0 0 0</pose>
<link name='world'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>1</ixx>
@@ -26,9 +26,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -41,7 +41,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -56,9 +56,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -70,7 +70,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -100,9 +100,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -114,7 +114,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -145,9 +145,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -159,7 +159,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -190,9 +190,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -205,7 +205,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -214,7 +214,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -247,9 +247,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -262,7 +262,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -271,7 +271,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -307,7 +307,7 @@
<lateral_friction value="1.0"/>
<spinning_friction value="1.5"/>
</contact>
- <pose frame=''>0.042 0 0.145 0 0 1.5708</pose>
+ <pose>0.042 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -321,7 +321,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -331,7 +331,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -351,7 +351,7 @@
<lateral_friction value="1.0"/>
<spinning_friction value="1.5"/>
</contact>
- <pose frame=''>-0.042 0 0.145 0 0 4.71239</pose>
+ <pose>-0.042 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -365,7 +365,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -375,7 +375,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/gripper/wsg50_one_motor_gripper_new.sdf b/data/gripper/wsg50_one_motor_gripper_new.sdf
index 54f469fe0..09e43dc22 100644
--- a/data/gripper/wsg50_one_motor_gripper_new.sdf
+++ b/data/gripper/wsg50_one_motor_gripper_new.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.7 3.14 0 0</pose>
+ <pose>0 0 0.7 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -43,7 +43,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,9 +58,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -72,7 +72,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -102,9 +102,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -116,7 +116,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -147,9 +147,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -161,7 +161,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -192,9 +192,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -207,7 +207,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -216,7 +216,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -248,9 +248,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -263,7 +263,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -272,7 +272,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -307,7 +307,7 @@
<spinning_friction>.3</spinning_friction>
<rolling_friction>0.04</rolling_friction>
</contact>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -321,7 +321,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -331,7 +331,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -351,7 +351,7 @@
<spinning_friction>.3</spinning_friction>
<rolling_friction>0.04</rolling_friction>
</contact>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -365,7 +365,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -375,7 +375,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/gripper/wsg50_one_motor_gripper_new_free_base.sdf b/data/gripper/wsg50_one_motor_gripper_new_free_base.sdf
index 0358f7a6a..e33b9ed8f 100644
--- a/data/gripper/wsg50_one_motor_gripper_new_free_base.sdf
+++ b/data/gripper/wsg50_one_motor_gripper_new_free_base.sdf
@@ -2,11 +2,11 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>1.4 -0.2 2.1 0 0 0</pose>
+ <pose>1.4 -0.2 2.1 0 0 0</pose>
<link name='world'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>1</ixx>
@@ -25,9 +25,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -40,7 +40,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -55,9 +55,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -69,7 +69,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -99,9 +99,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -113,7 +113,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -144,9 +144,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -158,7 +158,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -189,9 +189,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -204,7 +204,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -213,7 +213,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -245,9 +245,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -260,7 +260,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -269,7 +269,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -304,7 +304,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -318,7 +318,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -328,7 +328,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -348,7 +348,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -362,7 +362,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -372,7 +372,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/gripper/wsg50_one_motor_gripper_no_finger.sdf b/data/gripper/wsg50_one_motor_gripper_no_finger.sdf
index 878b1ee14..16847c72c 100644
--- a/data/gripper/wsg50_one_motor_gripper_no_finger.sdf
+++ b/data/gripper/wsg50_one_motor_gripper_no_finger.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.4 3.14 0 0</pose>
+ <pose>0 0 0.4 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -43,7 +43,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,9 +58,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -72,7 +72,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -102,9 +102,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -116,7 +116,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -147,9 +147,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -161,7 +161,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -192,9 +192,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -207,7 +207,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -216,7 +216,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -248,9 +248,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 0</pose>
+ <pose>0.055 0 0.06 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -263,7 +263,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 3.14159</pose>
+ <pose>0 0 -0.06 0 0 3.14159</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -272,7 +272,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 3.14159</pose>
+ <pose>0 0 -0.037 0 0 3.14159</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
diff --git a/data/gripper/wsg50_with_r2d2_gripper.sdf b/data/gripper/wsg50_with_r2d2_gripper.sdf
index d67959f19..b487816a6 100644
--- a/data/gripper/wsg50_with_r2d2_gripper.sdf
+++ b/data/gripper/wsg50_with_r2d2_gripper.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.27 3.14 0 0</pose>
+ <pose>0 0 0.27 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -42,7 +42,7 @@
</inertia>
</inertial>
<collision name='base_link_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<box>
<size>0.2 0.05 0.05 </size>
@@ -50,7 +50,7 @@
</geometry>
</collision>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -67,9 +67,9 @@
</link>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0 0 -0 0</pose>
+ <pose>-0.055 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -82,7 +82,7 @@
</inertial>
<collision name='gripper_left_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -91,7 +91,7 @@
</geometry>
</collision>
<collision name='gripper_left_fixed_joint_lump__finger_left_collision_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -101,7 +101,7 @@
</collision>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -110,7 +110,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -141,9 +141,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0 0 -0 3.14159</pose>
+ <pose>0.055 0 0 0 -0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -156,7 +156,7 @@
</inertial>
<collision name='gripper_right_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -165,7 +165,7 @@
</geometry>
</collision>
<collision name='gripper_right_fixed_joint_lump__finger_right_collision_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -175,7 +175,7 @@
</collision>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -184,7 +184,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -219,7 +219,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -233,7 +233,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -243,7 +243,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -263,7 +263,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -277,7 +277,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -287,7 +287,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/kitchens/1.sdf b/data/kitchens/1.sdf
index 572cf7234..9e068b917 100644
--- a/data/kitchens/1.sdf
+++ b/data/kitchens/1.sdf
@@ -3,7 +3,7 @@
<gravity>0 0 -9.8</gravity>
<model name='part0.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d0'>
<inertial>
<mass>0</mass>
@@ -42,7 +42,7 @@
</model>
<model name='part1.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d1'>
<inertial>
<mass>0</mass>
@@ -81,7 +81,7 @@
</model>
<model name='part2.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d2'>
<inertial>
<mass>0</mass>
@@ -120,7 +120,7 @@
</model>
<model name='part3.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d3'>
<inertial>
<mass>0</mass>
@@ -159,7 +159,7 @@
</model>
<model name='part4.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d4'>
<inertial>
<mass>0</mass>
@@ -198,7 +198,7 @@
</model>
<model name='part5.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d5'>
<inertial>
<mass>0</mass>
@@ -237,7 +237,7 @@
</model>
<model name='part6.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d6'>
<inertial>
<mass>0</mass>
@@ -276,7 +276,7 @@
</model>
<model name='part7.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d7'>
<inertial>
<mass>0</mass>
@@ -315,7 +315,7 @@
</model>
<model name='part8.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d8'>
<inertial>
<mass>0</mass>
@@ -354,7 +354,7 @@
</model>
<model name='part9.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d9'>
<inertial>
<mass>0</mass>
@@ -393,7 +393,7 @@
</model>
<model name='part10.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d10'>
<inertial>
<mass>0</mass>
@@ -432,7 +432,7 @@
</model>
<model name='part11.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d11'>
<inertial>
<mass>0</mass>
@@ -471,7 +471,7 @@
</model>
<model name='part12.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d12'>
<inertial>
<mass>0</mass>
@@ -510,7 +510,7 @@
</model>
<model name='part13.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d13'>
<inertial>
<mass>0</mass>
@@ -549,7 +549,7 @@
</model>
<model name='part14.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d14'>
<inertial>
<mass>0</mass>
@@ -588,7 +588,7 @@
</model>
<model name='part15.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d15'>
<inertial>
<mass>0</mass>
@@ -627,7 +627,7 @@
</model>
<model name='part16.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d16'>
<inertial>
<mass>0</mass>
@@ -666,7 +666,7 @@
</model>
<model name='part17.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d17'>
<inertial>
<mass>0</mass>
@@ -705,7 +705,7 @@
</model>
<model name='part18.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d18'>
<inertial>
<mass>0</mass>
@@ -744,7 +744,7 @@
</model>
<model name='part19.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d19'>
<inertial>
<mass>0</mass>
@@ -783,7 +783,7 @@
</model>
<model name='part20.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d20'>
<inertial>
<mass>0</mass>
@@ -822,7 +822,7 @@
</model>
<model name='part21.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d21'>
<inertial>
<mass>0</mass>
@@ -861,7 +861,7 @@
</model>
<model name='part22.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d22'>
<inertial>
<mass>0</mass>
@@ -900,7 +900,7 @@
</model>
<model name='part23.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d23'>
<inertial>
<mass>0</mass>
@@ -939,7 +939,7 @@
</model>
<model name='part24.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d24'>
<inertial>
<mass>0</mass>
@@ -978,7 +978,7 @@
</model>
<model name='part25.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d25'>
<inertial>
<mass>0</mass>
@@ -1017,7 +1017,7 @@
</model>
<model name='part26.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d26'>
<inertial>
<mass>0</mass>
@@ -1056,7 +1056,7 @@
</model>
<model name='part27.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d27'>
<inertial>
<mass>0</mass>
@@ -1095,7 +1095,7 @@
</model>
<model name='part28.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d28'>
<inertial>
<mass>0</mass>
@@ -1134,7 +1134,7 @@
</model>
<model name='part29.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d29'>
<inertial>
<mass>0</mass>
@@ -1173,7 +1173,7 @@
</model>
<model name='part30.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d30'>
<inertial>
<mass>0</mass>
@@ -1212,7 +1212,7 @@
</model>
<model name='part31.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d31'>
<inertial>
<mass>0</mass>
@@ -1251,7 +1251,7 @@
</model>
<model name='part32.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d32'>
<inertial>
<mass>0</mass>
@@ -1290,7 +1290,7 @@
</model>
<model name='part33.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d33'>
<inertial>
<mass>0</mass>
@@ -1329,7 +1329,7 @@
</model>
<model name='part34.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d34'>
<inertial>
<mass>0</mass>
@@ -1368,7 +1368,7 @@
</model>
<model name='part35.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d35'>
<inertial>
<mass>0</mass>
@@ -1407,7 +1407,7 @@
</model>
<model name='part36.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d36'>
<inertial>
<mass>0</mass>
@@ -1446,7 +1446,7 @@
</model>
<model name='part37.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d37'>
<inertial>
<mass>0</mass>
@@ -1485,7 +1485,7 @@
</model>
<model name='part38.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d38'>
<inertial>
<mass>0</mass>
@@ -1524,7 +1524,7 @@
</model>
<model name='part39.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d39'>
<inertial>
<mass>0</mass>
@@ -1563,7 +1563,7 @@
</model>
<model name='part40.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d40'>
<inertial>
<mass>0</mass>
@@ -1602,7 +1602,7 @@
</model>
<model name='part41.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d41'>
<inertial>
<mass>0</mass>
@@ -1641,7 +1641,7 @@
</model>
<model name='part42.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d42'>
<inertial>
<mass>0</mass>
@@ -1680,7 +1680,7 @@
</model>
<model name='part43.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d43'>
<inertial>
<mass>0</mass>
@@ -1719,7 +1719,7 @@
</model>
<model name='part44.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d44'>
<inertial>
<mass>0</mass>
@@ -1758,7 +1758,7 @@
</model>
<model name='part45.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d45'>
<inertial>
<mass>0</mass>
@@ -1797,7 +1797,7 @@
</model>
<model name='part46.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d46'>
<inertial>
<mass>0</mass>
@@ -1836,7 +1836,7 @@
</model>
<model name='part47.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d47'>
<inertial>
<mass>0</mass>
@@ -1875,7 +1875,7 @@
</model>
<model name='part48.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d48'>
<inertial>
<mass>0</mass>
@@ -1914,7 +1914,7 @@
</model>
<model name='part49.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d49'>
<inertial>
<mass>0</mass>
@@ -1953,7 +1953,7 @@
</model>
<model name='part50.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d50'>
<inertial>
<mass>0</mass>
@@ -1992,7 +1992,7 @@
</model>
<model name='part51.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d51'>
<inertial>
<mass>0</mass>
@@ -2031,7 +2031,7 @@
</model>
<model name='part52.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d52'>
<inertial>
<mass>0</mass>
@@ -2070,7 +2070,7 @@
</model>
<model name='part53.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d53'>
<inertial>
<mass>0</mass>
@@ -2109,7 +2109,7 @@
</model>
<model name='part54.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d54'>
<inertial>
<mass>0</mass>
@@ -2148,7 +2148,7 @@
</model>
<model name='part55.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d55'>
<inertial>
<mass>0</mass>
@@ -2187,7 +2187,7 @@
</model>
<model name='part56.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d56'>
<inertial>
<mass>0</mass>
@@ -2226,7 +2226,7 @@
</model>
<model name='part57.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d57'>
<inertial>
<mass>0</mass>
@@ -2265,7 +2265,7 @@
</model>
<model name='part58.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d58'>
<inertial>
<mass>0</mass>
@@ -2304,7 +2304,7 @@
</model>
<model name='part59.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d59'>
<inertial>
<mass>0</mass>
@@ -2343,7 +2343,7 @@
</model>
<model name='part60.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d60'>
<inertial>
<mass>0</mass>
@@ -2382,7 +2382,7 @@
</model>
<model name='part61.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d61'>
<inertial>
<mass>0</mass>
@@ -2421,7 +2421,7 @@
</model>
<model name='part62.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d62'>
<inertial>
<mass>0</mass>
@@ -2460,7 +2460,7 @@
</model>
<model name='part63.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d63'>
<inertial>
<mass>0</mass>
@@ -2499,7 +2499,7 @@
</model>
<model name='part64.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d64'>
<inertial>
<mass>0</mass>
@@ -2538,7 +2538,7 @@
</model>
<model name='part65.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d65'>
<inertial>
<mass>0</mass>
@@ -2577,7 +2577,7 @@
</model>
<model name='part66.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d66'>
<inertial>
<mass>0</mass>
@@ -2616,7 +2616,7 @@
</model>
<model name='part67.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d67'>
<inertial>
<mass>0</mass>
@@ -2655,7 +2655,7 @@
</model>
<model name='part68.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d68'>
<inertial>
<mass>0</mass>
@@ -2694,7 +2694,7 @@
</model>
<model name='part69.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d69'>
<inertial>
<mass>0</mass>
@@ -2733,7 +2733,7 @@
</model>
<model name='part70.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d70'>
<inertial>
<mass>0</mass>
@@ -2772,7 +2772,7 @@
</model>
<model name='part71.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d71'>
<inertial>
<mass>0</mass>
@@ -2811,7 +2811,7 @@
</model>
<model name='part72.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d72'>
<inertial>
<mass>0</mass>
@@ -2850,7 +2850,7 @@
</model>
<model name='part73.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d73'>
<inertial>
<mass>0</mass>
@@ -2889,7 +2889,7 @@
</model>
<model name='part74.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d74'>
<inertial>
<mass>0</mass>
@@ -2928,7 +2928,7 @@
</model>
<model name='part75.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d75'>
<inertial>
<mass>0</mass>
@@ -2967,7 +2967,7 @@
</model>
<model name='part76.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d76'>
<inertial>
<mass>0</mass>
@@ -3006,7 +3006,7 @@
</model>
<model name='part77.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d77'>
<inertial>
<mass>0</mass>
@@ -3045,7 +3045,7 @@
</model>
<model name='part78.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d78'>
<inertial>
<mass>0</mass>
@@ -3084,7 +3084,7 @@
</model>
<model name='part79.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d79'>
<inertial>
<mass>0</mass>
@@ -3123,7 +3123,7 @@
</model>
<model name='part80.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d80'>
<inertial>
<mass>0</mass>
@@ -3162,7 +3162,7 @@
</model>
<model name='part81.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d81'>
<inertial>
<mass>0</mass>
@@ -3201,7 +3201,7 @@
</model>
<model name='part82.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d82'>
<inertial>
<mass>0</mass>
@@ -3240,7 +3240,7 @@
</model>
<model name='part83.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d83'>
<inertial>
<mass>0</mass>
@@ -3279,7 +3279,7 @@
</model>
<model name='part84.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d84'>
<inertial>
<mass>0</mass>
@@ -3318,7 +3318,7 @@
</model>
<model name='part85.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d85'>
<inertial>
<mass>0</mass>
@@ -3357,7 +3357,7 @@
</model>
<model name='part86.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d86'>
<inertial>
<mass>0</mass>
@@ -3396,7 +3396,7 @@
</model>
<model name='part87.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d87'>
<inertial>
<mass>0</mass>
@@ -3435,7 +3435,7 @@
</model>
<model name='part88.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d88'>
<inertial>
<mass>0</mass>
@@ -3474,7 +3474,7 @@
</model>
<model name='part89.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d89'>
<inertial>
<mass>0</mass>
@@ -3513,7 +3513,7 @@
</model>
<model name='part90.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d90'>
<inertial>
<mass>0</mass>
@@ -3552,7 +3552,7 @@
</model>
<model name='part91.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d91'>
<inertial>
<mass>0</mass>
@@ -3591,7 +3591,7 @@
</model>
<model name='part92.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d92'>
<inertial>
<mass>0</mass>
@@ -3630,7 +3630,7 @@
</model>
<model name='part93.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d93'>
<inertial>
<mass>0</mass>
@@ -3669,7 +3669,7 @@
</model>
<model name='part94.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d94'>
<inertial>
<mass>0</mass>
@@ -3708,7 +3708,7 @@
</model>
<model name='part95.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d95'>
<inertial>
<mass>0</mass>
@@ -3747,7 +3747,7 @@
</model>
<model name='part96.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d96'>
<inertial>
<mass>0</mass>
@@ -3786,7 +3786,7 @@
</model>
<model name='part97.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d97'>
<inertial>
<mass>0</mass>
@@ -3825,7 +3825,7 @@
</model>
<model name='part98.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d98'>
<inertial>
<mass>0</mass>
@@ -3864,7 +3864,7 @@
</model>
<model name='part99.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d99'>
<inertial>
<mass>0</mass>
@@ -3903,7 +3903,7 @@
</model>
<model name='part100.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d100'>
<inertial>
<mass>0</mass>
@@ -3942,7 +3942,7 @@
</model>
<model name='part101.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d101'>
<inertial>
<mass>0</mass>
@@ -3981,7 +3981,7 @@
</model>
<model name='part102.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d102'>
<inertial>
<mass>0</mass>
@@ -4020,7 +4020,7 @@
</model>
<model name='part103.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d103'>
<inertial>
<mass>0</mass>
@@ -4059,7 +4059,7 @@
</model>
<model name='part104.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d104'>
<inertial>
<mass>0</mass>
@@ -4098,7 +4098,7 @@
</model>
<model name='part105.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d105'>
<inertial>
<mass>0</mass>
@@ -4138,7 +4138,7 @@
<model name='part109.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d109'>
<inertial>
<mass>0</mass>
@@ -4178,7 +4178,7 @@
<model name='part111.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d111'>
<inertial>
<mass>0</mass>
@@ -4217,7 +4217,7 @@
</model>
<model name='part112.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d112'>
<inertial>
<mass>0</mass>
@@ -4256,7 +4256,7 @@
</model>
<model name='part113.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d113'>
<inertial>
<mass>0</mass>
@@ -4295,7 +4295,7 @@
</model>
<model name='part114.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d114'>
<inertial>
<mass>0</mass>
@@ -4334,7 +4334,7 @@
</model>
<model name='part115.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d115'>
<inertial>
<mass>0</mass>
@@ -4373,7 +4373,7 @@
</model>
<model name='part116.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d116'>
<inertial>
<mass>0</mass>
@@ -4412,7 +4412,7 @@
</model>
<model name='part117.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d117'>
<inertial>
<mass>0</mass>
@@ -4451,7 +4451,7 @@
</model>
<model name='part118.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d118'>
<inertial>
<mass>0</mass>
@@ -4490,7 +4490,7 @@
</model>
<model name='part119.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d119'>
<inertial>
<mass>0</mass>
@@ -4529,7 +4529,7 @@
</model>
<model name='part120.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d120'>
<inertial>
<mass>0</mass>
@@ -4568,7 +4568,7 @@
</model>
<model name='part121.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d121'>
<inertial>
<mass>0</mass>
@@ -4607,7 +4607,7 @@
</model>
<model name='part122.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d122'>
<inertial>
<mass>0</mass>
@@ -4646,7 +4646,7 @@
</model>
<model name='part123.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d123'>
<inertial>
<mass>0</mass>
@@ -4685,7 +4685,7 @@
</model>
<model name='part124.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d124'>
<inertial>
<mass>0</mass>
@@ -4724,7 +4724,7 @@
</model>
<model name='part125.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d125'>
<inertial>
<mass>0</mass>
@@ -4763,7 +4763,7 @@
</model>
<model name='part126.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d126'>
<inertial>
<mass>0</mass>
@@ -4802,7 +4802,7 @@
</model>
<model name='part127.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d127'>
<inertial>
<mass>0</mass>
@@ -4841,7 +4841,7 @@
</model>
<model name='part128.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d128'>
<inertial>
<mass>0</mass>
@@ -4880,7 +4880,7 @@
</model>
<model name='part129.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d129'>
<inertial>
<mass>0</mass>
@@ -4919,7 +4919,7 @@
</model>
<model name='part130.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d130'>
<inertial>
<mass>0</mass>
@@ -4958,7 +4958,7 @@
</model>
<model name='part131.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d131'>
<inertial>
<mass>0</mass>
@@ -4997,7 +4997,7 @@
</model>
<model name='part132.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d132'>
<inertial>
<mass>0</mass>
@@ -5036,7 +5036,7 @@
</model>
<model name='part133.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d133'>
<inertial>
<mass>0</mass>
@@ -5075,7 +5075,7 @@
</model>
<model name='part134.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d134'>
<inertial>
<mass>0</mass>
@@ -5114,7 +5114,7 @@
</model>
<model name='part135.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d135'>
<inertial>
<mass>0</mass>
@@ -5153,7 +5153,7 @@
</model>
<model name='part136.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d136'>
<inertial>
<mass>0</mass>
@@ -5192,7 +5192,7 @@
</model>
<model name='part137.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d137'>
<inertial>
<mass>0</mass>
@@ -5231,7 +5231,7 @@
</model>
<model name='part138.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d138'>
<inertial>
<mass>0</mass>
@@ -5270,7 +5270,7 @@
</model>
<model name='part139.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d139'>
<inertial>
<mass>0</mass>
@@ -5309,7 +5309,7 @@
</model>
<model name='part140.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d140'>
<inertial>
<mass>0</mass>
@@ -5348,7 +5348,7 @@
</model>
<model name='part141.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d141'>
<inertial>
<mass>0</mass>
@@ -5387,7 +5387,7 @@
</model>
<model name='part142.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d142'>
<inertial>
<mass>0</mass>
@@ -5426,7 +5426,7 @@
</model>
<model name='part143.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d143'>
<inertial>
<mass>0</mass>
@@ -5465,7 +5465,7 @@
</model>
<model name='part144.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d144'>
<inertial>
<mass>0</mass>
@@ -5504,7 +5504,7 @@
</model>
<model name='part145.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d145'>
<inertial>
<mass>0</mass>
@@ -5543,7 +5543,7 @@
</model>
<model name='part146.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d146'>
<inertial>
<mass>0</mass>
@@ -5574,7 +5574,7 @@
</model>
<model name='part147.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d147'>
<inertial>
<mass>0</mass>
@@ -5613,7 +5613,7 @@
</model>
<model name='part148.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d148'>
<inertial>
<mass>0</mass>
@@ -5652,7 +5652,7 @@
</model>
<model name='part149.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d149'>
<inertial>
<mass>0</mass>
@@ -5691,7 +5691,7 @@
</model>
<model name='part150.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d150'>
<inertial>
<mass>0</mass>
@@ -5730,7 +5730,7 @@
</model>
<model name='part151.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d151'>
<inertial>
<mass>0</mass>
@@ -5769,7 +5769,7 @@
</model>
<model name='part152.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d152'>
<inertial>
<mass>0</mass>
@@ -5808,7 +5808,7 @@
</model>
<model name='part153.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d153'>
<inertial>
<mass>0</mass>
@@ -5847,7 +5847,7 @@
</model>
<model name='part154.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d154'>
<inertial>
<mass>0</mass>
@@ -5886,7 +5886,7 @@
</model>
<model name='part155.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d155'>
<inertial>
<mass>0</mass>
@@ -5925,7 +5925,7 @@
</model>
<model name='part156.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d156'>
<inertial>
<mass>0</mass>
@@ -5964,7 +5964,7 @@
</model>
<model name='part157.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d157'>
<inertial>
<mass>0</mass>
@@ -6003,7 +6003,7 @@
</model>
<model name='part158.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d158'>
<inertial>
<mass>0</mass>
@@ -6042,7 +6042,7 @@
</model>
<model name='part159.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d159'>
<inertial>
<mass>0</mass>
@@ -6081,7 +6081,7 @@
</model>
<model name='part160.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d160'>
<inertial>
<mass>0</mass>
@@ -6120,7 +6120,7 @@
</model>
<model name='part161.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d161'>
<inertial>
<mass>0</mass>
@@ -6159,7 +6159,7 @@
</model>
<model name='part162.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d162'>
<inertial>
<mass>0</mass>
@@ -6198,7 +6198,7 @@
</model>
<model name='part163.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d163'>
<inertial>
<mass>0</mass>
@@ -6237,7 +6237,7 @@
</model>
<model name='part164.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d164'>
<inertial>
<mass>0</mass>
@@ -6276,7 +6276,7 @@
</model>
<model name='part165.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d165'>
<inertial>
<mass>0</mass>
@@ -6315,7 +6315,7 @@
</model>
<model name='part166.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d166'>
<inertial>
<mass>0</mass>
@@ -6354,7 +6354,7 @@
</model>
<model name='part167.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d167'>
<inertial>
<mass>0</mass>
@@ -6393,7 +6393,7 @@
</model>
<model name='part168.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d168'>
<inertial>
<mass>0</mass>
@@ -6432,7 +6432,7 @@
</model>
<model name='part169.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d169'>
<inertial>
<mass>0</mass>
@@ -6471,7 +6471,7 @@
</model>
<model name='part170.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d170'>
<inertial>
<mass>0</mass>
@@ -6510,7 +6510,7 @@
</model>
<model name='part171.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d171'>
<inertial>
<mass>0</mass>
@@ -6549,7 +6549,7 @@
</model>
<model name='part172.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d172'>
<inertial>
<mass>0</mass>
@@ -6588,7 +6588,7 @@
</model>
<model name='part173.obj'>
<static>1</static>
- <pose frame=''>-12.0 -13.9 0 0 0 0</pose>
+ <pose>-12.0 -13.9 0 0 0 0</pose>
<link name='link_d173'>
<inertial>
<mass>0</mass>
diff --git a/data/kuka_iiwa/kuka_with_gripper.sdf b/data/kuka_iiwa/kuka_with_gripper.sdf
index fd8ba3554..4d2a07ec6 100644
--- a/data/kuka_iiwa/kuka_with_gripper.sdf
+++ b/data/kuka_iiwa/kuka_with_gripper.sdf
@@ -11,9 +11,9 @@
<world name='default'>
<model name='lbr_iiwa_with_wsg50'>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -25,7 +25,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -34,7 +34,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -50,9 +50,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -64,7 +64,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -73,7 +73,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -108,9 +108,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -122,7 +122,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -131,7 +131,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -166,9 +166,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -180,7 +180,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -189,7 +189,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -224,9 +224,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -238,7 +238,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -247,7 +247,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -282,9 +282,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -296,7 +296,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -305,7 +305,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -340,9 +340,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -354,7 +354,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -363,7 +363,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -398,9 +398,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -412,7 +412,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -421,7 +421,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -462,9 +462,9 @@
<child>base_link</child>
</joint>
<link name='base_link'>
- <pose frame=''>0 0 1.305 0 -0 0</pose>
+ <pose>0 0 1.305 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -476,7 +476,7 @@
</inertia>
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.05 0.05 0.1 </size>
@@ -511,9 +511,9 @@
</axis>
</joint>
<link name='left_finger'>
- <pose frame=''>0 0.024 1.35 0 -0.05 0</pose>
+ <pose>0 0.024 1.35 0 -0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -525,7 +525,7 @@
</inertia>
</inertial>
<visual name='left_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -544,9 +544,9 @@
<child>left_finger_base</child>
</joint>
<link name='left_finger_base'>
- <pose frame=''>-0.005 0.024 1.43 0 -0.3 0</pose>
+ <pose>-0.005 0.024 1.43 0 -0.3 0</pose>
<inertial>
- <pose frame=''>-0.003 0 0.04 0 0 0 </pose>
+ <pose>-0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -558,7 +558,7 @@
</inertia>
</inertial>
<visual name='left_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -573,7 +573,7 @@
</material>
</visual>
<collision name='left_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -606,9 +606,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>1.0</spinning_friction>
</contact>
- <pose frame=''>-0.02 0.024 1.49 0 0.2 0</pose>
+ <pose>-0.02 0.024 1.49 0 0.2 0</pose>
<inertial>
- <pose frame=''>-0.005 0 0.026 0 0 0 </pose>
+ <pose>-0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -620,7 +620,7 @@
</inertia>
</inertial>
<visual name='left_finger_tip_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -635,7 +635,7 @@
</material>
</visual>
<collision name='left_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -664,9 +664,9 @@
</axis>
</joint>
<link name='right_finger'>
- <pose frame=''>0 0.024 1.35 0 0.05 0</pose>
+ <pose>0 0.024 1.35 0 0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -678,7 +678,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -697,9 +697,9 @@
<child>right_finger_base</child>
</joint>
<link name='right_finger_base'>
- <pose frame=''>0.005 0.024 1.43 0 0.3 0</pose>
+ <pose>0.005 0.024 1.43 0 0.3 0</pose>
<inertial>
- <pose frame=''>0.003 0 0.04 0 0 0 </pose>
+ <pose>0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -711,7 +711,7 @@
</inertia>
</inertial>
<visual name='right_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -726,7 +726,7 @@
</material>
</visual>
<collision name='right_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -759,9 +759,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>1.0</spinning_friction>
</contact>
- <pose frame=''>0.02 0.024 1.49 0 -0.2 0</pose>
+ <pose>0.02 0.024 1.49 0 -0.2 0</pose>
<inertial>
- <pose frame=''>0.005 0 0.026 0 0 0 </pose>
+ <pose>0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -773,7 +773,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -788,7 +788,7 @@
</material>
</visual>
<collision name='right_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/kuka_iiwa/kuka_with_gripper2.sdf b/data/kuka_iiwa/kuka_with_gripper2.sdf
index 9c3787bcb..d9ef5197f 100644
--- a/data/kuka_iiwa/kuka_with_gripper2.sdf
+++ b/data/kuka_iiwa/kuka_with_gripper2.sdf
@@ -11,9 +11,9 @@
<world name='default'>
<model name='lbr_iiwa_with_wsg50'>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -25,7 +25,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -34,7 +34,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -50,9 +50,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -64,7 +64,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -73,7 +73,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -108,9 +108,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -122,7 +122,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -131,7 +131,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -166,9 +166,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -180,7 +180,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -189,7 +189,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -224,9 +224,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -238,7 +238,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -247,7 +247,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -282,9 +282,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -296,7 +296,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -305,7 +305,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -340,9 +340,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -354,7 +354,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -363,7 +363,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -398,9 +398,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>1.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -412,7 +412,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -421,7 +421,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -468,9 +468,9 @@
<link name='base_link'>
- <pose frame=''>0 0 1.305 0 -0 0</pose>
+ <pose>0 0 1.305 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>1</ixx>
@@ -482,7 +482,7 @@
</inertia>
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.05 0.05 0.1 </size>
@@ -496,7 +496,7 @@
</material>
</visual>
<collision name='base_link_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.05 0.05 0.1 </size>
@@ -531,9 +531,9 @@
</axis>
</joint>
<link name='left_finger'>
- <pose frame=''>0 0.024 1.35 0 -0.05 0</pose>
+ <pose>0 0.024 1.35 0 -0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -545,7 +545,7 @@
</inertia>
</inertial>
<visual name='left_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -559,7 +559,7 @@
</material>
</visual>
<collision name='left_finger_collision'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -577,9 +577,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>-0.005 0.024 1.43 0 -0.3 0</pose>
+ <pose>-0.005 0.024 1.43 0 -0.3 0</pose>
<inertial>
- <pose frame=''>-0.003 0 0.04 0 0 0 </pose>
+ <pose>-0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -591,7 +591,7 @@
</inertia>
</inertial>
<visual name='left_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -606,7 +606,7 @@
</material>
</visual>
<collision name='left_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -639,9 +639,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>-0.02 0.024 1.49 0 0.2 0</pose>
+ <pose>-0.02 0.024 1.49 0 0.2 0</pose>
<inertial>
- <pose frame=''>-0.005 0 0.026 0 0 0 </pose>
+ <pose>-0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -653,7 +653,7 @@
</inertia>
</inertial>
<visual name='left_finger_tip_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -668,7 +668,7 @@
</material>
</visual>
<collision name='left_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -701,9 +701,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>0 0.024 1.35 0 0.05 0</pose>
+ <pose>0 0.024 1.35 0 0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -715,7 +715,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -729,7 +729,7 @@
</material>
</visual>
<collision name='right_finger_collision'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -752,9 +752,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>0.005 0.024 1.43 0 0.3 0</pose>
+ <pose>0.005 0.024 1.43 0 0.3 0</pose>
<inertial>
- <pose frame=''>0.003 0 0.04 0 0 0 </pose>
+ <pose>0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -766,7 +766,7 @@
</inertia>
</inertial>
<visual name='right_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -781,7 +781,7 @@
</material>
</visual>
<collision name='right_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -814,9 +814,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>0.02 0.024 1.49 0 -0.2 0</pose>
+ <pose>0.02 0.024 1.49 0 -0.2 0</pose>
<inertial>
- <pose frame=''>0.005 0 0.026 0 0 0 </pose>
+ <pose>0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -828,7 +828,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -843,7 +843,7 @@
</material>
</visual>
<collision name='right_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/data/kuka_iiwa/kuka_world.sdf b/data/kuka_iiwa/kuka_world.sdf
index d48d51382..3292b4b2e 100644
--- a/data/kuka_iiwa/kuka_world.sdf
+++ b/data/kuka_iiwa/kuka_world.sdf
@@ -6,9 +6,9 @@
<child>lbr_iiwa_link_0</child>
</joint>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0.01</mass>
<inertia>
<ixx>0.05</ixx>
@@ -20,7 +20,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -29,7 +29,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -39,9 +39,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -53,7 +53,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -62,7 +62,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -92,9 +92,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -106,7 +106,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -115,7 +115,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -145,9 +145,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -159,7 +159,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -168,7 +168,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -198,9 +198,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -212,7 +212,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -221,7 +221,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -251,9 +251,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -265,7 +265,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -274,7 +274,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -304,9 +304,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -318,7 +318,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -327,7 +327,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -357,9 +357,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -371,7 +371,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -380,7 +380,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
diff --git a/data/kuka_iiwa/model.sdf b/data/kuka_iiwa/model.sdf
index a93d09c50..4eb2c9c97 100644
--- a/data/kuka_iiwa/model.sdf
+++ b/data/kuka_iiwa/model.sdf
@@ -1,11 +1,11 @@
<sdf version='1.6'>
<world name='default'>
<model name='lbr_iiwa'>
- <pose frame=''>0 -2.3 0.7 0 0 0</pose>
+ <pose>0 -2.3 0.7 0 0 0</pose>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -17,7 +17,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -26,7 +26,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -42,9 +42,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -56,7 +56,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -65,7 +65,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -101,9 +101,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -115,7 +115,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -124,7 +124,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -160,9 +160,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -174,7 +174,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -183,7 +183,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -219,9 +219,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -233,7 +233,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -242,7 +242,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -278,9 +278,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -292,7 +292,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -301,7 +301,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -337,9 +337,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -351,7 +351,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -360,7 +360,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -396,9 +396,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -410,7 +410,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -419,7 +419,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
diff --git a/data/kuka_iiwa/model2.sdf b/data/kuka_iiwa/model2.sdf
index 117357cf4..ea244b8ac 100644
--- a/data/kuka_iiwa/model2.sdf
+++ b/data/kuka_iiwa/model2.sdf
@@ -2,9 +2,9 @@
<world name='default'>
<model name='lbr_iiwa'>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -16,7 +16,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -25,7 +25,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -35,9 +35,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -49,7 +49,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,7 +58,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -88,9 +88,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -102,7 +102,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -111,7 +111,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -141,9 +141,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -155,7 +155,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -164,7 +164,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -194,9 +194,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -208,7 +208,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -217,7 +217,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -247,9 +247,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -261,7 +261,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -270,7 +270,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -300,9 +300,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -314,7 +314,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -323,7 +323,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -353,9 +353,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -367,7 +367,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -376,7 +376,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -408,11 +408,11 @@
</model>
<model name='lbr_iiwa'>
- <pose frame=''>2 2 0 0 -0 0</pose>
+ <pose>2 2 0 0 -0 0</pose>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -424,7 +424,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -433,7 +433,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -443,9 +443,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -457,7 +457,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -466,7 +466,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -496,9 +496,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -510,7 +510,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -519,7 +519,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -549,9 +549,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -563,7 +563,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -572,7 +572,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -602,9 +602,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -616,7 +616,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -625,7 +625,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -655,9 +655,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -669,7 +669,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -678,7 +678,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -708,9 +708,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -722,7 +722,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -731,7 +731,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -761,9 +761,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -775,7 +775,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -784,7 +784,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
diff --git a/data/stadium.sdf b/data/stadium.sdf
index 585b4eb16..2e212ab1f 100644
--- a/data/stadium.sdf
+++ b/data/stadium.sdf
@@ -3,7 +3,7 @@
<gravity>0 0 -9.8</gravity>
<model name='roboschool/models_outdoor/stadium/part0.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d0'>
<inertial>
<mass>0</mass>
@@ -34,7 +34,7 @@
</model>
<model name='roboschool/models_outdoor/stadium/part1.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d1'>
<inertial>
<mass>0</mass>
@@ -73,7 +73,7 @@
</model>
<model name='part2.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d2'>
<inertial>
<mass>0</mass>
diff --git a/data/threecubes/newsdf.sdf b/data/threecubes/newsdf.sdf
index b30db2f16..456c5ad17 100644
--- a/data/threecubes/newsdf.sdf
+++ b/data/threecubes/newsdf.sdf
@@ -3,7 +3,7 @@
<gravity>0 0 -9.8</gravity>
<model name='part0.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d0'>
<inertial>
<mass>0</mass>
@@ -42,7 +42,7 @@
</model>
<model name='part1.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d1'>
<inertial>
<mass>0</mass>
@@ -81,7 +81,7 @@
</model>
<model name='part2.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d2'>
<inertial>
<mass>0</mass>
diff --git a/data/two_cubes.sdf b/data/two_cubes.sdf
index 0a1d0973c..acaa739cf 100644
--- a/data/two_cubes.sdf
+++ b/data/two_cubes.sdf
@@ -3,7 +3,7 @@
<light name='sun' type='directional'>
<yunfei>99.2</yunfei>
<cast_shadows>1</cast_shadows>
- <pose frame=''>0 0 10 0 -0 0</pose>
+ <pose>0 0 10 0 -0 0</pose>
<diffuse>0.8 0.8 0.8 1</diffuse>
<specular>0.2 0.2 0.2 1</specular>
<attenuation>
@@ -87,7 +87,7 @@
</spherical_coordinates>
<model name='unit_box_0'>
<static>1</static>
- <pose frame=''>0.512455 -1.58317 0.5 0 -0 0</pose>
+ <pose>0.512455 -1.58317 0.5 0 -0 0</pose>
<link name='unit_box_0::link'>
<inertial>
@@ -142,7 +142,7 @@
</link>
</model>
<model name='unit_box_0_clone'>
- <pose frame=''>0.105158 -4.55002 1.499995 -2.89297 -0.988287 -3.14159</pose>
+ <pose>0.105158 -4.55002 1.499995 -2.89297 -0.988287 -3.14159</pose>
<link name='unit_box_0::link'>
<inertial>
<mass>1</mass>
@@ -197,42 +197,42 @@
<wall_time>1462824251 956472000</wall_time>
<iterations>0</iterations>
<model name='ground_plane'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<scale>1 1 1</scale>
<link name='link'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>
<model name='unit_box_0'>
- <pose frame=''>0.223196 -1.84719 0.499995 -2.89297 -0.988287 -3.14159</pose>
+ <pose>0.223196 -1.84719 0.499995 -2.89297 -0.988287 -3.14159</pose>
<scale>1 1 1</scale>
<link name='unit_box_0::link'>
- <pose frame=''>0.223196 -1.84719 0.499995 -2.89297 -0.988287 -3.14159</pose>
+ <pose>0.223196 -1.84719 0.499995 -2.89297 -0.988287 -3.14159</pose>
<velocity>0.004896 3e-06 -0.004891 -6e-06 0.009793 -0</velocity>
<acceleration>0.010615 0.006191 -9.78231 -0.012424 0.021225 -1.8e-05</acceleration>
<wrench>0.010615 0.006191 -9.78231 0 -0 0</wrench>
</link>
</model>
<model name='unit_box_0_clone'>
- <pose frame=''>0.105158 -4.55002 0.499995 -2.89297 -0.988287 -3.14159</pose>
+ <pose>0.105158 -4.55002 0.499995 -2.89297 -0.988287 -3.14159</pose>
<scale>1 1 1</scale>
<link name='unit_box_0::link'>
- <pose frame=''>0.105158 -4.55002 0.499995 -2.89297 -0.988287 -3.14159</pose>
+ <pose>0.105158 -4.55002 0.499995 -2.89297 -0.988287 -3.14159</pose>
<velocity>0 0 0 0 -0 0</velocity>
<acceleration>0 0 0 0 -0 0</acceleration>
<wrench>0 0 0 0 -0 0</wrench>
</link>
</model>
<light name='sun'>
- <pose frame=''>0 0 10 0 -0 0</pose>
+ <pose>0 0 10 0 -0 0</pose>
</light>
</state>
<gui fullscreen='0'>
<camera name='user_camera'>
- <pose frame=''>8.0562 -8.87312 3.07529 0 0.205021 2.5208</pose>
+ <pose>8.0562 -8.87312 3.07529 0 0.205021 2.5208</pose>
<view_controller>orbit</view_controller>
<projection_type>perspective</projection_type>
</camera>
diff --git a/examples/Benchmarks/BenchmarkDemo.cpp b/examples/Benchmarks/BenchmarkDemo.cpp
index 995275916..d9dcdc5a3 100644
--- a/examples/Benchmarks/BenchmarkDemo.cpp
+++ b/examples/Benchmarks/BenchmarkDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Benchmarks/BenchmarkDemo.h b/examples/Benchmarks/BenchmarkDemo.h
index 3bac49646..add603c12 100644
--- a/examples/Benchmarks/BenchmarkDemo.h
+++ b/examples/Benchmarks/BenchmarkDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/CommonInterfaces/CommonGUIHelperInterface.h b/examples/CommonInterfaces/CommonGUIHelperInterface.h
index eb4e0c76f..7f8316fd1 100644
--- a/examples/CommonInterfaces/CommonGUIHelperInterface.h
+++ b/examples/CommonInterfaces/CommonGUIHelperInterface.h
@@ -52,6 +52,8 @@ struct GUIHelperInterface
virtual int getShapeIndexFromInstance(int instanceUid) { return -1; }
virtual void replaceTexture(int shapeIndex, int textureUid) {}
virtual void removeTexture(int textureUid) {}
+ virtual void setBackgroundColor(const double rgbBackground[3]) {}
+
virtual Common2dCanvasInterface* get2dCanvasInterface() = 0;
diff --git a/examples/CommonInterfaces/CommonRenderInterface.h b/examples/CommonInterfaces/CommonRenderInterface.h
index 25bf82852..03e148457 100644
--- a/examples/CommonInterfaces/CommonRenderInterface.h
+++ b/examples/CommonInterfaces/CommonRenderInterface.h
@@ -56,6 +56,8 @@ struct CommonRenderInterface
virtual void setLightPosition(const float lightPos[3]) = 0;
virtual void setLightPosition(const double lightPos[3]) = 0;
+ virtual void setBackgroundColor(const double rgbBackground[3]) = 0;
+
virtual void setShadowMapResolution(int shadowMapResolution) = 0;
virtual void setShadowMapIntensity(double shadowMapIntensity) = 0;
diff --git a/examples/Constraints/ConstraintDemo.cpp b/examples/Constraints/ConstraintDemo.cpp
index 092787f2b..704b9779d 100644
--- a/examples/Constraints/ConstraintDemo.cpp
+++ b/examples/Constraints/ConstraintDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2015 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2015 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Constraints/ConstraintDemo.h b/examples/Constraints/ConstraintDemo.h
index de0061bac..42feed86a 100644
--- a/examples/Constraints/ConstraintDemo.h
+++ b/examples/Constraints/ConstraintDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/ExampleBrowser/GL_ShapeDrawer.cpp b/examples/ExampleBrowser/GL_ShapeDrawer.cpp
index b6419a5b4..5bc92adec 100644
--- a/examples/ExampleBrowser/GL_ShapeDrawer.cpp
+++ b/examples/ExampleBrowser/GL_ShapeDrawer.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/ExampleBrowser/GL_ShapeDrawer.h b/examples/ExampleBrowser/GL_ShapeDrawer.h
index 9eb13bfd3..12c801a9c 100644
--- a/examples/ExampleBrowser/GL_ShapeDrawer.h
+++ b/examples/ExampleBrowser/GL_ShapeDrawer.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/ExampleBrowser/OpenGLGuiHelper.cpp b/examples/ExampleBrowser/OpenGLGuiHelper.cpp
index 90cec71a6..7df4e932b 100644
--- a/examples/ExampleBrowser/OpenGLGuiHelper.cpp
+++ b/examples/ExampleBrowser/OpenGLGuiHelper.cpp
@@ -236,13 +236,19 @@ OpenGLGuiHelper::OpenGLGuiHelper(CommonGraphicsApp* glApp, bool useOpenGL2)
m_data->m_debugDraw = 0;
}
-OpenGLGuiHelper::~OpenGLGuiHelper()
+
+ OpenGLGuiHelper::~OpenGLGuiHelper()
{
delete m_data->m_debugDraw;
delete m_data;
}
+void OpenGLGuiHelper::setBackgroundColor(const double rgbBackground[3])
+{
+ this->getRenderInterface()->setBackgroundColor(rgbBackground);
+}
+
struct CommonRenderInterface* OpenGLGuiHelper::getRenderInterface()
{
return m_data->m_glApp->m_renderer;
diff --git a/examples/ExampleBrowser/OpenGLGuiHelper.h b/examples/ExampleBrowser/OpenGLGuiHelper.h
index abeaa9af1..c512c21b9 100644
--- a/examples/ExampleBrowser/OpenGLGuiHelper.h
+++ b/examples/ExampleBrowser/OpenGLGuiHelper.h
@@ -36,7 +36,7 @@ struct OpenGLGuiHelper : public GUIHelperInterface
virtual int getShapeIndexFromInstance(int instanceUid);
virtual void replaceTexture(int shapeIndex, int textureUid);
virtual void updateShape(int shapeIndex, float* vertices, int numVertices);
-
+ virtual void setBackgroundColor(const double rgbBackground[3]);
virtual void createCollisionShapeGraphicsObject(btCollisionShape* collisionShape);
virtual void syncPhysicsToGraphics(const btDiscreteDynamicsWorld* rbWorld);
diff --git a/examples/ForkLift/ForkLiftDemo.cpp b/examples/ForkLift/ForkLiftDemo.cpp
index 8f84b7fc8..6bb03165b 100644
--- a/examples/ForkLift/ForkLiftDemo.cpp
+++ b/examples/ForkLift/ForkLiftDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/ForkLift/ForkLiftDemo.h b/examples/ForkLift/ForkLiftDemo.h
index 497c2d4c3..e4a6bb7e0 100644
--- a/examples/ForkLift/ForkLiftDemo.h
+++ b/examples/ForkLift/ForkLiftDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/FractureDemo/FractureDemo.cpp b/examples/FractureDemo/FractureDemo.cpp
index 8bf44bf35..24062e56b 100644
--- a/examples/FractureDemo/FractureDemo.cpp
+++ b/examples/FractureDemo/FractureDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2011 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2011 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/FractureDemo/FractureDemo.h b/examples/FractureDemo/FractureDemo.h
index 3108d2509..1539dfd69 100644
--- a/examples/FractureDemo/FractureDemo.h
+++ b/examples/FractureDemo/FractureDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/HelloWorld/HelloWorld.cpp b/examples/HelloWorld/HelloWorld.cpp
index e897bcdd3..8b5fcee4c 100644
--- a/examples/HelloWorld/HelloWorld.cpp
+++ b/examples/HelloWorld/HelloWorld.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2007 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Importers/ImportBsp/BspConverter.cpp b/examples/Importers/ImportBsp/BspConverter.cpp
index dcf414018..7b91217ab 100644
--- a/examples/Importers/ImportBsp/BspConverter.cpp
+++ b/examples/Importers/ImportBsp/BspConverter.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Importers/ImportBsp/BspConverter.h b/examples/Importers/ImportBsp/BspConverter.h
index 20faae66d..110790bcc 100644
--- a/examples/Importers/ImportBsp/BspConverter.h
+++ b/examples/Importers/ImportBsp/BspConverter.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Importers/ImportBsp/ImportBspExample.cpp b/examples/Importers/ImportBsp/ImportBspExample.cpp
index 17d515865..851e51856 100644
--- a/examples/Importers/ImportBsp/ImportBspExample.cpp
+++ b/examples/Importers/ImportBsp/ImportBspExample.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Importers/ImportBsp/ImportBspExample.h b/examples/Importers/ImportBsp/ImportBspExample.h
index 71f6ca921..4892953bf 100644
--- a/examples/Importers/ImportBsp/ImportBspExample.h
+++ b/examples/Importers/ImportBsp/ImportBspExample.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp b/examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp
index e41ef7881..815e8b9bf 100644
--- a/examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp
+++ b/examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp
@@ -33,6 +33,10 @@ class btRigidBody* MyMultiBodyCreator::allocateRigidBody(int urdfLinkIndex, btSc
{
btRigidBody::btRigidBodyConstructionInfo rbci(mass, 0, colShape, localInertiaDiagonal);
rbci.m_startWorldTransform = initialWorldTrans;
+ btScalar sleep_threshold = btScalar(0.22360679775);//sqrt(0.05) to be similar to btMultiBody (SLEEP_THRESHOLD)
+ rbci.m_angularSleepingThreshold = sleep_threshold;
+ rbci.m_linearSleepingThreshold = sleep_threshold;
+
btRigidBody* body = new btRigidBody(rbci);
if (m_rigidBody == 0)
{
diff --git a/examples/MultiBody/MultiBodyConstraintFeedback.cpp b/examples/MultiBody/MultiBodyConstraintFeedback.cpp
index b8b421fc1..73b4e8dfe 100644
--- a/examples/MultiBody/MultiBodyConstraintFeedback.cpp
+++ b/examples/MultiBody/MultiBodyConstraintFeedback.cpp
@@ -228,7 +228,7 @@ void MultiBodyConstraintFeedbackSetup::initPhysics()
m_dynamicsWorld->setGravity(btVector3(0, 0, -10));
//////////////////////////////////////////////
- if (0) //numLinks > 0)
+ if (/* DISABLES CODE */ (0)) //numLinks > 0)
{
btScalar q0 = 45.f * SIMD_PI / 180.f;
if (!spherical)
@@ -349,7 +349,7 @@ void MultiBodyConstraintFeedbackSetup::initPhysics()
void MultiBodyConstraintFeedbackSetup::stepSimulation(float deltaTime)
{
//m_multiBody->addLinkForce(0,btVector3(100,100,100));
- if (0) //m_once)
+ if (/* DISABLES CODE */ (0)) //m_once)
{
m_once = false;
m_multiBody->addJointTorque(0, 10.0);
diff --git a/examples/MultiBody/MultiBodySoftContact.cpp b/examples/MultiBody/MultiBodySoftContact.cpp
index 4a143ee20..2e59edc10 100644
--- a/examples/MultiBody/MultiBodySoftContact.cpp
+++ b/examples/MultiBody/MultiBodySoftContact.cpp
@@ -130,7 +130,7 @@ void MultiBodySoftContact::initPhysics()
void MultiBodySoftContact::stepSimulation(float deltaTime)
{
- if (0) //m_once)
+ if (/* DISABLES CODE */ (0)) //m_once)
{
m_once = false;
m_multiBody->addJointTorque(0, 10.0);
diff --git a/examples/MultiBody/TestJointTorqueSetup.cpp b/examples/MultiBody/TestJointTorqueSetup.cpp
index 7963713d2..3c94e2060 100644
--- a/examples/MultiBody/TestJointTorqueSetup.cpp
+++ b/examples/MultiBody/TestJointTorqueSetup.cpp
@@ -230,7 +230,7 @@ void TestJointTorqueSetup::initPhysics()
m_dynamicsWorld->setGravity(btVector3(0, 0, -10));
//////////////////////////////////////////////
- if (0) //numLinks > 0)
+ if (/* DISABLES CODE */ (0)) //numLinks > 0)
{
btScalar q0 = 45.f * SIMD_PI / 180.f;
if (!spherical)
@@ -356,7 +356,7 @@ void TestJointTorqueSetup::initPhysics()
void TestJointTorqueSetup::stepSimulation(float deltaTime)
{
//m_multiBody->addLinkForce(0,btVector3(100,100,100));
- if (0) //m_once)
+ if (/* DISABLES CODE */ (0)) //m_once)
{
m_once = false;
m_multiBody->addJointTorque(0, 10.0);
diff --git a/examples/MultiBodyBaseline/MultiBodyBaseline.cpp b/examples/MultiBodyBaseline/MultiBodyBaseline.cpp
index 663c2d33a..036671b64 100644
--- a/examples/MultiBodyBaseline/MultiBodyBaseline.cpp
+++ b/examples/MultiBodyBaseline/MultiBodyBaseline.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -354,5 +354,3 @@ class CommonExampleInterface* MultiBodyBaselineCreateFunc(struct CommonExampleOp
{
return new MultiBodyBaseline(options.m_guiHelper);
}
-
-
diff --git a/examples/MultiBodyBaseline/MultiBodyBaseline.h b/examples/MultiBodyBaseline/MultiBodyBaseline.h
index 35734c63c..2a6679df7 100644
--- a/examples/MultiBodyBaseline/MultiBodyBaseline.h
+++ b/examples/MultiBodyBaseline/MultiBodyBaseline.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp
index 54e20583a..5347936b6 100644
--- a/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp
+++ b/examples/MultiThreadedDemo/CommonRigidBodyMTBase.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/MultiThreadedDemo/MultiThreadedDemo.cpp b/examples/MultiThreadedDemo/MultiThreadedDemo.cpp
index a9defe28a..b435fd3bf 100644
--- a/examples/MultiThreadedDemo/MultiThreadedDemo.cpp
+++ b/examples/MultiThreadedDemo/MultiThreadedDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/MultiThreadedDemo/MultiThreadedDemo.h b/examples/MultiThreadedDemo/MultiThreadedDemo.h
index a4ae274f7..9d8ec5942 100644
--- a/examples/MultiThreadedDemo/MultiThreadedDemo.h
+++ b/examples/MultiThreadedDemo/MultiThreadedDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/OpenGLWindow/GLInstancingRenderer.cpp b/examples/OpenGLWindow/GLInstancingRenderer.cpp
index ca0552230..c0e2f2370 100644
--- a/examples/OpenGLWindow/GLInstancingRenderer.cpp
+++ b/examples/OpenGLWindow/GLInstancingRenderer.cpp
@@ -1522,6 +1522,11 @@ void GLInstancingRenderer::setLightPosition(const double lightPos[3])
m_data->m_lightPos[2] = lightPos[2];
}
+void GLInstancingRenderer::setBackgroundColor(const double rgbBackground[3])
+{
+ glClearColor(rgbBackground[0], rgbBackground[1], rgbBackground[2], 1.f);
+}
+
void GLInstancingRenderer::setProjectiveTextureMatrices(const float viewMatrix[16], const float projectionMatrix[16])
{
for (int i = 0; i < 16; i++)
diff --git a/examples/OpenGLWindow/GLInstancingRenderer.h b/examples/OpenGLWindow/GLInstancingRenderer.h
index 715758212..d3aa8c25f 100644
--- a/examples/OpenGLWindow/GLInstancingRenderer.h
+++ b/examples/OpenGLWindow/GLInstancingRenderer.h
@@ -127,7 +127,7 @@ public:
void setLightSpecularIntensity(const float lightSpecularIntensity[3]);
virtual void setProjectiveTextureMatrices(const float viewMatrix[16], const float projectionMatrix[16]);
virtual void setProjectiveTexture(bool useProjectiveTexture);
-
+ virtual void setBackgroundColor(const double rgbBackground[3]);
virtual void resize(int width, int height);
virtual int getScreenWidth()
{
diff --git a/examples/OpenGLWindow/SimpleOpenGL2Renderer.h b/examples/OpenGLWindow/SimpleOpenGL2Renderer.h
index 19cc8cc10..4355de558 100644
--- a/examples/OpenGLWindow/SimpleOpenGL2Renderer.h
+++ b/examples/OpenGLWindow/SimpleOpenGL2Renderer.h
@@ -30,6 +30,7 @@ public:
virtual void setShadowMapIntensity(double shadowMapIntensity) {}
virtual void setShadowMapWorldSize(float worldSize) {}
virtual void resize(int width, int height);
+ virtual void setBackgroundColor(const double rgbBackground[3]) {}
virtual void removeAllInstances();
virtual void removeGraphicsInstance(int instanceUid);
diff --git a/examples/Planar2D/Planar2D.cpp b/examples/Planar2D/Planar2D.cpp
index 91399887f..ffb4c0c40 100644
--- a/examples/Planar2D/Planar2D.cpp
+++ b/examples/Planar2D/Planar2D.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Planar2D/Planar2D.h b/examples/Planar2D/Planar2D.h
index 0cbf950fb..977a936ec 100644
--- a/examples/Planar2D/Planar2D.h
+++ b/examples/Planar2D/Planar2D.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Raycast/RaytestDemo.cpp b/examples/Raycast/RaytestDemo.cpp
index f99713677..3bfbcf64f 100644
--- a/examples/Raycast/RaytestDemo.cpp
+++ b/examples/Raycast/RaytestDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/Raycast/RaytestDemo.h b/examples/Raycast/RaytestDemo.h
index fcd76ba84..cc4f263d6 100644
--- a/examples/Raycast/RaytestDemo.h
+++ b/examples/Raycast/RaytestDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/RobotSimulator/CMakeLists.txt b/examples/RobotSimulator/CMakeLists.txt
index b2d6c2412..c17481f8c 100644
--- a/examples/RobotSimulator/CMakeLists.txt
+++ b/examples/RobotSimulator/CMakeLists.txt
@@ -149,7 +149,7 @@ ELSE()
IF(NOT APPLE)
FIND_PACKAGE(Threads)
TARGET_LINK_LIBRARIES( App_HelloBulletRobotics ${CMAKE_THREAD_LIBS_INIT} ${DL} )
- ENDIF(APPLE)
+ ENDIF(NOT APPLE)
ENDIF(WIN32)
diff --git a/examples/RollingFrictionDemo/RollingFrictionDemo.cpp b/examples/RollingFrictionDemo/RollingFrictionDemo.cpp
index 4fab5104b..32d73efb3 100644
--- a/examples/RollingFrictionDemo/RollingFrictionDemo.cpp
+++ b/examples/RollingFrictionDemo/RollingFrictionDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/RollingFrictionDemo/RollingFrictionDemo.h b/examples/RollingFrictionDemo/RollingFrictionDemo.h
index 2362cc590..9213aed7f 100644
--- a/examples/RollingFrictionDemo/RollingFrictionDemo.h
+++ b/examples/RollingFrictionDemo/RollingFrictionDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/SharedMemory/PhysicsClientC_API.cpp b/examples/SharedMemory/PhysicsClientC_API.cpp
index c70889872..5b070713a 100644
--- a/examples/SharedMemory/PhysicsClientC_API.cpp
+++ b/examples/SharedMemory/PhysicsClientC_API.cpp
@@ -260,6 +260,17 @@ B3_SHARED_API void b3LoadMJCFCommandSetFlags(b3SharedMemoryCommandHandle command
}
}
+B3_SHARED_API void b3LoadMJCFCommandSetUseMultiBody(b3SharedMemoryCommandHandle commandHandle, int useMultiBody)
+{
+ struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
+ b3Assert(command->m_type == CMD_LOAD_MJCF);
+ if (command->m_type == CMD_LOAD_MJCF)
+ {
+ command->m_updateFlags |= URDF_ARGS_USE_MULTIBODY;
+ command->m_mjcfArguments.m_useMultiBody = useMultiBody;
+ }
+}
+
B3_SHARED_API b3SharedMemoryCommandHandle b3LoadSoftBodyCommandInit(b3PhysicsClientHandle physClient, const char* fileName)
{
PhysicsClient* cl = (PhysicsClient*)physClient;
@@ -1473,6 +1484,28 @@ B3_SHARED_API int b3CreateCollisionShapeAddSphere(b3SharedMemoryCommandHandle co
return -1;
}
+B3_SHARED_API b3SharedMemoryCommandHandle b3ResetMeshDataCommandInit(b3PhysicsClientHandle physClient, int bodyUniqueId, int numVertices, const double* vertices)
+{
+ PhysicsClient* cl = (PhysicsClient*)physClient;
+ b3Assert(cl);
+ b3Assert(cl->canSubmitCommand());
+ if (cl)
+ {
+ struct SharedMemoryCommand* command = cl->getAvailableSharedMemoryCommand();
+ b3Assert(command);
+ command->m_type = CMD_RESET_MESH_DATA;
+ command->m_updateFlags = 0;
+ command->m_resetMeshDataArgs.m_numVertices = numVertices;
+ command->m_resetMeshDataArgs.m_bodyUniqueId = bodyUniqueId;
+ command->m_resetMeshDataArgs.m_flags = 0;
+ int totalUploadSizeInBytes = numVertices * sizeof(double) *3;
+ cl->uploadBulletFileToSharedMemory((const char*)vertices, totalUploadSizeInBytes);
+ return (b3SharedMemoryCommandHandle)command;
+ }
+ return 0;
+}
+
+
B3_SHARED_API b3SharedMemoryCommandHandle b3GetMeshDataCommandInit(b3PhysicsClientHandle physClient, int bodyUniqueId, int linkIndex)
{
PhysicsClient* cl = (PhysicsClient*)physClient;
@@ -2172,6 +2205,7 @@ B3_SHARED_API int b3CreateMultiBodyLink(b3SharedMemoryCommandHandle commandHandl
command->m_createMultiBodyArgs.m_linkJointAxis[3 * linkIndex + 2] = linkJointAxis[2];
command->m_createMultiBodyArgs.m_linkMasses[linkIndex] = linkMass;
+
command->m_createMultiBodyArgs.m_numLinks++;
return numLinks;
}
@@ -3294,6 +3328,18 @@ B3_SHARED_API int b3ChangeDynamicsInfoSetJointLimitForce(b3SharedMemoryCommandHa
return 0;
}
+B3_SHARED_API int b3ChangeDynamicsInfoSetSleepThreshold(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, double sleepThreshold)
+{
+ struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
+ b3Assert(command->m_type == CMD_CHANGE_DYNAMICS_INFO);
+ command->m_changeDynamicsInfoArgs.m_bodyUniqueId = bodyUniqueId;
+ command->m_changeDynamicsInfoArgs.m_sleepThreshold = sleepThreshold;
+ command->m_updateFlags |= CHANGE_DYNAMICS_INFO_SET_SLEEP_THRESHOLD;
+ return 0;
+}
+
+
+
B3_SHARED_API int b3ChangeDynamicsInfoSetDynamicType(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkIndex, int dynamicType)
{
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
@@ -4547,7 +4593,7 @@ B3_SHARED_API void b3ComputeViewMatrixFromYawPitchRoll(const float cameraTargetP
b3Scalar yawRad = yaw * b3Scalar(0.01745329251994329547); // rads per deg
b3Scalar pitchRad = pitch * b3Scalar(0.01745329251994329547); // rads per deg
- b3Scalar rollRad = 0.0;
+ b3Scalar rollRad = roll * b3Scalar(0.01745329251994329547); // rads per deg
b3Quaternion eyeRot;
int forwardAxis(-1);
@@ -6039,6 +6085,21 @@ B3_SHARED_API void b3ConfigureOpenGLVisualizerSetLightPosition(b3SharedMemoryCom
}
}
+B3_SHARED_API void b3ConfigureOpenGLVisualizerSetLightRgbBackground(b3SharedMemoryCommandHandle commandHandle, const float rgbBackground[3])
+{
+ struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
+ b3Assert(command);
+ b3Assert(command->m_type == CMD_CONFIGURE_OPENGL_VISUALIZER);
+ if (command->m_type == CMD_CONFIGURE_OPENGL_VISUALIZER)
+ {
+ command->m_updateFlags |= COV_SET_RGB_BACKGROUND;
+ command->m_configureOpenGLVisualizerArguments.m_rgbBackground[0] = rgbBackground[0];
+ command->m_configureOpenGLVisualizerArguments.m_rgbBackground[1] = rgbBackground[1];
+ command->m_configureOpenGLVisualizerArguments.m_rgbBackground[2] = rgbBackground[2];
+ }
+}
+
+
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapResolution(b3SharedMemoryCommandHandle commandHandle, int shadowMapResolution)
{
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*)commandHandle;
diff --git a/examples/SharedMemory/PhysicsClientC_API.h b/examples/SharedMemory/PhysicsClientC_API.h
index 101868028..b6ec6d63b 100644
--- a/examples/SharedMemory/PhysicsClientC_API.h
+++ b/examples/SharedMemory/PhysicsClientC_API.h
@@ -156,7 +156,8 @@ extern "C"
B3_SHARED_API int b3ChangeDynamicsInfoSetJointLimit(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkIndex, double jointLowerLimit, double jointUpperLimit);
B3_SHARED_API int b3ChangeDynamicsInfoSetJointLimitForce(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkIndex, double jointLimitForce);
B3_SHARED_API int b3ChangeDynamicsInfoSetDynamicType(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkIndex, int dynamicType);
-
+
+ B3_SHARED_API int b3ChangeDynamicsInfoSetSleepThreshold(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, double sleepThreshold);
B3_SHARED_API int b3ChangeDynamicsInfoSetLateralFriction(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkIndex, double lateralFriction);
B3_SHARED_API int b3ChangeDynamicsInfoSetSpinningFriction(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkIndex, double friction);
@@ -217,7 +218,9 @@ extern "C"
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetLightPosition(b3SharedMemoryCommandHandle commandHandle, const float lightPosition[3]);
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapResolution(b3SharedMemoryCommandHandle commandHandle, int shadowMapResolution);
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapIntensity(b3SharedMemoryCommandHandle commandHandle, double shadowMapIntensity);
+ B3_SHARED_API void b3ConfigureOpenGLVisualizerSetLightRgbBackground(b3SharedMemoryCommandHandle commandHandle, const float rgbBackground[3]);
+
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetShadowMapWorldSize(b3SharedMemoryCommandHandle commandHandle, int shadowMapWorldSize);
B3_SHARED_API void b3ConfigureOpenGLVisualizerSetRemoteSyncTransformInterval(b3SharedMemoryCommandHandle commandHandle, double remoteSyncTransformInterval);
@@ -415,6 +418,8 @@ extern "C"
B3_SHARED_API b3SharedMemoryCommandHandle b3LoadMJCFCommandInit(b3PhysicsClientHandle physClient, const char* fileName);
B3_SHARED_API b3SharedMemoryCommandHandle b3LoadMJCFCommandInit2(b3SharedMemoryCommandHandle commandHandle, const char* fileName);
B3_SHARED_API void b3LoadMJCFCommandSetFlags(b3SharedMemoryCommandHandle commandHandle, int flags);
+ B3_SHARED_API void b3LoadMJCFCommandSetUseMultiBody(b3SharedMemoryCommandHandle commandHandle, int useMultiBody);
+
///compute the forces to achieve an acceleration, given a state q and qdot using inverse dynamics
B3_SHARED_API b3SharedMemoryCommandHandle b3CalculateInverseDynamicsCommandInit(b3PhysicsClientHandle physClient, int bodyUniqueId,
@@ -529,6 +534,7 @@ extern "C"
B3_SHARED_API void b3GetMeshData(b3PhysicsClientHandle physClient, struct b3MeshData* meshData);
+ B3_SHARED_API b3SharedMemoryCommandHandle b3ResetMeshDataCommandInit(b3PhysicsClientHandle physClient, int bodyUniqueId, int num_vertices, const double* vertices);
B3_SHARED_API b3SharedMemoryCommandHandle b3CreateVisualShapeCommandInit(b3PhysicsClientHandle physClient);
B3_SHARED_API int b3CreateVisualShapeAddSphere(b3SharedMemoryCommandHandle commandHandle, double radius);
diff --git a/examples/SharedMemory/PhysicsClientSharedMemory.cpp b/examples/SharedMemory/PhysicsClientSharedMemory.cpp
index 456a1c4be..3512fe3ef 100644
--- a/examples/SharedMemory/PhysicsClientSharedMemory.cpp
+++ b/examples/SharedMemory/PhysicsClientSharedMemory.cpp
@@ -1521,12 +1521,18 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
b3Warning("Removing user data failed");
break;
}
+ case CMD_RESET_MESH_DATA_FAILED:
+ {
+ b3Warning("resetMeshData failed");
+ break;
+ }
case CMD_REQUEST_USER_DATA_COMPLETED:
case CMD_SYNC_USER_DATA_COMPLETED:
case CMD_REMOVE_USER_DATA_COMPLETED:
case CMD_ADD_USER_DATA_COMPLETED:
case CMD_REMOVE_STATE_FAILED:
case CMD_REMOVE_STATE_COMPLETED:
+ case CMD_RESET_MESH_DATA_COMPLETED:
{
break;
}
diff --git a/examples/SharedMemory/PhysicsDirect.cpp b/examples/SharedMemory/PhysicsDirect.cpp
index 69490ed77..ef72e7e19 100644
--- a/examples/SharedMemory/PhysicsDirect.cpp
+++ b/examples/SharedMemory/PhysicsDirect.cpp
@@ -1306,6 +1306,14 @@ void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd
}
break;
}
+ case CMD_RESET_MESH_DATA_COMPLETED:
+ {
+ break;
+ }
+ case CMD_RESET_MESH_DATA_FAILED:
+ {
+ break;
+ }
case CMD_REMOVE_STATE_FAILED:
{
break;
diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp
index 88b50fcca..708ea7463 100644
--- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp
+++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp
@@ -2250,6 +2250,7 @@ struct ProgrammaticUrdfInterface : public URDFImporterInterface
///pure virtual interfaces, precondition is a valid linkIndex (you can assert/terminate if the linkIndex is out of range)
virtual std::string getLinkName(int linkIndex) const
{
+
std::string linkName = "link";
char numstr[21]; // enough to hold all numbers up to 64-bits
sprintf(numstr, "%d", linkIndex);
@@ -2761,6 +2762,9 @@ void PhysicsServerCommandProcessor::createEmptyDynamicsWorld(int flags)
#endif
}
+ //may help improve run-time performance for many sleeping objects
+ m_data->m_dynamicsWorld->setForceUpdateAllAabbs(false);
+
//Workaround: in a VR application, where we avoid synchronizing between GFX/Physics threads, we don't want to resize this array, so pre-allocate it
m_data->m_dynamicsWorld->getCollisionObjectArray().reserve(128 * 1024);
@@ -5472,6 +5476,44 @@ static void gatherVertices(const btTransform& trans, const btCollisionShape* col
}
}
}
+
+bool PhysicsServerCommandProcessor::processResetMeshDataCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes)
+{
+ bool hasStatus = true;
+ BT_PROFILE("CMD_REQUEST_MESH_DATA");
+ serverStatusOut.m_type = CMD_RESET_MESH_DATA_FAILED;
+ int sizeInBytes = 0;
+
+ InternalBodyHandle* bodyHandle = m_data->m_bodyHandles.getHandle(clientCmd.m_requestMeshDataArgs.m_bodyUniqueId);
+ if (bodyHandle)
+ {
+ int totalBytesPerVertex = sizeof(btVector3);
+ double* vertexUpload = (double*)bufferServerToClient;
+
+#ifndef SKIP_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD
+
+ if (bodyHandle->m_softBody)
+ {
+ btSoftBody* psb = bodyHandle->m_softBody;
+
+ int numVertices = psb->m_nodes.size();
+ if (clientCmd.m_resetMeshDataArgs.m_numVertices == numVertices)
+ {
+ for (int i = 0; i < numVertices; ++i)
+ {
+ btSoftBody::Node& n = psb->m_nodes[i];
+ n.m_x.setValue(vertexUpload[i*3+0], vertexUpload[i*3+1],vertexUpload[i*3+2]);
+ }
+ serverStatusOut.m_type = CMD_RESET_MESH_DATA_COMPLETED;
+ }
+ }
+#endif //SKIP_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD
+ }
+ serverStatusOut.m_numDataStreamBytes = 0;
+
+ return hasStatus;
+}
+
bool PhysicsServerCommandProcessor::processRequestMeshDataCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes)
{
bool hasStatus = true;
@@ -8010,6 +8052,129 @@ bool PhysicsServerCommandProcessor::processRequestActualStateCommand(const struc
return hasStatus;
}
+bool PhysicsServerCommandProcessor::processRequestDeformableContactpointHelper(const struct SharedMemoryCommand& clientCmd)
+{
+#ifndef SKIP_DEFORMABLE_BODY
+ btDeformableMultiBodyDynamicsWorld* deformWorld = getDeformableWorld();
+ if (!deformWorld)
+ {
+ return false;
+ }
+ int numSoftbodyContact = 0;
+ for (int i = deformWorld->getSoftBodyArray().size() - 1; i >= 0; i--)
+ {
+ numSoftbodyContact += deformWorld->getSoftBodyArray()[i]->m_faceRigidContacts.size();
+ }
+ int num_contact_points = m_data->m_cachedContactPoints.size();
+ m_data->m_cachedContactPoints.reserve(num_contact_points + numSoftbodyContact);
+
+ for (int i = deformWorld->getSoftBodyArray().size() - 1; i >= 0; i--)
+ {
+ btSoftBody* psb = deformWorld->getSoftBodyArray()[i];
+ for (int c = 0; c < psb->m_faceRigidContacts.size(); c++)
+ {
+ const btSoftBody::DeformableFaceRigidContact* contact = &psb->m_faceRigidContacts[i];
+ //convert rigidbody contact
+ int linkIndexA = -1;
+ int linkIndexB = -1;
+ int objectIndexA = psb->getUserIndex2();
+
+ int objectIndexB = -1;
+ const btRigidBody* bodyB = btRigidBody::upcast(contact->m_cti.m_colObj);
+ if (bodyB)
+ {
+ objectIndexB = bodyB->getUserIndex2();
+ }
+ const btMultiBodyLinkCollider* mblB = btMultiBodyLinkCollider::upcast(contact->m_cti.m_colObj);
+ if (mblB && mblB->m_multiBody)
+ {
+ linkIndexB = mblB->m_link;
+ objectIndexB = mblB->m_multiBody->getUserIndex2();
+ }
+
+ //apply the filter, if the user provides it
+ bool swap = false;
+ if (clientCmd.m_requestContactPointArguments.m_objectAIndexFilter >= 0)
+ {
+ if (clientCmd.m_requestContactPointArguments.m_objectAIndexFilter == objectIndexA)
+ {
+ swap = false;
+ }
+ else if (clientCmd.m_requestContactPointArguments.m_objectAIndexFilter == objectIndexB)
+ {
+ swap = true;
+ }
+ else
+ {
+ continue;
+ }
+ }
+
+ if (swap)
+ {
+ std::swap(objectIndexA, objectIndexB);
+ std::swap(linkIndexA, linkIndexB);
+ }
+
+ //apply the second object filter, if the user provides it
+ if (clientCmd.m_requestContactPointArguments.m_objectBIndexFilter >= 0)
+ {
+ if (clientCmd.m_requestContactPointArguments.m_objectBIndexFilter != objectIndexB)
+ {
+ continue;
+ }
+ }
+
+ if (
+ (clientCmd.m_updateFlags & CMD_REQUEST_CONTACT_POINT_HAS_LINK_INDEX_A_FILTER) &&
+ clientCmd.m_requestContactPointArguments.m_linkIndexAIndexFilter != linkIndexA)
+ {
+ continue;
+ }
+
+ if (
+ (clientCmd.m_updateFlags & CMD_REQUEST_CONTACT_POINT_HAS_LINK_INDEX_B_FILTER) &&
+ clientCmd.m_requestContactPointArguments.m_linkIndexBIndexFilter != linkIndexB)
+ {
+ continue;
+ }
+ b3ContactPointData pt;
+ pt.m_bodyUniqueIdA = objectIndexA;
+ pt.m_bodyUniqueIdB = objectIndexB;
+ pt.m_contactDistance = contact->m_cti.m_offset;
+ pt.m_contactFlags = 0;
+ pt.m_linkIndexA = linkIndexA;
+ pt.m_linkIndexB = linkIndexB;
+ for (int j = 0; j < 3; j++)
+ {
+ if (swap)
+ {
+ pt.m_contactNormalOnBInWS[j] = -contact->m_cti.m_normal[j];
+ pt.m_positionOnAInWS[j] = contact->m_cti.m_normal[j];
+ pt.m_positionOnBInWS[j] = -contact->m_cti.m_normal[j];
+ }
+ else
+ {
+ pt.m_contactNormalOnBInWS[j] = contact->m_cti.m_normal[j];
+ pt.m_positionOnAInWS[j] = -contact->m_cti.m_normal[j];
+ pt.m_positionOnBInWS[j] = contact->m_cti.m_normal[j];
+ }
+ }
+ pt.m_normalForce = 1;
+ pt.m_linearFrictionForce1 = 0;
+ pt.m_linearFrictionForce2 = 0;
+ for (int j = 0; j < 3; j++)
+ {
+ pt.m_linearFrictionDirection1[j] = 0;
+ pt.m_linearFrictionDirection2[j] = 0;
+ }
+ m_data->m_cachedContactPoints.push_back(pt);
+ }
+ }
+#endif
+ return true;
+}
+
bool PhysicsServerCommandProcessor::processRequestContactpointInformationCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes)
{
bool hasStatus = true;
@@ -8152,6 +8317,10 @@ bool PhysicsServerCommandProcessor::processRequestContactpointInformationCommand
m_data->m_cachedContactPoints.push_back(pt);
}
}
+
+#ifndef SKIP_DEFORMABLE_BODY
+ processRequestDeformableContactpointHelper(clientCmd);
+#endif
break;
}
@@ -9751,6 +9920,11 @@ bool PhysicsServerCommandProcessor::processChangeDynamicsInfoCommand(const struc
mb->setAngularDamping(clientCmd.m_changeDynamicsInfoArgs.m_angularDamping);
}
+ if (clientCmd.m_updateFlags & CHANGE_DYNAMICS_INFO_SET_SLEEP_THRESHOLD)
+ {
+ mb->setSleepThreshold(clientCmd.m_changeDynamicsInfoArgs.m_sleepThreshold);
+ }
+
if (linkIndex == -1)
{
if (mb->getBaseCollider())
@@ -10035,6 +10209,7 @@ bool PhysicsServerCommandProcessor::processChangeDynamicsInfoCommand(const struc
btRigidBody* rb = 0;
if (body && body->m_rigidBody)
{
+
if (linkIndex == -1)
{
rb = body->m_rigidBody;
@@ -10170,6 +10345,13 @@ bool PhysicsServerCommandProcessor::processChangeDynamicsInfoCommand(const struc
m_data->m_dynamicsWorld->addCollisionObject(rb, collisionFilterGroup, collisionFilterMask);
}
}
+
+ if (clientCmd.m_updateFlags & CHANGE_DYNAMICS_INFO_SET_SLEEP_THRESHOLD)
+ {
+ btScalar threshold2 = btSqrt(clientCmd.m_changeDynamicsInfoArgs.m_sleepThreshold);
+ rb->setSleepingThresholds(threshold2,threshold2);
+ }
+
}
}
#ifndef SKIP_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD
@@ -10363,6 +10545,12 @@ bool PhysicsServerCommandProcessor::processGetDynamicsInfoCommand(const struct S
serverCmd.m_dynamicsInfo.m_bodyType = BT_RIGID_BODY;
btRigidBody* rb = body->m_rigidBody;
+
+
+ serverCmd.m_dynamicsInfo.m_localInertialDiagonal[0] = rb->getLocalInertia()[0];
+ serverCmd.m_dynamicsInfo.m_localInertialDiagonal[1] = rb->getLocalInertia()[1];
+ serverCmd.m_dynamicsInfo.m_localInertialDiagonal[2] = rb->getLocalInertia()[2];
+
serverCmd.m_dynamicsInfo.m_lateralFrictionCoeff = rb->getFriction();
serverCmd.m_dynamicsInfo.m_rollingFrictionCoeff = rb->getRollingFriction();
serverCmd.m_dynamicsInfo.m_spinningFrictionCoeff = rb->getSpinningFriction();
@@ -11273,6 +11461,10 @@ bool PhysicsServerCommandProcessor::processConfigureOpenGLVisualizerCommand(cons
{
m_data->m_guiHelper->getRenderInterface()->setLightPosition(clientCmd.m_configureOpenGLVisualizerArguments.m_lightPosition);
}
+ if (clientCmd.m_updateFlags & COV_SET_RGB_BACKGROUND)
+ {
+ m_data->m_guiHelper->setBackgroundColor(clientCmd.m_configureOpenGLVisualizerArguments.m_rgbBackground);
+ }
if (clientCmd.m_updateFlags & COV_SET_SHADOWMAP_RESOLUTION)
{
m_data->m_guiHelper->getRenderInterface()->setShadowMapResolution(clientCmd.m_configureOpenGLVisualizerArguments.m_shadowMapResolution);
@@ -11658,7 +11850,6 @@ bool PhysicsServerCommandProcessor::processApplyExternalForceCommand(const struc
else
{
int link = clientCmd.m_externalForceArguments.m_linkIds[i];
-
btVector3 forceWorld = isLinkFrame ? mb->getLink(link).m_cachedWorldTransform.getBasis() * tmpForce : tmpForce;
btVector3 relPosWorld = isLinkFrame ? mb->getLink(link).m_cachedWorldTransform.getBasis() * tmpPosition : tmpPosition - mb->getLink(link).m_cachedWorldTransform.getOrigin();
mb->addLinkForce(link, forceWorld);
@@ -11668,20 +11859,20 @@ bool PhysicsServerCommandProcessor::processApplyExternalForceCommand(const struc
}
if ((clientCmd.m_externalForceArguments.m_forceFlags[i] & EF_TORQUE) != 0)
{
- btVector3 torqueLocal(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
+ btVector3 tmpTorque(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
if (clientCmd.m_externalForceArguments.m_linkIds[i] == -1)
{
- btVector3 torqueWorld = isLinkFrame ? torqueLocal : mb->getBaseWorldTransform().getBasis() * torqueLocal;
+ btVector3 torqueWorld = isLinkFrame ? mb->getBaseWorldTransform().getBasis() * tmpTorque : tmpTorque;
mb->addBaseTorque(torqueWorld);
//b3Printf("apply base torque of %f,%f,%f\n", torqueWorld[0],torqueWorld[1],torqueWorld[2]);
}
else
{
int link = clientCmd.m_externalForceArguments.m_linkIds[i];
- btVector3 torqueWorld = mb->getLink(link).m_cachedWorldTransform.getBasis() * torqueLocal;
+ btVector3 torqueWorld = isLinkFrame ? mb->getLink(link).m_cachedWorldTransform.getBasis() * tmpTorque : tmpTorque;
mb->addLinkTorque(link, torqueWorld);
//b3Printf("apply link torque of %f,%f,%f\n", torqueWorld[0],torqueWorld[1],torqueWorld[2]);
}
@@ -11693,26 +11884,26 @@ bool PhysicsServerCommandProcessor::processApplyExternalForceCommand(const struc
btRigidBody* rb = body->m_rigidBody;
if ((clientCmd.m_externalForceArguments.m_forceFlags[i] & EF_FORCE) != 0)
{
- btVector3 forceLocal(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
- btVector3 positionLocal(
+ btVector3 tmpForce(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
+ btVector3 tmpPosition(
clientCmd.m_externalForceArguments.m_positions[i * 3 + 0],
clientCmd.m_externalForceArguments.m_positions[i * 3 + 1],
clientCmd.m_externalForceArguments.m_positions[i * 3 + 2]);
- btVector3 forceWorld = isLinkFrame ? forceLocal : rb->getWorldTransform().getBasis() * forceLocal;
- btVector3 relPosWorld = isLinkFrame ? positionLocal : rb->getWorldTransform().getBasis() * positionLocal;
+ btVector3 forceWorld = isLinkFrame ? rb->getWorldTransform().getBasis() * tmpForce : tmpForce;
+ btVector3 relPosWorld = isLinkFrame ? rb->getWorldTransform().getBasis() * tmpPosition : tmpPosition - rb->getWorldTransform().getOrigin();
rb->applyForce(forceWorld, relPosWorld);
}
if ((clientCmd.m_externalForceArguments.m_forceFlags[i] & EF_TORQUE) != 0)
{
- btVector3 torqueLocal(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
+ btVector3 tmpTorque(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
- btVector3 torqueWorld = isLinkFrame ? torqueLocal : rb->getWorldTransform().getBasis() * torqueLocal;
+ btVector3 torqueWorld = isLinkFrame ? rb->getWorldTransform().getBasis() * tmpTorque : tmpTorque;
rb->applyTorque(torqueWorld);
}
}
@@ -11724,16 +11915,16 @@ bool PhysicsServerCommandProcessor::processApplyExternalForceCommand(const struc
int link = clientCmd.m_externalForceArguments.m_linkIds[i];
if ((clientCmd.m_externalForceArguments.m_forceFlags[i] & EF_FORCE) != 0)
{
- btVector3 forceLocal(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
- clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
- btVector3 positionLocal(
+ btVector3 tmpForce(clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 0],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 1],
+ clientCmd.m_externalForceArguments.m_forcesAndTorques[i * 3 + 2]);
+ btVector3 tmpPosition(
clientCmd.m_externalForceArguments.m_positions[i * 3 + 0],
clientCmd.m_externalForceArguments.m_positions[i * 3 + 1],
clientCmd.m_externalForceArguments.m_positions[i * 3 + 2]);
- btVector3 forceWorld = isLinkFrame ? forceLocal : sb->getWorldTransform().getBasis() * forceLocal;
- btVector3 relPosWorld = isLinkFrame ? positionLocal : sb->getWorldTransform().getBasis() * positionLocal;
+ btVector3 forceWorld = isLinkFrame ? sb->getWorldTransform().getBasis() * tmpForce : tmpForce;
+ btVector3 relPosWorld = isLinkFrame ? sb->getWorldTransform().getBasis() * tmpPosition : tmpPosition - sb->getWorldTransform().getOrigin();
if (link >= 0 && link < sb->m_nodes.size())
{
sb->addForce(forceWorld, link);
@@ -14182,6 +14373,12 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
hasStatus = processRequestMeshDataCommand(clientCmd, serverStatusOut, bufferServerToClient, bufferSizeInBytes);
break;
}
+ case CMD_RESET_MESH_DATA:
+ {
+ hasStatus = processResetMeshDataCommand(clientCmd, serverStatusOut, bufferServerToClient, bufferSizeInBytes);
+ break;
+ }
+
case CMD_CREATE_MULTI_BODY:
{
hasStatus = processCreateMultiBodyCommand(clientCmd, serverStatusOut, bufferServerToClient, bufferSizeInBytes);
@@ -14602,7 +14799,12 @@ bool PhysicsServerCommandProcessor::pickBody(const btVector3& rayFromWorld, cons
{
m_data->m_pickedBody = body;
m_data->m_savedActivationState = body->getActivationState();
+ if (m_data->m_savedActivationState==ISLAND_SLEEPING)
+ {
+ m_data->m_savedActivationState = ACTIVE_TAG;
+ }
m_data->m_pickedBody->setActivationState(DISABLE_DEACTIVATION);
+ m_data->m_pickedBody->setDeactivationTime(0);
//printf("pickPos=%f,%f,%f\n",pickPos.getX(),pickPos.getY(),pickPos.getZ());
btVector3 localPivot = body->getCenterOfMassTransform().inverse() * pickPos;
btPoint2PointConstraint* p2p = new btPoint2PointConstraint(*body, localPivot);
diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.h b/examples/SharedMemory/PhysicsServerCommandProcessor.h
index d456675df..ad6c403aa 100644
--- a/examples/SharedMemory/PhysicsServerCommandProcessor.h
+++ b/examples/SharedMemory/PhysicsServerCommandProcessor.h
@@ -32,6 +32,7 @@ protected:
bool processCreateCollisionShapeCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processCreateVisualShapeCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processRequestMeshDataCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
+ bool processResetMeshDataCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processCustomCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processUserDebugDrawCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processSetVRCameraStateCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
@@ -44,6 +45,7 @@ protected:
bool processSendDesiredStateCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processRequestActualStateCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processRequestContactpointInformationCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
+ bool processRequestDeformableContactpointHelper(const struct SharedMemoryCommand& clientCmd);
bool processRequestBodyInfoCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processLoadSDFCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
bool processCreateMultiBodyCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes);
diff --git a/examples/SharedMemory/PhysicsServerExample.cpp b/examples/SharedMemory/PhysicsServerExample.cpp
index 3a33be95d..6613de42b 100644
--- a/examples/SharedMemory/PhysicsServerExample.cpp
+++ b/examples/SharedMemory/PhysicsServerExample.cpp
@@ -133,6 +133,7 @@ enum MultiThreadedGUIHelperCommunicationEnums
eGUIUserDebugRemoveAllParameters,
eGUIHelperResetCamera,
eGUIHelperChangeGraphicsInstanceFlags,
+ eGUIHelperSetRgbBackground,
};
#include <stdio.h>
@@ -709,7 +710,7 @@ public:
{
BT_PROFILE("mainThreadRelease");
- getCriticalSection()->setSharedParam(1, eGUIHelperIdle);
+ setSharedParam(1, eGUIHelperIdle);
getCriticalSection3()->lock();
getCriticalSection2()->unlock();
getCriticalSection()->lock();
@@ -724,7 +725,9 @@ public:
if (m_skipGraphicsUpdate)
{
+ this->m_csGUI->lock();
getCriticalSection()->setSharedParam(1, eGUIHelperIdle);
+ this->m_csGUI->unlock();
m_cs->unlock();
return;
}
@@ -734,9 +737,18 @@ public:
m_cs3->lock();
m_cs3->unlock();
- while (m_cs->getSharedParam(1) != eGUIHelperIdle)
+
+ m_csGUI->lock();
+ unsigned int cachedSharedParam = m_cs->getSharedParam(1);
+ m_csGUI->unlock();
+
+
+ while (cachedSharedParam != eGUIHelperIdle)
{
b3Clock::usleep(0);
+ m_csGUI->lock();
+ cachedSharedParam = m_cs->getSharedParam(1);
+ m_csGUI->unlock();
}
}
@@ -818,10 +830,11 @@ public:
btVector3 m_color3;
virtual void createRigidBodyGraphicsObject(btRigidBody* body, const btVector3& color)
{
- m_body = body;
- m_color3 = color;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperCreateRigidBodyGraphicsObject);
+
+ m_body = body;
+ m_color3 = color;
+ setSharedParam(1, eGUIHelperCreateRigidBodyGraphicsObject);
workerThreadWait();
}
@@ -830,19 +843,21 @@ public:
virtual void createCollisionObjectGraphicsObject(btCollisionObject* obj, const btVector3& color)
{
- m_obj = obj;
- m_color2 = color;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperCreateCollisionObjectGraphicsObject);
+
+ m_obj = obj;
+ m_color2 = color;
+ setSharedParam(1, eGUIHelperCreateCollisionObjectGraphicsObject);
workerThreadWait();
}
btCollisionShape* m_colShape;
virtual void createCollisionShapeGraphicsObject(btCollisionShape* collisionShape)
{
- m_colShape = collisionShape;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperCreateCollisionShapeGraphicsObject);
+
+ m_colShape = collisionShape;
+ setSharedParam(1, eGUIHelperCreateCollisionShapeGraphicsObject);
workerThreadWait();
}
@@ -889,9 +904,10 @@ public:
virtual void removeTexture(int textureUid)
{
- m_removeTextureUid = textureUid;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperRemoveTexture);
+
+ m_removeTextureUid = textureUid;
+ setSharedParam(1, eGUIHelperRemoveTexture);
workerThreadWait();
}
@@ -901,11 +917,12 @@ public:
int m_updateNumShapeVertices;
virtual void updateShape(int shapeIndex, float* vertices, int numVertices)
{
- m_updateShapeIndex = shapeIndex;
+ m_cs->lock();
+
+ m_updateShapeIndex = shapeIndex;
m_updateShapeVertices = vertices;
m_updateNumShapeVertices = numVertices;
- m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperUpdateShape);
+ setSharedParam(1, eGUIHelperUpdateShape);
workerThreadWait();
}
virtual int registerTexture(const unsigned char* texels, int width, int height)
@@ -915,12 +932,13 @@ public:
{
return *cachedTexture;
}
- m_texels = texels;
+ m_cs->lock();
+
+ m_texels = texels;
m_textureWidth = width;
m_textureHeight = height;
- m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperRegisterTexture);
+ setSharedParam(1, eGUIHelperRegisterTexture);
workerThreadWait();
m_cachedTextureIds.insert(texels, m_textureId);
@@ -928,31 +946,44 @@ public:
}
virtual int registerGraphicsShape(const float* vertices, int numvertices, const int* indices, int numIndices, int primitiveType, int textureId)
{
- m_vertices = vertices;
+ m_cs->lock();
+ m_csGUI->lock();
+ m_vertices = vertices;
m_numvertices = numvertices;
m_indices = indices;
m_numIndices = numIndices;
m_primitiveType = primitiveType;
m_textureId = textureId;
-
- m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperRegisterGraphicsShape);
+ m_csGUI->unlock();
+ setSharedParam(1, eGUIHelperRegisterGraphicsShape);
workerThreadWait();
- return m_shapeIndex;
+ m_csGUI->lock();
+ int shapeIndex = m_shapeIndex;
+ m_csGUI->unlock();
+
+
+ return shapeIndex;
}
int m_visualizerFlag;
int m_visualizerEnable;
int m_renderedFrames;
+ void setSharedParam(int slot, int param)
+ {
+ m_csGUI->lock();
+ m_cs->setSharedParam(slot, param);
+ m_csGUI->unlock();
+ }
void setVisualizerFlag(int flag, int enable)
{
- m_visualizerFlag = flag;
+ m_cs->lock();
+
+ m_visualizerFlag = flag;
m_visualizerEnable = enable;
- m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperSetVisualizerFlag);
+ setSharedParam(1, eGUIHelperSetVisualizerFlag);
workerThreadWait();
}
@@ -970,16 +1001,16 @@ public:
m_scaling = scaling;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperRegisterGraphicsInstance);
+ setSharedParam(1, eGUIHelperRegisterGraphicsInstance);
workerThreadWait();
return m_instanceId;
}
virtual void removeAllGraphicsInstances()
{
+ m_cs->lock();
m_cachedTextureIds.clear();
- m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperRemoveAllGraphicsInstances);
+ setSharedParam(1, eGUIHelperRemoveAllGraphicsInstances);
workerThreadWait();
}
@@ -988,7 +1019,7 @@ public:
{
m_graphicsInstanceRemove = graphicsUid;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperRemoveGraphicsInstance);
+ setSharedParam(1, eGUIHelperRemoveGraphicsInstance);
workerThreadWait();
}
@@ -999,7 +1030,7 @@ public:
{
m_getShapeIndex_instance = instance;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperGetShapeIndexFromInstance);
+ setSharedParam(1, eGUIHelperGetShapeIndexFromInstance);
getShapeIndex_shapeIndex = -1;
workerThreadWait();
return getShapeIndex_shapeIndex;
@@ -1012,7 +1043,7 @@ public:
m_graphicsInstanceChangeTextureShapeIndex = shapeIndex;
m_graphicsInstanceChangeTextureId = textureUid;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperChangeGraphicsInstanceTextureId);
+ setSharedParam(1, eGUIHelperChangeGraphicsInstanceTextureId);
workerThreadWait();
}
@@ -1028,7 +1059,7 @@ public:
m_changeTextureWidth = width;
m_changeTextureHeight = height;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperChangeTexture);
+ setSharedParam(1, eGUIHelperChangeTexture);
workerThreadWait();
}
@@ -1042,7 +1073,7 @@ public:
m_rgbaColor[2] = rgbaColor[2];
m_rgbaColor[3] = rgbaColor[3];
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperChangeGraphicsInstanceRGBAColor);
+ setSharedParam(1, eGUIHelperChangeGraphicsInstanceRGBAColor);
workerThreadWait();
}
@@ -1054,11 +1085,22 @@ public:
m_graphicsInstanceFlagsInstanceUid = instanceUid;
m_graphicsInstanceFlags = flags;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperChangeGraphicsInstanceFlags);
+ setSharedParam(1, eGUIHelperChangeGraphicsInstanceFlags);
workerThreadWait();
}
-
+ double m_rgbBackground[3];
+ virtual void setBackgroundColor(const double rgbBackground[3])
+ {
+ m_cs->lock();
+ m_rgbBackground[0] = rgbBackground[0];
+ m_rgbBackground[1] = rgbBackground[1];
+ m_rgbBackground[2] = rgbBackground[2];
+
+ setSharedParam(1, eGUIHelperSetRgbBackground);
+ workerThreadWait();
+
+ }
int m_graphicsInstanceChangeScaling;
@@ -1070,7 +1112,7 @@ public:
m_baseScaling[1] = scaling[1];
m_baseScaling[2] = scaling[2];
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperChangeGraphicsInstanceScaling);
+ setSharedParam(1, eGUIHelperChangeGraphicsInstanceScaling);
workerThreadWait();
}
@@ -1083,7 +1125,7 @@ public:
m_specularColor[1] = specularColor[1];
m_specularColor[2] = specularColor[2];
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperChangeGraphicsInstanceSpecularColor);
+ setSharedParam(1, eGUIHelperChangeGraphicsInstanceSpecularColor);
workerThreadWait();
}
@@ -1134,7 +1176,7 @@ public:
#ifdef SYNC_CAMERA_USING_GUI_CS
m_csGUI->unlock();
#else
- m_cs->setSharedParam(1, eGUIHelperResetCamera);
+ setSharedParam(1, eGUIHelperResetCamera);
workerThreadWait();
m_childGuiHelper->resetCamera(camDist, yaw, pitch, camPosX, camPosY, camPosZ);
#endif //SYNC_CAMERA_USING_GUI_CS
@@ -1182,7 +1224,7 @@ public:
m_destinationHeight = destinationHeight;
m_numPixelsCopied = numPixelsCopied;
- m_cs->setSharedParam(1, eGUIHelperCopyCameraImageData);
+ setSharedParam(1, eGUIHelperCopyCameraImageData);
workerThreadWait();
}
@@ -1209,7 +1251,7 @@ public:
m_destinationHeight = destinationHeight;
m_numPixelsCopied = numPixelsCopied;
- m_cs->setSharedParam(1, eGUIHelperDisplayCameraImageData);
+ setSharedParam(1, eGUIHelperDisplayCameraImageData);
workerThreadWait();
}
@@ -1235,7 +1277,7 @@ public:
{
m_dynamicsWorld = rbWorld;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIHelperAutogenerateGraphicsObjects);
+ setSharedParam(1, eGUIHelperAutogenerateGraphicsObjects);
workerThreadWait();
}
@@ -1288,7 +1330,7 @@ public:
m_tmpText.m_textOrientation[3] = orientation[3];
m_cs->lock();
- m_cs->setSharedParam(1, eGUIUserDebugAddText);
+ setSharedParam(1, eGUIUserDebugAddText);
m_resultUserDebugTextUid = -1;
workerThreadWait();
@@ -1321,7 +1363,7 @@ public:
m_tmpParam.m_itemUniqueId = m_uidGenerator++;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIUserDebugAddParameter);
+ setSharedParam(1, eGUIUserDebugAddParameter);
m_userDebugParamUid = -1;
workerThreadWait();
@@ -1376,7 +1418,7 @@ public:
{
m_cs->lock();
- m_cs->setSharedParam(1, eGUIUserDebugAddLine);
+ setSharedParam(1, eGUIUserDebugAddLine);
m_resultDebugLineUid = -1;
workerThreadWait();
}
@@ -1389,20 +1431,20 @@ public:
{
m_removeDebugItemUid = debugItemUniqueId;
m_cs->lock();
- m_cs->setSharedParam(1, eGUIUserDebugRemoveItem);
+ setSharedParam(1, eGUIUserDebugRemoveItem);
workerThreadWait();
}
virtual void removeAllUserDebugItems()
{
m_cs->lock();
- m_cs->setSharedParam(1, eGUIUserDebugRemoveAllItems);
+ setSharedParam(1, eGUIUserDebugRemoveAllItems);
workerThreadWait();
}
virtual void removeAllUserParameters()
{
m_cs->lock();
- m_cs->setSharedParam(1, eGUIUserDebugRemoveAllParameters);
+ setSharedParam(1, eGUIUserDebugRemoveAllParameters);
workerThreadWait();
}
@@ -1414,7 +1456,7 @@ public:
{
m_cs->lock();
m_mp4FileName = mp4FileName;
- m_cs->setSharedParam(1, eGUIDumpFramesToVideo);
+ setSharedParam(1, eGUIDumpFramesToVideo);
workerThreadWait();
m_mp4FileName = 0;
}
@@ -1887,8 +1929,10 @@ void PhysicsServerExample::initPhysics()
}
}
m_args[0].m_cs->lock();
+ m_args[0].m_csGUI->lock();
m_args[0].m_cs->setSharedParam(1, eGUIHelperIdle);
- m_args[0].m_cs->unlock();
+ m_args[0].m_csGUI->unlock();
+ m_args[0].m_cs->unlock();
m_args[0].m_cs2->lock();
{
@@ -1995,7 +2039,12 @@ void PhysicsServerExample::updateGraphics()
}
m_multiThreadedHelper->getCriticalSectionGUI()->unlock();
#endif
- switch (m_multiThreadedHelper->getCriticalSection()->getSharedParam(1))
+
+ m_multiThreadedHelper->getCriticalSectionGUI()->lock();
+ unsigned int cachedSharedParam = m_multiThreadedHelper->getCriticalSection()->getSharedParam(1);
+ m_multiThreadedHelper->getCriticalSectionGUI()->unlock();
+
+ switch (cachedSharedParam)
{
case eGUIHelperCreateCollisionShapeGraphicsObject:
{
@@ -2048,14 +2097,22 @@ void PhysicsServerExample::updateGraphics()
case eGUIHelperRegisterGraphicsShape:
{
B3_PROFILE("eGUIHelperRegisterGraphicsShape");
- m_multiThreadedHelper->m_shapeIndex = m_multiThreadedHelper->m_childGuiHelper->registerGraphicsShape(
+ int shapeIndex = m_multiThreadedHelper->m_childGuiHelper->registerGraphicsShape(
m_multiThreadedHelper->m_vertices,
m_multiThreadedHelper->m_numvertices,
m_multiThreadedHelper->m_indices,
m_multiThreadedHelper->m_numIndices,
m_multiThreadedHelper->m_primitiveType,
m_multiThreadedHelper->m_textureId);
- m_multiThreadedHelper->mainThreadRelease();
+
+ m_multiThreadedHelper->getCriticalSectionGUI()->lock();
+ m_multiThreadedHelper->m_shapeIndex = shapeIndex;
+ m_multiThreadedHelper->getCriticalSectionGUI()->unlock();
+
+
+ m_multiThreadedHelper->mainThreadRelease();
+
+
break;
}
@@ -2267,6 +2324,13 @@ void PhysicsServerExample::updateGraphics()
break;
}
+ case eGUIHelperSetRgbBackground:
+ {
+ m_multiThreadedHelper->m_childGuiHelper->setBackgroundColor(m_multiThreadedHelper->m_rgbBackground);
+ m_multiThreadedHelper->mainThreadRelease();
+ break;
+ }
+
case eGUIHelperChangeGraphicsInstanceScaling:
{
B3_PROFILE("eGUIHelperChangeGraphicsInstanceScaling");
diff --git a/examples/SharedMemory/SharedMemoryCommands.h b/examples/SharedMemory/SharedMemoryCommands.h
index e463b2dc5..5305769c3 100644
--- a/examples/SharedMemory/SharedMemoryCommands.h
+++ b/examples/SharedMemory/SharedMemoryCommands.h
@@ -174,6 +174,7 @@ enum EnumChangeDynamicsInfoFlags
CHANGE_DYNAMICS_INFO_SET_JOINT_LIMITS = 1 << 18,
CHANGE_DYNAMICS_INFO_SET_JOINT_LIMIT_MAX_FORCE = 1 << 19,
CHANGE_DYNAMICS_INFO_SET_DYNAMIC_TYPE = 1 << 20,
+ CHANGE_DYNAMICS_INFO_SET_SLEEP_THRESHOLD = 1 << 21,
};
struct ChangeDynamicsInfoArgs
@@ -205,6 +206,9 @@ struct ChangeDynamicsInfoArgs
double m_jointLimitForce;
int m_dynamicType;
+
+ double m_sleepThreshold;
+
};
struct GetDynamicsInfoArgs
@@ -958,6 +962,7 @@ enum InternalOpenGLVisualizerUpdateFlags
COV_SET_SHADOWMAP_WORLD_SIZE = 16,
COV_SET_REMOTE_SYNC_TRANSFORM_INTERVAL = 32,
COV_SET_SHADOWMAP_INTENSITY = 64,
+ COV_SET_RGB_BACKGROUND = 128,
};
struct ConfigureOpenGLVisualizerRequest
@@ -973,6 +978,7 @@ struct ConfigureOpenGLVisualizerRequest
int m_setFlag;
int m_setEnabled;
double m_shadowMapIntensity;
+ double m_rgbBackground[3];
};
enum
@@ -1134,6 +1140,13 @@ struct b3RequestMeshDataArgs
int m_flags;
};
+struct b3ResetMeshDataArgs
+{
+ int m_bodyUniqueId;
+ int m_numVertices;
+ int m_flags;
+};
+
struct b3SendMeshDataArgs
{
int m_numVerticesCopied;
@@ -1202,6 +1215,8 @@ struct SharedMemoryCommand
struct UserDataRequestArgs m_removeUserDataRequestArgs;
struct b3CollisionFilterArgs m_collisionFilterArgs;
struct b3RequestMeshDataArgs m_requestMeshDataArgs;
+ struct b3ResetMeshDataArgs m_resetMeshDataArgs;
+
};
};
diff --git a/examples/SharedMemory/SharedMemoryPublic.h b/examples/SharedMemory/SharedMemoryPublic.h
index 9ea8c1694..2649fc44d 100644
--- a/examples/SharedMemory/SharedMemoryPublic.h
+++ b/examples/SharedMemory/SharedMemoryPublic.h
@@ -117,6 +117,7 @@ enum EnumSharedMemoryClientCommand
CMD_REQUEST_MESH_DATA,
CMD_PERFORM_COLLISION_DETECTION,
+ CMD_RESET_MESH_DATA,
//don't go beyond this command!
CMD_MAX_CLIENT_COMMANDS,
};
@@ -241,6 +242,8 @@ enum EnumSharedMemoryServerStatus
CMD_REQUEST_MESH_DATA_FAILED,
CMD_PERFORM_COLLISION_DETECTION_COMPLETED,
+ CMD_RESET_MESH_DATA_COMPLETED,
+ CMD_RESET_MESH_DATA_FAILED,
//don't go beyond 'CMD_MAX_SERVER_COMMANDS!
CMD_MAX_SERVER_COMMANDS
};
diff --git a/examples/SoftDemo/SoftDemo.cpp b/examples/SoftDemo/SoftDemo.cpp
index 046cd9b15..7d65000d8 100644
--- a/examples/SoftDemo/SoftDemo.cpp
+++ b/examples/SoftDemo/SoftDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/SoftDemo/SoftDemo.h b/examples/SoftDemo/SoftDemo.h
index 16de20510..23dbf256c 100644
--- a/examples/SoftDemo/SoftDemo.h
+++ b/examples/SoftDemo/SoftDemo.h
@@ -1,7 +1,7 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/TinyRenderer/TinyRenderer.cpp b/examples/TinyRenderer/TinyRenderer.cpp
index 4ea51ebec..4340ce822 100644
--- a/examples/TinyRenderer/TinyRenderer.cpp
+++ b/examples/TinyRenderer/TinyRenderer.cpp
@@ -213,6 +213,7 @@ TinyRenderObjectData::TinyRenderObjectData(TGAImage& rgbColorBuffer, b3AlignedOb
m_lightAmbientCoeff = 0.6;
m_lightDiffuseCoeff = 0.35;
m_lightSpecularCoeff = 0.05;
+
}
TinyRenderObjectData::TinyRenderObjectData(TGAImage& rgbColorBuffer, b3AlignedObjectArray<float>& depthBuffer, b3AlignedObjectArray<float>* shadowBuffer, b3AlignedObjectArray<int>* segmentationMaskBuffer, int objectIndex, int linkIndex)
@@ -254,6 +255,7 @@ TinyRenderObjectData::TinyRenderObjectData(TGAImage& rgbColorBuffer, b3AlignedOb
Vec3f center(0, 0, 0);
Vec3f up(0, 0, 1);
m_lightDirWorld.setValue(0, 0, 0);
+ m_lightDistance = 10;
m_lightColor.setValue(1, 1, 1);
m_localScaling.setValue(1, 1, 1);
m_modelMatrix = Matrix::identity();
diff --git a/examples/TinyRenderer/main.cpp b/examples/TinyRenderer/main.cpp
index fed8c39ca..0cd2e3cb6 100644
--- a/examples/TinyRenderer/main.cpp
+++ b/examples/TinyRenderer/main.cpp
@@ -56,7 +56,8 @@ void MyKeyboardCallback(int keycode, int state)
sOldKeyboardCB(keycode, state);
}
#include "TinyRenderer.h"
-float color2[4] = { 1,0,0,1 };
+#include "our_gl.h"
+
int main(int argc, char* argv[])
{
@@ -108,10 +109,11 @@ int main(int argc, char* argv[])
b3Vector3 pos = b3MakeVector3(0, 0, 0);
b3Quaternion orn(0, 0, 0, 1);
+ float color[4] = {1,1,1,1};
b3Vector3 scaling = b3MakeVector3(1, 1, 1);
- //app->m_renderer->registerGraphicsInstance(cubeIndex, pos, orn, color, scaling);
- //app->m_renderer->writeTransforms();
+ app->m_renderer->registerGraphicsInstance(cubeIndex, pos, orn, color, scaling);
+ app->m_renderer->writeTransforms();
do
{
@@ -160,6 +162,15 @@ int main(int argc, char* argv[])
tr.setOrigin(org);
tr.getOpenGLMatrix(modelMat);
+ TinyRender::Vec3f eye(1,1,3);
+ TinyRender::Vec3f center(0,0,0);
+ TinyRender::Vec3f up(0,1,0);
+
+ renderData.m_viewMatrix = TinyRender::lookat(eye, center, up);
+ renderData.m_viewportMatrix = TinyRender::viewport(gWidth/8, gHeight/8, gWidth*3/4, gHeight*3/4);
+ renderData.m_projectionMatrix = TinyRender::projection(-1.f/(eye-center).norm());
+
+
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
@@ -170,6 +181,7 @@ int main(int argc, char* argv[])
}
//render the object
+ float color2[4] = { 1,1,1,1 };
renderData.m_model->setColorRGBA(color2);
TinyRenderer::renderObject(renderData);
diff --git a/examples/Utils/b3BulletDefaultFileIO.h b/examples/Utils/b3BulletDefaultFileIO.h
index fa972de01..92ff34ee1 100644
--- a/examples/Utils/b3BulletDefaultFileIO.h
+++ b/examples/Utils/b3BulletDefaultFileIO.h
@@ -6,6 +6,8 @@
#include "b3ResourcePath.h"
#include <stdio.h>
+#include <string.h>
+
#define B3_FILEIO_MAX_FILES 1024
struct b3BulletDefaultFileIO : public CommonFileIOInterface
@@ -155,6 +157,7 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
FILE* f = m_fileHandles[fileHandle];
if (f)
{
+ memset(destBuffer, 0, numBytes);
char* txt = ::fgets(destBuffer, numBytes, m_fileHandles[fileHandle]);
for (int i=0;i<numBytes;i++)
{
diff --git a/examples/Vehicles/Hinge2Vehicle.h b/examples/Vehicles/Hinge2Vehicle.h
index d4ac4bc33..be9784f55 100644
--- a/examples/Vehicles/Hinge2Vehicle.h
+++ b/examples/Vehicles/Hinge2Vehicle.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2015 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2015 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/VoronoiFracture/VoronoiFractureDemo.cpp b/examples/VoronoiFracture/VoronoiFractureDemo.cpp
index bbc79b248..0389ef922 100644
--- a/examples/VoronoiFracture/VoronoiFractureDemo.cpp
+++ b/examples/VoronoiFracture/VoronoiFractureDemo.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/VoronoiFracture/VoronoiFractureDemo.h b/examples/VoronoiFracture/VoronoiFractureDemo.h
index 49e7ace2d..8b4602882 100644
--- a/examples/VoronoiFracture/VoronoiFractureDemo.h
+++ b/examples/VoronoiFracture/VoronoiFractureDemo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/VoronoiFracture/btConvexConvexMprAlgorithm.cpp b/examples/VoronoiFracture/btConvexConvexMprAlgorithm.cpp
index c9d77460e..f9cd6bde7 100644
--- a/examples/VoronoiFracture/btConvexConvexMprAlgorithm.cpp
+++ b/examples/VoronoiFracture/btConvexConvexMprAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2014 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2014 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/VoronoiFracture/btConvexConvexMprAlgorithm.h b/examples/VoronoiFracture/btConvexConvexMprAlgorithm.h
index 40f273531..e1383ad91 100644
--- a/examples/VoronoiFracture/btConvexConvexMprAlgorithm.h
+++ b/examples/VoronoiFracture/btConvexConvexMprAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/examples/pybullet/examples/draw_frames.py b/examples/pybullet/examples/draw_frames.py
new file mode 100644
index 000000000..0e24192ba
--- /dev/null
+++ b/examples/pybullet/examples/draw_frames.py
@@ -0,0 +1,370 @@
+import colorsys
+from enum import Enum
+import numpy as np
+import pybullet as p
+import time
+import typing
+
+p.connect(p.GUI)
+p.setGravity(0, 0, -10)
+p.setRealTimeSimulation(0)
+p.setTimeStep(1 / 1000)
+
+test_case = 1
+rigid_body = False
+apply_force_torque = True
+apply_force_local = True
+apply_torque_local = True
+
+
+if test_case == 1:
+ cs_id = p.createCollisionShape(p.GEOM_BOX,
+ halfExtents=[0.25, 0.25, 0.25],
+ collisionFramePosition=[0.25, 0, 0],
+ collisionFrameOrientation=p.getQuaternionFromEuler([0, 0, 0]))
+ vs_id = p.createVisualShape(p.GEOM_BOX,
+ halfExtents=[0.25, 0.25, 0.25],
+ visualFramePosition=[0.25, 0.25, 0],
+ visualFrameOrientation=p.getQuaternionFromEuler([0, 0, 0]))
+ body = p.createMultiBody(baseMass=1,
+ baseCollisionShapeIndex=cs_id,
+ baseVisualShapeIndex=vs_id,
+ basePosition=[0, 0, 2],
+ baseOrientation=p.getQuaternionFromEuler([-1.7, -0.8, 0.1]),
+ baseInertialFramePosition=[0, 0.5, 0],
+ baseInertialFrameOrientation=p.getQuaternionFromEuler([0.6, 0, 0.4]),
+ useMaximalCoordinates=rigid_body)
+else:
+ cs_id = p.createCollisionShape(p.GEOM_BOX,
+ halfExtents=[0.25, 0.25, 0.25],
+ collisionFramePosition=[0, 0, 0],
+ collisionFrameOrientation=p.getQuaternionFromEuler([0, 0, 0]))
+ vs_id = p.createVisualShape(p.GEOM_BOX,
+ halfExtents=[0.25, 0.25, 0.25],
+ visualFramePosition=[0, 0, 0],
+ visualFrameOrientation=p.getQuaternionFromEuler([0, 0, 0]))
+ body = p.createMultiBody(baseMass=1,
+ baseCollisionShapeIndex=cs_id,
+ baseVisualShapeIndex=vs_id,
+ basePosition=[0, 0, 2],
+ baseOrientation=p.getQuaternionFromEuler([0.9, 0.3, 0]),
+ baseInertialFramePosition=[0, 0, 0],
+ baseInertialFrameOrientation=p.getQuaternionFromEuler([0, 0, 0]),
+ linkMasses=[1],
+ linkCollisionShapeIndices=[cs_id],
+ linkVisualShapeIndices=[vs_id],
+ linkPositions=[[1, 0, 0]],
+ linkOrientations=[p.getQuaternionFromEuler([0, 0, 0])],
+ linkInertialFramePositions=[[0, 0, 0]],
+ linkInertialFrameOrientations=[p.getQuaternionFromEuler([0, 0, 0])],
+ linkParentIndices=[0],
+ linkJointTypes=[p.JOINT_FIXED],
+ linkJointAxis=[[1, 0, 0]],
+ useMaximalCoordinates=False)
+
+
+def get_world_link_pose(body_unique_id: int, link_index: int):
+ """Pose of link frame with respect to world frame expressed in world frame.
+
+ Args:
+ body_unique_id (int): The body unique id, as returned by loadURDF, etc.
+ link_index (int): Link index or -1 for the base.
+
+ Returns:
+ pos_orn (tuple): See description.
+ """
+ if link_index == -1:
+ world_inertial_pose = get_world_inertial_pose(body_unique_id, -1)
+ dynamics_info = p.getDynamicsInfo(body_unique_id, -1)
+ local_inertial_pose = (dynamics_info[3], dynamics_info[4])
+
+ local_inertial_pose_inv = p.invertTransform(local_inertial_pose[0], local_inertial_pose[1])
+ pos_orn = p.multiplyTransforms(world_inertial_pose[0],
+ world_inertial_pose[1],
+ local_inertial_pose_inv[0],
+ local_inertial_pose_inv[1])
+ else:
+ state = p.getLinkState(body_unique_id, link_index)
+ pos_orn = (state[4], state[5])
+
+ return pos_orn
+
+
+def get_world_inertial_pose(body_unique_id: int, link_index: int):
+ """Pose of inertial frame with respect to world frame expressed in world frame.
+
+ Args:
+ body_unique_id (int): The body unique id, as returned by loadURDF, etc.
+ link_index (int): Link index or -1 for the base.
+
+ Returns:
+ pos_orn (tuple): See description.
+ """
+ if link_index == -1:
+ pos_orn = p.getBasePositionAndOrientation(body_unique_id)
+ else:
+ state = p.getLinkState(body_unique_id, link_index)
+ pos_orn = (state[0], state[1])
+
+ return pos_orn
+
+
+def get_world_visual_pose(body_unique_id: int, link_index: int):
+ """Pose of visual frame with respect to world frame expressed in world frame.
+
+ Args:
+ body_unique_id (int): The body unique id, as returned by loadURDF, etc.
+ link_index (int): Link index or -1 for the base.
+
+ Returns:
+ pos_orn (tuple): See description.
+ """
+ world_link_pose = get_world_link_pose(body_unique_id, link_index)
+ visual_shape_data = p.getVisualShapeData(body_unique_id, link_index)
+ local_visual_pose = (visual_shape_data[link_index + 1][5], visual_shape_data[link_index + 1][6])
+
+ return p.multiplyTransforms(world_link_pose[0],
+ world_link_pose[1],
+ local_visual_pose[0],
+ local_visual_pose[1])
+
+
+def get_world_collision_pose(body_unique_id: int, link_index: int):
+ """Pose of collision frame with respect to world frame expressed in world frame.
+
+ Args:
+ body_unique_id (int): The body unique id, as returned by loadURDF, etc.
+ link_index (int): Link index or -1 for the base.
+
+ Returns:
+ pos_orn (tuple of ): See description.
+ """
+ world_inertial_pose = get_world_inertial_pose(body_unique_id, link_index)
+ collision_shape_data = p.getCollisionShapeData(body_unique_id, link_index)
+ if len(collision_shape_data) > 1:
+ raise NotImplementedError
+ local_collision_pose = (collision_shape_data[0][5], collision_shape_data[0][6])
+
+ return p.multiplyTransforms(world_inertial_pose[0],
+ world_inertial_pose[1],
+ local_collision_pose[0],
+ local_collision_pose[1])
+
+
+def get_link_name(body_unique_id: int, link_index: int):
+ """Returns the link name.
+
+ Args:
+ body_unique_id (int): The body unique id, as returned by loadURDF, etc.
+ link_index (int): Link index or -1 for the base.
+
+ Returns:
+ link_name (str): Name of the link.
+ """
+ if link_index == -1:
+ link_name = p.getBodyInfo(body_unique_id)[0]
+ else:
+ link_name = p.getJointInfo(body_unique_id, link_index)[12]
+
+ return link_name.decode('UTF-8')
+
+
+class Frame(Enum):
+ LINK = 1,
+ INERTIAL = 2,
+ COLLISION = 3,
+ VISUAL = 4
+
+
+FRAME_NAME = dict()
+FRAME_NAME[Frame.LINK] = 'link'
+FRAME_NAME[Frame.INERTIAL] = 'inertial'
+FRAME_NAME[Frame.COLLISION] = 'collision'
+FRAME_NAME[Frame.VISUAL] = 'visual'
+
+
+def draw_frame(body_unique_id: int,
+ link_index: int,
+ frame: Frame,
+ title: str,
+ replace_item_unique_id: typing.Tuple[int, int, int, int] = None):
+ """Visualizes one of the frames/coordinate systems associated with each link (or base):
+ link, inertial, visual or collision frame.
+
+ Args:
+ body_unique_id (int): The body unique id, as returned by loadURDF, etc.
+ link_index (int): Link index or -1 for the base.
+ frame: The frame to draw (link, inertial, visual, collision)
+ title: Text which is drawn at the origin of the axis.
+ replace_item_unique_id (tuple of 4 ints): Replace existing axis and title to improve
+ performance and to avoid flickering.
+
+ Returns:
+ indices (tuple of 4 ints): The object id of the x-axis, y-axis, z-axis, and the title text.
+ """
+ if frame == Frame.LINK:
+ world_pose = get_world_link_pose(body_unique_id, link_index)
+ elif frame == Frame.INERTIAL:
+ world_pose = get_world_inertial_pose(body_unique_id, link_index)
+ elif frame == Frame.COLLISION:
+ world_pose = get_world_collision_pose(body_unique_id, link_index)
+ elif frame == Frame.VISUAL:
+ world_pose = get_world_visual_pose(body_unique_id, link_index)
+ else:
+ raise NotImplementedError
+
+ axis_scale = 0.1
+
+ pos = np.array(world_pose[0])
+ orn_mat = np.array(p.getMatrixFromQuaternion(world_pose[1])).reshape((3, 3))
+
+ kwargs = dict()
+ kwargs['lineWidth'] = 3
+
+ kwargs['lineColorRGB'] = [1, 0, 0]
+ if replace_item_unique_id is not None:
+ kwargs['replaceItemUniqueId'] = replace_item_unique_id[0]
+ x = p.addUserDebugLine(pos, pos + axis_scale * orn_mat[0:3, 0], **kwargs)
+
+ kwargs['lineColorRGB'] = [0, 1, 0]
+ if replace_item_unique_id is not None:
+ kwargs['replaceItemUniqueId'] = replace_item_unique_id[1]
+ y = p.addUserDebugLine(pos, pos + axis_scale * orn_mat[0:3, 1], **kwargs)
+
+ kwargs['lineColorRGB'] = [0, 0, 1]
+ if replace_item_unique_id is not None:
+ kwargs['replaceItemUniqueId'] = replace_item_unique_id[2]
+ z = p.addUserDebugLine(pos, pos + axis_scale * orn_mat[0:3, 2], **kwargs)
+
+ kwargs.clear()
+ if replace_item_unique_id is not None:
+ kwargs['replaceItemUniqueId'] = replace_item_unique_id[3]
+ title_index = p.addUserDebugText(title, pos, **kwargs)
+
+ return x, y, z, title_index
+
+
+class FrameDrawManager:
+ """Provides a straightforward and efficient way to draw frames/coordinate systems that are
+ associated with each link (or base). This includes the link, inertial, collision, and
+ visual frame.
+ """
+
+ def __init__(self):
+ self.line_indices = dict()
+
+ def _add_frame(self, frame: Frame, body_unique_id: int, link_index: int):
+ # Workaround for the following problem:
+ # When too many lines are added within a short period of time, the following error can occur
+ # "b3Printf: b3Warning[examples/SharedMemory/PhysicsClientSharedMemory.cpp,1286]:
+ # b3Printf: User debug draw failed".
+ time.sleep(1 / 100)
+
+ if self.line_indices.get(body_unique_id) is None:
+ self.line_indices[body_unique_id] = dict()
+
+ if self.line_indices[body_unique_id].get(frame) is None:
+ self.line_indices[body_unique_id][frame] = dict()
+
+ if self.line_indices[body_unique_id][frame].get(link_index) is None:
+ data = dict()
+ data['title'] = \
+ get_link_name(body_unique_id, link_index) + " (" + FRAME_NAME[frame] + " frame)"
+ data['replace_item_unique_id'] = draw_frame(body_unique_id,
+ link_index,
+ frame,
+ data['title'])
+
+ self.line_indices[body_unique_id][frame][link_index] = data
+
+ def add_link_frame(self, body_unique_id: int, link_index: int):
+ self._add_frame(Frame.LINK, body_unique_id, link_index)
+
+ def add_inertial_frame(self, body_unique_id: int, link_index: int):
+ self._add_frame(Frame.INERTIAL, body_unique_id, link_index)
+
+ def add_collision_frame(self, body_unique_id: int, link_index: int):
+ self._add_frame(Frame.COLLISION, body_unique_id, link_index)
+
+ def add_visual_frame(self, body_unique_id: int, link_index: int):
+ self._add_frame(Frame.VISUAL, body_unique_id, link_index)
+
+ def update(self):
+ """Updates the drawing of all known frames. Note that this function is supposed to be
+ called after each simulation step.
+ """
+ for body_unique_id, dict0 in self.line_indices.items():
+ for frame, dict1 in dict0.items():
+ for link_index, dict2 in dict1.items():
+ draw_frame(body_unique_id,
+ link_index,
+ frame,
+ dict2['title'],
+ dict2['replace_item_unique_id'])
+
+
+def high_contrast_bodies(alpha: float = 0.5):
+ """Makes all bodies transparent and gives each body an individual color.
+
+ Args:
+ alpha (float): Regulates the strength of transparency.
+ """
+ num_bodies = p.getNumBodies()
+
+ hsv = [(x * 1.0 / num_bodies, 0.5, 0.5) for x in range(num_bodies)]
+ rgb = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv))
+
+ for i in range(num_bodies):
+ body_unique_id = p.getBodyUniqueId(i)
+ for link_index in range(-1, p.getNumJoints(body_unique_id)):
+ p.changeVisualShape(body_unique_id,
+ link_index,
+ rgbaColor=[rgb[i][0], rgb[i][1], rgb[i][2], alpha])
+
+
+high_contrast_bodies()
+
+frame_draw_manager = FrameDrawManager()
+if test_case == 1:
+ frame_draw_manager.add_link_frame(body, -1)
+ frame_draw_manager.add_inertial_frame(body, -1)
+ if not rigid_body:
+ frame_draw_manager.add_collision_frame(body, -1)
+ frame_draw_manager.add_visual_frame(body, -1)
+else:
+ for i in range(-1, p.getNumJoints(body)):
+ frame_draw_manager.add_inertial_frame(body, i)
+
+if apply_force_torque:
+ while 1:
+ # The following two options are equivalent and are suppose to hold the body in place.
+ if apply_force_local:
+ for i in range(-1, p.getNumJoints(body)):
+ pose = get_world_inertial_pose(body, i)
+ pose_inv = p.invertTransform(pose[0], pose[1])
+ force = p.multiplyTransforms([0, 0, 0], pose_inv[1], [0, 0, 10], [0, 0, 0, 1])
+ p.applyExternalForce(body, i, force[0], [0, 0, 0], flags=p.LINK_FRAME)
+ else:
+ for i in range(-1, p.getNumJoints(body)):
+ pose = get_world_inertial_pose(body, i)
+ p.applyExternalForce(body, i, [0, 0, 10], pose[0], flags=p.WORLD_FRAME)
+
+ if test_case == 1:
+ if apply_torque_local:
+ p.applyExternalTorque(body, -1, [0, 0, 100], flags=p.LINK_FRAME)
+ else:
+ p.applyExternalTorque(body, -1, [0, 0, 100], flags=p.WORLD_FRAME)
+ else:
+ if apply_torque_local:
+ p.applyExternalTorque(body, -1, [0, 0, 100], flags=p.LINK_FRAME)
+ p.applyExternalTorque(body, 0, [0, 0, 100], flags=p.LINK_FRAME)
+ else:
+ p.applyExternalTorque(body, -1, [0, 0, 100], flags=p.WORLD_FRAME)
+ p.applyExternalTorque(body, 0, [0, 0, 100], flags=p.WORLD_FRAME)
+
+ p.stepSimulation()
+ frame_draw_manager.update()
+ time.sleep(1 / 10)
+else:
+ while 1:
+ time.sleep(1 / 10)
diff --git a/examples/pybullet/examples/mimicJointConstraint.py b/examples/pybullet/examples/mimicJointConstraint.py
index 7a54f5c10..45a10d918 100644
--- a/examples/pybullet/examples/mimicJointConstraint.py
+++ b/examples/pybullet/examples/mimicJointConstraint.py
@@ -7,6 +7,8 @@ import pybullet_data
p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
+p.resetDebugVisualizerCamera(cameraDistance=1.1, cameraYaw = 3.6,cameraPitch=-27, cameraTargetPosition=[0.19,1.21,-0.44])
+
p.loadURDF("plane.urdf", 0, 0, -2)
wheelA = p.loadURDF("differential/diff_ring.urdf", [0, 0, 0])
for i in range(p.getNumJoints(wheelA)):
@@ -21,7 +23,7 @@ c = p.createConstraint(wheelA,
jointAxis=[0, 1, 0],
parentFramePosition=[0, 0, 0],
childFramePosition=[0, 0, 0])
-p.changeConstraint(c, gearRatio=1, maxForce=10000)
+p.changeConstraint(c, gearRatio=1, maxForce=10000,erp=0.2)
c = p.createConstraint(wheelA,
2,
@@ -31,7 +33,7 @@ c = p.createConstraint(wheelA,
jointAxis=[0, 1, 0],
parentFramePosition=[0, 0, 0],
childFramePosition=[0, 0, 0])
-p.changeConstraint(c, gearRatio=-1, maxForce=10000)
+p.changeConstraint(c, gearRatio=-1, maxForce=10000,erp=0.2)
c = p.createConstraint(wheelA,
1,
@@ -41,7 +43,7 @@ c = p.createConstraint(wheelA,
jointAxis=[0, 1, 0],
parentFramePosition=[0, 0, 0],
childFramePosition=[0, 0, 0])
-p.changeConstraint(c, gearRatio=-1, maxForce=10000)
+p.changeConstraint(c, gearRatio=-1, maxForce=10000,erp=0.2)
p.setRealTimeSimulation(1)
while (1):
diff --git a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper.sdf b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper.sdf
index 1f19f174a..51d2e9abd 100644
--- a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper.sdf
+++ b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.26 3.14 0 0</pose>
+ <pose>0 0 0.26 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -43,7 +43,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,9 +58,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -72,7 +72,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -102,9 +102,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -116,7 +116,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -147,9 +147,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -161,7 +161,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -192,9 +192,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -207,7 +207,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -216,7 +216,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -249,9 +249,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -264,7 +264,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -273,7 +273,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -305,7 +305,7 @@
</joint>
<link name='finger_right'>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -319,7 +319,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -329,7 +329,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -345,7 +345,7 @@
</joint>
<link name='finger_left'>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -359,7 +359,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -369,7 +369,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_free_base.sdf b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_free_base.sdf
index 552c36d28..66dfb1a9d 100644
--- a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_free_base.sdf
+++ b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_free_base.sdf
@@ -3,11 +3,11 @@
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 -2.3 2.1 0 0 0</pose>
+ <pose>0 -2.3 2.1 0 0 0</pose>
<link name='world'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>1</ixx>
@@ -26,9 +26,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -41,7 +41,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -56,9 +56,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -70,7 +70,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -100,9 +100,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -114,7 +114,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -145,9 +145,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -159,7 +159,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -190,9 +190,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -205,7 +205,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -214,7 +214,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -247,9 +247,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -262,7 +262,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -271,7 +271,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -307,7 +307,7 @@
<lateral_friction value="1.0"/>
<spinning_friction value="1.5"/>
</contact>
- <pose frame=''>0.042 0 0.145 0 0 1.5708</pose>
+ <pose>0.042 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -321,7 +321,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -331,7 +331,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -351,7 +351,7 @@
<lateral_friction value="1.0"/>
<spinning_friction value="1.5"/>
</contact>
- <pose frame=''>-0.042 0 0.145 0 0 4.71239</pose>
+ <pose>-0.042 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -365,7 +365,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -375,7 +375,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new.sdf b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new.sdf
index 54f469fe0..09e43dc22 100644
--- a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new.sdf
+++ b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.7 3.14 0 0</pose>
+ <pose>0 0 0.7 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -43,7 +43,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,9 +58,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -72,7 +72,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -102,9 +102,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -116,7 +116,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -147,9 +147,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -161,7 +161,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -192,9 +192,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -207,7 +207,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -216,7 +216,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -248,9 +248,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -263,7 +263,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -272,7 +272,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -307,7 +307,7 @@
<spinning_friction>.3</spinning_friction>
<rolling_friction>0.04</rolling_friction>
</contact>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -321,7 +321,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -331,7 +331,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -351,7 +351,7 @@
<spinning_friction>.3</spinning_friction>
<rolling_friction>0.04</rolling_friction>
</contact>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -365,7 +365,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -375,7 +375,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new_free_base.sdf b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new_free_base.sdf
index 0358f7a6a..e33b9ed8f 100644
--- a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new_free_base.sdf
+++ b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_new_free_base.sdf
@@ -2,11 +2,11 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>1.4 -0.2 2.1 0 0 0</pose>
+ <pose>1.4 -0.2 2.1 0 0 0</pose>
<link name='world'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>1</ixx>
@@ -25,9 +25,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -40,7 +40,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -55,9 +55,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -69,7 +69,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -99,9 +99,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -113,7 +113,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -144,9 +144,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -158,7 +158,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -189,9 +189,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -204,7 +204,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -213,7 +213,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -245,9 +245,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 3.14159</pose>
+ <pose>0.055 0 0.06 0 0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -260,7 +260,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -269,7 +269,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -304,7 +304,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -318,7 +318,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -328,7 +328,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -348,7 +348,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -362,7 +362,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -372,7 +372,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_no_finger.sdf b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_no_finger.sdf
index 878b1ee14..16847c72c 100644
--- a/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_no_finger.sdf
+++ b/examples/pybullet/gym/pybullet_data/gripper/wsg50_one_motor_gripper_no_finger.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.4 3.14 0 0</pose>
+ <pose>0 0 0.4 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -43,7 +43,7 @@
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,9 +58,9 @@
</link>
<link name='motor'>
- <pose frame=''>0 0 0.03 0 0 0</pose>
+ <pose>0 0 0.03 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -72,7 +72,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0 0 0.01 0 0 0</pose>
+ <pose>0 0 0.01 0 0 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.02 </size>
@@ -102,9 +102,9 @@
</joint>
<link name='left_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -116,7 +116,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
+ <pose>-0.03 0 0.01 0 -1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -147,9 +147,9 @@
</joint>
<link name='right_hinge'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.035 0 0 0</pose>
+ <pose>0 0 0.035 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -161,7 +161,7 @@
</inertia>
</inertial>
<visual name='motor_visual'>
- <pose frame=''>0.03 0 0.01 0 1.2 0</pose>
+ <pose>0.03 0 0.01 0 1.2 0</pose>
<geometry>
<box>
<size>0.02 0.02 0.07 </size>
@@ -192,9 +192,9 @@
</joint>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0.06 0 -0 0</pose>
+ <pose>-0.055 0 0.06 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -207,7 +207,7 @@
</inertial>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 -0.06 0 0 0</pose>
+ <pose>0 0 -0.06 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -216,7 +216,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 0</pose>
+ <pose>0 0 -0.037 0 0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -248,9 +248,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0.06 0 0 0</pose>
+ <pose>0.055 0 0.06 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -263,7 +263,7 @@
</inertial>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 -0.06 0 0 3.14159</pose>
+ <pose>0 0 -0.06 0 0 3.14159</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -272,7 +272,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 -0.037 0 0 3.14159</pose>
+ <pose>0 0 -0.037 0 0 3.14159</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
diff --git a/examples/pybullet/gym/pybullet_data/gripper/wsg50_with_r2d2_gripper.sdf b/examples/pybullet/gym/pybullet_data/gripper/wsg50_with_r2d2_gripper.sdf
index d67959f19..b487816a6 100644
--- a/examples/pybullet/gym/pybullet_data/gripper/wsg50_with_r2d2_gripper.sdf
+++ b/examples/pybullet/gym/pybullet_data/gripper/wsg50_with_r2d2_gripper.sdf
@@ -2,7 +2,7 @@
<sdf version='1.6'>
<world name='default'>
<model name='wsg50_with_gripper'>
- <pose frame=''>0 0 0.27 3.14 0 0</pose>
+ <pose>0 0 0.27 3.14 0 0</pose>
<link name='world'>
</link>
@@ -28,9 +28,9 @@
</joint>
<link name='base_link'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -42,7 +42,7 @@
</inertia>
</inertial>
<collision name='base_link_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<box>
<size>0.2 0.05 0.05 </size>
@@ -50,7 +50,7 @@
</geometry>
</collision>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -67,9 +67,9 @@
</link>
<link name='gripper_left'>
- <pose frame=''>-0.055 0 0 0 -0 0</pose>
+ <pose>-0.055 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -82,7 +82,7 @@
</inertial>
<collision name='gripper_left_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -91,7 +91,7 @@
</geometry>
</collision>
<collision name='gripper_left_fixed_joint_lump__finger_left_collision_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -101,7 +101,7 @@
</collision>
<visual name='gripper_left_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -110,7 +110,7 @@
</geometry>
</visual>
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -141,9 +141,9 @@
</joint>
<link name='gripper_right'>
- <pose frame=''>0.055 0 0 0 -0 3.14159</pose>
+ <pose>0.055 0 0 0 -0 3.14159</pose>
<inertial>
- <pose frame=''>0 0 0.0115 0 -0 0</pose>
+ <pose>0 0 0.0115 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -156,7 +156,7 @@
</inertial>
<collision name='gripper_right_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -165,7 +165,7 @@
</geometry>
</collision>
<collision name='gripper_right_fixed_joint_lump__finger_right_collision_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -175,7 +175,7 @@
</collision>
<visual name='gripper_right_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -184,7 +184,7 @@
</geometry>
</visual>
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
- <pose frame=''>0 0 0.023 0 -0 0</pose>
+ <pose>0 0 0.023 0 -0 0</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
@@ -219,7 +219,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>0.062 0 0.145 0 0 1.5708</pose>
+ <pose>0.062 0 0.145 0 0 1.5708</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -233,7 +233,7 @@
</inertial>
<collision name='finger_right_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -243,7 +243,7 @@
</collision>
<visual name='finger_right_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -263,7 +263,7 @@
<lateral_friction>1.0</lateral_friction>
<spinning_friction>1.5</spinning_friction>
</contact>
- <pose frame=''>-0.062 0 0.145 0 0 4.71239</pose>
+ <pose>-0.062 0 0.145 0 0 4.71239</pose>
<inertial>
<mass>0.2</mass>
<inertia>
@@ -277,7 +277,7 @@
</inertial>
<collision name='finger_left_collision'>
- <pose frame=''>0 0 0.042 0 0 0 </pose>
+ <pose>0 0 0.042 0 0 0 </pose>
<geometry>
<box>
<size>0.02 0.02 0.15 </size>
@@ -287,7 +287,7 @@
</collision>
<visual name='finger_left_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper.sdf b/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper.sdf
index fd8ba3554..4d2a07ec6 100644
--- a/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper.sdf
+++ b/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper.sdf
@@ -11,9 +11,9 @@
<world name='default'>
<model name='lbr_iiwa_with_wsg50'>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -25,7 +25,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -34,7 +34,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -50,9 +50,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -64,7 +64,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -73,7 +73,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -108,9 +108,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -122,7 +122,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -131,7 +131,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -166,9 +166,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -180,7 +180,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -189,7 +189,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -224,9 +224,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -238,7 +238,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -247,7 +247,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -282,9 +282,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -296,7 +296,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -305,7 +305,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -340,9 +340,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -354,7 +354,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -363,7 +363,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -398,9 +398,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -412,7 +412,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -421,7 +421,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -462,9 +462,9 @@
<child>base_link</child>
</joint>
<link name='base_link'>
- <pose frame=''>0 0 1.305 0 -0 0</pose>
+ <pose>0 0 1.305 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<mass>1.2</mass>
<inertia>
<ixx>1</ixx>
@@ -476,7 +476,7 @@
</inertia>
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.05 0.05 0.1 </size>
@@ -511,9 +511,9 @@
</axis>
</joint>
<link name='left_finger'>
- <pose frame=''>0 0.024 1.35 0 -0.05 0</pose>
+ <pose>0 0.024 1.35 0 -0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -525,7 +525,7 @@
</inertia>
</inertial>
<visual name='left_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -544,9 +544,9 @@
<child>left_finger_base</child>
</joint>
<link name='left_finger_base'>
- <pose frame=''>-0.005 0.024 1.43 0 -0.3 0</pose>
+ <pose>-0.005 0.024 1.43 0 -0.3 0</pose>
<inertial>
- <pose frame=''>-0.003 0 0.04 0 0 0 </pose>
+ <pose>-0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -558,7 +558,7 @@
</inertia>
</inertial>
<visual name='left_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -573,7 +573,7 @@
</material>
</visual>
<collision name='left_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -606,9 +606,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>1.0</spinning_friction>
</contact>
- <pose frame=''>-0.02 0.024 1.49 0 0.2 0</pose>
+ <pose>-0.02 0.024 1.49 0 0.2 0</pose>
<inertial>
- <pose frame=''>-0.005 0 0.026 0 0 0 </pose>
+ <pose>-0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -620,7 +620,7 @@
</inertia>
</inertial>
<visual name='left_finger_tip_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -635,7 +635,7 @@
</material>
</visual>
<collision name='left_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -664,9 +664,9 @@
</axis>
</joint>
<link name='right_finger'>
- <pose frame=''>0 0.024 1.35 0 0.05 0</pose>
+ <pose>0 0.024 1.35 0 0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.1</mass>
<inertia>
<ixx>0.1</ixx>
@@ -678,7 +678,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -697,9 +697,9 @@
<child>right_finger_base</child>
</joint>
<link name='right_finger_base'>
- <pose frame=''>0.005 0.024 1.43 0 0.3 0</pose>
+ <pose>0.005 0.024 1.43 0 0.3 0</pose>
<inertial>
- <pose frame=''>0.003 0 0.04 0 0 0 </pose>
+ <pose>0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -711,7 +711,7 @@
</inertia>
</inertial>
<visual name='right_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -726,7 +726,7 @@
</material>
</visual>
<collision name='right_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -759,9 +759,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>1.0</spinning_friction>
</contact>
- <pose frame=''>0.02 0.024 1.49 0 -0.2 0</pose>
+ <pose>0.02 0.024 1.49 0 -0.2 0</pose>
<inertial>
- <pose frame=''>0.005 0 0.026 0 0 0 </pose>
+ <pose>0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -773,7 +773,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -788,7 +788,7 @@
</material>
</visual>
<collision name='right_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper2.sdf b/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper2.sdf
index 9c3787bcb..d9ef5197f 100644
--- a/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper2.sdf
+++ b/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_with_gripper2.sdf
@@ -11,9 +11,9 @@
<world name='default'>
<model name='lbr_iiwa_with_wsg50'>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -25,7 +25,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -34,7 +34,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -50,9 +50,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -64,7 +64,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -73,7 +73,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -108,9 +108,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -122,7 +122,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -131,7 +131,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -166,9 +166,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -180,7 +180,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -189,7 +189,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -224,9 +224,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -238,7 +238,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -247,7 +247,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -282,9 +282,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -296,7 +296,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -305,7 +305,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -340,9 +340,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -354,7 +354,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -363,7 +363,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -398,9 +398,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>1.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -412,7 +412,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -421,7 +421,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -468,9 +468,9 @@
<link name='base_link'>
- <pose frame=''>0 0 1.305 0 -0 0</pose>
+ <pose>0 0 1.305 0 -0 0</pose>
<inertial>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>1</ixx>
@@ -482,7 +482,7 @@
</inertia>
</inertial>
<visual name='base_link_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.05 0.05 0.1 </size>
@@ -496,7 +496,7 @@
</material>
</visual>
<collision name='base_link_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.05 0.05 0.1 </size>
@@ -531,9 +531,9 @@
</axis>
</joint>
<link name='left_finger'>
- <pose frame=''>0 0.024 1.35 0 -0.05 0</pose>
+ <pose>0 0.024 1.35 0 -0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -545,7 +545,7 @@
</inertia>
</inertial>
<visual name='left_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -559,7 +559,7 @@
</material>
</visual>
<collision name='left_finger_collision'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -577,9 +577,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>-0.005 0.024 1.43 0 -0.3 0</pose>
+ <pose>-0.005 0.024 1.43 0 -0.3 0</pose>
<inertial>
- <pose frame=''>-0.003 0 0.04 0 0 0 </pose>
+ <pose>-0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -591,7 +591,7 @@
</inertia>
</inertial>
<visual name='left_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -606,7 +606,7 @@
</material>
</visual>
<collision name='left_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -639,9 +639,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>-0.02 0.024 1.49 0 0.2 0</pose>
+ <pose>-0.02 0.024 1.49 0 0.2 0</pose>
<inertial>
- <pose frame=''>-0.005 0 0.026 0 0 0 </pose>
+ <pose>-0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -653,7 +653,7 @@
</inertia>
</inertial>
<visual name='left_finger_tip_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -668,7 +668,7 @@
</material>
</visual>
<collision name='left_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -701,9 +701,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>0 0.024 1.35 0 0.05 0</pose>
+ <pose>0 0.024 1.35 0 0.05 0</pose>
<inertial>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -715,7 +715,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -729,7 +729,7 @@
</material>
</visual>
<collision name='right_finger_collision'>
- <pose frame=''>0 0 0.04 0 0 0</pose>
+ <pose>0 0 0.04 0 0 0</pose>
<geometry>
<box>
<size>0.01 0.01 0.08</size>
@@ -752,9 +752,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>0.005 0.024 1.43 0 0.3 0</pose>
+ <pose>0.005 0.024 1.43 0 0.3 0</pose>
<inertial>
- <pose frame=''>0.003 0 0.04 0 0 0 </pose>
+ <pose>0.003 0 0.04 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -766,7 +766,7 @@
</inertia>
</inertial>
<visual name='right_finger_base_visual'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -781,7 +781,7 @@
</material>
</visual>
<collision name='right_finger_base_collision'>
- <pose frame=''>0 0 0 0 0 0 </pose>
+ <pose>0 0 0 0 0 0 </pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -814,9 +814,9 @@
<lateral_friction>0.8</lateral_friction>
<spinning_friction>.1</spinning_friction>
</contact>
- <pose frame=''>0.02 0.024 1.49 0 -0.2 0</pose>
+ <pose>0.02 0.024 1.49 0 -0.2 0</pose>
<inertial>
- <pose frame=''>0.005 0 0.026 0 0 0 </pose>
+ <pose>0.005 0 0.026 0 0 0 </pose>
<mass>0.2</mass>
<inertia>
<ixx>0.1</ixx>
@@ -828,7 +828,7 @@
</inertia>
</inertial>
<visual name='right_finger_visual'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
@@ -843,7 +843,7 @@
</material>
</visual>
<collision name='right_finger_tip_collision'>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>1 1 1 </scale>
diff --git a/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_world.sdf b/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_world.sdf
index d48d51382..3292b4b2e 100644
--- a/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_world.sdf
+++ b/examples/pybullet/gym/pybullet_data/kuka_iiwa/kuka_world.sdf
@@ -6,9 +6,9 @@
<child>lbr_iiwa_link_0</child>
</joint>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0.01</mass>
<inertia>
<ixx>0.05</ixx>
@@ -20,7 +20,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -29,7 +29,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -39,9 +39,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -53,7 +53,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -62,7 +62,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -92,9 +92,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -106,7 +106,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -115,7 +115,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -145,9 +145,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -159,7 +159,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -168,7 +168,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -198,9 +198,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -212,7 +212,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -221,7 +221,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -251,9 +251,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -265,7 +265,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -274,7 +274,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -304,9 +304,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -318,7 +318,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -327,7 +327,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -357,9 +357,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -371,7 +371,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -380,7 +380,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
diff --git a/examples/pybullet/gym/pybullet_data/kuka_iiwa/model.sdf b/examples/pybullet/gym/pybullet_data/kuka_iiwa/model.sdf
index a93d09c50..4eb2c9c97 100644
--- a/examples/pybullet/gym/pybullet_data/kuka_iiwa/model.sdf
+++ b/examples/pybullet/gym/pybullet_data/kuka_iiwa/model.sdf
@@ -1,11 +1,11 @@
<sdf version='1.6'>
<world name='default'>
<model name='lbr_iiwa'>
- <pose frame=''>0 -2.3 0.7 0 0 0</pose>
+ <pose>0 -2.3 0.7 0 0 0</pose>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -17,7 +17,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -26,7 +26,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -42,9 +42,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -56,7 +56,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -65,7 +65,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -101,9 +101,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -115,7 +115,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -124,7 +124,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -160,9 +160,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -174,7 +174,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -183,7 +183,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -219,9 +219,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -233,7 +233,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -242,7 +242,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -278,9 +278,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -292,7 +292,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -301,7 +301,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -337,9 +337,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -351,7 +351,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -360,7 +360,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -396,9 +396,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -410,7 +410,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -419,7 +419,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
diff --git a/examples/pybullet/gym/pybullet_data/kuka_iiwa/model2.sdf b/examples/pybullet/gym/pybullet_data/kuka_iiwa/model2.sdf
index 117357cf4..ea244b8ac 100644
--- a/examples/pybullet/gym/pybullet_data/kuka_iiwa/model2.sdf
+++ b/examples/pybullet/gym/pybullet_data/kuka_iiwa/model2.sdf
@@ -2,9 +2,9 @@
<world name='default'>
<model name='lbr_iiwa'>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -16,7 +16,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -25,7 +25,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -35,9 +35,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -49,7 +49,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -58,7 +58,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -88,9 +88,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -102,7 +102,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -111,7 +111,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -141,9 +141,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -155,7 +155,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -164,7 +164,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -194,9 +194,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -208,7 +208,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -217,7 +217,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -247,9 +247,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -261,7 +261,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -270,7 +270,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -300,9 +300,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -314,7 +314,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -323,7 +323,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -353,9 +353,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -367,7 +367,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -376,7 +376,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -408,11 +408,11 @@
</model>
<model name='lbr_iiwa'>
- <pose frame=''>2 2 0 0 -0 0</pose>
+ <pose>2 2 0 0 -0 0</pose>
<link name='lbr_iiwa_link_0'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<inertial>
- <pose frame=''>-0.1 0 0.07 0 -0 0</pose>
+ <pose>-0.1 0 0.07 0 -0 0</pose>
<mass>0</mass>
<inertia>
<ixx>0.05</ixx>
@@ -424,7 +424,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_0_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -433,7 +433,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_0_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -443,9 +443,9 @@
</visual>
</link>
<link name='lbr_iiwa_link_1'>
- <pose frame=''>0 0 0.1575 0 -0 0</pose>
+ <pose>0 0 0.1575 0 -0 0</pose>
<inertial>
- <pose frame=''>0 -0.03 0.12 0 -0 0</pose>
+ <pose>0 -0.03 0.12 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.1</ixx>
@@ -457,7 +457,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_1_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -466,7 +466,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_1_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -496,9 +496,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_2'>
- <pose frame=''>0 0 0.36 1.5708 -0 -3.14159</pose>
+ <pose>0 0 0.36 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0003 0.059 0.042 0 -0 0</pose>
+ <pose>0.0003 0.059 0.042 0 -0 0</pose>
<mass>4</mass>
<inertia>
<ixx>0.05</ixx>
@@ -510,7 +510,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_2_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -519,7 +519,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_2_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -549,9 +549,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_3'>
- <pose frame=''>0 -0 0.5645 0 0 0</pose>
+ <pose>0 -0 0.5645 0 0 0</pose>
<inertial>
- <pose frame=''>0 0.03 0.13 0 -0 0</pose>
+ <pose>0 0.03 0.13 0 -0 0</pose>
<mass>3</mass>
<inertia>
<ixx>0.08</ixx>
@@ -563,7 +563,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_3_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -572,7 +572,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_3_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -602,9 +602,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_4'>
- <pose frame=''>0 -0 0.78 1.5708 0 0</pose>
+ <pose>0 -0 0.78 1.5708 0 0</pose>
<inertial>
- <pose frame=''>0 0.067 0.034 0 -0 0</pose>
+ <pose>0 0.067 0.034 0 -0 0</pose>
<mass>2.7</mass>
<inertia>
<ixx>0.03</ixx>
@@ -616,7 +616,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_4_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -625,7 +625,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_4_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -655,9 +655,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_5'>
- <pose frame=''>0 -0 0.9645 0 -0 -3.14159</pose>
+ <pose>0 -0 0.9645 0 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0.0001 0.021 0.076 0 -0 0</pose>
+ <pose>0.0001 0.021 0.076 0 -0 0</pose>
<mass>1.7</mass>
<inertia>
<ixx>0.02</ixx>
@@ -669,7 +669,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_5_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -678,7 +678,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_5_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -708,9 +708,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_6'>
- <pose frame=''>0 0 1.18 1.5708 -0 -3.14159</pose>
+ <pose>0 0 1.18 1.5708 -0 -3.14159</pose>
<inertial>
- <pose frame=''>0 0.0006 0.0004 0 -0 0</pose>
+ <pose>0 0.0006 0.0004 0 -0 0</pose>
<mass>1.8</mass>
<inertia>
<ixx>0.005</ixx>
@@ -722,7 +722,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_6_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -731,7 +731,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_6_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -761,9 +761,9 @@
</axis>
</joint>
<link name='lbr_iiwa_link_7'>
- <pose frame=''>0 0 1.261 0 0 0</pose>
+ <pose>0 0 1.261 0 0 0</pose>
<inertial>
- <pose frame=''>0 0 0.02 0 -0 0</pose>
+ <pose>0 0 0.02 0 -0 0</pose>
<mass>0.3</mass>
<inertia>
<ixx>0.001</ixx>
@@ -775,7 +775,7 @@
</inertia>
</inertial>
<collision name='lbr_iiwa_link_7_collision'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
@@ -784,7 +784,7 @@
</geometry>
</collision>
<visual name='lbr_iiwa_link_7_visual'>
- <pose frame=''>0 0 0 0 -0 0</pose>
+ <pose>0 0 0 0 -0 0</pose>
<geometry>
<mesh>
<scale>1 1 1</scale>
diff --git a/examples/pybullet/gym/pybullet_data/laikago/chassis_zup_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/chassis_zup_lores.obj
new file mode 100644
index 000000000..8170a550b
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/chassis_zup_lores.obj
@@ -0,0 +1,2525 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib chassis_zup.mtl
+o EXP_OTL_-_EXP_OTL_BDYR1_median.002
+v 0.269217 0.044003 -0.011194
+v 0.258143 0.045697 -0.012888
+v 0.269217 0.049859 -0.022937
+v 0.258143 0.049859 -0.025331
+v 0.269217 0.045697 -0.035380
+v 0.258143 0.044003 -0.037074
+v 0.269217 0.033954 -0.041236
+v 0.258143 0.031560 -0.041236
+v 0.269217 0.021511 -0.037074
+v 0.258143 0.019817 -0.035380
+v 0.269217 0.015353 -0.018243
+v 0.258143 0.015655 -0.022937
+v 0.258143 0.026866 -0.006730
+v 0.269217 0.031560 -0.007032
+v 0.258143 -0.019839 -0.018243
+v 0.269217 -0.020141 -0.022937
+v 0.269217 -0.024303 -0.035380
+v 0.258143 -0.025997 -0.037074
+v 0.269217 -0.043134 -0.041538
+v 0.258143 -0.038440 -0.041236
+v 0.258143 -0.054647 -0.030025
+v 0.269217 -0.054647 -0.018243
+v 0.258143 -0.043134 -0.006730
+v 0.269217 -0.031352 -0.006730
+v 0.137450 0.033231 -0.090094
+v 0.141450 0.038560 -0.090431
+v 0.137450 0.051647 -0.082767
+v -0.176550 -0.042240 -0.087374
+v -0.176550 -0.051639 -0.082788
+v -0.296350 -0.056901 0.052905
+v -0.296350 -0.004425 -0.066546
+v -0.296350 0.043570 -0.089137
+v -0.296350 0.007267 -0.084414
+v -0.296350 -0.002201 -0.087517
+v -0.296350 0.010635 -0.072186
+v -0.296350 -0.069668 -0.017420
+v -0.296350 -0.069834 -0.048304
+v -0.296350 -0.010843 -0.078380
+v -0.296350 -0.043949 -0.088780
+v -0.296350 -0.087428 -0.016343
+v -0.296350 -0.080678 -0.006125
+v -0.296350 -0.087531 -0.049188
+v -0.296350 -0.100705 -0.041470
+v -0.296350 -0.098991 -0.023004
+v -0.296350 -0.102706 -0.021025
+v -0.296350 -0.065833 0.068159
+v -0.296350 -0.073192 0.045867
+v -0.296350 -0.078892 0.059859
+v -0.296350 -0.072926 0.067331
+v -0.296350 0.063575 0.066454
+v -0.296350 0.070383 0.069341
+v -0.296350 0.072426 0.045987
+v -0.296350 0.078769 0.062104
+v -0.296350 0.078779 0.056867
+v -0.296350 0.057367 0.051630
+v -0.296350 0.069837 -0.017253
+v -0.296350 0.069670 -0.048137
+v -0.296350 0.087427 -0.049215
+v -0.296350 0.087537 -0.016371
+v -0.296350 0.102535 -0.020723
+v -0.296350 0.099084 -0.023157
+v -0.296350 0.100993 -0.041121
+v -0.296350 0.080633 -0.005953
+v 0.257250 -0.069835 -0.017253
+v 0.257250 -0.010321 -0.079859
+v 0.257250 0.069836 -0.048304
+v 0.257250 -0.000624 -0.087192
+v 0.257250 0.069670 -0.017420
+v 0.257250 0.088133 0.009214
+v 0.257250 0.005749 -0.068073
+v 0.257250 -0.005548 -0.067758
+v 0.257250 0.010415 -0.080236
+v 0.257250 0.043160 -0.088733
+v 0.257250 0.099083 -0.042400
+v 0.256251 0.115732 -0.042239
+v 0.255419 0.125864 -0.004716
+v 0.257250 0.087533 -0.049188
+v 0.257250 0.116575 -0.010433
+v 0.257250 0.087430 -0.016343
+v 0.257250 0.086767 -0.054264
+v 0.255838 0.122307 -0.049887
+v 0.257250 0.098993 -0.023004
+v 0.257250 0.062452 0.067242
+v 0.257250 -0.033999 0.077721
+v 0.257250 0.057679 0.055141
+v 0.257250 0.074582 0.077068
+v 0.257250 0.067376 0.047808
+v 0.257250 0.078415 0.054764
+v 0.257250 0.073749 0.066927
+v 0.257250 0.085179 0.067769
+v 0.257250 -0.062251 0.066927
+v 0.257250 -0.078167 0.076072
+v 0.257250 -0.073548 0.067242
+v 0.257250 -0.085694 0.064567
+v 0.257250 -0.078321 0.055141
+v 0.257250 -0.068624 0.047808
+v 0.257250 -0.057585 0.054764
+v 0.257250 -0.098990 -0.042553
+v 0.257084 -0.117456 -0.046344
+v 0.257250 -0.042820 -0.089106
+v 0.257250 -0.069668 -0.048138
+v 0.255191 -0.124555 -0.004759
+v 0.257250 -0.088570 -0.053603
+v 0.257250 -0.087425 -0.049215
+v 0.257250 -0.087660 0.009442
+v 0.257250 -0.087535 -0.016371
+v 0.257250 -0.116776 -0.009630
+v 0.257250 -0.099082 -0.023157
+v -0.176550 0.051352 -0.082694
+v 0.137431 0.085262 -0.054543
+v -0.176483 0.085274 -0.054928
+v 0.137450 -0.085230 -0.054913
+v -0.176608 -0.085376 -0.054674
+v 0.137450 -0.049630 -0.084485
+v 0.137450 -0.032913 -0.088880
+v 0.117811 -0.032899 -0.083279
+v -0.162514 -0.042024 -0.083279
+v -0.176550 0.042475 -0.088378
+v -0.162514 0.042026 -0.083279
+v 0.117811 0.032901 -0.083279
+v -0.120792 0.018927 -0.083279
+v 0.082090 -0.018924 -0.083279
+v -0.146488 -0.021117 -0.083279
+v -0.120625 -0.018758 -0.083279
+v -0.146572 0.021267 -0.083279
+v 0.107831 -0.021074 -0.083279
+v 0.081933 0.018762 -0.083279
+v 0.107879 0.020983 -0.083279
+v 0.137498 0.086786 -0.008767
+v 0.141450 0.086001 0.013971
+v 0.139872 0.088675 0.068650
+v -0.180558 0.088147 -0.053688
+v 0.141450 0.084645 -0.055643
+v 0.142254 -0.069508 0.077472
+v -0.179946 -0.035997 0.077721
+v -0.181915 0.074866 0.076635
+v 0.141378 -0.086817 -0.008140
+v -0.180581 -0.086808 0.017528
+v 0.141450 -0.074770 -0.030882
+v 0.141450 -0.032902 -0.089797
+v 0.141450 -0.044258 -0.088297
+v 0.141450 -0.077862 -0.041309
+v 0.141412 -0.099479 -0.036908
+v 0.141220 -0.102833 -0.048245
+v 0.141506 -0.093880 -0.021364
+v 0.143356 -0.098452 -0.019605
+v 0.141450 -0.080769 -0.021809
+v 0.141493 0.061934 0.050039
+v 0.141625 -0.099300 -0.026478
+v 0.141450 -0.090159 -0.045748
+v 0.141450 -0.085052 -0.055357
+v 0.140518 -0.104071 -0.027631
+v 0.139304 -0.102324 -0.023249
+v 0.141450 -0.059620 0.052007
+v 0.141450 -0.069192 0.047858
+v 0.141475 -0.077043 0.053325
+v 0.142768 -0.081345 0.067712
+v 0.141444 -0.065032 0.068222
+v 0.141441 -0.076681 0.064599
+v 0.141453 -0.058234 0.061484
+v 0.141418 0.078587 0.057936
+v 0.141450 0.071344 0.048172
+v 0.141452 0.057301 0.059461
+v 0.141433 0.069311 0.069333
+v 0.140129 0.077400 0.077330
+v 0.141450 0.010202 -0.080823
+v 0.141450 -0.010412 -0.077404
+v 0.141442 0.098457 -0.026469
+v 0.142287 0.100601 -0.034243
+v 0.140736 0.106381 -0.025921
+v 0.141399 0.103423 -0.047934
+v 0.141450 -0.032697 -0.102276
+v 0.141450 -0.005037 -0.067463
+v 0.141450 -0.017934 -0.111601
+v 0.141450 -0.003079 -0.087101
+v 0.141482 0.087029 -0.008833
+v 0.139613 0.106950 -0.020731
+v 0.141431 0.086322 -0.018994
+v 0.141450 0.007870 -0.104936
+v 0.141450 0.032741 -0.102185
+v 0.141450 -0.007782 -0.104901
+v 0.141450 0.097138 -0.041309
+v 0.141450 0.018427 -0.111603
+v 0.141450 0.074268 -0.032410
+v 0.141450 0.006215 -0.068400
+v 0.141450 0.083650 -0.045682
+v -0.180550 -0.020479 -0.105028
+v -0.180550 -0.010777 -0.076133
+v -0.180550 -0.025159 -0.109622
+v -0.180550 0.080771 -0.021809
+v -0.180546 -0.059407 0.049413
+v -0.180550 0.074772 -0.030882
+v -0.180550 -0.004424 -0.087013
+v -0.180550 -0.003190 -0.066096
+v -0.180698 0.089137 0.009875
+v -0.180664 0.092273 -0.020757
+v -0.180550 0.042830 -0.088984
+v -0.180550 0.077864 -0.041309
+v -0.180550 0.020364 -0.104978
+v -0.180550 0.041101 -0.109779
+v -0.180550 0.009337 -0.071035
+v -0.180550 0.024970 -0.109520
+v -0.180550 0.087841 -0.045644
+v -0.180455 0.098867 -0.027143
+v -0.181394 0.113702 -0.012794
+v -0.180550 0.008592 -0.083587
+v -0.180550 0.099146 -0.039077
+v -0.181632 0.113599 -0.047568
+v -0.180553 0.056903 0.052905
+v -0.180550 0.070203 0.045483
+v -0.180510 0.066690 0.067731
+v -0.180643 0.079341 0.056568
+v -0.182083 0.083754 0.064908
+v -0.180498 -0.078840 0.058813
+v -0.178994 -0.087191 0.068213
+v -0.180550 -0.072424 0.045987
+v -0.180551 -0.058085 0.060128
+v -0.180544 -0.067353 0.067351
+v -0.179288 -0.075701 0.077292
+v -0.180550 -0.042828 -0.088984
+v -0.180550 -0.041099 -0.109779
+v -0.180550 -0.097136 -0.041309
+v -0.180644 -0.099563 -0.025840
+v -0.180094 -0.116628 -0.012235
+v -0.178659 -0.106471 -0.007068
+v -0.181944 -0.113591 -0.015047
+v -0.180546 -0.087837 -0.053847
+v -0.181715 -0.113796 -0.047867
+v -0.180550 -0.077028 -0.025008
+v -0.180597 -0.086824 -0.020068
+v -0.180550 -0.087159 -0.045644
+v -0.180550 -0.075854 -0.039077
+v 0.137877 -0.094638 -0.051394
+v 0.137318 -0.086587 -0.007885
+v 0.135415 0.107292 -0.020177
+v 0.136199 0.106511 -0.047406
+v 0.136569 0.107345 -0.026158
+v -0.174725 -0.105798 -0.006533
+v -0.176627 -0.086505 0.017770
+v -0.173127 -0.116645 -0.011507
+v -0.175706 -0.114341 -0.048958
+v -0.176163 -0.113003 -0.015039
+v -0.174872 -0.112955 -0.045200
+v -0.176593 0.114163 -0.048376
+v -0.175999 0.115884 -0.010435
+v -0.176192 0.112903 -0.013215
+v -0.176805 0.087961 0.012334
+v -0.175799 0.111945 -0.044343
+v -0.174852 0.112376 -0.016167
+v 0.149438 -0.096940 -0.027513
+v 0.149524 -0.092463 -0.022120
+v 0.148800 -0.082311 -0.020815
+v 0.148800 -0.074266 -0.032410
+v 0.148800 -0.083648 -0.045682
+v 0.148800 -0.096274 -0.042001
+v 0.148892 -0.099235 -0.034517
+v 0.148800 -0.087499 -0.032779
+v 0.148800 0.074772 -0.030882
+v 0.148952 0.084367 -0.019569
+v 0.146756 0.101989 -0.025614
+v 0.148707 0.099205 -0.030256
+v 0.148960 0.098371 -0.039554
+v 0.148800 0.087841 -0.045644
+v 0.148800 0.077864 -0.041309
+v -0.187900 -0.074770 -0.030882
+v -0.188087 -0.084533 -0.019513
+v -0.186240 -0.099879 -0.026440
+v -0.187900 -0.099144 -0.039077
+v -0.187900 -0.087839 -0.045644
+v -0.188040 -0.076690 -0.039794
+v -0.187804 0.100131 -0.029950
+v -0.188968 0.093503 -0.022277
+v -0.187900 0.082313 -0.020815
+v -0.187900 0.074268 -0.032410
+v -0.187748 0.082799 -0.045268
+v -0.187900 0.097138 -0.041309
+v 0.261250 -0.076369 0.077038
+v 0.261250 -0.123619 -0.005115
+v 0.261250 -0.116768 -0.046208
+v 0.261250 -0.042865 -0.088955
+v 0.261250 0.043657 -0.088643
+v 0.261250 0.083258 -0.056792
+v 0.261250 0.086480 0.013709
+v 0.261250 0.117701 -0.047043
+v 0.261250 0.116778 -0.009629
+v 0.261250 -0.087570 -0.054029
+v 0.261250 0.085537 0.065817
+v 0.261250 -0.087866 0.009313
+v 0.261250 -0.116109 -0.011946
+v 0.261250 -0.085626 0.065355
+v 0.261250 0.076627 0.076629
+v 0.247550 -0.087428 -0.016343
+v 0.247550 -0.069668 -0.017420
+v 0.247550 -0.087531 -0.049188
+v 0.247550 -0.099081 -0.042400
+v 0.247550 -0.098991 -0.023004
+v 0.247283 -0.096023 -0.030594
+v 0.247294 -0.080811 -0.038155
+v 0.247010 -0.090712 -0.040750
+v 0.247550 -0.069834 -0.048304
+v 0.247240 -0.087499 -0.024422
+v 0.247285 -0.080262 -0.028601
+v 0.247550 0.087427 -0.049215
+v 0.247550 0.069670 -0.048137
+v 0.247550 0.087537 -0.016371
+v 0.247550 0.099084 -0.023157
+v 0.247550 0.098992 -0.042553
+v 0.247274 0.094189 -0.038155
+v 0.247080 0.078977 -0.030593
+v 0.247229 0.084288 -0.040750
+v 0.247550 0.069837 -0.017253
+v 0.247269 0.094738 -0.028601
+v 0.247240 0.087501 -0.024422
+v -0.300350 -0.080792 -0.006140
+v -0.300350 -0.079125 0.062507
+v -0.300350 -0.070180 0.069424
+v -0.300350 0.070497 0.069377
+v -0.300350 0.079226 0.062146
+v -0.300350 0.080848 -0.006309
+v -0.300350 0.102708 -0.021024
+v -0.300350 0.102829 -0.039999
+v -0.300350 0.043590 -0.088972
+v -0.300350 -0.043992 -0.088897
+v -0.300350 -0.102977 -0.039676
+v -0.300350 -0.102533 -0.020724
+v -0.286650 -0.087535 -0.016371
+v -0.286650 -0.099082 -0.023157
+v -0.286650 -0.098990 -0.042553
+v -0.286650 -0.087425 -0.049215
+v -0.286369 -0.091695 -0.040046
+v -0.286125 -0.096023 -0.030594
+v -0.286377 -0.080262 -0.028601
+v -0.286650 -0.069668 -0.048138
+v -0.286410 -0.081345 -0.039068
+v -0.286650 -0.069835 -0.017253
+v -0.286340 -0.087499 -0.024422
+v -0.286650 0.069670 -0.017420
+v -0.286650 0.087533 -0.049188
+v -0.286650 0.099083 -0.042400
+v -0.286650 0.098993 -0.023004
+v -0.286650 0.087430 -0.016343
+v -0.286138 0.078977 -0.030593
+v -0.286342 0.094189 -0.038155
+v -0.286650 0.069836 -0.048304
+v -0.286360 0.094738 -0.028601
+v -0.286441 0.084288 -0.040750
+v -0.286340 0.087501 -0.024422
+v -0.164197 -0.041326 -0.109221
+v -0.163965 0.041364 -0.108795
+v -0.165207 -0.025047 -0.109567
+v -0.161755 -0.020339 -0.104974
+v -0.161789 0.020450 -0.105018
+v -0.165217 0.025115 -0.109581
+v -0.120625 0.018760 -0.096779
+v 0.119848 0.033877 -0.098381
+v 0.125583 0.023928 -0.109676
+v 0.125558 0.013015 -0.109621
+v 0.123295 0.007784 -0.104901
+v 0.123312 -0.007868 -0.104936
+v 0.125575 -0.013098 -0.109656
+v 0.125573 -0.023992 -0.109654
+v 0.119595 -0.033793 -0.097929
+v -0.155704 -0.032585 -0.097123
+v -0.145949 -0.021074 -0.096779
+v 0.081924 -0.018757 -0.096779
+v 0.107878 -0.020981 -0.096779
+v 0.107831 0.021077 -0.096779
+v -0.145727 0.020908 -0.096779
+v -0.155920 0.032887 -0.097360
+v -0.120791 -0.018924 -0.096779
+v 0.082087 0.018916 -0.096779
+v 0.272359 -0.116240 -0.043679
+v 0.272188 -0.124403 -0.050417
+v 0.255085 -0.123879 -0.049875
+v 0.255218 -0.115986 -0.041096
+v 0.255079 -0.116581 -0.011766
+v 0.272435 -0.124459 -0.004508
+v 0.272224 -0.115889 -0.012607
+v 0.255160 -0.191579 -0.042200
+v 0.272336 -0.191924 -0.042338
+v 0.255168 -0.191924 -0.023636
+v 0.272304 -0.192127 -0.023324
+v 0.275339 -0.121125 -0.008600
+v 0.275259 -0.189539 -0.025260
+v 0.275360 -0.120954 -0.046092
+v 0.275264 -0.189488 -0.040132
+v 0.272408 0.116612 -0.010410
+v 0.272201 0.126466 -0.004381
+v 0.255212 0.117058 -0.009880
+v 0.272264 0.125149 -0.050449
+v 0.272248 0.116471 -0.044581
+v 0.255176 0.191830 -0.023502
+v 0.272304 0.192182 -0.023393
+v 0.255153 0.191686 -0.042077
+v 0.272336 0.191863 -0.042408
+v 0.275322 0.120614 -0.045843
+v 0.275259 0.189613 -0.025356
+v 0.275368 0.121501 -0.008361
+v 0.275265 0.189404 -0.040226
+v -0.180542 -0.122352 -0.010418
+v -0.169818 -0.123552 -0.011088
+v -0.182520 -0.118601 -0.051030
+v -0.173449 -0.117874 -0.051056
+v -0.182547 -0.191601 -0.023425
+v -0.173472 -0.191797 -0.023118
+v -0.182547 -0.191381 -0.042552
+v -0.173475 -0.191736 -0.042701
+v -0.170539 -0.189327 -0.040447
+v -0.168164 -0.120086 -0.047177
+v -0.170537 -0.189319 -0.025274
+v -0.169892 -0.116496 -0.017046
+v -0.182451 0.117691 -0.050924
+v -0.173449 0.117649 -0.051036
+v -0.184384 0.115633 -0.010684
+v -0.182523 0.113708 -0.014774
+v -0.182547 0.191507 -0.042415
+v -0.173448 0.191667 -0.042757
+v -0.182545 0.191505 -0.023315
+v -0.173483 0.191842 -0.023144
+v -0.171754 0.117408 -0.047608
+v -0.172292 0.117326 -0.013272
+v -0.170532 0.189377 -0.025315
+v -0.170522 0.189225 -0.040514
+v 0.261250 0.091838 0.006106
+vt 0.425581 0.743100
+vt 0.425600 0.743300
+vt 0.425317 0.743300
+vt 0.419500 0.748516
+vt 0.419700 0.748484
+vt 0.419700 0.748681
+vt 0.419500 0.748319
+vt 0.419700 0.748300
+vt 0.425416 0.743100
+vt 0.425384 0.743300
+vt 0.425581 0.743300
+vt 0.425219 0.743100
+vt 0.425200 0.743300
+vt 0.419500 0.748583
+vt 0.419700 0.748516
+vt 0.419700 0.748319
+vt 0.419700 0.748700
+vt 0.424133 0.743100
+vt 0.424241 0.743300
+vt 0.423956 0.743300
+vt 0.419500 0.748319
+vt 0.419700 0.748300
+vt 0.419700 0.748583
+vt 0.423956 0.743100
+vt 0.424012 0.743300
+vt 0.424253 0.743300
+vt 0.423859 0.743300
+vt 0.419500 0.748583
+vt 0.419700 0.748700
+vt 0.419700 0.748417
+vt 0.425384 0.743100
+vt 0.419500 0.748700
+vt 0.425600 0.743100
+vt 0.419500 0.748300
+vt 0.425200 0.743100
+vt 0.202164 0.939119
+vt 0.200602 0.942284
+vt 0.197281 0.943383
+vt 0.425700 0.748484
+vt 0.425612 0.748253
+vt 0.425153 0.748288
+vt 0.419500 0.748700
+vt 0.419500 0.748516
+vt 0.424241 0.743100
+vt 0.419500 0.748300
+vt 0.423859 0.743100
+vt 0.193816 0.939748
+vt 0.196205 0.934916
+vt 0.200574 0.935810
+vt 0.197148 0.934417
+vt 0.193816 0.937282
+vt 0.196205 0.942154
+vt 0.193502 0.940169
+vt 0.194518 0.935338
+vt 0.197919 0.934217
+vt 0.201043 0.935798
+vt 0.425384 0.748200
+vt 0.425100 0.748516
+vt 0.425301 0.748773
+vt 0.425647 0.748712
+vt 0.201583 0.938783
+vt 0.198673 0.942154
+vt 0.201073 0.939748
+vt 0.200168 0.935405
+vt 0.023600 0.872500
+vt 0.023600 0.872300
+vt 0.023600 0.872861
+vt 0.024185 0.872100
+vt 0.024000 0.872188
+vt 0.024000 0.872100
+vt 0.023927 0.872100
+vt 0.023900 0.872160
+vt 0.023710 0.872100
+vt 0.023916 0.872200
+vt 0.023500 0.872540
+vt 0.023500 0.872500
+vt 0.023500 0.872300
+vt 0.023400 0.872362
+vt 0.023400 0.872450
+vt 0.023400 0.872460
+vt 0.023500 0.872900
+vt 0.023556 0.872813
+vt 0.024273 0.872852
+vt 0.024300 0.872900
+vt 0.023580 0.872900
+vt 0.024300 0.872900
+vt 0.024400 0.872900
+vt 0.024400 0.872541
+vt 0.024362 0.872900
+vt 0.024310 0.872800
+vt 0.024400 0.872300
+vt 0.024300 0.872300
+vt 0.024300 0.872500
+vt 0.024500 0.872351
+vt 0.024500 0.872466
+vt 0.024500 0.872447
+vt 0.024400 0.872500
+vt 0.024300 0.872500
+vt 0.024300 0.872300
+vt 0.023600 0.872500
+vt 0.024000 0.872144
+vt 0.024000 0.872200
+vt 0.024404 0.872618
+vt 0.023713 0.872100
+vt 0.023900 0.872149
+vt 0.023936 0.872100
+vt 0.023900 0.872200
+vt 0.024171 0.872100
+vt 0.024600 0.872500
+vt 0.024600 0.872760
+vt 0.024407 0.872747
+vt 0.024400 0.872300
+vt 0.024500 0.872339
+vt 0.024400 0.872500
+vt 0.024408 0.872300
+vt 0.024537 0.872892
+vt 0.024500 0.872450
+vt 0.023800 0.873000
+vt 0.024300 0.872900
+vt 0.024289 0.872873
+vt 0.024339 0.873000
+vt 0.024300 0.872800
+vt 0.024358 0.872867
+vt 0.024300 0.872900
+vt 0.024400 0.872932
+vt 0.023600 0.872900
+vt 0.023526 0.872988
+vt 0.023557 0.872900
+vt 0.023500 0.872900
+vt 0.023500 0.872873
+vt 0.023485 0.872627
+vt 0.023600 0.872800
+vt 0.023600 0.872867
+vt 0.023600 0.872300
+vt 0.023295 0.873501
+vt 0.023300 0.872500
+vt 0.023457 0.872300
+vt 0.023500 0.872300
+vt 0.023408 0.872829
+vt 0.023400 0.872334
+vt 0.023400 0.872447
+vt 0.023500 0.872500
+vt 0.274917 0.980804
+vt 0.256800 0.822000
+vt 0.272572 0.821596
+vt 0.023702 0.872100
+vt 0.023599 0.871793
+vt 0.023461 0.872300
+vt 0.023700 0.872100
+vt 0.260000 0.981200
+vt 0.023635 0.873155
+vt 0.023689 0.872386
+vt 0.023500 0.872300
+vt 0.023700 0.872100
+vt 0.023800 0.872957
+vt 0.023800 0.873000
+vt 0.283900 0.970600
+vt 0.275500 0.828600
+vt 0.023700 0.871500
+vt 0.023700 0.871947
+vt 0.024200 0.872100
+vt 0.024200 0.871872
+vt 0.024200 0.871500
+vt 0.318100 0.827500
+vt 0.322338 0.820230
+vt 0.324767 0.979503
+vt 0.317300 0.969700
+vt 0.024100 0.873000
+vt 0.024200 0.872100
+vt 0.024073 0.873062
+vt 0.285269 0.837021
+vt 0.287200 0.847500
+vt 0.287200 0.848000
+vt 0.307200 0.847800
+vt 0.307300 0.847400
+vt 0.308663 0.835336
+vt 0.307600 0.951300
+vt 0.292500 0.951700
+vt 0.289300 0.850000
+vt 0.304900 0.849600
+vt 0.308400 0.951400
+vt 0.289800 0.850000
+vt 0.288500 0.849700
+vt 0.290200 0.953400
+vt 0.290100 0.953800
+vt 0.288939 0.965989
+vt 0.311945 0.964153
+vt 0.310300 0.953700
+vt 0.310200 0.953300
+vt 0.305300 0.849500
+vt 0.024400 0.872505
+vt 0.024400 0.872511
+vt 0.024200 0.873200
+vt 0.215600 0.753800
+vt 0.222600 0.755500
+vt 0.196600 0.885200
+vt 0.196400 0.754200
+vt 0.024400 0.872627
+vt 0.024400 0.872900
+vt 0.024400 0.872641
+vt 0.211600 0.883200
+vt 0.241700 0.883200
+vt 0.241700 0.755500
+vt 0.336300 0.819900
+vt 0.024200 0.872100
+vt 0.024415 0.872300
+vt 0.023915 0.871653
+vt 0.336400 0.979000
+vt 0.023699 0.873239
+vt 0.024400 0.872300
+vt 0.024139 0.872693
+vt 0.099900 0.753200
+vt 0.107615 0.918014
+vt 0.082000 0.754000
+vt 0.029300 0.756500
+vt 0.037200 0.921400
+vt 0.023500 0.872933
+vt 0.023500 0.872655
+vt 0.023500 0.872659
+vt 0.174100 0.748900
+vt 0.175000 0.875700
+vt 0.143400 0.749100
+vt 0.155900 0.875800
+vt 0.129100 0.749400
+vt 0.149000 0.877500
+vt 0.130400 0.877800
+vt 0.023500 0.872400
+vt 0.023500 0.872359
+vt 0.023800 0.872100
+vt 0.023400 0.872500
+vt 0.023431 0.872442
+vt 0.023499 0.872507
+vt 0.023500 0.872459
+vt 0.024300 0.872800
+vt 0.023674 0.872747
+vt 0.023400 0.872400
+vt 0.023405 0.872325
+vt 0.023469 0.872300
+vt 0.023747 0.872852
+vt 0.023904 0.873042
+vt 0.023600 0.872800
+vt 0.023500 0.872866
+vt 0.023500 0.872932
+vt 0.023526 0.872900
+vt 0.023552 0.873000
+vt 0.023600 0.872900
+vt 0.023600 0.872849
+vt 0.023600 0.872900
+vt 0.024285 0.872900
+vt 0.024300 0.872900
+vt 0.024322 0.873000
+vt 0.024370 0.872900
+vt 0.024400 0.872936
+vt 0.024400 0.872600
+vt 0.024300 0.872800
+vt 0.024500 0.872400
+vt 0.024415 0.872514
+vt 0.024500 0.872400
+vt 0.024480 0.872330
+vt 0.023923 0.872100
+vt 0.023800 0.872000
+vt 0.023855 0.872000
+vt 0.024358 0.872670
+vt 0.024400 0.872475
+vt 0.023900 0.872168
+vt 0.023900 0.872200
+vt 0.024000 0.872144
+vt 0.024100 0.872000
+vt 0.023900 0.872000
+vt 0.024459 0.872359
+vt 0.024049 0.872000
+vt 0.024000 0.872000
+vt 0.024300 0.872400
+vt 0.024000 0.872200
+vt 0.024400 0.872314
+vt 0.024400 0.872465
+vt 0.024400 0.872459
+vt 0.023600 0.872832
+vt 0.024300 0.872400
+vt 0.023900 0.872181
+vt 0.023916 0.872100
+vt 0.023800 0.872000
+vt 0.024560 0.872500
+vt 0.023923 0.872200
+vt 0.024500 0.872400
+vt 0.024048 0.872000
+vt 0.023800 0.872000
+vt 0.024200 0.872000
+vt 0.024000 0.872117
+vt 0.024000 0.872200
+vt 0.024364 0.872359
+vt 0.024100 0.872000
+vt 0.024400 0.872300
+vt 0.024474 0.872374
+vt 0.024437 0.872157
+vt 0.023800 0.873000
+vt 0.024300 0.872900
+vt 0.024269 0.872861
+vt 0.024300 0.872800
+vt 0.024378 0.872880
+vt 0.024353 0.873000
+vt 0.023500 0.872900
+vt 0.023600 0.872900
+vt 0.023600 0.872900
+vt 0.023546 0.873000
+vt 0.023566 0.872800
+vt 0.023700 0.872000
+vt 0.023403 0.872411
+vt 0.023400 0.872359
+vt 0.023452 0.872052
+vt 0.023500 0.872421
+vt 0.023500 0.872500
+vt 0.023359 0.871904
+vt 0.023400 0.872510
+vt 0.023402 0.872339
+vt 0.023500 0.872300
+vt 0.023500 0.872374
+vt 0.113868 0.795800
+vt 0.113851 0.797500
+vt 0.113947 0.797500
+vt 0.113978 0.795800
+vt 0.114752 0.795800
+vt 0.114754 0.797500
+vt 0.114159 0.797500
+vt 0.114152 0.795800
+vt 0.023500 0.872514
+vt 0.023416 0.873100
+vt 0.024500 0.872500
+vt 0.024500 0.872400
+vt 0.024495 0.872328
+vt 0.023400 0.872513
+vt 0.114605 0.797500
+vt 0.114610 0.797500
+vt 0.115000 0.797254
+vt 0.115000 0.797461
+vt 0.023441 0.872076
+vt 0.023474 0.872251
+vt 0.023407 0.872347
+vt 0.023633 0.871853
+vt 0.024591 0.872229
+vt 0.024600 0.871953
+vt 0.024175 0.871850
+vt 0.114200 0.797500
+vt 0.113800 0.797500
+vt 0.114200 0.797500
+vt 0.113800 0.797500
+vt 0.024185 0.871876
+vt 0.024366 0.872215
+vt 0.023900 0.873200
+vt 0.023955 0.873200
+vt 0.023404 0.873200
+vt 0.023500 0.873200
+vt 0.023918 0.873200
+vt 0.023500 0.873200
+vt 0.023637 0.873200
+vt 0.023500 0.872400
+vt 0.023915 0.873200
+vt 0.024400 0.873200
+vt 0.024000 0.873200
+vt 0.023912 0.873180
+vt 0.024019 0.873200
+vt 0.024400 0.873200
+vt 0.024107 0.873200
+vt 0.023915 0.871400
+vt 0.023488 0.871400
+vt 0.023693 0.871400
+vt 0.023691 0.871400
+vt 0.023500 0.871400
+vt 0.023732 0.871410
+vt 0.023900 0.871400
+vt 0.024253 0.871400
+vt 0.024400 0.871400
+vt 0.023918 0.871400
+vt 0.024400 0.871408
+vt 0.024107 0.871400
+vt 0.446800 0.824500
+vt 0.445622 0.776700
+vt 0.447500 0.776700
+vt 0.448248 0.824500
+vt 0.448769 0.878300
+vt 0.446449 0.830500
+vt 0.448300 0.830500
+vt 0.450800 0.830500
+vt 0.450800 0.878300
+vt 0.023540 0.873368
+vt 0.023800 0.873800
+vt 0.024365 0.873800
+vt 0.023916 0.873576
+vt 0.024451 0.873800
+vt 0.023300 0.872500
+vt 0.023679 0.873350
+vt 0.023463 0.873386
+vt 0.023711 0.873800
+vt 0.024170 0.873720
+vt 0.024400 0.873800
+vt 0.024346 0.872805
+vt 0.024289 0.873474
+vt 0.024200 0.873800
+vt 0.195900 0.957500
+vt 0.173476 0.957370
+vt 0.211148 0.947125
+vt 0.158787 0.930492
+vt 0.152300 0.944050
+vt 0.151360 0.935558
+vt 0.149400 0.934000
+vt 0.023300 0.872500
+vt 0.161661 0.948839
+vt 0.151900 0.945300
+vt 0.024458 0.873800
+vt 0.023600 0.872500
+vt 0.023500 0.873700
+vt 0.023600 0.872300
+vt 0.023500 0.873700
+vt 0.023786 0.873700
+vt 0.023853 0.873700
+vt 0.023581 0.872836
+vt 0.023542 0.872978
+vt 0.023638 0.872994
+vt 0.023500 0.873012
+vt 0.023632 0.872875
+vt 0.024300 0.872300
+vt 0.024400 0.873700
+vt 0.024300 0.872500
+vt 0.024400 0.873700
+vt 0.024182 0.873700
+vt 0.024048 0.873700
+vt 0.024249 0.872852
+vt 0.024372 0.873023
+vt 0.024270 0.872866
+vt 0.024278 0.873001
+vt 0.024400 0.873012
+vt 0.448458 0.785600
+vt 0.448777 0.829300
+vt 0.444783 0.785600
+vt 0.444383 0.829300
+vt 0.442400 0.785600
+vt 0.398776 0.790000
+vt 0.397556 0.833700
+vt 0.395464 0.790000
+vt 0.393832 0.833700
+vt 0.392165 0.790000
+vt 0.023566 0.872900
+vt 0.449467 0.843900
+vt 0.449877 0.887600
+vt 0.448625 0.887600
+vt 0.445922 0.843900
+vt 0.444921 0.887600
+vt 0.443000 0.843900
+vt 0.442700 0.887600
+vt 0.024232 0.870800
+vt 0.023973 0.870800
+vt 0.023600 0.870800
+vt 0.024300 0.870800
+vt 0.024368 0.870800
+vt 0.024175 0.870800
+vt 0.024113 0.870800
+vt 0.024101 0.870800
+vt 0.024187 0.870800
+vt 0.023711 0.870800
+vt 0.023900 0.870800
+vt 0.023853 0.870800
+vt 0.525078 0.804266
+vt 0.463158 0.747852
+vt 0.481347 0.748905
+vt 0.445336 0.921290
+vt 0.447952 0.766567
+vt 0.523894 0.886067
+vt 0.459785 0.940449
+vt 0.519900 0.893700
+vt 0.475485 0.941367
+vt 0.376784 0.776852
+vt 0.389300 0.767300
+vt 0.374812 0.909186
+vt 0.386800 0.918800
+vt 0.023600 0.872500
+vt 0.023500 0.870900
+vt 0.023781 0.870900
+vt 0.023777 0.870900
+vt 0.023500 0.870900
+vt 0.023600 0.872300
+vt 0.023532 0.871675
+vt 0.023628 0.871621
+vt 0.023588 0.871888
+vt 0.023701 0.871705
+vt 0.023500 0.871694
+vt 0.024300 0.872300
+vt 0.024300 0.872500
+vt 0.024400 0.870900
+vt 0.024037 0.870900
+vt 0.024122 0.870900
+vt 0.024400 0.870900
+vt 0.024400 0.871633
+vt 0.024185 0.871637
+vt 0.024317 0.871575
+vt 0.024215 0.871697
+vt 0.024400 0.871694
+vt 0.023500 0.871500
+vt 0.023500 0.871520
+vt 0.023700 0.871500
+vt 0.023500 0.871529
+vt 0.023500 0.871500
+vt 0.023800 0.871500
+vt 0.023700 0.871500
+vt 0.023800 0.871593
+vt 0.024043 0.871590
+vt 0.024100 0.871500
+vt 0.024200 0.871500
+vt 0.023826 0.871800
+vt 0.024000 0.871800
+vt 0.023833 0.871800
+vt 0.024000 0.871800
+vt 0.023931 0.872518
+vt 0.023700 0.873000
+vt 0.023725 0.872465
+vt 0.023700 0.873000
+vt 0.024100 0.872886
+vt 0.024000 0.873100
+vt 0.024000 0.873100
+vt 0.023900 0.873100
+vt 0.023900 0.873100
+vt 0.023800 0.873100
+vt 0.023828 0.872852
+vt 0.024000 0.872853
+vt 0.023833 0.872847
+vt 0.024000 0.872856
+vt 0.023800 0.872055
+vt 0.023700 0.872100
+vt 0.023800 0.871800
+vt 0.023652 0.871773
+vt 0.023654 0.872748
+vt 0.023782 0.872761
+vt 0.023800 0.872100
+vt 0.023985 0.872992
+vt 0.023729 0.872761
+vt 0.024100 0.872100
+vt 0.023724 0.871767
+vt 0.024007 0.871800
+vt 0.024200 0.872100
+vt 0.024100 0.872055
+vt 0.311200 0.832700
+vt 0.308184 0.836557
+vt 0.282600 0.833500
+vt 0.285761 0.837057
+vt 0.306150 0.848300
+vt 0.288207 0.848468
+vt 0.311685 0.964494
+vt 0.285400 0.969500
+vt 0.289161 0.965077
+vt 0.315700 0.968600
+vt 0.291572 0.952706
+vt 0.308812 0.952377
+vt 0.023885 0.873900
+vt 0.023300 0.873900
+vt 0.023300 0.872982
+vt 0.023690 0.873206
+vt 0.023293 0.873900
+vt 0.219114 0.934635
+vt 0.220375 0.932915
+vt 0.219079 0.934744
+vt 0.023644 0.873180
+vt 0.023158 0.873104
+vt 0.023399 0.873900
+vt 0.023234 0.873150
+vt 0.023504 0.873900
+vt 0.219362 0.943465
+vt 0.219791 0.943926
+vt 0.221140 0.934040
+vt 0.239800 0.937600
+vt 0.239700 0.942400
+vt 0.221005 0.943836
+vt 0.151513 0.935692
+vt 0.148900 0.934036
+vt 0.024293 0.873497
+vt 0.024600 0.873900
+vt 0.024085 0.873900
+vt 0.024600 0.873900
+vt 0.024679 0.873161
+vt 0.131100 0.939200
+vt 0.130286 0.939886
+vt 0.024181 0.873900
+vt 0.024665 0.873134
+vt 0.024434 0.873900
+vt 0.151750 0.945235
+vt 0.131314 0.944514
+vt 0.130942 0.940536
+vt 0.150048 0.945382
+vt 0.149954 0.935578
+vt 0.115000 0.797261
+vt 0.115000 0.797114
+vt 0.023300 0.871847
+vt 0.023300 0.871519
+vt 0.023182 0.871873
+vt 0.023559 0.871500
+vt 0.023300 0.872500
+vt 0.023300 0.872500
+vt 0.023185 0.871837
+vt 0.023519 0.871500
+vt 0.022903 0.872400
+vt 0.023300 0.872300
+vt 0.022900 0.872400
+vt 0.023421 0.872327
+vt 0.024469 0.871798
+vt 0.024386 0.871500
+vt 0.024212 0.871825
+vt 0.024455 0.872017
+vt 0.024634 0.871876
+vt 0.024433 0.871500
+vt 0.024600 0.871500
+vt 0.024662 0.871899
+vt 0.024475 0.871500
+vt 0.024918 0.872400
+vt 0.024921 0.872400
+vt 0.024600 0.872300
+vt 0.024600 0.872500
+vt 0.113700 0.796700
+vt 0.113700 0.796700
+vt 0.113700 0.796500
+vt 0.113700 0.796500
+vt 0.115000 0.796700
+vt 0.115000 0.796700
+vt 0.115000 0.796500
+vt 0.129900 0.944000
+vt 0.149552 0.947076
+vt 0.131281 0.945627
+vt 0.022900 0.872400
+vt 0.023300 0.872500
+vt 0.022900 0.872400
+vt 0.023300 0.872300
+vt 0.210839 0.928012
+vt 0.162933 0.910473
+vt 0.206638 0.909532
+vt 0.209530 0.912370
+vt 0.160215 0.928375
+vt 0.160429 0.913342
+vn -0.0974 0.3094 0.9459
+vn -0.0684 0.9461 0.3165
+vn -0.0684 0.8928 -0.4453
+vn -0.0688 0.3164 -0.9461
+vn -0.0684 0.3162 -0.9462
+vn -0.0684 -0.4453 -0.8928
+vn 0.1077 -0.9428 -0.3155
+vn 0.1079 -0.9429 -0.3151
+vn 0.1080 -0.9429 -0.3151
+vn -0.2548 -0.7952 0.5501
+vn -0.4264 0.4008 0.8109
+vn -0.0974 0.9459 -0.3094
+vn 0.1080 0.3154 -0.9428
+vn -0.2548 -0.5501 -0.7952
+vn -0.4264 -0.8109 0.4008
+vn -0.1078 0.3149 0.9430
+vn -0.1080 0.3149 0.9430
+vn -0.1075 0.3156 0.9428
+vn 0.0684 0.8928 0.4453
+vn 0.0684 0.9461 -0.3165
+vn 0.0684 0.4453 -0.8928
+vn 0.0684 -0.3162 -0.9462
+vn 0.0688 -0.3164 -0.9461
+vn 0.0974 -0.9459 -0.3094
+vn 0.2548 -0.5501 0.7952
+vn 1.0000 0.0000 0.0000
+vn -1.0000 0.0000 0.0000
+vn 0.2548 0.7952 0.5501
+vn -0.1079 0.9429 -0.3151
+vn -0.1080 0.9429 -0.3151
+vn -0.1077 0.9428 -0.3155
+vn 0.0974 0.3094 -0.9459
+vn 0.4264 -0.8109 -0.4008
+vn 0.4264 -0.4008 0.8109
+vn 0.9144 0.3845 -0.1265
+vn 0.6243 0.2613 -0.7362
+vn 0.7767 -0.1496 -0.6118
+vn 0.1360 -0.8911 -0.4329
+vn 0.6167 -0.7031 0.3540
+vn 0.2469 -0.7801 -0.5748
+vn 0.1820 -0.9648 0.1896
+vn 0.9477 -0.2852 -0.1430
+vn 0.3517 0.1830 0.9180
+vn 0.6425 0.2601 0.7208
+vn 0.7695 0.6167 -0.1661
+vn -0.0013 0.8005 0.5994
+vn 0.2407 0.8688 0.4327
+vn 0.2581 0.8180 -0.5142
+vn 0.8346 0.4749 0.2792
+vn 0.2000 0.9025 -0.3815
+vn -0.8970 0.3174 0.3078
+vn -0.8380 0.4438 0.3176
+vn -0.9961 -0.0563 -0.0677
+vn -0.9977 -0.0598 -0.0308
+vn -0.9979 -0.0624 0.0163
+vn -0.9996 -0.0261 0.0122
+vn -0.9959 -0.0532 0.0729
+vn -0.8296 0.1927 -0.5241
+vn -0.6576 -0.0682 -0.7503
+vn -0.9999 0.0067 -0.0101
+vn -0.8970 0.3245 -0.3000
+vn -0.7163 -0.1401 0.6836
+vn -0.9180 0.3716 0.1386
+vn -0.7522 -0.2721 -0.6001
+vn -0.7708 -0.1511 -0.6189
+vn -1.0000 0.0076 0.0036
+vn -1.0000 0.0027 0.0017
+vn -0.0526 -0.4838 -0.8736
+vn 0.3026 -0.6874 -0.6602
+vn 0.0129 -0.5395 -0.8419
+vn 0.0152 -0.3554 -0.9346
+vn 0.2460 -0.8543 -0.4579
+vn -0.2417 -0.7070 -0.6646
+vn -0.0624 -0.5128 -0.8563
+vn -0.3752 -0.2962 -0.8783
+vn -0.1723 -0.7990 -0.5761
+vn -0.0522 -0.0066 -0.9986
+vn 0.0432 -0.1028 -0.9938
+vn 0.2315 -0.8193 -0.5246
+vn 0.1565 0.8703 -0.4670
+vn 0.0360 0.5596 -0.8280
+vn 0.0579 0.3811 -0.9227
+vn 0.1162 0.5081 -0.8534
+vn -0.0630 0.0869 -0.9942
+vn -0.3830 0.7901 -0.4787
+vn 0.3729 -0.6859 -0.6248
+vn 0.3336 -0.3007 -0.8935
+vn 0.3280 0.3065 -0.8936
+vn 0.3769 0.6798 -0.6291
+vn -0.3316 0.3010 -0.8941
+vn -0.3273 -0.3065 -0.8938
+vn -0.3551 -0.6878 -0.6331
+vn -0.3466 0.6930 -0.6321
+vn -0.0437 0.8569 0.5137
+vn -0.2045 0.9456 0.2530
+vn -0.0106 0.9999 -0.0021
+vn -0.0012 0.9368 0.3500
+vn -0.0122 0.9095 0.4154
+vn -0.0592 0.8444 0.5324
+vn 0.1774 0.9705 0.1634
+vn 0.2783 0.7004 -0.6572
+vn -0.2793 0.6866 -0.6712
+vn 0.1202 0.8679 -0.4819
+vn -0.0490 0.3485 -0.9360
+vn -0.1299 0.5340 -0.8354
+vn -0.5723 0.4637 -0.6764
+vn 0.0059 -0.3330 0.9429
+vn 0.0061 -0.3381 0.9411
+vn 0.0008 0.0003 1.0000
+vn -0.0102 0.4474 0.8943
+vn -0.0046 0.3206 0.9472
+vn 0.0093 -0.9019 0.4319
+vn 0.0509 -0.9389 0.3405
+vn 0.1396 -0.9789 0.1490
+vn -0.1785 -0.9839 -0.0004
+vn 0.0084 -0.9034 0.4288
+vn 0.0169 -0.8885 0.4585
+vn 1.0000 -0.0002 -0.0001
+vn 1.0000 -0.0000 -0.0001
+vn 0.8405 -0.4318 0.3274
+vn 0.9648 0.2188 -0.1459
+vn 0.9995 0.0307 -0.0110
+vn 1.0000 0.0003 0.0035
+vn 0.8184 -0.3482 -0.4571
+vn 0.9567 -0.2903 0.0201
+vn 0.9998 0.0045 -0.0183
+vn 0.1539 -0.9280 -0.3393
+vn 0.9999 -0.0107 -0.0066
+vn 1.0000 -0.0033 -0.0018
+vn -0.0412 -0.9788 0.2007
+vn -0.4496 -0.8871 -0.1041
+vn 1.0000 0.0007 -0.0013
+vn 0.9891 0.1457 -0.0216
+vn 0.9744 0.2049 -0.0929
+vn 0.9783 0.1949 -0.0700
+vn 0.9966 0.0238 -0.0785
+vn 0.9992 -0.0105 -0.0375
+vn 1.0000 -0.0003 0.0004
+vn 0.9856 -0.1016 -0.1355
+vn 0.8745 -0.4739 0.1038
+vn 0.9946 0.0373 0.0964
+vn 0.9931 0.0614 0.0998
+vn 0.9953 0.0910 0.0326
+vn 0.9937 0.0975 0.0553
+vn 1.0000 0.0090 0.0013
+vn 0.8463 0.1950 -0.4958
+vn 0.9835 0.0891 0.1572
+vn 0.9857 0.1684 0.0114
+vn 0.7595 0.6492 0.0398
+vn 0.9994 0.0257 -0.0245
+vn 0.9167 0.3862 0.1025
+vn 0.9991 0.0411 0.0131
+vn 0.9998 -0.0177 -0.0038
+vn 0.9984 -0.0364 -0.0423
+vn 1.0000 0.0002 -0.0001
+vn 1.0000 0.0010 -0.0005
+vn 1.0000 0.0010 0.0001
+vn -0.9999 -0.0151 -0.0032
+vn -0.9997 -0.0189 -0.0161
+vn -1.0000 -0.0037 -0.0020
+vn -0.9492 0.0845 -0.3031
+vn -0.6289 0.2908 -0.7210
+vn -0.9991 -0.0425 -0.0085
+vn -0.9987 -0.0474 -0.0163
+vn -0.8032 -0.2255 -0.5514
+vn -0.8028 0.2269 -0.5514
+vn -1.0000 -0.0001 0.0002
+vn -0.6325 -0.3009 -0.7137
+vn -0.9999 -0.0102 0.0081
+vn -1.0000 -0.0001 0.0010
+vn -0.9982 -0.0562 0.0193
+vn -0.9978 -0.0625 0.0207
+vn -0.9997 0.0005 0.0231
+vn -0.9955 -0.0361 -0.0882
+vn -1.0000 -0.0020 0.0035
+vn -1.0000 -0.0040 0.0015
+vn -0.9867 -0.1545 -0.0501
+vn -0.9919 -0.0703 -0.1056
+vn -0.9831 -0.1629 -0.0835
+vn -0.9933 -0.0971 0.0633
+vn -0.9939 -0.0983 0.0493
+vn -0.9997 -0.0238 0.0017
+vn -0.9997 0.0232 0.0053
+vn -0.9964 -0.0302 0.0787
+vn -0.9953 -0.0547 0.0799
+vn -0.8789 -0.1976 -0.4341
+vn -0.9966 0.0534 0.0625
+vn -0.9984 0.0532 0.0195
+vn -0.8559 0.1271 -0.5012
+vn -1.0000 0.0014 0.0001
+vn -0.9993 -0.0310 0.0233
+vn -0.5167 0.1508 0.8428
+vn -0.9974 -0.0179 0.0701
+vn -0.8003 0.3233 0.5049
+vn -0.9999 0.0104 0.0075
+vn -1.0000 -0.0002 -0.0003
+vn -0.1099 -0.7996 -0.5905
+vn -0.7234 -0.3710 -0.5823
+vn -0.5757 0.7813 0.2412
+vn -0.1760 0.8994 0.4000
+vn -0.8386 -0.4420 0.3184
+vn -0.4657 0.7624 -0.4493
+vn 0.2589 0.9617 -0.0902
+vn 0.2732 0.6555 -0.7041
+vn 0.0026 -0.6312 0.7756
+vn -0.0174 -0.5944 0.8040
+vn -0.0282 -0.0909 0.9955
+vn -0.1932 -0.2120 -0.9580
+vn 0.4235 0.4232 -0.8010
+vn 0.8103 0.5590 0.1759
+vn 0.9392 0.3423 -0.0279
+vn 0.9959 0.0729 -0.0533
+vn 0.9168 0.3693 -0.1521
+vn -0.0831 -0.1954 -0.9772
+vn -0.1745 0.2225 -0.9592
+vn -0.1785 0.2229 -0.9584
+vn 0.3032 -0.2942 0.9064
+vn -0.1089 -0.6525 0.7500
+vn 0.6600 -0.1050 0.7439
+vn 0.4335 -0.6262 -0.6480
+vn 0.9432 -0.3101 -0.1193
+vn 0.9537 -0.2745 0.1232
+vn 0.2153 -0.8785 0.4265
+vn 0.1546 -0.9856 -0.0680
+vn 0.3121 -0.8339 0.4552
+vn 0.1899 -0.4264 0.8844
+vn 0.1148 -0.4128 0.9036
+vn 0.0165 0.3796 0.9250
+vn -0.0079 0.5425 0.8400
+vn 0.0594 0.9979 0.0271
+vn -0.0247 0.9786 0.2043
+vn 0.0519 0.7618 -0.6457
+vn 0.0235 0.3237 -0.9459
+vn -0.0212 -0.2322 -0.9724
+vn 0.0210 -0.6904 -0.7231
+vn -0.0026 -0.9418 -0.3363
+vn 0.9997 0.0172 -0.0190
+vn 1.0000 0.0047 -0.0044
+vn 0.9990 0.0142 -0.0430
+vn 0.9973 0.0303 -0.0667
+vn 0.9975 0.0586 -0.0404
+vn 0.9991 0.0380 -0.0165
+vn -0.0766 -0.9939 0.0791
+vn 0.0096 -0.9624 0.2715
+vn -0.0118 -0.3624 0.9319
+vn -0.0404 -0.1309 0.9906
+vn 0.2025 0.9438 0.2612
+vn -0.3745 0.8135 0.4449
+vn 0.7587 0.6511 0.0193
+vn 0.1003 0.9924 -0.0710
+vn 0.6715 0.6139 -0.4149
+vn -0.0065 0.6551 -0.7555
+vn 0.0291 0.1122 -0.9933
+vn -0.0543 -0.2977 -0.9531
+vn -0.0687 -0.7715 -0.6326
+vn 0.9999 -0.0044 0.0093
+vn 1.0000 0.0031 0.0025
+vn 1.0000 0.0039 -0.0060
+vn 0.9989 0.0371 0.0287
+vn 0.0468 0.8651 -0.4993
+vn -0.5935 0.7903 0.1523
+vn -0.0243 0.8145 0.5797
+vn -0.0177 0.2063 0.9783
+vn 0.0551 -0.0613 0.9966
+vn 0.0228 -0.8439 0.5360
+vn -0.0009 -0.8817 0.4719
+vn 0.0663 -0.8745 -0.4805
+vn 0.0462 -0.7439 -0.6667
+vn -0.6190 -0.0118 -0.7853
+vn 0.0081 0.0695 -0.9976
+vn -0.6491 0.5935 -0.4759
+vn -0.9952 -0.0031 0.0979
+vn -0.9976 -0.0506 0.0466
+vn -0.9965 -0.0771 -0.0321
+vn 0.0121 0.8796 -0.4755
+vn -0.0245 0.9723 0.2323
+vn 0.0163 0.8907 0.4543
+vn -0.1155 0.4874 0.8655
+vn -0.0497 0.3526 0.9345
+vn -0.0401 -0.3924 0.9189
+vn 0.0015 -0.5635 0.8261
+vn -0.6130 -0.7897 0.0242
+vn 0.0247 -0.9786 0.2043
+vn -0.0425 -0.7751 -0.6304
+vn -0.5969 -0.2808 -0.7516
+vn -0.0144 0.1090 -0.9939
+vn -0.6369 0.5382 -0.5520
+vn -0.9969 0.0500 -0.0602
+vn -0.9988 -0.0153 -0.0459
+vn -0.9979 -0.0641 -0.0075
+vn -0.0083 -0.9973 -0.0728
+vn 0.0119 -0.9630 -0.2693
+vn 0.0064 -0.5495 0.8355
+vn -0.0029 -0.4758 0.8795
+vn 0.0031 0.5779 0.8161
+vn -0.0032 0.6221 0.7829
+vn 0.0036 0.9489 -0.3154
+vn -0.0081 0.9182 -0.3961
+vn 0.0087 -0.0397 -0.9992
+vn -0.0130 -0.2378 -0.9712
+vn -0.0142 -0.7957 0.6055
+vn 0.0113 -0.9615 -0.2747
+vn 0.0155 -0.5493 0.8355
+vn -0.0124 0.2387 0.9710
+vn 0.0149 0.5765 0.8169
+vn -0.0117 0.9479 0.3183
+vn 0.0160 0.9483 -0.3170
+vn -0.0087 0.7916 -0.6109
+vn 0.0077 -0.0452 -0.9990
+vn 0.0023 -0.1018 -0.9948
+vn -0.0027 -0.8912 -0.4537
+vn 0.0175 -0.9623 -0.2715
+vn 0.0199 -0.5517 0.8338
+vn -0.0264 0.1026 0.9944
+vn 0.0174 0.0871 0.9960
+vn -0.0166 0.7755 0.6312
+vn -0.0137 0.8368 -0.5474
+vn 0.0112 0.9336 0.3582
+vn 0.0159 0.9492 -0.3142
+vn 0.0165 -0.0434 -0.9989
+vn 0.0333 -0.5295 0.8477
+vn 0.5941 -0.2714 0.7572
+vn 0.1820 0.0015 0.9833
+vn -0.0755 0.4627 0.8833
+vn -0.0228 0.2527 0.9673
+vn 0.8487 -0.4241 0.3161
+vn 0.6332 -0.7275 0.2643
+vn -0.0218 -0.8178 0.5751
+vn -0.0370 -0.9619 0.2710
+vn 0.2210 0.3041 0.9266
+vn 0.7458 -0.1634 -0.6458
+vn 0.7623 -0.3069 -0.5698
+vn 0.0329 -0.3191 -0.9471
+vn 0.6522 -0.2489 -0.7160
+vn -0.0165 0.3057 -0.9520
+vn 0.6319 0.2748 -0.7247
+vn 0.7386 0.3703 -0.5633
+vn 0.6629 -0.1221 -0.7387
+vn 0.2137 0.4821 0.8497
+vn 0.0866 0.8912 0.4452
+vn 0.1889 0.9660 0.1763
+vn 0.9991 0.0230 0.0365
+vn 0.9619 0.1459 0.2313
+vn 0.8394 0.2901 0.4597
+vn 0.0374 0.9665 0.2539
+vn -0.0932 -0.8332 0.5451
+vn -0.0036 0.7342 0.6789
+vn -0.0031 -0.2306 0.9731
+vn 0.0026 -0.2379 0.9713
+vn -0.0047 0.7179 -0.6962
+vn 0.0031 -0.2305 -0.9731
+vn -0.0026 -0.2378 -0.9713
+vn -0.0028 -0.8703 -0.4925
+vn 0.0029 -0.8630 -0.5052
+vn -0.0029 -0.8630 0.5052
+vn 0.0028 -0.8703 0.4924
+vn -0.9986 -0.0527 0.0097
+vn -0.9976 -0.0610 -0.0316
+vn -0.9991 -0.0350 0.0252
+vn -0.9994 -0.0146 -0.0326
+vn -0.9988 0.0023 -0.0480
+vn -0.9998 0.0157 0.0133
+vn -0.9998 0.0194 0.0045
+vn -0.9995 -0.0084 0.0306
+vn -0.9997 0.0218 -0.0127
+vn -0.9998 0.0126 -0.0122
+vn -0.9992 -0.0076 0.0385
+vn -0.0036 -0.7343 -0.6788
+vn -0.0031 0.2305 -0.9731
+vn 0.0047 -0.7179 -0.6962
+vn 0.0026 0.2378 -0.9713
+vn -0.0047 -0.7178 0.6962
+vn 0.0036 -0.7342 0.6789
+vn 0.0031 0.2305 0.9731
+vn -0.0026 0.2379 0.9713
+vn -0.0028 0.8703 0.4924
+vn 0.0029 0.8630 0.5052
+vn -0.0029 0.8630 -0.5052
+vn 0.0028 0.8703 -0.4925
+vn -0.9998 -0.0168 0.0045
+vn -0.9996 -0.0203 -0.0204
+vn -0.9995 -0.0211 0.0220
+vn -0.9997 0.0018 -0.0249
+vn -0.9993 0.0079 -0.0367
+vn -0.9995 0.0290 -0.0152
+vn -0.9990 0.0365 -0.0242
+vn -0.9988 0.0471 0.0130
+vn -0.9990 0.0363 0.0241
+vn -0.9996 0.0098 0.0283
+vn -0.9992 0.0081 0.0385
+vn -0.9999 0.0116 0.0028
+vn -0.9998 0.0182 0.0070
+vn -0.9999 0.0014 0.0138
+vn 0.0040 0.8401 0.5425
+vn -0.0080 0.9834 -0.1815
+vn -0.0051 0.3668 0.9303
+vn 0.0054 -0.7453 0.6667
+vn -0.0074 0.3507 0.9364
+vn -0.0068 0.2891 0.9573
+vn 0.0062 -0.7977 0.6030
+vn 0.0092 -0.8928 -0.4504
+vn -0.0087 -0.8790 0.4767
+vn -0.0112 -0.9915 -0.1293
+vn 0.0112 -0.3821 -0.9240
+vn -0.0099 -0.6817 -0.7316
+vn 0.0091 0.2545 -0.9670
+vn 0.0103 0.9924 -0.1225
+vn 0.0032 0.3115 -0.9503
+vn -0.0033 0.7211 -0.6928
+vn 0.0158 0.9231 0.3842
+vn 0.0259 0.0154 0.9995
+vn 0.1036 -0.4994 0.8601
+vn 0.0213 -0.9742 0.2249
+vn 0.0151 0.9791 -0.2027
+vn -0.0191 0.3965 -0.9178
+vn 0.0292 0.9969 0.0728
+vn 0.0336 -0.1387 0.9898
+vn -0.0158 0.1866 0.9823
+vn 0.0164 -0.8345 0.5508
+vn 0.0069 -0.5611 -0.8277
+vn -0.0079 -0.9223 0.3863
+vn -0.0072 -0.9510 0.3091
+vn 0.0077 -0.4873 -0.8732
+vn 0.0107 0.7170 -0.6970
+vn -0.0108 -0.3508 -0.9364
+vn -0.0097 0.3369 -0.9415
+vn -0.5157 -0.7567 0.4019
+vn 0.0255 -0.8787 0.4766
+vn 0.0229 -0.8739 0.4856
+vn -0.5307 -0.2078 0.8217
+vn -0.6286 0.2701 0.7293
+vn -0.5842 0.7333 0.3479
+vn 0.0089 0.8913 0.4533
+vn 0.0017 0.8624 0.5063
+vn 0.0383 0.9087 0.4158
+vn 0.0035 0.8874 0.4610
+vn -0.4951 0.8203 -0.2863
+vn -0.6519 0.2593 -0.7126
+vn 0.0311 -0.3422 -0.9391
+vn -0.6266 -0.2668 -0.7323
+vn -0.4923 -0.8166 -0.3014
+vn -0.0012 -0.8652 0.5014
+vn 0.0047 0.7178 0.6962
+vn 0.0327 -0.8543 0.5188
+vn -0.0021 -0.8402 0.5422
+vn 0.0881 -0.8309 -0.5494
+vn 0.0036 0.7343 -0.6788
+vn 0.9994 -0.0093 -0.0323
+vn 0.9974 -0.0720 0.0074
+vn 0.9985 -0.0425 -0.0349
+vn 0.9998 0.0127 -0.0133
+vn 0.9999 0.0121 -0.0108
+vn 0.9998 0.0154 0.0127
+vn 0.9997 0.0246 0.0014
+vn 0.9996 -0.0027 -0.0299
+vn 0.9979 -0.0489 0.0434
+vn 0.9995 -0.0009 0.0302
+vn 0.9992 -0.0081 0.0385
+vn -0.0032 0.2379 -0.9713
+vn -0.0019 0.2425 -0.9701
+vn 0.0658 0.8481 -0.5258
+vn 0.9996 -0.0013 -0.0280
+vn 0.9999 -0.0166 0.0029
+vn 0.9997 -0.0165 -0.0194
+vn 0.9994 0.0303 -0.0161
+vn 0.9988 0.0407 -0.0255
+vn 0.9990 0.0365 0.0247
+vn 0.9986 0.0518 0.0125
+vn 0.9996 0.0032 -0.0290
+vn 0.9995 -0.0225 0.0233
+vn 0.9995 0.0104 0.0307
+vn 0.9992 0.0076 0.0385
+vn 0.9999 0.0158 0.0017
+vn 0.9999 0.0133 0.0058
+vn 0.0308 -0.6736 -0.7384
+vn 0.0128 -0.7312 -0.6820
+vn 0.0237 -0.9993 -0.0284
+vn 0.0075 0.9987 -0.0497
+vn 0.0016 0.9979 -0.0644
+vn -0.0000 0.4139 -0.9103
+vn -0.0004 0.3065 -0.9519
+vn 0.0001 -0.3098 -0.9508
+vn 0.3599 -0.2895 -0.8869
+vn 0.0285 0.0150 -0.9995
+vn 0.4184 0.0117 -0.9082
+vn 0.5942 -0.5541 -0.5830
+vn 0.6023 0.5461 -0.5822
+vn -0.1940 0.8071 -0.5576
+vn -0.2586 0.9439 -0.2054
+vn -0.5108 0.8596 -0.0133
+vn 0.0296 -0.8760 -0.4814
+vn -0.2826 -0.9427 -0.1776
+vn -0.4795 -0.8775 0.0079
+vn 0.0020 0.0521 -0.9986
+vn -0.3956 0.4034 -0.8251
+vn -0.4669 -0.2917 -0.8348
+vn 0.0288 -0.3014 -0.9531
+vn 0.0009 -0.3182 -0.9480
+vn -0.0006 0.2866 -0.9581
+vn 0.0327 0.3008 -0.9531
+vn -0.0249 0.4036 -0.9146
+vn -0.4385 0.3298 -0.8361
+vn -0.6966 0.0040 -0.7174
+vn 0.0996 -0.5314 -0.8413
+vn -0.0126 -0.6598 -0.7513
+vn -0.6024 -0.5461 -0.5821
+vn -0.5936 0.5553 -0.5825
+vn 0.8276 -0.4250 -0.3667
+vn 0.7788 -0.6257 -0.0435
+vn 0.8689 -0.2703 -0.4147
+vn 0.2899 -0.5355 -0.7932
+vn -0.4586 -0.8884 -0.0195
+vn -0.3302 0.5433 -0.7719
+vn 0.2942 0.5335 -0.7930
+vn 0.7803 0.6241 -0.0396
+vn 0.7747 0.6316 -0.0295
+vn 0.7632 0.6433 -0.0601
+vn 0.6601 -0.0146 -0.7510
+vn 0.8007 0.0212 -0.5987
+vn 0.7953 -0.0009 -0.6062
+vn 0.7944 0.0030 -0.6074
+vn -0.6153 -0.0058 -0.7883
+vn -0.8873 -0.0017 -0.4612
+vn -0.6122 0.0018 -0.7907
+vn -0.8872 0.0004 -0.4614
+vn -0.0605 -0.0001 -0.9982
+vn 0.0016 0.7416 -0.6708
+vn 0.0413 0.9262 -0.3747
+vn 0.0257 0.2367 -0.9712
+vn -0.6606 0.1705 -0.7311
+vn -0.4038 0.6081 -0.6835
+vn -0.6819 0.7117 0.1690
+vn -0.0066 0.0422 0.9991
+vn 0.0104 0.6729 0.7397
+vn -0.0032 0.9633 0.2682
+vn 0.0299 0.6870 0.7261
+vn 0.0012 0.9274 0.3741
+vn -0.4501 0.8878 -0.0965
+vn -0.5924 -0.5958 -0.5424
+vn -0.0176 -0.7451 -0.6668
+vn -0.5999 -0.6423 0.4770
+vn -0.0196 -0.7981 0.6023
+vn 0.7955 0.3934 0.4608
+vn 0.8792 -0.3792 0.2884
+vn 0.8764 -0.3518 -0.3289
+vn 0.8298 0.3603 -0.4262
+vn -0.0023 -0.8097 0.5869
+vn 0.0198 -0.8824 0.4701
+vn 0.0001 -0.1144 0.9934
+vn -0.6743 -0.0531 0.7366
+vn -0.6442 -0.6110 0.4600
+vn -0.1109 -0.9143 0.3895
+vn 0.1218 -0.5561 -0.8222
+vn 0.0014 -0.9108 -0.4129
+vn -0.0205 -0.9280 -0.3721
+vn -0.0327 -0.0084 -0.9994
+vn -0.6016 0.6384 0.4802
+vn -0.0173 0.8049 0.5931
+vn -0.5944 0.5971 -0.5387
+vn -0.0240 0.7380 -0.6744
+vn 0.8779 0.3545 -0.3219
+vn 1.0000 0.0009 -0.0001
+vn 0.8383 -0.3606 -0.4089
+vn 0.8058 -0.3319 0.4904
+vn -0.6250 0.0106 0.7805
+vn 0.0544 -0.0723 0.9959
+vn -0.7237 0.1750 -0.6676
+vn 0.3651 0.3137 -0.8765
+vn -0.6065 -0.6133 0.5060
+vn -0.0334 -0.7575 0.6520
+vn -0.6024 -0.5880 -0.5399
+vn -0.0367 -0.7460 -0.6649
+vn 0.8719 -0.3742 -0.3159
+vn 0.8721 0.2661 -0.4107
+vn 0.8752 -0.3853 0.2924
+vn 0.9795 0.1058 0.1712
+vn 0.8305 0.5320 0.1647
+vn -0.8324 -0.3844 -0.3991
+vn -0.7102 -0.2320 -0.6647
+vn 0.0536 -0.2685 -0.9618
+vn -0.4090 -0.9119 0.0336
+vn -0.6666 -0.3494 0.6585
+vn -0.6023 0.5968 -0.5301
+vn -0.0368 0.7381 -0.6737
+vn -0.6035 0.6077 0.5162
+vn -0.0371 0.7724 0.6341
+vn 0.8818 0.3506 -0.3155
+vn 0.8799 0.3617 0.3083
+vn 0.9080 -0.3388 -0.2465
+vn 0.8670 -0.2085 0.4526
+vn 0.7422 0.4994 0.4469
+vn 0.7493 0.4913 -0.4441
+vn 0.8537 -0.2616 -0.4504
+vn 0.7443 -0.5290 0.4076
+vn 0.7438 -0.4979 -0.4460
+vn 0.8001 0.0301 0.5991
+vn 0.7458 0.5283 0.4058
+vn 0.7378 0.5347 0.4119
+vn 0.7909 -0.5745 0.2109
+vn 0.7478 -0.6239 -0.2272
+vn 0.7470 0.4950 -0.4439
+vn 0.7980 -0.0610 -0.5996
+vn 0.7368 -0.5400 0.4068
+vn 0.7885 0.0520 0.6128
+vn 0.8072 0.5767 0.1261
+vn 0.7536 -0.4840 -0.4449
+vn 0.7901 0.5883 -0.1722
+vn 0.7734 0.0777 -0.6291
+usemtl None.003
+s off
+f 1/1/1 2/2/1 13/3/1
+f 3/4/2 4/5/2 2/6/2
+f 5/7/3 6/8/3 4/5/3
+f 7/9/4 8/10/5 6/11/5
+f 9/12/6 10/13/6 8/10/6
+f 11/14/7 12/15/8 10/16/9
+f 11/14/10 13/17/10 12/15/10
+f 24/18/11 15/19/11 23/20/11
+f 17/21/12 18/22/12 15/23/12
+f 19/24/13 20/25/13 18/26/13
+f 19/24/14 21/27/14 20/25/14
+f 22/28/15 23/29/15 21/30/15
+f 14/31/16 1/1/17 13/3/18
+f 1/32/19 3/4/19 2/6/19
+f 3/4/20 5/7/20 4/5/20
+f 5/33/21 7/9/21 6/11/21
+f 7/9/22 9/12/22 8/10/23
+f 9/34/24 11/14/24 10/16/24
+f 11/35/25 14/31/25 13/3/25
+f 3/36/26 1/37/26 14/38/26
+f 4/39/27 6/40/27 10/41/27
+f 24/42/28 16/43/28 15/23/28
+f 16/43/29 17/21/30 15/23/31
+f 17/44/32 19/24/32 18/26/32
+f 19/45/33 22/28/33 21/30/33
+f 22/46/34 24/18/34 23/20/34
+f 22/47/26 19/48/26 17/49/26
+f 20/50/27 21/51/27 23/52/27
+f 11/53/26 9/54/26 14/38/26
+f 9/54/26 7/55/26 14/38/26
+f 7/55/26 5/56/26 14/38/26
+f 5/56/26 3/36/26 14/38/26
+f 6/40/27 8/57/27 10/41/27
+f 10/41/27 12/58/27 4/39/27
+f 12/58/27 13/59/27 2/60/27
+f 4/39/27 12/58/27 2/60/27
+f 17/49/26 16/61/26 22/47/26
+f 16/61/26 24/62/26 22/47/26
+f 15/63/27 18/64/27 23/52/27
+f 18/64/27 20/50/27 23/52/27
+s 1
+f 36/65/26 37/66/26 30/67/35
+f 32/68/36 35/69/26 33/70/26
+f 32/68/36 33/70/26 34/71/26
+f 35/69/26 32/68/36 30/67/35
+f 37/66/26 34/71/26 38/72/26
+f 32/68/36 34/71/26 39/73/26
+f 37/66/26 31/74/26 30/67/35
+f 30/67/35 31/74/26 35/69/26
+f 31/74/26 37/66/26 38/72/26
+f 39/73/26 34/71/26 37/66/26
+f 36/65/26 30/67/35 41/75/26
+f 36/65/26 41/75/26 40/76/26
+f 39/73/26 37/66/26 42/77/37
+f 39/73/26 42/77/37 43/78/38
+f 40/76/26 41/75/26 44/79/26
+f 44/79/26 41/75/26 45/80/39
+f 44/79/26 45/80/39 43/78/40
+f 48/81/41 41/75/26 47/82/42
+f 41/75/26 30/67/35 47/82/42
+f 55/83/26 50/84/26 46/85/43
+f 51/86/44 46/85/43 50/84/26
+f 54/87/45 63/88/26 53/89/46
+f 54/87/45 52/90/26 63/88/26
+f 51/86/44 50/84/26 53/89/47
+f 46/85/43 30/67/35 55/83/26
+f 63/88/26 52/90/26 30/67/35
+f 30/67/35 52/90/26 55/83/26
+f 32/68/36 58/91/26 57/92/26
+f 32/68/36 57/92/26 30/67/35
+f 30/67/35 57/92/26 56/93/26
+f 32/68/36 62/94/48 58/91/26
+f 60/95/26 61/96/49 62/94/50
+f 56/93/26 59/97/26 63/88/26
+f 63/88/26 59/97/26 60/95/26
+f 30/67/35 56/93/26 63/88/26
+f 60/95/26 59/97/26 61/96/49
+f 68/98/27 66/99/27 64/100/51
+f 66/99/27 72/101/27 70/102/27
+f 68/98/27 64/100/51 69/103/52
+f 100/104/27 65/105/27 67/106/27
+f 70/102/27 64/100/51 66/99/27
+f 64/100/51 71/107/27 100/104/27
+f 100/104/27 71/107/27 65/105/27
+f 100/104/27 67/106/27 73/108/27
+f 64/100/51 70/102/27 71/107/27
+f 73/108/27 67/106/27 72/101/27
+f 66/99/27 73/108/27 72/101/27
+f 78/109/53 69/103/52 76/110/54
+f 75/111/55 77/112/56 74/113/57
+f 78/109/53 79/114/27 68/98/27
+f 77/112/56 80/115/58 66/99/27
+f 66/99/27 80/115/58 73/108/27
+f 75/111/55 81/116/59 77/112/56
+f 77/112/56 81/116/59 80/115/58
+f 69/103/52 78/109/53 68/98/27
+f 78/109/53 82/117/27 79/114/27
+f 75/111/55 74/113/57 78/109/53
+f 78/109/53 74/113/57 82/117/27
+f 84/118/27 83/119/27 85/120/27
+f 84/118/27 85/120/27 64/100/51
+f 86/121/27 83/119/27 84/118/27
+f 85/120/27 87/122/27 64/100/51
+f 64/100/51 87/122/27 69/103/52
+f 69/103/52 87/122/27 88/123/27
+f 83/119/27 86/121/27 89/124/27
+f 89/124/27 86/121/27 90/125/27
+f 69/103/52 88/123/27 90/125/27
+f 89/124/27 90/125/27 88/123/27
+f 91/126/27 92/127/27 84/118/27
+f 92/127/27 91/126/27 93/128/27
+f 92/127/27 93/128/27 94/129/27
+f 94/129/27 93/128/27 95/130/27
+f 64/100/51 105/131/60 96/132/27
+f 94/129/27 95/130/27 105/131/60
+f 95/130/27 96/132/27 105/131/60
+f 64/100/51 96/132/27 97/133/27
+f 64/100/51 97/133/27 84/118/27
+f 84/118/27 97/133/27 91/126/27
+f 100/104/27 101/134/61 64/100/51
+f 102/135/62 105/131/60 107/136/63
+f 103/137/64 104/138/27 101/134/61
+f 103/137/64 101/134/61 100/104/27
+f 99/139/65 98/140/66 103/137/64
+f 103/137/64 98/140/66 104/138/27
+f 107/136/63 108/141/67 99/139/65
+f 99/139/65 108/141/67 98/140/66
+f 106/142/27 108/141/67 107/136/63
+f 107/136/63 105/131/60 64/100/51
+f 107/136/63 64/100/51 106/142/27
+f 114/143/68 113/144/69 29/145/70
+f 29/146/70 113/147/69 227/148/71
+f 29/146/70 227/148/71 220/149/72
+f 112/150/73 113/144/69 114/143/68
+f 112/151/73 114/152/68 151/153/74
+f 151/153/74 114/152/68 141/154/75
+f 115/155/76 114/152/68 116/156/77
+f 116/157/77 114/143/68 29/145/70
+f 116/157/77 29/145/70 117/158/78
+f 117/159/78 29/146/70 28/160/79
+f 118/161/80 109/162/81 119/163/82
+f 119/164/82 109/165/81 27/166/83
+f 119/164/82 27/166/83 120/167/84
+f 120/168/84 27/169/83 25/170/85
+f 123/171/86 124/172/87 117/158/78
+f 117/158/78 124/173/87 116/157/77
+f 120/167/84 121/174/88 119/164/82
+f 119/164/82 121/175/88 125/176/89
+f 127/177/90 122/178/91 124/179/87
+f 121/180/88 127/181/90 124/182/87
+f 124/183/87 122/184/91 116/157/77
+f 116/157/77 122/185/91 126/186/92
+f 128/187/93 127/188/90 120/167/84
+f 120/167/84 127/189/90 121/190/88
+f 176/191/94 129/192/95 130/193/96
+f 130/194/96 129/195/95 213/196/97
+f 130/194/96 213/196/97 131/197/98
+f 195/198/99 213/199/97 247/200/100
+f 247/201/100 213/196/97 129/195/95
+f 247/201/100 129/195/95 111/202/101
+f 111/202/101 129/195/95 110/203/102
+f 111/204/101 27/166/83 109/165/81
+f 118/161/80 197/205/103 109/162/81
+f 109/162/81 197/205/103 132/206/104
+f 109/162/81 132/206/104 111/207/101
+f 111/204/101 110/208/102 27/166/83
+f 27/169/83 110/209/102 133/210/105
+f 27/169/83 133/210/105 26/211/106
+f 219/212/107 134/213/108 135/214/109
+f 135/214/109 134/213/108 136/215/110
+f 136/215/110 134/213/108 165/216/111
+f 215/217/112 138/218/113 239/219/114
+f 113/220/69 112/221/73 239/222/114
+f 239/222/114 112/221/73 234/223/115
+f 239/222/114 234/223/115 215/224/112
+f 215/224/112 234/223/115 137/225/116
+f 215/224/112 137/225/116 157/226/117
+f 139/227/118 142/228/26 140/229/119
+f 146/230/120 145/231/121 137/232/122
+f 147/233/123 139/227/118 148/234/124
+f 145/231/121 146/230/120 149/235/125
+f 142/228/26 141/154/26 140/229/119
+f 143/236/126 144/237/127 150/238/128
+f 150/238/128 144/237/127 151/153/129
+f 150/238/128 151/153/129 142/228/26
+f 142/228/26 151/153/129 141/154/26
+f 144/237/127 143/236/126 149/235/125
+f 144/237/127 149/235/125 152/239/130
+f 153/240/131 149/235/125 146/230/120
+f 147/233/123 148/234/124 137/232/122
+f 147/233/123 137/232/122 145/231/121
+f 137/232/122 155/241/132 156/242/133
+f 148/234/124 155/241/132 137/232/122
+f 137/232/122 156/242/133 157/243/134
+f 159/244/135 157/243/134 156/242/133
+f 134/245/136 160/246/137 148/234/124
+f 148/234/124 160/246/137 154/247/138
+f 148/234/124 154/247/138 155/241/132
+f 158/248/139 134/245/136 159/244/135
+f 159/244/135 134/245/136 157/243/134
+f 134/245/136 158/248/139 160/246/137
+f 163/249/140 164/250/141 134/245/136
+f 134/245/136 164/250/141 165/251/142
+f 161/252/143 131/253/144 164/250/141
+f 164/250/141 131/253/144 165/251/142
+f 131/253/144 161/252/143 130/254/145
+f 130/254/145 161/252/143 162/255/146
+f 130/254/145 162/255/146 148/234/124
+f 148/234/124 163/249/140 134/245/136
+f 168/256/147 169/257/148 170/258/149
+f 170/258/149 169/257/148 171/259/150
+f 175/260/26 172/261/26 174/262/26
+f 168/256/147 177/263/151 178/264/152
+f 178/264/152 177/263/151 176/191/153
+f 168/256/147 170/258/149 177/263/151
+f 167/265/26 140/229/119 172/261/26
+f 167/265/26 172/261/26 175/260/26
+f 140/229/119 167/265/26 173/266/26
+f 130/254/145 178/264/152 176/191/153
+f 26/211/26 166/267/26 180/268/26
+f 175/260/26 174/262/26 181/269/26
+f 171/259/150 169/257/148 182/270/154
+f 140/229/119 173/266/26 130/254/145
+f 140/229/119 130/254/145 148/234/124
+f 140/229/119 148/234/124 139/227/118
+f 166/267/26 183/271/26 180/268/26
+f 175/260/26 179/272/26 183/271/26
+f 175/260/26 183/271/26 166/267/26
+f 175/260/26 181/269/26 179/272/26
+f 178/264/152 130/254/145 184/273/155
+f 184/273/155 130/254/145 173/266/26
+f 173/266/26 185/274/26 184/273/155
+f 186/275/156 26/211/26 133/210/157
+f 186/275/156 133/210/157 171/259/150
+f 186/275/156 171/259/150 182/270/154
+f 26/211/26 186/275/156 166/267/26
+f 166/267/26 184/273/155 185/274/26
+f 166/267/26 186/275/156 184/273/155
+f 195/198/158 196/276/159 190/277/160
+f 195/198/158 190/277/160 191/278/161
+f 190/277/160 192/279/27 191/278/161
+f 188/280/27 193/281/27 189/282/162
+f 195/198/158 205/283/163 196/276/159
+f 191/278/161 194/284/27 188/280/27
+f 196/276/159 205/283/163 204/285/164
+f 193/281/27 199/286/165 187/287/166
+f 197/205/27 200/288/27 206/289/27
+f 197/205/27 206/289/27 201/290/27
+f 193/281/27 187/287/166 189/282/162
+f 191/278/161 192/279/27 194/284/27
+f 194/284/27 192/279/27 198/291/167
+f 202/292/168 206/289/27 200/288/27
+f 194/284/27 198/291/167 201/290/27
+f 201/290/27 198/291/167 197/205/27
+f 197/205/27 198/291/167 132/206/169
+f 132/206/169 198/291/167 203/293/170
+f 204/285/164 205/283/163 207/294/171
+f 207/294/171 205/283/163 208/295/172
+f 193/281/27 206/289/27 199/286/165
+f 207/294/171 208/295/172 132/206/169
+f 207/294/171 132/206/169 203/293/170
+f 202/292/168 199/286/165 206/289/27
+f 135/296/173 211/297/174 209/298/175
+f 135/296/173 209/298/175 191/278/161
+f 191/278/161 209/298/175 210/299/176
+f 191/278/161 210/299/176 195/198/158
+f 195/198/158 210/299/176 212/300/177
+f 136/301/178 211/297/174 135/296/173
+f 212/300/177 213/199/179 195/198/158
+f 211/297/174 136/301/178 212/300/177
+f 212/300/177 136/301/178 213/199/179
+f 215/217/180 214/302/181 138/218/182
+f 217/303/183 218/304/184 135/296/173
+f 135/296/173 218/304/184 219/305/185
+f 138/218/182 214/302/181 216/306/186
+f 135/296/173 191/278/161 217/303/183
+f 214/302/181 215/217/180 218/304/184
+f 218/304/184 215/217/180 219/305/185
+f 191/278/161 188/280/27 189/282/162
+f 191/278/161 189/282/162 220/149/27
+f 220/149/27 189/282/162 221/307/27
+f 223/308/187 222/309/188 228/310/189
+f 229/311/190 230/312/191 138/218/182
+f 191/278/161 229/311/190 138/218/182
+f 191/278/161 138/218/182 216/306/186
+f 223/308/187 224/313/192 225/314/193
+f 226/315/194 223/308/187 228/310/189
+f 227/148/195 228/310/189 222/309/188
+f 223/308/187 225/314/193 230/312/191
+f 230/312/191 225/314/193 138/218/182
+f 223/308/187 226/315/194 224/313/192
+f 227/148/195 222/309/188 231/316/196
+f 227/148/195 231/316/196 220/149/27
+f 220/149/27 232/317/27 191/278/161
+f 191/278/161 232/317/27 229/311/190
+f 232/317/27 220/149/27 231/316/196
+f 131/318/98 213/319/97 136/320/110
+f 131/318/98 136/320/110 165/321/111
+f 134/322/108 219/323/107 215/324/112
+f 134/322/108 215/324/112 157/325/117
+f 27/169/83 26/211/106 25/170/85
+f 115/155/76 140/229/197 141/154/75
+f 115/155/76 141/154/75 114/152/68
+f 234/326/115 153/240/131 137/232/116
+f 137/232/116 153/240/131 146/230/120
+f 112/151/73 233/327/198 234/326/115
+f 233/327/198 144/237/127 234/326/115
+f 234/326/115 144/237/127 152/239/130
+f 234/326/115 152/239/130 153/240/131
+f 153/240/131 152/239/130 149/235/125
+f 112/151/73 151/153/74 233/327/198
+f 233/327/198 151/153/74 144/237/127
+f 129/192/95 235/328/199 110/209/102
+f 110/209/102 235/328/199 177/263/200
+f 110/209/102 177/263/200 237/329/201
+f 110/209/102 237/329/201 236/330/202
+f 235/328/199 129/192/95 177/263/200
+f 177/263/200 129/192/95 176/191/94
+f 177/263/151 170/258/149 237/329/203
+f 236/330/202 237/329/203 171/259/204
+f 171/259/204 237/329/203 170/258/149
+f 236/330/202 171/259/204 110/209/102
+f 110/209/102 171/259/204 133/210/105
+f 238/331/205 239/219/114 225/314/206
+f 225/314/206 239/219/114 138/218/113
+f 238/332/205 225/333/206 240/334/207
+f 240/334/207 225/333/206 224/335/192
+f 227/148/208 241/336/209 228/310/189
+f 240/337/210 242/338/211 238/331/212
+f 113/147/69 243/339/213 241/336/209
+f 113/147/69 239/219/114 238/331/212
+f 238/331/212 242/338/211 243/339/213
+f 238/331/212 243/339/213 113/147/69
+f 241/336/214 227/148/71 113/147/69
+f 244/340/215 132/206/104 208/295/216
+f 245/341/217 205/283/218 246/342/219
+f 247/343/100 246/344/219 195/345/99
+f 195/345/99 246/344/219 205/346/218
+f 244/340/220 248/347/221 111/207/101
+f 111/207/101 248/347/221 247/200/100
+f 247/200/100 248/347/221 249/348/222
+f 247/200/100 249/348/222 246/342/219
+f 111/207/101 132/206/104 244/340/215
+f 29/146/70 220/149/72 28/160/79
+f 149/235/223 256/349/224 250/350/225
+f 149/235/223 250/350/225 251/351/226
+f 149/235/223 251/351/226 145/231/227
+f 145/231/227 251/351/226 252/352/228
+f 145/231/227 252/352/228 147/233/229
+f 147/233/229 252/352/228 253/353/230
+f 147/233/229 253/353/230 139/227/231
+f 139/227/231 253/353/230 142/228/232
+f 142/228/232 253/353/230 254/354/233
+f 142/228/232 254/354/233 150/238/234
+f 150/238/234 254/354/233 255/355/235
+f 150/238/234 255/355/235 143/236/236
+f 143/236/236 255/355/235 256/349/224
+f 143/236/236 256/349/224 149/235/223
+f 257/356/237 254/354/26 253/353/26
+f 257/356/237 255/355/238 254/354/26
+f 257/356/237 256/349/239 255/355/238
+f 250/350/240 256/349/239 257/356/237
+f 257/356/237 251/351/241 250/350/240
+f 257/356/237 252/352/242 251/351/241
+f 257/356/237 253/353/26 252/352/242
+f 184/273/243 258/357/244 259/358/245
+f 184/273/243 259/358/245 178/264/246
+f 178/264/246 259/358/245 260/359/247
+f 178/264/246 260/359/247 168/256/248
+f 168/256/248 260/359/247 261/360/249
+f 168/256/248 261/360/249 169/257/250
+f 169/257/250 262/361/251 182/270/252
+f 182/270/252 262/361/251 263/362/253
+f 182/270/252 263/362/253 186/275/254
+f 186/275/254 263/362/253 264/363/255
+f 186/275/254 264/363/255 184/273/243
+f 184/273/243 264/363/255 258/357/244
+f 262/361/251 169/257/250 261/360/249
+f 261/360/249 263/362/256 262/361/251
+f 261/360/249 264/363/257 263/362/256
+f 258/357/258 264/363/257 261/360/249
+f 261/360/249 259/358/259 258/357/258
+f 261/360/249 260/359/247 259/358/259
+f 232/317/260 265/364/261 229/311/262
+f 229/311/262 265/364/261 266/365/263
+f 229/311/262 266/365/263 230/312/264
+f 230/312/264 266/365/263 223/308/265
+f 223/308/265 266/365/263 267/366/266
+f 223/308/265 267/366/266 268/367/267
+f 223/308/265 268/367/267 222/309/268
+f 222/309/268 268/367/267 269/368/269
+f 222/309/268 269/368/269 231/316/270
+f 231/316/270 269/368/269 270/369/271
+f 231/316/270 270/369/271 232/317/260
+f 232/317/260 270/369/271 265/364/261
+f 270/369/271 268/367/272 267/366/273
+f 270/369/271 269/368/269 268/367/272
+f 270/369/271 266/365/274 265/364/261
+f 270/369/271 267/366/273 266/365/274
+f 207/294/275 271/370/276 204/285/277
+f 204/285/277 271/370/276 272/371/278
+f 204/285/277 272/371/278 196/276/279
+f 196/276/279 272/371/278 273/372/280
+f 196/276/279 273/372/280 190/277/281
+f 190/277/281 273/372/280 274/373/282
+f 190/277/281 274/373/282 192/279/283
+f 192/279/283 274/373/282 198/291/284
+f 198/291/284 274/373/282 275/374/285
+f 198/291/284 275/374/285 203/293/286
+f 203/293/286 275/374/285 276/375/287
+f 203/293/286 276/375/287 207/294/275
+f 207/294/275 276/375/287 271/370/276
+f 271/370/288 276/375/287 275/374/285
+f 275/374/285 272/371/289 271/370/288
+f 275/374/285 273/372/290 272/371/289
+f 275/374/285 274/373/282 273/372/290
+f 167/265/291 65/105/292 71/107/293
+f 167/265/291 71/107/293 173/266/294
+f 173/376/294 71/377/293 70/378/295
+f 173/376/294 70/378/295 185/379/296
+f 185/274/296 70/102/295 72/101/297
+f 185/274/296 72/101/297 166/267/298
+f 166/267/298 72/101/297 67/106/299
+f 166/267/298 67/106/299 175/260/300
+f 175/260/300 67/106/299 65/105/292
+f 175/260/300 65/105/292 167/265/291
+f 159/244/301 95/130/302 93/128/303
+f 159/244/301 93/128/303 158/248/304
+f 158/380/304 93/381/303 91/382/305
+f 158/380/304 91/383/305 160/384/306
+f 160/246/306 91/126/305 97/133/307
+f 160/246/306 97/133/307 154/247/308
+f 154/247/308 97/133/307 96/132/309
+f 154/247/308 96/132/309 155/241/310
+f 155/241/310 96/132/309 95/130/302
+f 155/241/310 95/130/302 156/242/311
+f 156/242/311 95/130/302 159/244/301
+f 163/249/140 85/120/312 83/119/313
+f 163/249/140 83/119/313 164/250/314
+f 164/250/314 83/119/313 89/124/315
+f 164/250/314 89/124/315 161/252/316
+f 161/252/317 89/124/318 88/123/319
+f 161/252/317 88/123/319 162/255/146
+f 162/255/146 88/123/319 87/122/320
+f 162/255/146 87/122/320 148/234/124
+f 148/234/124 87/122/320 85/120/312
+f 148/234/124 85/120/312 163/249/140
+f 92/127/321 277/385/322 84/386/323
+f 277/385/322 291/387/324 84/386/323
+f 84/386/323 291/387/324 86/121/325
+f 288/388/326 290/389/327 105/131/328
+f 105/131/328 290/389/327 94/129/329
+f 278/390/330 288/388/326 102/135/62
+f 102/135/62 288/388/326 105/131/328
+f 99/139/65 103/137/64 279/391/331
+f 279/391/331 103/137/64 286/392/332
+f 103/137/64 100/104/333 286/392/332
+f 286/392/332 100/104/333 280/393/334
+f 73/108/335 281/394/336 100/104/333
+f 100/104/333 281/394/336 280/393/334
+f 80/115/58 282/395/337 281/394/336
+f 80/115/58 281/394/336 73/108/335
+f 81/116/59 284/396/338 80/115/58
+f 76/110/54 69/103/52 424/397/339
+f 69/103/52 90/125/340 283/398/341
+f 280/399/334 281/400/336 286/401/332
+f 424/402/342 284/403/338 285/404/343
+f 424/402/342 285/404/343 76/405/344
+f 278/390/330 289/406/26 288/388/326
+f 282/407/337 284/408/338 424/402/342
+f 90/125/340 291/387/324 287/409/345
+f 291/387/324 90/125/340 86/121/325
+f 277/385/322 92/127/321 290/389/327
+f 290/389/327 92/127/346 94/129/329
+f 293/410/347 292/411/348 64/100/51
+f 64/100/51 292/411/348 106/142/349
+f 300/412/350 293/410/347 101/134/61
+f 101/134/61 293/410/347 64/100/51
+f 101/134/61 104/138/351 300/412/350
+f 300/412/350 104/138/351 294/413/352
+f 295/414/353 294/413/352 98/140/354
+f 98/140/354 294/413/352 104/138/351
+f 296/415/355 295/414/353 108/141/356
+f 108/141/356 295/414/353 98/140/354
+f 292/411/348 296/415/355 106/142/349
+f 106/142/349 296/415/355 108/141/356
+f 297/416/357 295/414/358 296/415/359
+f 295/414/358 297/416/357 299/417/360
+f 295/414/358 299/417/360 294/413/361
+f 293/410/362 302/418/363 301/419/364
+f 294/413/361 299/417/360 298/420/365
+f 294/413/361 298/420/365 300/412/366
+f 300/412/366 298/420/365 302/418/363
+f 300/412/366 302/418/363 293/410/362
+f 293/410/362 301/419/364 292/411/367
+f 292/411/367 301/419/364 296/415/359
+f 296/415/359 301/419/364 297/416/357
+f 304/421/368 303/422/369 66/99/370
+f 66/99/370 303/422/369 77/112/371
+f 311/423/372 304/421/368 68/98/373
+f 68/98/373 304/421/368 66/99/370
+f 68/98/373 79/114/374 311/423/372
+f 311/423/372 79/114/374 305/424/375
+f 306/425/376 305/424/375 82/117/377
+f 82/117/377 305/424/375 79/114/374
+f 307/426/378 306/425/376 74/113/379
+f 74/113/379 306/425/376 82/117/377
+f 303/422/369 307/426/378 77/112/371
+f 77/112/371 307/426/378 74/113/379
+f 309/427/380 304/421/381 311/423/382
+f 304/421/381 309/427/380 310/428/383
+f 304/421/381 310/428/383 303/422/384
+f 310/428/383 308/429/385 303/422/384
+f 303/422/384 308/429/385 307/426/386
+f 307/426/386 308/429/385 312/430/387
+f 307/426/386 312/430/387 306/425/388
+f 306/425/388 312/430/387 313/431/389
+f 306/425/388 313/431/389 305/424/390
+f 305/424/390 313/431/389 311/423/382
+f 313/431/389 309/427/380 311/423/382
+f 309/427/380 308/429/385 310/428/383
+f 309/427/380 312/430/391 308/429/385
+f 309/427/380 313/431/389 312/430/391
+f 299/417/360 302/418/392 298/420/365
+f 299/417/360 301/419/393 302/418/392
+f 299/417/360 297/416/357 301/419/393
+f 201/432/394 35/433/395 194/434/396
+f 194/434/397 35/433/398 31/435/399
+f 194/434/397 31/435/399 188/436/400
+f 188/280/401 31/74/402 38/72/403
+f 188/280/401 38/72/403 193/281/404
+f 193/281/404 38/72/403 34/71/405
+f 193/281/404 34/71/405 206/289/406
+f 206/289/407 34/71/408 33/70/409
+f 206/289/407 33/70/409 35/69/395
+f 206/289/407 35/69/395 201/290/394
+f 217/303/410 30/67/35 46/85/43
+f 217/437/410 46/438/43 218/439/411
+f 218/439/411 46/438/43 49/440/412
+f 218/439/411 49/440/412 214/441/413
+f 214/302/413 49/442/412 48/81/41
+f 214/302/413 48/81/41 47/82/42
+f 214/302/413 47/82/42 216/306/186
+f 216/306/186 47/82/42 191/278/161
+f 191/278/414 47/82/415 30/67/35
+f 191/278/414 30/67/35 217/303/410
+f 212/443/416 54/444/45 53/445/46
+f 212/443/416 53/445/46 211/446/417
+f 211/446/417 53/445/46 50/447/418
+f 211/297/417 50/84/418 209/298/419
+f 209/448/420 50/447/421 55/449/422
+f 209/298/420 55/83/422 210/299/423
+f 210/299/424 55/83/425 52/90/426
+f 210/299/424 52/90/426 212/300/416
+f 212/300/416 52/90/426 54/87/45
+f 48/81/41 315/450/427 41/75/428
+f 41/75/428 315/450/427 314/451/429
+f 315/450/427 48/81/41 49/442/412
+f 315/450/427 49/442/412 316/452/430
+f 51/86/44 317/453/431 46/85/43
+f 46/85/43 317/453/431 316/452/430
+f 46/85/43 316/452/430 49/442/412
+f 317/453/431 51/86/44 53/89/47
+f 317/453/431 53/89/47 318/454/432
+f 63/88/433 319/455/434 318/454/432
+f 63/88/433 318/454/432 53/89/47
+f 320/456/435 319/455/434 60/95/436
+f 60/95/436 319/455/434 63/88/433
+f 321/457/437 320/456/435 62/94/48
+f 62/94/48 320/456/435 60/95/436
+f 322/458/438 321/457/437 32/68/36
+f 32/68/36 321/457/437 62/94/48
+f 39/73/439 323/459/440 32/68/36
+f 32/68/36 323/459/440 322/458/438
+f 324/460/441 323/459/440 43/78/40
+f 43/78/40 323/459/440 39/73/439
+f 325/461/442 324/460/441 45/80/39
+f 45/80/39 324/460/441 43/78/40
+f 314/451/429 325/461/442 41/75/428
+f 41/75/428 325/461/442 45/80/39
+f 322/462/438 320/463/27 321/464/437
+f 314/465/27 319/466/27 322/462/438
+f 320/463/27 322/462/438 319/466/27
+f 323/467/440 325/468/27 314/465/27
+f 314/465/27 322/462/438 323/467/440
+f 323/469/440 324/470/441 325/468/27
+f 317/471/431 318/472/432 319/466/27
+f 317/471/431 319/466/27 316/473/430
+f 316/473/430 319/466/27 314/465/27
+f 316/473/430 314/465/27 315/474/427
+f 80/115/58 284/396/338 282/395/337
+f 36/65/347 40/76/348 335/475/443
+f 335/475/443 40/76/348 326/476/349
+f 327/477/444 326/476/349 44/79/445
+f 44/79/445 326/476/349 40/76/348
+f 328/478/446 327/477/444 43/78/38
+f 43/78/38 327/477/444 44/79/445
+f 329/479/351 328/478/446 42/77/37
+f 42/77/37 328/478/446 43/78/38
+f 333/480/447 329/479/351 37/66/350
+f 37/66/350 329/479/351 42/77/37
+f 37/66/350 36/65/347 333/480/447
+f 333/480/447 36/65/347 335/475/443
+f 330/481/448 331/482/449 328/478/450
+f 334/483/451 333/480/452 335/475/453
+f 334/483/451 335/475/453 332/484/454
+f 333/480/452 334/483/451 329/479/455
+f 334/483/451 330/481/448 329/479/455
+f 329/479/455 330/481/448 328/478/450
+f 327/477/456 331/482/449 336/485/457
+f 328/478/450 331/482/449 327/477/456
+f 327/477/456 336/485/457 326/476/458
+f 326/476/458 336/485/457 335/475/453
+f 336/485/457 332/484/454 335/475/453
+f 344/486/370 337/487/373 57/92/368
+f 57/92/368 337/487/373 56/93/372
+f 57/92/368 58/91/459 344/486/370
+f 344/486/370 58/91/459 338/488/460
+f 339/489/461 338/488/460 62/94/50
+f 62/94/50 338/488/460 58/91/459
+f 340/490/377 339/489/461 61/96/49
+f 61/96/49 339/489/461 62/94/50
+f 341/491/374 340/490/377 59/97/375
+f 59/97/375 340/490/377 61/96/49
+f 337/487/373 341/491/374 56/93/372
+f 56/93/372 341/491/374 59/97/375
+f 346/492/462 342/493/463 344/486/464
+f 343/494/465 339/489/466 340/490/467
+f 343/494/465 340/490/467 345/495/468
+f 339/489/466 343/494/465 338/488/469
+f 343/494/465 346/492/462 338/488/469
+f 338/488/469 346/492/462 344/486/464
+f 344/486/464 342/493/463 337/487/470
+f 337/487/470 342/493/463 347/496/471
+f 341/491/472 347/496/471 340/490/467
+f 337/487/470 347/496/471 341/491/472
+f 347/496/471 345/495/468 340/490/467
+f 331/482/449 334/483/451 332/484/473
+f 331/482/449 330/481/448 334/483/451
+f 331/482/449 332/484/473 336/485/457
+f 342/493/463 343/494/465 345/495/474
+f 342/493/463 346/492/462 343/494/465
+f 342/493/463 345/495/474 347/496/471
+f 220/149/72 221/497/475 28/160/79
+f 28/160/79 221/497/475 348/498/476
+f 28/160/79 348/498/476 117/159/477
+f 118/161/80 119/499/82 349/500/478
+f 118/161/80 349/500/478 200/501/479
+f 118/161/80 200/501/479 197/205/103
+f 189/282/162 350/502/480 348/498/476
+f 189/282/162 348/498/476 221/503/475
+f 189/282/162 187/287/166 350/502/480
+f 350/502/480 187/287/166 351/504/481
+f 187/287/166 199/286/165 351/504/481
+f 351/504/481 199/286/165 352/505/482
+f 199/286/165 202/292/168 352/505/482
+f 352/505/482 202/292/168 353/506/483
+f 202/292/168 200/507/484 353/506/483
+f 353/506/483 200/507/484 349/500/485
+f 370/508/486 354/509/487 124/510/87
+f 124/510/87 354/509/487 121/511/88
+f 26/211/106 180/268/488 25/170/85
+f 25/170/85 180/268/488 355/512/489
+f 355/512/489 120/513/490 25/170/85
+f 172/261/491 140/229/197 362/514/492
+f 362/514/492 140/229/197 115/155/76
+f 116/515/493 362/514/492 115/155/76
+f 180/268/488 183/271/494 355/512/489
+f 355/512/489 183/271/494 356/516/495
+f 356/516/495 183/271/494 357/517/496
+f 183/271/494 179/272/497 357/517/496
+f 357/517/496 179/272/497 358/518/498
+f 179/272/497 181/269/499 358/518/498
+f 358/518/498 181/269/499 359/519/500
+f 181/269/499 174/262/501 359/519/500
+f 359/519/500 174/262/501 360/520/502
+f 360/520/502 174/262/501 361/521/503
+f 174/262/504 172/261/491 361/521/505
+f 361/521/505 172/261/491 362/514/492
+f 122/522/91 127/523/90 365/524/506
+f 365/524/506 127/523/90 371/525/507
+f 363/526/508 117/527/509 348/498/510
+f 117/527/509 363/526/508 123/528/86
+f 123/528/86 363/526/508 364/529/511
+f 124/510/87 123/528/86 370/508/486
+f 370/508/486 123/528/86 364/529/511
+f 365/524/506 366/530/512 122/522/91
+f 122/522/91 366/530/512 126/531/92
+f 126/531/92 366/530/512 116/532/493
+f 116/532/493 366/530/512 362/514/492
+f 127/523/90 128/533/93 371/525/507
+f 371/525/507 128/533/93 367/534/513
+f 367/534/513 128/533/93 355/512/489
+f 355/512/489 128/533/93 120/535/490
+f 354/509/487 368/536/514 121/511/88
+f 121/511/88 368/536/514 125/537/89
+f 119/538/515 369/539/516 349/500/517
+f 125/537/89 369/539/516 119/538/515
+f 368/536/514 369/539/516 125/537/89
+f 363/526/508 368/536/514 364/529/511
+f 369/540/518 368/541/514 363/542/508
+f 364/543/511 368/541/514 354/544/487
+f 364/543/511 354/544/487 370/545/486
+f 363/526/508 348/498/510 350/502/519
+f 352/505/520 353/506/483 369/539/518
+f 363/526/508 350/502/519 351/504/521
+f 363/526/508 351/504/521 369/539/518
+f 369/539/518 351/504/521 352/505/520
+f 353/506/483 349/500/485 369/539/518
+f 355/512/522 358/518/523 362/514/524
+f 362/514/524 358/518/523 359/519/525
+f 357/517/496 358/518/523 356/516/495
+f 360/520/502 361/521/503 359/519/525
+f 359/519/525 361/521/503 362/514/524
+f 358/518/523 355/512/522 356/516/495
+f 367/546/513 362/547/524 366/548/526
+f 362/547/524 367/546/513 355/549/522
+f 365/550/506 371/551/507 366/548/526
+f 367/546/513 366/548/526 371/551/507
+f 279/391/527 372/552/528 373/553/529
+f 374/554/530 99/139/531 279/391/527
+f 279/391/527 373/553/529 374/554/530
+f 107/136/63 376/555/532 102/135/62
+f 278/390/330 377/556/533 289/406/534
+f 289/557/535 377/558/536 378/559/537
+f 278/390/330 102/135/62 377/556/533
+f 376/555/532 107/136/63 375/560/538
+f 375/560/538 107/136/63 99/139/531
+f 374/554/530 373/553/529 379/561/539
+f 379/561/539 373/553/529 380/562/540
+f 379/561/539 380/562/540 381/563/541
+f 381/563/541 380/562/540 382/564/542
+f 381/563/541 382/564/542 102/135/62
+f 102/135/62 382/564/542 377/556/533
+f 372/565/528 279/566/527 378/559/537
+f 379/561/539 381/563/541 374/554/530
+f 374/554/530 381/563/541 102/135/62
+f 376/555/532 375/560/538 102/135/62
+f 102/135/62 375/560/538 374/554/530
+f 383/567/543 384/568/544 386/569/545
+f 386/569/545 385/570/546 383/567/543
+f 285/404/547 387/571/548 388/572/549
+f 76/110/550 389/573/551 78/109/552
+f 285/404/547 388/572/549 76/405/550
+f 390/574/553 391/575/554 284/396/555
+f 284/396/338 81/116/59 390/574/556
+f 389/573/551 75/111/55 78/109/552
+f 76/110/550 388/576/549 392/577/557
+f 392/578/557 388/572/549 393/579/558
+f 392/577/557 393/580/558 394/581/559
+f 394/581/559 393/580/558 395/582/560
+f 394/581/559 395/582/560 81/116/59
+f 81/116/59 395/582/560 390/574/556
+f 387/571/548 285/404/547 391/583/554
+f 391/583/554 285/404/547 284/403/555
+f 76/110/550 392/577/557 394/581/559
+f 394/581/559 81/116/59 76/110/550
+f 81/116/59 75/111/55 76/110/550
+f 76/110/550 75/111/55 389/573/551
+f 399/584/561 397/585/562 396/586/563
+f 396/586/563 397/585/562 398/587/564
+f 240/334/207 224/335/192 400/588/565
+f 240/334/207 400/588/565 401/589/566
+f 402/590/567 228/310/189 241/336/209
+f 241/336/209 403/591/568 402/590/567
+f 404/592/569 405/593/570 400/594/565
+f 400/594/565 405/593/570 401/595/566
+f 402/590/567 403/591/568 406/596/571
+f 406/596/571 403/591/568 407/597/572
+f 406/596/571 407/597/572 404/592/569
+f 404/592/569 407/597/572 405/593/570
+f 406/596/571 404/592/569 228/310/189
+f 400/594/565 226/315/194 228/310/189
+f 400/594/565 228/310/189 404/592/569
+f 402/590/567 406/596/571 228/310/189
+f 408/598/573 409/599/574 410/600/575
+f 410/600/575 409/599/574 401/595/576
+f 409/599/574 403/591/568 241/336/209
+f 240/337/210 401/595/576 411/601/577
+f 409/599/574 411/601/577 401/595/576
+f 208/295/578 412/602/579 244/340/220
+f 244/340/220 413/603/580 248/347/221
+f 244/340/220 412/602/579 413/603/580
+f 415/604/581 208/295/578 205/283/218
+f 205/283/218 414/605/582 415/604/581
+f 205/283/218 245/341/217 414/605/582
+f 416/606/583 417/607/584 412/602/579
+f 412/602/579 417/607/584 413/603/580
+f 414/605/582 245/608/217 418/609/585
+f 418/609/585 245/608/217 419/610/586
+f 418/609/585 419/610/586 416/606/583
+f 416/606/583 419/610/586 417/607/584
+f 418/609/585 208/295/578 414/605/582
+f 414/605/582 208/295/578 415/604/581
+f 418/609/585 416/606/583 208/295/578
+f 208/295/578 416/606/583 412/602/579
+f 423/611/587 422/612/588 420/613/589
+f 420/613/589 422/612/588 421/614/590
+f 248/615/221 420/616/589 249/617/222
+f 249/617/222 420/616/589 421/618/590
+f 245/608/217 421/614/590 419/610/591
+f 419/610/591 421/614/590 422/612/588
+f 421/614/590 245/341/217 246/342/219
+f 421/614/590 246/342/219 249/348/222
+f 423/611/587 417/607/592 422/612/588
+f 422/612/588 417/607/592 419/610/591
+f 420/613/589 248/347/221 413/603/593
+f 417/607/592 423/611/587 413/603/593
+f 413/603/593 423/611/587 420/613/589
+f 405/593/594 410/600/575 401/595/576
+f 411/601/577 242/338/211 240/337/210
+f 407/597/595 408/598/573 405/593/594
+f 405/593/594 408/598/573 410/600/575
+f 409/619/574 243/620/213 411/621/577
+f 411/601/577 243/339/213 242/338/211
+f 241/336/209 243/339/213 409/599/574
+f 403/591/568 409/599/574 407/597/595
+f 407/597/595 409/599/574 408/598/573
+f 388/572/596 398/587/564 393/579/597
+f 393/579/597 398/587/564 397/585/598
+f 398/587/564 388/572/596 387/571/599
+f 391/583/600 396/586/563 387/571/599
+f 387/571/599 396/586/563 398/587/564
+f 399/584/561 395/622/601 397/585/598
+f 397/585/598 395/622/601 393/579/597
+f 396/586/563 391/583/600 390/623/602
+f 395/624/601 399/584/561 390/623/602
+f 390/623/602 399/584/561 396/586/563
+f 382/564/603 384/625/544 377/556/604
+f 377/556/604 384/625/544 383/626/543
+f 383/567/543 378/559/605 377/558/604
+f 380/562/606 386/627/545 382/564/603
+f 382/564/603 386/627/545 384/625/544
+f 385/570/546 372/565/607 383/567/543
+f 383/567/543 372/565/607 378/559/605
+f 385/628/546 373/553/608 372/552/607
+f 373/553/608 385/628/546 380/562/606
+f 380/562/606 385/628/546 386/627/545
+f 400/594/565 224/313/192 226/315/194
+f 375/560/538 99/139/531 374/554/530
+f 289/557/26 286/401/332 288/629/326
+f 279/566/331 286/401/332 289/557/26
+f 281/400/336 291/630/26 277/631/322
+f 290/632/327 281/400/336 277/631/322
+f 282/407/337 283/633/26 287/634/26
+f 281/400/336 282/407/337 287/634/26
+f 281/400/336 287/634/26 291/630/26
+f 288/629/326 281/400/336 290/632/327
+f 288/629/326 286/401/332 281/400/336
+f 287/409/345 283/398/341 90/125/340
+f 424/402/342 283/633/26 282/407/337
+f 283/398/341 424/397/339 69/103/52
+f 279/566/527 289/557/535 378/559/537
diff --git a/examples/pybullet/gym/pybullet_data/laikago/hip_motor_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/hip_motor_lores.obj
new file mode 100644
index 000000000..b6fd3479e
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/hip_motor_lores.obj
@@ -0,0 +1,301 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib hip_motor.mtl
+o Hip_Motor
+v 0.018642 0.011370 -0.039779
+v 0.025681 0.028894 -0.029469
+v 0.024123 -0.022564 -0.034618
+v 0.017913 -0.012850 -0.039451
+v 0.024854 0.001630 -0.040910
+v -0.007063 -0.011697 -0.039764
+v -0.055254 -0.000712 -0.040910
+v -0.006332 0.012490 -0.039430
+v -0.054587 0.021367 -0.035618
+v -0.006333 0.012457 0.040916
+v 0.018643 0.011323 0.041278
+v -0.055109 0.004065 0.042069
+v -0.007062 -0.011647 0.041259
+v -0.055909 -0.022407 0.035182
+v 0.017914 -0.012816 0.040944
+v 0.024174 -0.020866 0.036688
+v 0.024802 -0.000044 0.042424
+v 0.023648 -0.038275 0.019652
+v -0.056388 -0.038287 0.011952
+v 0.023582 -0.040483 -0.013015
+v -0.056393 -0.038447 -0.009152
+v -0.056024 -0.026221 -0.030601
+v -0.054037 0.039580 -0.017457
+v 0.026032 0.040660 -0.002137
+v -0.053964 0.041984 0.010570
+v 0.025908 0.036541 0.018482
+v -0.054389 0.027925 0.033352
+v 0.025503 0.023126 0.034678
+v -0.005360 -0.001134 -0.040295
+v 0.008670 -0.010989 -0.040295
+v 0.016185 0.000704 -0.040295
+v 0.006783 0.010973 -0.040295
+v 0.001934 0.009518 0.041705
+v 0.014977 -0.005118 0.041705
+v -0.005110 -0.001444 0.041705
+v 0.013838 0.006986 0.041705
+v 0.005177 -0.010748 0.041705
+v -0.003782 -0.003544 0.047521
+v 0.000372 0.008951 0.047458
+v 0.014554 0.005497 0.047408
+v 0.013637 -0.006487 0.047464
+v 0.005832 -0.010693 0.047425
+v -0.002492 -0.005296 -0.050178
+v -0.003558 0.004588 -0.049795
+v 0.005304 -0.010434 -0.049903
+v 0.014750 -0.004890 -0.049888
+v 0.013573 0.006558 -0.050051
+v 0.004006 0.009656 -0.050003
+vt 0.588500 0.790626
+vt 0.587798 0.789372
+vt 0.585200 0.789564
+vt 0.588325 0.785861
+vt 0.587700 0.784544
+vt 0.588400 0.788302
+vt 0.580100 0.785873
+vt 0.580184 0.788082
+vt 0.584617 0.784120
+vt 0.580247 0.790309
+vt 0.588400 0.788119
+vt 0.588499 0.790486
+vt 0.587080 0.792411
+vt 0.580266 0.790616
+vt 0.580200 0.788544
+vt 0.587217 0.792350
+vt 0.585101 0.786917
+vt 0.580100 0.786131
+vt 0.588300 0.786014
+vt 0.587700 0.786717
+vt 0.588300 0.785200
+vt 0.588300 0.790068
+vt 0.582966 0.791569
+vt 0.580100 0.789331
+vt 0.588300 0.786856
+vt 0.580100 0.787210
+vt 0.580300 0.791300
+vt 0.588270 0.785292
+vt 0.580300 0.786436
+vt 0.588500 0.787910
+vt 0.580300 0.789184
+vt 0.588500 0.790010
+vt 0.588009 0.784517
+vt 0.590036 0.789184
+vt 0.589701 0.786436
+vt 0.588620 0.791433
+vt 0.586267 0.792362
+vt 0.585782 0.784063
+vt 0.583601 0.784658
+vt 0.586022 0.784061
+vt 0.581895 0.786856
+vt 0.582106 0.790068
+vt 0.583714 0.791871
+vt 0.585853 0.792331
+vt 0.585542 0.788037
+vt 0.586668 0.787234
+vt 0.587412 0.788193
+vt 0.586522 0.789015
+vt 0.585200 0.789400
+vt 0.585518 0.788018
+vt 0.586087 0.789010
+vt 0.587301 0.787641
+vt 0.587700 0.786800
+vt 0.586390 0.787142
+vt 0.587153 0.788757
+vt 0.587207 0.788629
+vt 0.586044 0.788865
+vt 0.585533 0.787805
+vt 0.587145 0.787542
+vt 0.586074 0.787249
+vt 0.585730 0.792400
+vt 0.585552 0.792900
+vt 0.586227 0.792900
+vt 0.586087 0.792400
+vt 0.586567 0.792400
+vt 0.586388 0.792900
+vt 0.586110 0.792400
+vt 0.585383 0.792900
+vt 0.586603 0.792945
+vt 0.586390 0.792400
+vt 0.585642 0.787605
+vt 0.587267 0.787673
+vt 0.586433 0.787185
+vt 0.587130 0.788729
+vt 0.586158 0.789030
+vt 0.585621 0.788550
+vt 0.586048 0.783100
+vt 0.585745 0.784000
+vt 0.586408 0.784000
+vt 0.586373 0.783067
+vt 0.586543 0.783078
+vt 0.585924 0.784000
+vt 0.585974 0.783058
+vt 0.586416 0.783100
+vt 0.585282 0.783100
+vn 0.0372 0.7622 -0.6463
+vn 0.0408 0.3099 -0.9499
+vn -0.0088 0.2826 -0.9592
+vn 0.0580 -0.5883 -0.8065
+vn 0.1204 -0.2692 -0.9555
+vn -0.0024 0.0330 -0.9995
+vn 0.2723 0.2806 -0.9204
+vn 0.3880 0.3466 -0.8540
+vn -0.0628 -0.3723 -0.9260
+vn -0.6588 -0.0333 -0.7515
+vn 0.0013 -0.0983 -0.9952
+vn -0.6519 0.3864 -0.6525
+vn 0.6313 -0.0167 0.7754
+vn 0.6832 0.4353 0.5863
+vn 0.1293 0.2759 0.9524
+vn -0.0082 0.6375 0.7704
+vn -0.0412 0.0520 0.9978
+vn -0.0139 0.2734 0.9618
+vn -0.0218 -0.2515 0.9676
+vn -0.0532 -0.5807 0.8124
+vn 0.0606 -0.5514 0.8321
+vn 0.0962 -0.2837 0.9541
+vn -0.0095 -0.9076 0.4197
+vn -0.0450 -0.8818 0.4695
+vn -0.0063 -0.9977 0.0675
+vn -0.0089 -0.8401 -0.5424
+vn -0.0251 -0.9997 0.0076
+vn -0.0365 -0.9689 -0.2449
+vn -0.0345 -0.8099 -0.5855
+vn -0.0387 -0.3329 -0.9422
+vn -0.6245 0.7119 -0.3211
+vn 0.0516 0.9937 -0.0990
+vn 0.0086 0.9722 0.2339
+vn 0.6803 0.6573 0.3243
+vn -0.9995 0.0302 0.0000
+vn 0.9995 -0.0302 -0.0000
+vn 0.9995 -0.0300 0.0001
+vn 0.9995 -0.0303 0.0000
+vn -0.2842 0.0156 -0.9586
+vn 0.0104 -0.3009 -0.9536
+vn 0.2078 -0.0135 -0.9781
+vn 0.0063 0.4049 -0.9143
+vn -0.2340 0.0138 0.9721
+vn -0.0244 0.1781 0.9837
+vn 0.1423 -0.0380 0.9891
+vn -0.0030 -0.2720 0.9623
+vn 0.0494 0.0435 0.9978
+vn 0.5688 0.4996 0.6534
+vn -0.4070 0.6986 0.5885
+vn -0.7108 -0.3113 0.6308
+vn 0.6103 -0.4865 0.6252
+vn -0.0182 -0.7991 0.6009
+vn -0.9920 -0.0925 0.0862
+vn -0.2894 0.9571 0.0157
+vn 0.2054 0.9669 0.1512
+vn 0.7539 0.6526 0.0758
+vn 0.9907 0.0929 -0.0998
+vn 0.8416 -0.5344 0.0778
+vn 0.9751 -0.0737 0.2093
+vn -0.1122 -0.9936 -0.0136
+vn -0.6168 -0.4906 -0.6155
+vn 0.7047 -0.3648 -0.6086
+vn -0.1148 -0.7984 -0.5911
+vn 0.6149 0.4979 -0.6116
+vn -0.1715 0.7469 -0.6425
+vn -0.7177 0.4255 -0.5512
+vn -0.9857 -0.1196 0.1184
+vn 0.0465 0.9947 0.0912
+vn 0.9941 0.0813 0.0722
+vn 0.1996 -0.9781 0.0595
+usemtl None
+s 1
+f 2/1/1 1/2/2 8/3/3
+f 3/4/4 4/5/5 5/6/6
+f 5/6/6 4/5/5 1/2/7
+f 5/6/6 1/2/7 2/1/8
+f 22/7/9 7/8/10 6/9/11
+f 6/9/11 7/8/10 8/3/3
+f 8/3/3 7/8/10 9/10/12
+f 17/11/13 28/12/14 11/13/15
+f 27/14/16 12/15/17 10/16/18
+f 10/16/18 12/15/17 13/17/19
+f 13/17/19 12/15/17 14/18/20
+f 16/19/21 15/20/22 13/17/19
+f 17/11/13 15/20/22 16/19/21
+f 17/11/13 11/13/15 15/20/22
+f 13/17/19 14/18/20 16/19/21
+f 16/19/21 14/18/20 18/21/23
+f 18/22/23 14/23/20 19/24/24
+f 18/22/23 19/24/24 20/25/25
+f 20/25/26 19/24/27 21/26/28
+f 20/25/26 21/26/28 22/7/29
+f 20/25/26 22/7/29 3/4/4
+f 3/4/4 22/7/29 6/9/30
+f 3/4/4 6/9/30 4/5/5
+f 8/3/3 9/10/12 2/1/1
+f 2/1/1 9/10/12 23/27/31
+f 2/28/1 23/29/31 24/30/32
+f 24/30/32 23/29/31 25/31/33
+f 24/30/32 25/31/33 26/32/34
+f 26/32/34 25/31/33 27/14/16
+f 26/32/34 27/14/16 28/12/14
+f 28/12/14 27/14/16 10/16/18
+f 28/12/14 10/16/18 11/13/15
+f 9/33/12 25/34/35 23/35/31
+f 9/33/12 27/36/35 25/34/35
+f 9/33/12 12/37/35 27/36/35
+f 14/23/35 12/37/35 9/33/12
+f 9/33/12 19/24/35 14/23/35
+f 21/26/35 19/24/35 9/33/12
+f 9/33/12 22/7/35 21/26/35
+f 9/33/12 7/38/10 22/7/35
+f 3/39/36 5/40/36 28/12/14
+f 28/12/14 20/41/36 3/39/36
+f 18/42/36 20/41/36 28/12/14
+f 28/12/14 16/43/36 18/42/36
+f 28/12/14 17/44/13 16/43/36
+f 28/12/14 24/30/37 26/32/34
+f 2/28/38 24/30/37 28/12/14
+f 28/12/14 5/40/36 2/28/38
+f 6/9/30 29/45/39 30/46/40
+f 6/9/30 30/46/40 4/5/5
+f 31/47/41 1/2/2 4/5/5
+f 31/47/41 4/5/5 30/46/40
+f 1/2/2 31/47/41 32/48/42
+f 1/2/2 32/48/42 8/49/3
+f 8/49/3 32/48/42 29/45/39
+f 8/49/3 29/45/39 6/9/30
+f 35/50/43 33/51/44 10/16/18
+f 11/13/15 34/52/45 15/53/22
+f 13/17/19 37/54/46 35/50/43
+f 13/17/19 35/50/43 10/16/18
+f 15/53/22 34/52/45 37/54/46
+f 10/16/18 33/51/44 11/13/15
+f 11/13/15 33/51/44 36/55/47
+f 11/13/15 36/55/47 34/52/45
+f 15/53/22 37/54/46 13/17/19
+f 40/56/48 39/57/49 38/58/50
+f 41/59/51 40/56/48 38/58/50
+f 38/58/50 42/60/52 41/59/51
+f 35/61/53 38/62/50 39/63/49
+f 35/61/53 39/63/49 33/64/54
+f 33/64/54 39/63/49 36/65/55
+f 36/65/56 39/63/49 40/66/48
+f 36/65/56 40/66/48 34/67/57
+f 34/67/58 40/66/59 41/68/51
+f 34/67/58 41/68/51 42/69/52
+f 34/67/58 42/69/52 37/70/60
+f 37/70/60 42/69/52 38/62/50
+f 37/70/60 38/62/50 35/61/53
+f 43/71/61 46/72/62 45/73/63
+f 43/71/61 47/74/64 46/72/62
+f 43/71/61 48/75/65 47/74/64
+f 43/71/61 44/76/66 48/75/65
+f 44/77/66 29/78/67 32/79/68
+f 44/77/66 32/79/68 48/80/65
+f 48/80/65 32/79/68 47/81/64
+f 47/81/64 32/79/68 31/82/69
+f 47/81/64 31/82/69 46/83/62
+f 46/83/62 31/82/69 30/46/70
+f 46/83/62 30/46/70 45/84/63
+f 45/84/63 30/46/70 29/78/67
+f 45/84/63 29/78/67 43/85/61
+f 43/85/61 29/78/67 44/77/66
diff --git a/examples/pybullet/gym/pybullet_data/laikago/hip_motor_mirror_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/hip_motor_mirror_lores.obj
new file mode 100644
index 000000000..233fe7c62
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/hip_motor_mirror_lores.obj
@@ -0,0 +1,268 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib hip_motor_mirror.mtl
+o Hip_Motor_Mirror
+v -0.018642 0.011370 -0.039779
+v -0.025681 0.028894 -0.029469
+v -0.024123 -0.022564 -0.034618
+v -0.024854 0.001630 -0.040910
+v -0.017913 -0.012850 -0.039451
+v 0.007063 -0.011697 -0.039764
+v 0.054963 0.008930 -0.041667
+v 0.006332 0.012490 -0.039430
+v 0.006333 0.012457 0.040916
+v -0.018643 0.011323 0.041278
+v 0.055109 0.004065 0.042069
+v 0.007062 -0.011647 0.041259
+v 0.055909 -0.022407 0.035182
+v -0.017914 -0.012816 0.040944
+v -0.023759 -0.034644 0.027964
+v -0.024802 -0.000044 0.042424
+v 0.056471 -0.041022 0.002717
+v -0.023582 -0.040483 -0.013015
+v 0.056024 -0.026221 -0.030601
+v 0.054037 0.039580 -0.017457
+v -0.026056 0.041433 0.007571
+v 0.053964 0.041984 0.010570
+v 0.054389 0.027925 0.033352
+v -0.025503 0.023126 0.034678
+v 0.005360 -0.001134 -0.040295
+v -0.008670 -0.010989 -0.040295
+v -0.016185 0.000704 -0.040295
+v -0.006783 0.010973 -0.040295
+v -0.001934 0.009518 0.041705
+v -0.011121 -0.010814 0.041705
+v 0.005110 -0.001444 0.041705
+v -0.013838 0.006986 0.041705
+v 0.003782 -0.003544 0.047521
+v -0.000372 0.008951 0.047458
+v -0.014554 0.005497 0.047408
+v -0.013637 -0.006487 0.047464
+v -0.005832 -0.010693 0.047425
+v 0.004153 -0.002538 -0.050195
+v -0.005304 -0.010434 -0.049903
+v -0.016491 -0.001613 -0.050003
+v -0.007264 0.010218 -0.049815
+v 0.001101 0.007081 -0.050043
+vt 0.582500 0.789370
+vt 0.586305 0.788076
+vt 0.583300 0.787865
+vt 0.582636 0.783752
+vt 0.582548 0.786607
+vt 0.583951 0.781624
+vt 0.592317 0.783773
+vt 0.586400 0.784934
+vt 0.592200 0.787386
+vt 0.582565 0.786398
+vt 0.583300 0.791568
+vt 0.582500 0.789161
+vt 0.592134 0.789293
+vt 0.587126 0.791417
+vt 0.592218 0.786905
+vt 0.586400 0.784920
+vt 0.592300 0.784069
+vt 0.582678 0.783317
+vt 0.583400 0.784727
+vt 0.583300 0.787880
+vt 0.582822 0.789408
+vt 0.592400 0.786731
+vt 0.592319 0.789833
+vt 0.582700 0.784923
+vt 0.592100 0.790200
+vt 0.582436 0.783607
+vt 0.582400 0.787258
+vt 0.592100 0.784409
+vt 0.592100 0.787653
+vt 0.586535 0.781850
+vt 0.586045 0.791362
+vt 0.582984 0.790435
+vt 0.581036 0.786731
+vt 0.582529 0.782859
+vt 0.588277 0.790489
+vt 0.585737 0.781647
+vt 0.585569 0.791331
+vt 0.588847 0.783047
+vt 0.590157 0.787258
+vt 0.584599 0.785362
+vt 0.585926 0.786267
+vt 0.583400 0.784800
+vt 0.583719 0.786501
+vt 0.584761 0.787444
+vt 0.586300 0.787900
+vt 0.585948 0.786245
+vt 0.586300 0.787900
+vt 0.585272 0.787458
+vt 0.583400 0.784800
+vt 0.584440 0.785519
+vt 0.584032 0.787141
+vt 0.583972 0.786988
+vt 0.585917 0.786013
+vt 0.585350 0.787289
+vt 0.584002 0.785720
+vt 0.585301 0.785391
+vt 0.585437 0.791500
+vt 0.585339 0.792100
+vt 0.585227 0.792100
+vt 0.585272 0.791500
+vt 0.585145 0.791500
+vt 0.585572 0.792100
+vt 0.584860 0.791500
+vt 0.585010 0.792100
+vt 0.584674 0.792145
+vt 0.585875 0.786145
+vt 0.584882 0.785308
+vt 0.583851 0.786250
+vt 0.584318 0.787385
+vt 0.585635 0.787170
+vt 0.585235 0.780500
+vt 0.585896 0.780500
+vt 0.585448 0.781500
+vt 0.585188 0.781500
+vt 0.584907 0.780414
+vt 0.585397 0.780416
+vt 0.585631 0.781500
+vt 0.584792 0.781500
+vt 0.584899 0.780500
+vn -0.0377 0.7867 -0.6161
+vn 0.0087 0.3012 -0.9535
+vn -0.0408 0.3099 -0.9499
+vn -0.0580 -0.5883 -0.8065
+vn 0.0024 0.0330 -0.9995
+vn -0.1204 -0.2692 -0.9555
+vn -0.2723 0.2806 -0.9204
+vn -0.3880 0.3466 -0.8540
+vn 0.8957 -0.1087 -0.4312
+vn 0.0060 -0.1056 -0.9944
+vn 0.6282 0.1646 -0.7604
+vn -0.6314 -0.0313 0.7748
+vn -0.1286 0.2737 0.9532
+vn -0.6757 0.4680 0.5696
+vn -0.0011 0.6446 0.7645
+vn 0.0145 0.2743 0.9615
+vn 0.0412 0.0520 0.9978
+vn 0.0167 -0.2684 0.9632
+vn 0.0714 -0.6028 0.7947
+vn -0.0482 -0.8167 0.5750
+vn -0.1921 -0.3212 0.9273
+vn 0.0682 -0.9966 0.0472
+vn -0.0064 -0.9589 -0.2837
+vn 0.0541 -0.8476 -0.5279
+vn 0.0387 -0.3329 -0.9422
+vn 0.6167 0.7006 -0.3589
+vn -0.6511 0.7507 0.1119
+vn -0.0157 0.9708 0.2394
+vn 0.9995 0.0302 0.0000
+vn -0.9995 -0.0302 -0.0000
+vn -0.9995 -0.0303 0.0000
+vn -0.0104 -0.3009 -0.9536
+vn 0.2842 0.0156 -0.9586
+vn -0.2078 -0.0135 -0.9781
+vn -0.0063 0.4049 -0.9143
+vn 0.2224 0.0110 0.9749
+vn 0.0244 0.1781 0.9837
+vn -0.0306 -0.2188 0.9753
+vn -0.0622 0.0293 0.9976
+vn -0.6400 0.4037 0.6538
+vn 0.7018 -0.3957 0.5923
+vn 0.4067 0.6987 0.5885
+vn -0.7772 -0.2957 0.5554
+vn 0.2646 -0.8285 0.4936
+vn 0.9839 -0.1723 0.0471
+vn 0.2889 0.9572 0.0160
+vn -0.2054 0.9669 0.1512
+vn -0.8337 0.5508 0.0392
+vn -0.9756 -0.1492 -0.1611
+vn -0.3193 -0.9473 -0.0273
+vn -0.9329 -0.0730 -0.3527
+vn 0.7284 -0.2621 -0.6331
+vn 0.0918 -0.8004 -0.5924
+vn -0.8063 -0.0726 -0.5871
+vn -0.2382 0.7580 -0.6072
+vn 0.5678 0.5723 -0.5917
+vn 0.9884 -0.1157 0.0981
+vn 0.0673 0.9937 0.0891
+vn -0.9844 0.1758 -0.0110
+vn -0.7306 0.6689 -0.1367
+vn -0.2217 -0.9751 0.0081
+usemtl None
+s 1
+f 2/1/1 8/2/2 1/3/3
+f 3/4/4 4/5/5 5/6/6
+f 4/5/5 1/3/7 5/6/6
+f 4/5/5 2/1/8 1/3/7
+f 19/7/9 6/8/10 7/9/11
+f 6/8/10 8/2/2 7/9/11
+f 16/10/12 10/11/13 24/12/14
+f 23/13/15 9/14/16 11/15/17
+f 9/14/16 12/16/18 11/15/17
+f 12/16/18 13/17/19 11/15/17
+f 15/18/20 12/16/18 14/19/21
+f 16/10/12 15/18/20 14/19/21
+f 16/10/12 14/19/21 10/20/13
+f 12/16/18 15/18/20 13/17/19
+f 15/21/20 17/22/22 13/23/19
+f 15/21/20 18/24/23 17/22/22
+f 18/24/23 19/7/24 17/22/22
+f 18/24/23 3/4/4 19/7/24
+f 3/4/4 6/8/25 19/7/24
+f 3/4/4 5/6/6 6/8/25
+f 8/2/2 2/1/1 7/9/11
+f 2/1/1 20/25/26 7/9/11
+f 2/26/1 21/27/27 20/28/26
+f 21/27/27 22/29/28 20/28/26
+f 21/27/27 23/13/15 22/29/28
+f 21/27/27 24/12/14 23/13/15
+f 24/12/14 9/14/16 23/13/15
+f 24/12/14 10/11/13 9/14/16
+f 7/30/11 20/28/26 22/29/29
+f 7/30/11 22/29/29 23/13/29
+f 7/30/11 23/13/29 11/31/29
+f 13/32/29 7/30/11 11/31/29
+f 7/30/11 13/32/29 17/33/29
+f 7/30/11 17/33/29 19/34/9
+f 3/4/30 24/35/14 4/36/30
+f 24/35/14 3/4/30 18/24/30
+f 15/21/30 24/35/14 18/24/30
+f 24/35/14 15/21/30 16/37/12
+f 2/38/31 24/35/14 21/39/27
+f 24/35/14 2/38/31 4/36/30
+f 6/8/25 26/40/32 25/41/33
+f 6/8/25 5/42/6 26/40/32
+f 27/43/34 5/42/6 1/3/3
+f 27/43/34 26/40/32 5/42/6
+f 1/3/3 28/44/35 27/43/34
+f 1/3/3 8/45/2 28/44/35
+f 8/45/2 25/41/33 28/44/35
+f 8/45/2 6/8/25 25/41/33
+f 31/46/36 9/47/16 29/48/37
+f 10/20/13 14/49/21 30/50/38
+f 12/16/18 31/46/36 30/50/38
+f 12/16/18 9/47/16 31/46/36
+f 9/47/16 10/20/13 29/48/37
+f 10/20/13 32/51/39 29/48/37
+f 10/20/13 30/50/38 32/51/39
+f 14/49/21 12/16/18 30/50/38
+f 35/52/40 33/53/41 34/54/42
+f 36/55/43 33/53/41 35/52/40
+f 33/53/41 36/55/43 37/56/44
+f 31/57/45 34/58/42 33/59/41
+f 31/57/45 29/60/46 34/58/42
+f 29/60/46 32/61/47 34/58/42
+f 32/61/48 35/62/40 34/58/42
+f 32/61/48 30/63/49 35/62/40
+f 30/63/50 36/64/43 35/62/51
+f 30/63/50 37/65/44 36/64/43
+f 30/63/50 33/59/41 37/65/44
+f 30/63/50 31/57/45 33/59/41
+f 38/66/52 39/67/53 40/68/54
+f 41/69/55 38/66/52 40/68/54
+f 38/66/52 41/69/55 42/70/56
+f 38/71/52 42/72/56 25/73/57
+f 42/72/56 28/74/58 25/73/57
+f 42/72/56 41/75/55 28/74/58
+f 41/75/55 40/76/54 28/74/58
+f 40/76/54 27/77/59 28/74/60
+f 40/76/54 26/78/61 27/77/59
+f 40/76/54 39/79/53 26/78/61
+f 39/79/53 25/73/57 26/78/61
+f 39/79/53 38/71/52 25/73/57
diff --git a/examples/pybullet/gym/pybullet_data/laikago/laikago_toes_zup_lores.urdf b/examples/pybullet/gym/pybullet_data/laikago/laikago_toes_zup_lores.urdf
new file mode 100644
index 000000000..725e46ac3
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/laikago_toes_zup_lores.urdf
@@ -0,0 +1,598 @@
+<?xml version="1.0" ?>
+<robot name="plane">
+ <link name="chassis">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <mass value="13.715"/>
+ <inertia ixx="0.22" ixy="0" ixz="0" iyy="0.431" iyz="0" izz="0.565"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz=" 0 0 0"/>
+ <geometry>
+ <mesh filename="chassis_zup_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white">
+ <color rgba="1 1 1 1"/>
+ </material>
+ </visual>
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="chassis_vhacd_mod_zup.obj" scale="1 1 1"/>
+ </geometry>
+ </collision>
+ </link>
+ <link name="FR_hip_motor">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0.02 0 0"/>
+ <mass value="1.095"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy=".002" iyz="0" izz=".001"/>
+ </inertial>
+
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor_mirror_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor_mirror.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+ </link>
+
+ <joint name="FR_hip_motor_2_chassis_joint" type="continuous">
+ <axis xyz="0 0 -1"/>
+ <parent link="chassis"/>
+ <child link="FR_hip_motor"/>
+ <origin rpy="1.57079 0 1.57079" xyz="0.199095 -0.0817145 -0.03"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="FR_upper_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.04 -0.04"/>
+ <mass value="1.527"/>
+ <inertia ixx="0.015" ixy="0" ixz="0" iyy="0.007" iyz="0" izz="0.01"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_mirror_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_right_vhacd.obj" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="FR_upper_leg_2_hip_motor_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="FR_hip_motor"/>
+ <child link="FR_upper_leg"/>
+ <origin rpy="0 0 0" xyz="-0.053565 0 0"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="FR_lower_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.16 -0.02"/>
+ <mass value="0.241"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.002"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 1.57079 0" xyz="0 0.0 0"/>
+ <geometry>
+ <mesh filename="lower_leg3_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 1.57079 0" xyz="0 0.0 0"/>
+ <geometry>
+ <mesh filename="lower_leg_3.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+ </link>
+ <joint name="FR_lower_leg_2_upper_leg_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="FR_upper_leg"/>
+ <child link="FR_lower_leg"/>
+
+ <origin rpy="0 0 0" xyz="0.02069 -0.20833 -0.1422"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+
+ <link name="FL_hip_motor">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="-.02 0 0"/>
+ <mass value="1.095"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.001"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white">
+ </material>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="FL_hip_motor_2_chassis_joint" type="continuous">
+ <axis xyz="0 0 1"/>
+ <parent link="chassis"/>
+ <child link="FL_hip_motor"/>
+ <origin rpy="1.57079 0 1.57079" xyz="0.199095 0.0817145 -0.03"/>
+
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="FL_upper_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.04 -0.04"/>
+ <mass value="1.527"/>
+ <inertia ixx="0.016" ixy="0" ixz="0" iyy="0.007" iyz="0" izz="0.011"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+
+ <mesh filename="upper_leg_left_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white">
+ </material>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_left_vhacd.obj" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+
+ <joint name="FL_upper_leg_2_hip_motor_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="FL_hip_motor"/>
+ <child link="FL_upper_leg"/>
+ <origin rpy="0 0 0" xyz="0.055855 0 0"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+
+ <link name="FL_lower_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.16 -0.02"/>
+ <mass value="0.241"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.002"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 1.57079 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="lower_leg3_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white">
+ </material>
+ </visual>
+
+ <collision>
+ <origin rpy="0 1.57079 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="lower_leg_3.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="FL_lower_leg_2_upper_leg_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="FL_upper_leg"/>
+ <child link="FL_lower_leg"/>
+ <origin rpy="0 0 0" xyz="-0.02069 -0.20833 -0.1422"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+
+
+
+
+
+ <link name="RR_hip_motor">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0.02 0 0"/>
+ <mass value="1.095"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.001"/>
+ </inertial>
+
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor_mirror_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor_mirror.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="RR_hip_motor_2_chassis_joint" type="continuous">
+ <axis xyz="0 0 -1"/>
+ <parent link="chassis"/>
+ <child link="RR_hip_motor"/>
+ <origin rpy="1.57079 0 1.57079" xyz="-0.238195 -0.0817145 -0.03"/>
+
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="RR_upper_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.04 -0.04"/>
+ <mass value="1.527"/>
+ <inertia ixx="0.016" ixy="0" ixz="0" iyy="0.007" iyz="0" izz="0.011"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_mirror2_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_right_vhacd.obj" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="RR_upper_leg_2_hip_motor_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="RR_hip_motor"/>
+ <child link="RR_upper_leg"/>
+ <origin rpy="0 0 0" xyz="-0.053565 0 0"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="RR_lower_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.16 -0.02"/>
+ <mass value="0.241"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.002"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 1.57079 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="lower_leg3_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 1.57079 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="lower_leg_3.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="RR_lower_leg_2_upper_leg_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="RR_upper_leg"/>
+ <child link="RR_lower_leg"/>
+ <origin rpy="0 0 0" xyz="0.02069 -0.20833 -0.1422"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+
+ <link name="RL_hip_motor">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="-.02 0 0"/>
+ <mass value="1.095"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.001"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="hip_motor.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="RL_hip_motor_2_chassis_joint" type="continuous">
+ <axis xyz="0 0 1"/>
+ <parent link="chassis"/>
+ <child link="RL_hip_motor"/>
+
+ <origin rpy="1.57079 0 1.57079" xyz="-0.238195 0.0817145 -0.03"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="RL_upper_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.04 -0.04"/>
+ <mass value="1.527"/>
+ <inertia ixx="0.016" ixy="0" ixz="0" iyy="0.007" iyz="0" izz="0.011"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_left2_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="upper_leg_left_vhacd.obj" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+
+ <joint name="RL_upper_leg_2_hip_motor_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="RL_hip_motor"/>
+ <child link="RL_upper_leg"/>
+ <origin rpy="0 0 0" xyz="0.055855 0 0"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+
+ <link name="RL_lower_leg">
+ <contact>
+ <lateral_friction value="1"/>
+ </contact>
+ <inertial>
+ <origin rpy="0 0 0" xyz="0 -0.16 -0.02"/>
+ <mass value="0.241"/>
+ <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.002"/>
+ </inertial>
+ <visual>
+ <origin rpy="0 1.57079 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="lower_leg3_lores.obj" scale="1 1 1"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+
+ <collision>
+ <origin rpy="0 1.57079 0" xyz="0 0 0"/>
+ <geometry>
+ <mesh filename="lower_leg_3.stl" scale="1 1 1"/>
+ </geometry>
+ </collision>
+
+ </link>
+
+ <joint name="RL_lower_leg_2_upper_leg_joint" type="continuous">
+ <axis xyz="1 0 0"/>
+ <parent link="RL_upper_leg"/>
+ <child link="RL_lower_leg"/>
+ <origin rpy="0 0 0" xyz="-0.02069 -0.20833 -0.1422"/>
+ <limit effort="100" velocity="100"/>
+ <joint_properties damping=".0" friction=".0"/>
+ </joint>
+
+ <link name="toeRL">
+ <contact>
+ <friction_anchor/>
+ <stiffness value="30000.0"/>
+ <damping value="1000.0"/>
+ <spinning_friction value="0.1"/>
+ <lateral_friction value="1.0"/>
+ </contact>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.0"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.03"/>
+ </geometry>
+ </collision>
+ <inertial>
+ <mass value="0.1"/>
+ <inertia ixx="0.000025" ixy="0" ixz="0" iyy="0.000025" iyz="0" izz="0.000025"/>
+ </inertial>
+ </link>
+ <joint name="jtoeRL" type="fixed">
+ <parent link="RL_lower_leg"/>
+ <child link="toeRL"/>
+ <origin xyz="0 -0.25 -0.022"/>
+ <dynamics damping="0.0" friction="0.0"/>
+ </joint>
+
+ <link name="toeRR">
+ <contact>
+ <friction_anchor/>
+ <stiffness value="30000.0"/>
+ <damping value="1000.0"/>
+ <spinning_friction value="0.1"/>
+ <lateral_friction value="1.0"/>
+ </contact>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.0"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.03"/>
+ </geometry>
+ </collision>
+ <inertial>
+ <mass value="0.1"/>
+ <inertia ixx="0.000025" ixy="0" ixz="0" iyy="0.000025" iyz="0" izz="0.000025"/>
+ </inertial>
+ </link>
+ <joint name="jtoeRR" type="fixed">
+ <parent link="RR_lower_leg"/>
+ <child link="toeRR"/>
+ <origin xyz="0 -0.25 -0.022"/>
+ <dynamics damping="0.0" friction="0.0"/>
+ </joint>
+
+ <link name="toeFL">
+ <contact>
+ <friction_anchor/>
+ <stiffness value="30000.0"/>
+ <damping value="1000.0"/>
+ <spinning_friction value="0.1"/>
+ <lateral_friction value="1.0"/>
+ </contact>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.0"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.03"/>
+ </geometry>
+ </collision>
+ <inertial>
+ <mass value="0.1"/>
+ <inertia ixx="0.000025" ixy="0" ixz="0" iyy="0.000025" iyz="0" izz="0.000025"/>
+ </inertial>
+ </link>
+ <joint name="jtoeFL" type="fixed">
+ <parent link="FL_lower_leg"/>
+ <child link="toeFL"/>
+ <origin xyz="0 -0.25 -0.022"/>
+ <dynamics damping="0.0" friction="0.0"/>
+ </joint>
+
+ <link name="toeFR">
+ <contact>
+ <friction_anchor/>
+ <stiffness value="30000.0"/>
+ <damping value="1000.0"/>
+ <spinning_friction value="0.1"/>
+ <lateral_friction value="1.0"/>
+ </contact>
+ <visual>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.0"/>
+ </geometry>
+ <material name="white"/>
+ </visual>
+ <collision>
+ <origin rpy="0 0 0" xyz="0 0 0"/>
+ <geometry>
+ <sphere radius="0.03"/>
+ </geometry>
+ </collision>
+ <inertial>
+ <mass value="0.1"/>
+ <inertia ixx="0.000025" ixy="0" ixz="0" iyy="0.000025" iyz="0" izz="0.000025"/>
+ </inertial>
+ </link>
+ <joint name="jtoeFR" type="fixed">
+ <parent link="FR_lower_leg"/>
+ <child link="toeFR"/>
+ <origin xyz="0 -0.25 -0.022"/>
+ <dynamics damping="0.0" friction="0.0"/>
+ </joint>
+</robot>
+
diff --git a/examples/pybullet/gym/pybullet_data/laikago/lower_leg3_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/lower_leg3_lores.obj
new file mode 100644
index 000000000..8999169c3
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/lower_leg3_lores.obj
@@ -0,0 +1,334 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib lower_leg3.mtl
+o Lower_Leg_3.008
+v -0.002757 -0.258132 0.009073
+v -0.001650 -0.257823 -0.013254
+v 0.041518 -0.229745 0.000657
+v -0.004067 -0.250963 0.012122
+v 0.004722 -0.203119 -0.007561
+v 0.004328 -0.203122 0.007585
+v 0.022529 -0.203137 0.009341
+v 0.022349 -0.203111 -0.009944
+v 0.001297 -0.030254 0.009578
+v -0.003888 0.040360 0.009515
+v -0.004021 0.040394 -0.009426
+v -0.013809 0.034558 -0.009335
+v -0.013708 0.034766 0.009430
+v -0.008694 -0.004650 -0.009281
+v -0.008804 -0.004452 0.009371
+v 0.001483 -0.029014 -0.009359
+v 0.000151 -0.016466 0.009230
+v -0.000376 -0.015530 -0.009153
+v 0.020588 -0.001158 -0.014031
+v 0.001225 -0.032850 -0.014394
+v 0.003174 -0.100237 0.008221
+v 0.003010 -0.096301 -0.008505
+v 0.001215 -0.032900 0.014536
+v 0.020374 -0.097580 0.008445
+v 0.020347 -0.101868 -0.008228
+v 0.020628 -0.043470 -0.014209
+v 0.020628 -0.043824 0.014334
+v 0.020646 -0.001227 0.014079
+v 0.015969 0.001612 0.014287
+v 0.015902 0.001623 -0.014174
+v 0.018305 0.002660 0.009697
+v 0.018355 0.002599 -0.009593
+v 0.003469 -0.203296 0.013444
+v 0.028695 -0.221345 -0.011008
+v 0.028166 -0.223936 0.013848
+v 0.026317 -0.221937 -0.013800
+v 0.045726 -0.243485 -0.013592
+v 0.039727 -0.231378 0.013648
+v 0.039703 -0.231410 -0.013531
+v 0.000072 -0.257197 0.014176
+v 0.008827 -0.268631 0.013795
+v 0.021316 -0.272672 0.014049
+v 0.036718 -0.267898 0.014018
+v 0.045442 -0.253320 0.013832
+v 0.043829 -0.239708 0.013782
+v 0.042929 -0.259518 -0.013975
+v 0.035849 -0.268283 -0.013712
+v 0.007553 -0.268801 -0.013417
+v 0.023534 -0.272662 -0.013922
+v 0.047448 -0.237667 0.002076
+v 0.047089 -0.262097 0.000069
+v 0.004285 -0.270658 0.000203
+v 0.034714 -0.272920 -0.005814
+v 0.033625 -0.273757 0.005404
+v 0.018412 -0.276626 0.001295
+v 0.049456 -0.250065 0.000048
+v 0.028513 -0.221401 0.011743
+v 0.019855 -0.203341 -0.013687
+v -0.003538 -0.250989 -0.013152
+v 0.002674 -0.203250 -0.012898
+v 0.019874 -0.203337 0.013770
+v 0.001659 -0.203387 0.009313
+vt 0.758534 0.892993
+vt 0.761981 0.891865
+vt 0.758385 0.891738
+vt 0.762069 0.891491
+vt 0.889477 0.826353
+vt 0.887600 0.826600
+vt 0.890700 0.826800
+vt 0.890700 0.823600
+vt 0.890938 0.823600
+vt 0.890175 0.825916
+vt 0.890700 0.823952
+vt 0.889799 0.825991
+vt 0.889579 0.826203
+vt 0.890994 0.826515
+vt 0.890742 0.826802
+vt 0.890730 0.826972
+vt 0.890640 0.826872
+vt 0.890646 0.827030
+vt 0.890557 0.826546
+vt 0.890557 0.826719
+vt 0.890408 0.826390
+vt 0.890377 0.826596
+vt 0.890568 0.826581
+vt 0.890565 0.826456
+vt 0.890748 0.826816
+vt 0.890752 0.826570
+vt 0.890805 0.826739
+vt 0.890805 0.826621
+vt 0.890345 0.826393
+vt 0.890383 0.826605
+vt 0.887600 0.826800
+vt 0.887600 0.826600
+vt 0.890828 0.826093
+vt 0.890691 0.826276
+vt 0.890876 0.826810
+vt 0.890879 0.826596
+vt 0.890959 0.826900
+vt 0.890987 0.826807
+vt 0.889908 0.826888
+vt 0.889429 0.825766
+vt 0.890954 0.824379
+vt 0.781800 0.880400
+vt 0.781900 0.880500
+vt 0.762292 0.868184
+vt 0.761936 0.869065
+vt 0.761955 0.869353
+vt 0.768835 0.871293
+vt 0.768688 0.871378
+vt 0.777700 0.871000
+vt 0.777721 0.870948
+vt 0.767761 0.872317
+vt 0.758446 0.891747
+vt 0.751757 0.889962
+vt 0.747466 0.885004
+vt 0.778600 0.873300
+vt 0.781587 0.879839
+vt 0.746940 0.877512
+vt 0.751230 0.870827
+vt 0.891300 0.822772
+vt 0.891300 0.823000
+vt 0.891200 0.823100
+vt 0.769178 0.872833
+vt 0.780800 0.878100
+vt 0.778600 0.873200
+vt 0.747043 0.884262
+vt 0.752232 0.889970
+vt 0.755457 0.869118
+vt 0.749171 0.873106
+vt 0.746452 0.877767
+vt 0.747740 0.872362
+vt 0.745049 0.879213
+vt 0.757643 0.867479
+vt 0.751671 0.891405
+vt 0.746934 0.887148
+vt 0.745080 0.879903
+vt 0.751988 0.868512
+vt 0.757577 0.869017
+vt 0.778200 0.872300
+vt 0.777800 0.871147
+vt 0.777900 0.871400
+vt 0.777989 0.871664
+vt 0.889043 0.826800
+vn -0.8690 -0.4362 0.2337
+vn -0.8631 -0.0429 0.5032
+vn -0.6621 -0.2858 -0.6928
+vn -0.7426 -0.0528 -0.6676
+vn -0.7191 -0.0480 0.6933
+vn -0.3703 0.8717 -0.3211
+vn -0.4124 0.8599 0.3008
+vn 0.8018 0.4084 0.4363
+vn 0.7174 -0.0340 0.6958
+vn -0.7131 -0.0654 -0.6980
+vn 0.7126 -0.0228 -0.7012
+vn 0.7816 0.4107 -0.4695
+vn -0.7218 0.3462 -0.5993
+vn -0.7161 0.3576 0.5994
+vn 0.1993 0.7897 -0.5802
+vn 0.2100 0.7876 0.5793
+vn -0.7002 -0.2911 -0.6519
+vn -0.7034 -0.2858 0.6508
+vn -0.9749 0.1372 -0.1752
+vn -0.9870 0.1441 0.0706
+vn -0.6127 -0.2190 0.7594
+vn -0.6040 -0.2509 -0.7564
+vn 0.7161 0.2872 0.6362
+vn 0.7066 0.2887 -0.6460
+vn 0.5806 0.6705 0.4618
+vn 0.5889 0.6798 -0.4372
+vn -0.7125 0.0647 -0.6987
+vn -0.7150 0.0860 0.6938
+vn 0.6884 -0.0473 -0.7237
+vn 0.6879 -0.0497 0.7241
+vn -0.4348 0.7170 0.5449
+vn -0.4039 0.7308 -0.5503
+vn -0.0480 0.0212 0.9986
+vn 0.2637 0.6567 0.7066
+vn -0.4083 0.6255 0.6648
+vn -0.5358 0.6117 -0.5819
+vn 0.2631 0.6472 -0.7155
+vn -0.7155 0.6871 0.1265
+vn 0.1770 0.9842 -0.0059
+vn 0.5434 0.4646 -0.6992
+vn 0.5431 0.4682 0.6970
+vn 0.7596 0.5618 -0.3276
+vn 0.7924 0.5097 0.3350
+vn 0.2328 0.2286 0.9453
+vn -0.4529 -0.2889 0.8435
+vn -0.3707 -0.5328 0.7607
+vn -0.0297 -0.6275 0.7780
+vn 0.4150 -0.4833 0.7708
+vn 0.6409 -0.1115 0.7595
+vn 0.5872 0.2054 0.7830
+vn 0.2861 0.1908 -0.9390
+vn 0.0099 -0.6418 -0.7668
+vn -0.3729 -0.5589 -0.7407
+vn 0.6746 0.1361 -0.7255
+vn 0.5629 -0.2546 -0.7863
+vn 0.3883 -0.4901 -0.7804
+vn 0.8853 -0.4650 -0.0073
+vn 0.4535 -0.8668 -0.2072
+vn 0.9111 0.4069 0.0666
+vn -0.6472 -0.7619 0.0238
+vn -0.1341 -0.9906 0.0257
+vn 0.4098 -0.8923 0.1896
+vn 0.9992 -0.0346 -0.0175
+vn 0.7929 0.3211 0.5179
+usemtl None
+s 1
+f 1/1/1 4/2/2 2/3/3
+f 2/3/3 4/2/2 59/4/4
+f 21/5/5 5/6/6 6/7/7
+f 6/8/7 7/9/8 21/5/5
+f 21/5/5 7/9/8 24/10/9
+f 5/11/6 22/12/10 25/13/11
+f 8/14/12 5/11/6 25/13/11
+f 12/15/13 13/16/14 11/17/15
+f 11/17/15 13/16/14 10/18/16
+f 14/19/17 15/20/18 12/15/13
+f 12/15/13 15/20/18 13/16/14
+f 16/21/19 9/22/20 17/23/21
+f 16/21/19 17/23/21 18/24/22
+f 18/24/22 17/23/21 14/19/17
+f 14/19/17 17/23/21 15/20/18
+f 28/25/23 19/26/24 31/27/25
+f 31/27/25 19/26/24 32/28/26
+f 11/17/15 10/18/16 32/28/26
+f 32/28/26 10/18/16 31/27/25
+f 5/6/6 21/5/5 22/12/10
+f 22/12/10 21/5/5 20/29/27
+f 23/30/28 20/29/27 21/5/5
+f 20/29/27 23/30/28 9/22/20
+f 20/29/27 9/22/20 16/21/19
+f 7/31/8 8/32/12 24/10/9
+f 24/10/9 8/32/12 25/13/11
+f 24/10/9 25/13/11 26/33/29
+f 24/10/9 26/33/29 27/34/30
+f 19/26/24 28/25/23 26/33/29
+f 26/33/29 28/25/23 27/34/30
+f 28/25/23 29/35/31 27/34/30
+f 27/34/30 29/35/31 23/30/28
+f 30/36/32 19/26/24 20/29/27
+f 20/29/27 19/26/24 26/33/29
+f 27/34/30 23/30/28 21/5/5
+f 27/34/30 21/5/5 24/10/9
+f 22/12/10 20/29/27 26/33/29
+f 22/12/10 26/33/29 25/13/11
+f 15/20/18 17/23/21 31/27/25
+f 31/27/25 17/23/21 9/22/33
+f 31/27/25 13/16/14 15/20/18
+f 31/27/25 10/18/16 13/16/14
+f 29/35/31 31/27/25 23/30/28
+f 23/30/28 31/27/25 9/22/20
+f 14/19/17 12/15/13 32/28/26
+f 32/28/26 16/21/19 18/24/22
+f 11/17/15 32/28/26 12/15/13
+f 32/28/26 18/24/22 14/19/17
+f 32/28/26 30/36/32 16/21/19
+f 16/21/19 30/36/32 20/29/27
+f 31/27/25 29/35/31 28/25/23
+f 30/36/32 32/28/26 19/26/24
+f 61/37/34 7/38/8 33/39/35
+f 33/39/35 7/38/8 6/7/7
+f 5/6/6 60/40/36 6/7/7
+f 6/7/7 60/40/36 33/39/35
+f 8/14/12 58/41/37 5/6/6
+f 5/6/6 58/41/37 60/40/36
+f 60/42/36 59/4/4 62/43/38
+f 62/43/38 59/4/4 4/2/2
+f 3/44/39 39/45/40 38/46/41
+f 38/46/41 39/45/40 34/47/42
+f 38/46/41 34/47/42 57/48/43
+f 7/49/8 57/48/43 8/50/12
+f 8/50/12 57/48/43 34/47/42
+f 38/46/41 35/51/44 40/52/45
+f 38/46/41 40/52/45 41/53/46
+f 38/46/41 41/53/46 42/54/47
+f 61/55/34 33/56/35 35/51/44
+f 35/51/44 33/56/35 40/52/45
+f 42/54/47 43/57/48 38/46/41
+f 38/46/41 43/57/48 44/58/49
+f 44/59/49 45/60/50 38/61/41
+f 59/4/4 36/62/51 39/45/40
+f 60/63/36 58/64/37 59/4/4
+f 59/4/4 58/64/37 36/62/51
+f 39/45/40 49/65/52 48/66/53
+f 39/45/40 37/67/54 46/68/55
+f 39/45/40 48/66/53 2/3/3
+f 59/4/4 39/45/40 2/3/3
+f 46/68/55 47/69/56 39/45/40
+f 39/45/40 47/69/56 49/65/52
+f 44/58/49 43/57/48 51/70/57
+f 49/65/52 47/69/56 53/71/58
+f 37/67/54 39/45/40 3/44/39
+f 37/67/54 3/44/39 50/72/59
+f 2/3/3 48/66/53 52/73/60
+f 1/1/1 2/3/3 52/73/60
+f 48/66/53 55/74/61 52/73/60
+f 1/1/1 52/73/60 40/52/45
+f 48/66/53 49/65/52 55/74/61
+f 52/73/60 41/53/46 40/52/45
+f 49/65/52 53/71/58 55/74/61
+f 52/73/60 55/74/61 41/53/46
+f 41/53/46 55/74/61 42/54/47
+f 55/74/61 53/71/58 54/75/62
+f 55/74/61 54/75/62 42/54/47
+f 42/54/47 54/75/62 43/57/48
+f 51/70/57 43/57/48 54/75/62
+f 51/70/57 54/75/62 53/71/58
+f 51/70/57 53/71/58 47/69/56
+f 46/68/55 51/70/57 47/69/56
+f 44/58/49 51/70/57 56/76/63
+f 56/76/63 51/70/57 37/67/54
+f 37/67/54 51/70/57 46/68/55
+f 50/72/59 45/77/50 44/58/49
+f 50/72/59 44/58/49 56/76/63
+f 50/72/59 56/76/63 37/67/54
+f 50/72/59 3/44/39 45/77/50
+f 45/77/50 3/44/39 38/46/41
+f 35/51/44 38/46/41 57/48/43
+f 57/48/43 61/78/64 35/51/44
+f 57/48/43 7/79/8 61/80/34
+f 39/45/40 36/62/51 34/47/42
+f 8/50/12 34/47/42 58/81/37
+f 58/81/37 34/47/42 36/62/51
+f 40/52/45 4/2/2 1/1/1
+f 62/43/38 4/2/2 33/56/35
+f 40/52/45 33/56/35 4/2/2
+f 33/39/35 60/40/36 62/82/38
diff --git a/examples/pybullet/gym/pybullet_data/laikago/upper_leg_left2_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_left2_lores.obj
new file mode 100644
index 000000000..7c3d9c447
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_left2_lores.obj
@@ -0,0 +1,437 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib upper_leg_left2.mtl
+o EXP_OTL_-_EXP_OTL_FLA-1_EXP_OTL_FLA_FL2-1_median_joint_EXP_.000
+v 0.031162 -0.045909 -0.057156
+v -0.001659 -0.019725 -0.041806
+v 0.037192 -0.020447 -0.041735
+v 0.035441 -0.040975 -0.023903
+v -0.002384 -0.043700 -0.013337
+v 0.037697 -0.046884 0.008077
+v -0.002450 -0.045899 0.008059
+v 0.024011 -0.098317 -0.045184
+v 0.024397 -0.073707 -0.075752
+v 0.023230 -0.097243 -0.047136
+v 0.025081 -0.069536 -0.076188
+v -0.004005 -0.097393 -0.045062
+v -0.003209 -0.071015 -0.077166
+v 0.023224 -0.097725 -0.046376
+v 0.024579 -0.071875 -0.077093
+v 0.035652 -0.031869 -0.047502
+v 0.036031 -0.056933 -0.001119
+v 0.025880 -0.071940 -0.077253
+v 0.000287 -0.158183 -0.108321
+v -0.031802 -0.156823 -0.106765
+v -0.006347 -0.161137 -0.108253
+v -0.005877 -0.157248 -0.107420
+v -0.004338 -0.216623 -0.139900
+v -0.008334 -0.212592 -0.136371
+v -0.008719 -0.211497 -0.155496
+v -0.001044 -0.213536 -0.151782
+v -0.003444 -0.183748 -0.165983
+v -0.029610 -0.160095 -0.149892
+v -0.033913 -0.151952 -0.142108
+v -0.002268 -0.152816 -0.142211
+v 0.001772 0.006116 0.043352
+v 0.038735 -0.007250 0.046510
+v 0.039791 0.027703 0.037081
+v 0.002775 0.039311 0.018199
+v 0.040294 0.044353 0.005086
+v 0.002577 0.032755 -0.030556
+v 0.040071 0.036969 -0.026507
+v 0.039282 0.010817 -0.045082
+v -0.001119 -0.019754 -0.041201
+v 0.038209 -0.024689 -0.040577
+v -0.000549 -0.036475 -0.026008
+v 0.037533 -0.047046 -0.003128
+v 0.037964 -0.032810 0.034639
+v 0.000667 -0.030406 0.032147
+v -0.031188 -0.034230 0.023446
+v -0.030898 -0.039276 -0.011303
+v -0.029564 -0.004424 -0.040385
+v -0.028660 -0.017278 -0.039563
+v -0.000300 -0.042957 0.010322
+v -0.029911 0.031058 -0.028292
+v -0.029558 0.038122 0.017054
+v -0.030521 0.005709 0.040579
+v -0.037698 -0.216476 -0.145641
+v -0.030658 -0.214425 -0.138208
+v -0.030721 -0.209387 -0.156354
+v -0.033478 -0.182841 -0.165979
+v -0.036551 -0.157779 -0.110720
+v 0.047384 -0.031062 -0.048457
+v 0.038023 -0.030823 -0.049630
+v 0.046488 -0.062041 -0.003498
+v 0.037054 -0.062902 -0.003943
+v 0.047434 -0.027513 0.040009
+v 0.049206 0.018401 0.044501
+v 0.050172 0.043527 0.009530
+v 0.049034 0.040669 -0.022517
+v 0.048731 0.012184 -0.045113
+v -0.007661 -0.197712 -0.135054
+v -0.007972 -0.193237 -0.150105
+v -0.029077 -0.192778 -0.150982
+v -0.029920 -0.195358 -0.136690
+vt 0.622500 0.905800
+vt 0.620751 0.906116
+vt 0.620479 0.905979
+vt 0.622730 0.906804
+vt 0.621200 0.907116
+vt 0.622800 0.906477
+vt 0.619609 0.907758
+vt 0.621200 0.905853
+vt 0.622273 0.905892
+vt 0.622300 0.904600
+vt 0.622200 0.905800
+vt 0.618549 0.904600
+vt 0.622300 0.904900
+vt 0.617510 0.905853
+vt 0.617500 0.905800
+vt 0.618400 0.904600
+vt 0.617500 0.905800
+vt 0.618535 0.904600
+vt 0.618600 0.904600
+vt 0.619500 0.905400
+vt 0.617500 0.905892
+vt 0.619459 0.907871
+vt 0.622300 0.904809
+vt 0.622200 0.905800
+vt 0.622365 0.904787
+vt 0.622257 0.905850
+vt 0.622737 0.905874
+vt 0.652807 0.863092
+vt 0.671100 0.878900
+vt 0.637222 0.877480
+vt 0.647700 0.891800
+vt 0.619106 0.907533
+vt 0.618534 0.904600
+vt 0.621100 0.902472
+vt 0.620092 0.901411
+vt 0.621100 0.901314
+vt 0.621301 0.901940
+vt 0.621119 0.901489
+vt 0.620984 0.900782
+vt 0.620962 0.901161
+vt 0.621200 0.900805
+vt 0.621153 0.900417
+vt 0.620058 0.900422
+vt 0.620012 0.901995
+vt 0.620200 0.901300
+vt 0.621226 0.901907
+vt 0.620906 0.906494
+vt 0.620277 0.906357
+vt 0.621367 0.907259
+vt 0.622800 0.908048
+vt 0.621400 0.907861
+vt 0.622839 0.907335
+vt 0.622900 0.908472
+vt 0.621400 0.908264
+vt 0.622900 0.907766
+vt 0.621400 0.907506
+vt 0.622900 0.907263
+vt 0.622900 0.908077
+vt 0.622800 0.906864
+vt 0.621265 0.906769
+vt 0.622800 0.907496
+vt 0.621125 0.907980
+vt 0.620092 0.907894
+vt 0.620017 0.907191
+vt 0.615149 0.903390
+vt 0.615331 0.902013
+vt 0.663811 0.865666
+vt 0.680323 0.871964
+vt 0.614748 0.912365
+vt 0.648400 0.868300
+vt 0.600400 0.908100
+vt 0.600937 0.908128
+vt 0.620345 0.907203
+vt 0.620324 0.907625
+vt 0.620196 0.908222
+vt 0.620119 0.907807
+vt 0.619956 0.901266
+vt 0.620116 0.901490
+vt 0.620119 0.900634
+vt 0.621100 0.902353
+vt 0.613565 0.912831
+vt 0.589029 0.920471
+vt 0.601135 0.908738
+vt 0.590100 0.931600
+vt 0.597300 0.933200
+vt 0.615146 0.903298
+vt 0.614161 0.901268
+vt 0.613035 0.901931
+vt 0.623100 0.906313
+vt 0.622800 0.906334
+vt 0.623150 0.908097
+vt 0.623100 0.907473
+vt 0.622800 0.907456
+vt 0.623100 0.907558
+vt 0.623158 0.908145
+vt 0.623200 0.908013
+vt 0.623200 0.907764
+vt 0.619560 0.907496
+vt 0.618941 0.907456
+vt 0.667331 0.728012
+vt 0.685922 0.728036
+vt 0.692607 0.762987
+vt 0.668720 0.763394
+vt 0.656698 0.748438
+vt 0.696532 0.734498
+vt 0.699986 0.752096
+vt 0.620200 0.901700
+vt 0.614886 0.903291
+vt 0.613563 0.902210
+vt 0.613015 0.902155
+vt 0.612900 0.901972
+vt 0.613109 0.901593
+vt 0.615000 0.901700
+vt 0.614141 0.901226
+vt 0.613648 0.901700
+vt 0.613668 0.902169
+vt 0.613626 0.901686
+vt 0.615100 0.901700
+vt 0.614152 0.901221
+vt 0.614888 0.903290
+vt 0.613140 0.901602
+vt 0.613053 0.902137
+vt 0.619900 0.901400
+vt 0.613560 0.902289
+vn 0.0111 0.5161 -0.8565
+vn 0.0186 0.9817 -0.1896
+vn 0.6417 0.7624 -0.0836
+vn 0.9955 0.0055 0.0944
+vn 0.1245 0.7574 0.6410
+vn -0.0197 0.9829 0.1830
+vn 0.6238 -0.4552 0.6354
+vn 0.0244 0.9945 0.1023
+vn -0.5416 0.2877 0.7898
+vn -0.7391 -0.4954 0.4564
+vn 0.6115 -0.7899 -0.0466
+vn -0.0426 -0.7708 -0.6357
+vn -0.0436 -0.7711 -0.6352
+vn -0.0432 -0.7710 -0.6354
+vn -0.0441 -0.7714 -0.6349
+vn -0.7385 0.3970 -0.5450
+vn -0.8518 0.3251 -0.4108
+vn 0.0378 0.5813 -0.8128
+vn 0.1143 0.6052 -0.7878
+vn -0.9995 0.0302 0.0000
+vn 0.9801 -0.1712 -0.1006
+vn 0.9802 -0.1704 -0.1012
+vn 0.9371 -0.0660 -0.3428
+vn 0.5573 -0.1703 -0.8126
+vn 0.8799 -0.0042 -0.4751
+vn 0.9801 -0.1711 -0.1007
+vn -0.0161 -0.5896 -0.8075
+vn -0.0010 -0.1093 -0.9940
+vn -0.0337 -0.8790 -0.4756
+vn -0.0361 -0.8440 -0.5351
+vn 0.3007 -0.1527 -0.9414
+vn 0.0220 -0.9542 0.2982
+vn -0.6688 -0.4793 -0.5683
+vn -0.6340 -0.6785 -0.3711
+vn -0.4696 0.5973 -0.6502
+vn -0.4593 0.5994 -0.6556
+vn -0.5162 0.5290 -0.6736
+vn 0.5247 0.7507 0.4014
+vn 0.1361 0.1546 0.9786
+vn -0.9747 0.1905 0.1173
+vn 0.5168 -0.1351 0.8454
+vn -0.7128 -0.4885 0.5033
+vn 0.1142 -0.6113 0.7831
+vn 0.6831 0.3380 0.6474
+vn 0.2318 -0.9202 0.3154
+vn -0.6152 -0.5194 0.5931
+vn -0.5816 -0.5250 -0.6213
+vn 0.6664 -0.6513 -0.3630
+vn 0.0623 0.3434 -0.9371
+vn -0.0857 0.1534 -0.9844
+vn -0.6962 0.4810 -0.5329
+vn 0.3536 0.5981 -0.7192
+vn 0.5073 0.5281 -0.6810
+vn 0.1990 0.0598 -0.9782
+vn -0.7778 0.1608 -0.6075
+vn -0.1002 -0.6092 0.7867
+vn -0.0436 -0.7611 0.6471
+vn -0.1108 0.1624 0.9805
+vn -0.1416 -0.6376 0.7572
+vn 0.0516 -0.1286 0.9903
+vn 0.0214 0.6733 0.7390
+vn -0.1003 0.9182 0.3831
+vn -0.0418 0.9948 0.0926
+vn -0.1016 0.7439 -0.6605
+vn -0.0483 0.8120 -0.5817
+vn -0.0832 0.3545 -0.9313
+vn -0.2556 -0.1141 -0.9600
+vn -0.8200 -0.2828 -0.4976
+vn 0.7557 -0.5638 -0.3333
+vn -0.0164 -0.9966 -0.0809
+vn 0.1371 -0.8966 0.4210
+vn -0.6956 -0.4571 0.5542
+vn -0.9995 0.0195 -0.0268
+vn -0.7225 0.0678 -0.6880
+vn -0.6357 0.5932 -0.4940
+vn -0.6137 0.7301 0.3004
+vn -0.6516 0.1205 0.7489
+vn -0.5493 -0.8321 -0.0762
+vn 0.4081 -0.7205 0.5607
+vn 0.9856 -0.0524 0.1605
+vn 0.3609 -0.5417 -0.7591
+vn 0.2467 0.8147 -0.5247
+vn -0.8160 0.3278 0.4761
+vn 0.6423 -0.3545 -0.6795
+vn 0.0912 -0.4120 -0.9066
+vn 0.6376 0.2798 -0.7177
+vn 0.6168 -0.7862 0.0389
+vn -0.5748 -0.8182 0.0093
+vn 0.5826 -0.4208 0.6954
+vn 0.5334 0.3011 0.7905
+vn 0.6663 0.7163 0.2072
+vn 0.5741 0.7372 -0.3564
+vn 0.3026 -0.9335 -0.1924
+vn 0.1169 -0.9890 -0.0901
+vn -0.9915 0.0983 -0.0856
+vn -0.9978 0.0660 0.0002
+vn -0.9916 0.1060 -0.0738
+vn 0.9962 -0.0271 0.0826
+vn 0.9942 -0.0110 -0.1074
+usemtl None.004
+s 1
+f 1/1/1 2/2/2 3/3/3
+f 2/2/2 4/4/4 3/3/3
+f 4/4/5 2/2/5 5/5/5
+f 4/4/6 5/5/6 6/6/6
+f 6/6/7 5/5/8 7/7/9
+f 7/7/9 12/8/10 6/6/7
+f 6/6/7 12/8/10 8/9/11
+f 9/10/12 10/11/13 13/12/14
+f 13/12/14 10/11/13 12/8/15
+f 13/12/16 2/2/17 11/13/18
+f 11/13/18 2/2/17 1/1/19
+f 5/5/20 12/14/10 7/7/9
+f 12/14/10 5/5/20 13/12/16
+f 13/12/16 5/5/20 2/2/17
+f 4/4/4 10/15/21 9/16/22
+f 10/15/21 4/4/4 14/17/23
+f 4/4/4 9/16/22 15/18/24
+f 4/4/4 15/18/24 11/19/25
+f 4/4/4 11/19/25 1/20/26
+f 4/4/4 1/20/26 3/3/3
+f 4/4/4 8/21/11 14/17/23
+f 4/4/4 6/22/7 8/21/11
+f 9/10/27 13/12/28 15/23/24
+f 15/23/24 13/12/28 11/13/25
+f 8/9/11 12/8/10 14/24/29
+f 14/24/29 12/8/10 10/11/30
+f 18/25/31 8/26/32 9/10/33
+f 9/10/33 8/26/32 10/11/34
+f 16/27/35 18/25/31 1/1/36
+f 1/1/36 18/25/31 11/13/37
+f 16/28/38 17/29/39 18/30/31
+f 8/31/32 18/30/31 17/29/39
+f 17/32/39 10/15/34 8/21/32
+f 17/32/39 16/27/38 1/20/40
+f 17/32/39 1/20/40 10/15/34
+f 10/15/34 1/20/40 11/19/37
+f 10/15/34 11/19/37 9/16/33
+f 9/16/33 11/19/37 18/33/31
+f 22/34/41 20/35/42 21/36/43
+f 19/37/44 21/36/43 23/38/45
+f 23/38/45 21/36/43 24/39/46
+f 23/38/45 25/40/47 26/41/48
+f 26/41/48 25/40/47 27/42/49
+f 56/43/50 29/44/51 28/45/52
+f 28/45/52 29/44/51 30/46/53
+f 30/46/53 29/44/51 39/47/54
+f 39/47/54 29/44/51 48/48/55
+f 44/49/56 43/50/57 31/51/58
+f 31/51/58 43/50/59 32/52/60
+f 31/51/58 32/52/60 33/53/61
+f 31/51/58 33/53/61 34/54/62
+f 34/54/62 33/53/61 35/55/63
+f 34/54/62 35/55/63 36/56/64
+f 36/56/64 35/55/63 37/57/65
+f 36/56/64 37/57/65 38/58/66
+f 36/56/64 38/58/66 39/47/54
+f 39/47/54 38/58/67 40/59/68
+f 39/47/54 40/59/68 41/60/69
+f 41/60/69 40/59/68 42/61/70
+f 41/60/69 42/61/70 49/62/71
+f 49/62/71 42/61/70 43/50/57
+f 49/62/71 43/50/57 44/49/56
+f 45/63/72 46/64/73 20/65/42
+f 20/65/42 46/64/73 48/48/55
+f 48/48/55 29/66/51 20/65/42
+f 41/67/69 49/68/71 22/69/41
+f 39/70/54 41/67/69 30/71/53
+f 22/69/41 30/72/53 41/67/69
+f 39/47/54 47/73/74 36/56/64
+f 36/56/64 47/73/74 50/74/75
+f 36/56/64 50/74/75 51/75/76
+f 36/56/64 51/75/76 34/54/62
+f 34/54/62 51/75/76 52/76/77
+f 34/54/62 52/76/77 31/51/58
+f 31/51/58 52/76/77 44/49/56
+f 44/49/56 52/76/77 45/63/72
+f 44/49/56 45/63/72 49/62/71
+f 20/35/42 22/34/41 45/63/72
+f 45/63/72 22/34/41 49/62/71
+f 53/77/78 54/78/79 20/35/80
+f 54/78/79 53/77/78 55/79/81
+f 53/77/78 56/43/50 55/79/81
+f 39/47/54 48/48/55 47/73/74
+f 19/37/44 30/46/82 22/80/41
+f 19/81/44 27/82/49 30/83/82
+f 27/82/49 19/81/44 26/84/48
+f 26/84/48 19/81/44 23/85/45
+f 57/86/83 56/87/50 53/88/78
+f 29/66/51 56/87/50 57/86/83
+f 58/89/84 59/90/85 66/91/86
+f 66/91/86 59/90/85 38/58/66
+f 60/92/87 61/93/88 58/89/84
+f 58/89/84 61/93/88 59/90/85
+f 62/94/89 43/50/59 60/92/87
+f 60/92/87 43/50/59 61/93/88
+f 43/50/59 62/94/89 32/52/60
+f 32/52/60 62/94/89 63/95/90
+f 32/52/60 63/95/90 33/53/61
+f 33/53/61 63/95/90 64/96/91
+f 33/53/61 64/96/91 35/55/63
+f 35/55/63 64/96/91 65/97/92
+f 35/55/63 65/97/92 37/57/65
+f 37/57/65 65/97/92 66/91/86
+f 37/57/65 66/91/86 38/58/66
+f 43/50/59 42/98/20 61/99/88
+f 61/99/88 42/98/20 40/59/68
+f 61/99/88 40/59/68 59/90/20
+f 40/59/68 38/58/67 59/90/20
+f 58/100/84 66/101/86 63/102/90
+f 58/100/84 62/103/89 60/104/87
+f 62/103/89 58/100/84 63/102/90
+f 66/101/86 65/105/92 63/102/90
+f 63/102/90 65/105/92 64/106/91
+f 21/36/43 19/37/44 22/80/41
+f 30/46/93 21/36/43 28/107/94
+f 28/107/94 21/36/43 20/35/42
+f 21/108/95 67/109/96 24/110/46
+f 23/111/45 24/110/46 25/112/47
+f 30/113/82 27/114/49 68/115/97
+f 68/115/97 67/109/96 30/113/82
+f 30/113/82 67/109/96 21/108/95
+f 27/114/49 25/112/47 68/115/97
+f 70/116/98 69/117/99 28/118/52
+f 28/118/52 69/117/99 56/119/50
+f 20/120/80 70/116/98 28/118/52
+f 56/119/50 69/117/99 55/121/81
+f 20/120/80 54/122/79 70/116/98
+f 20/35/42 29/44/51 57/123/83
+f 57/86/83 53/88/78 20/65/42
+f 50/74/75 46/64/73 45/63/72
+f 50/74/75 48/48/55 46/64/73
+f 50/74/75 47/73/74 48/48/55
+f 50/74/75 52/76/77 51/75/76
+f 45/63/72 52/76/77 50/74/75
+f 25/112/47 67/109/96 68/115/97
+f 24/110/46 67/109/96 25/112/47
+f 69/117/99 54/122/79 55/121/81
+f 69/117/99 70/124/98 54/122/79
diff --git a/examples/pybullet/gym/pybullet_data/laikago/upper_leg_left_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_left_lores.obj
new file mode 100644
index 000000000..253ee5776
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_left_lores.obj
@@ -0,0 +1,614 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib upper_leg_left.mtl
+o EXP_OTL_-_EXP_OTL_FLA-1_EXP_OTL_FLA_FL2-1_median_joint_EXP_.002
+v 0.031162 -0.045909 -0.057156
+v -0.001659 -0.019725 -0.041806
+v 0.037192 -0.020447 -0.041735
+v 0.035441 -0.040975 -0.023903
+v -0.002384 -0.043700 -0.013337
+v 0.037697 -0.046884 0.008077
+v -0.002450 -0.045899 0.008059
+v 0.024011 -0.098317 -0.045184
+v 0.024397 -0.073707 -0.075752
+v 0.023230 -0.097243 -0.047136
+v 0.025081 -0.069536 -0.076188
+v -0.004005 -0.097393 -0.045062
+v -0.003209 -0.071015 -0.077166
+v 0.023224 -0.097725 -0.046376
+v 0.024579 -0.071875 -0.077093
+v 0.035652 -0.031869 -0.047502
+v 0.036031 -0.056933 -0.001119
+v 0.025880 -0.071940 -0.077253
+v -0.001674 -0.157690 -0.107220
+v -0.029728 -0.164062 -0.110900
+v -0.006347 -0.161137 -0.108253
+v -0.005877 -0.157248 -0.107420
+v -0.001630 -0.212205 -0.136987
+v -0.008334 -0.212592 -0.136371
+v -0.006482 -0.217231 -0.144064
+v -0.008838 -0.213776 -0.152261
+v -0.001044 -0.213536 -0.151782
+v -0.000856 -0.184234 -0.164789
+v -0.006601 -0.183324 -0.165639
+v -0.029610 -0.160095 -0.149892
+v -0.032168 -0.151745 -0.142605
+v -0.005964 -0.153590 -0.143799
+v -0.002594 -0.032497 -0.048179
+v -0.027447 -0.031124 -0.047842
+v 0.001772 0.006116 0.043352
+v 0.038735 -0.007250 0.046510
+v 0.039913 0.031749 0.029833
+v 0.002589 0.033150 0.025940
+v 0.002834 0.041277 0.009425
+v 0.040294 0.044353 0.005086
+v 0.002781 0.039512 -0.014706
+v 0.040071 0.036969 -0.026507
+v 0.002282 0.022971 -0.036504
+v 0.039282 0.010817 -0.045082
+v 0.001361 -0.007488 -0.044413
+v 0.038209 -0.024689 -0.040577
+v 0.000499 -0.036067 -0.028465
+v 0.037533 -0.047046 -0.003128
+v 0.000269 -0.043995 0.007265
+v 0.037964 -0.032810 0.034639
+v 0.000667 -0.030406 0.032147
+v -0.031003 -0.037216 0.016780
+v -0.028304 -0.040684 -0.011124
+v -0.026794 -0.005546 -0.041018
+v -0.027756 -0.022526 -0.035130
+v -0.032216 -0.156615 -0.106901
+v -0.002196 -0.038795 0.017550
+v -0.000693 -0.040402 -0.013377
+v -0.000706 -0.024478 -0.034343
+v -0.031516 -0.026661 0.030314
+v -0.031850 -0.038470 -0.011834
+v -0.031487 -0.025998 -0.030628
+v -0.030752 -0.001981 -0.040975
+v -0.000845 -0.007905 -0.040844
+v -0.030321 0.021149 -0.034505
+v -0.029623 0.035172 -0.020495
+v -0.029671 0.033676 0.022924
+v -0.030270 0.014906 0.037128
+v -0.030640 0.000916 0.040645
+v -0.029531 0.039728 0.005790
+v -0.037227 -0.214442 -0.140525
+v -0.030650 -0.210297 -0.135338
+v -0.030562 -0.215429 -0.144492
+v -0.037227 -0.211549 -0.153087
+v -0.030622 -0.212045 -0.153851
+v -0.036105 -0.182657 -0.164703
+v -0.030312 -0.183339 -0.165729
+v 0.000050 -0.153882 -0.142899
+v 0.001149 -0.158950 -0.110673
+v -0.036455 -0.154742 -0.141599
+v -0.036551 -0.157779 -0.110720
+v 0.047384 -0.031062 -0.048457
+v 0.038023 -0.030823 -0.049630
+v 0.046488 -0.062041 -0.003498
+v 0.037054 -0.062902 -0.003943
+v 0.047434 -0.027513 0.040009
+v 0.048993 0.002459 0.046312
+v 0.039786 0.027518 0.039215
+v 0.049154 0.027619 0.036997
+v 0.050172 0.043527 0.009530
+v 0.049034 0.040669 -0.022517
+v 0.048731 0.012184 -0.045113
+v -0.007661 -0.197712 -0.135054
+v -0.008333 -0.205171 -0.156526
+v -0.007972 -0.193237 -0.150105
+v -0.030042 -0.195086 -0.153600
+v -0.030931 -0.203833 -0.157079
+v -0.029920 -0.195358 -0.136690
+v -0.028621 -0.191922 -0.146863
+vt 0.622500 0.905800
+vt 0.620751 0.906116
+vt 0.620479 0.905979
+vt 0.622730 0.906804
+vt 0.621200 0.907116
+vt 0.622800 0.906477
+vt 0.619609 0.907758
+vt 0.621200 0.905853
+vt 0.622273 0.905892
+vt 0.622300 0.904600
+vt 0.622200 0.905800
+vt 0.618549 0.904600
+vt 0.622300 0.904900
+vt 0.617510 0.905853
+vt 0.617500 0.905800
+vt 0.618400 0.904600
+vt 0.617500 0.905800
+vt 0.618535 0.904600
+vt 0.618600 0.904600
+vt 0.619500 0.905400
+vt 0.617500 0.905892
+vt 0.619459 0.907871
+vt 0.622300 0.904809
+vt 0.622200 0.905800
+vt 0.622365 0.904787
+vt 0.622257 0.905850
+vt 0.622737 0.905874
+vt 0.652807 0.863092
+vt 0.671100 0.878900
+vt 0.637222 0.877480
+vt 0.647700 0.891800
+vt 0.619106 0.907533
+vt 0.618534 0.904600
+vt 0.620089 0.901417
+vt 0.620199 0.901188
+vt 0.621100 0.901314
+vt 0.621100 0.902472
+vt 0.621301 0.901940
+vt 0.621200 0.900867
+vt 0.620984 0.900782
+vt 0.621056 0.901967
+vt 0.620962 0.901161
+vt 0.621200 0.900805
+vt 0.621200 0.900409
+vt 0.621100 0.900426
+vt 0.620200 0.901300
+vt 0.620121 0.900412
+vt 0.620000 0.900432
+vt 0.620061 0.901949
+vt 0.621100 0.901896
+vt 0.621300 0.901914
+vt 0.620522 0.906002
+vt 0.620091 0.906006
+vt 0.621367 0.907259
+vt 0.622800 0.908048
+vt 0.621400 0.907861
+vt 0.622839 0.907335
+vt 0.622900 0.908491
+vt 0.621400 0.908605
+vt 0.621400 0.907955
+vt 0.622900 0.907766
+vt 0.621400 0.907023
+vt 0.622900 0.907263
+vt 0.621400 0.907813
+vt 0.622900 0.908077
+vt 0.621400 0.907338
+vt 0.622800 0.906864
+vt 0.621338 0.906697
+vt 0.622800 0.907496
+vt 0.621300 0.907873
+vt 0.620087 0.908213
+vt 0.619829 0.907198
+vt 0.615149 0.903390
+vt 0.620496 0.906273
+vt 0.620619 0.906826
+vt 0.615374 0.902006
+vt 0.621100 0.906719
+vt 0.620954 0.906572
+vt 0.668692 0.869698
+vt 0.680323 0.871964
+vt 0.614748 0.912365
+vt 0.648400 0.868300
+vt 0.662400 0.864500
+vt 0.600400 0.908100
+vt 0.600937 0.908128
+vt 0.620664 0.908261
+vt 0.620100 0.907188
+vt 0.620100 0.906626
+vt 0.620100 0.907540
+vt 0.621256 0.907095
+vt 0.620310 0.908295
+vt 0.620335 0.907131
+vt 0.620200 0.907828
+vt 0.620194 0.908469
+vt 0.620160 0.908187
+vt 0.620100 0.907626
+vt 0.620100 0.907441
+vt 0.619944 0.901512
+vt 0.620100 0.901080
+vt 0.620137 0.902031
+vt 0.619978 0.900813
+vt 0.620131 0.901251
+vt 0.621100 0.902353
+vt 0.613408 0.913676
+vt 0.589029 0.920471
+vt 0.601135 0.908738
+vt 0.590100 0.931600
+vt 0.597300 0.933200
+vt 0.615146 0.903298
+vt 0.614161 0.901268
+vt 0.613009 0.902086
+vt 0.613083 0.901647
+vt 0.615275 0.902075
+vt 0.623100 0.906313
+vt 0.622800 0.906334
+vt 0.623150 0.908097
+vt 0.623100 0.907473
+vt 0.622800 0.907456
+vt 0.623100 0.907558
+vt 0.623100 0.907587
+vt 0.622900 0.908468
+vt 0.623200 0.908548
+vt 0.623200 0.908013
+vt 0.623200 0.907764
+vt 0.619560 0.907496
+vt 0.618941 0.907456
+vt 0.654283 0.852559
+vt 0.666224 0.838280
+vt 0.696241 0.861991
+vt 0.685983 0.872284
+vt 0.660400 0.871900
+vt 0.698300 0.852300
+vt 0.677962 0.834308
+vt 0.685629 0.834987
+vt 0.620200 0.901700
+vt 0.612998 0.901645
+vt 0.613305 0.901500
+vt 0.614141 0.901226
+vt 0.614886 0.903291
+vt 0.613563 0.902210
+vt 0.613015 0.902155
+vt 0.612900 0.901972
+vt 0.615000 0.901700
+vt 0.613648 0.901700
+vt 0.613668 0.902169
+vt 0.613759 0.901751
+vt 0.615100 0.901700
+vt 0.614152 0.901221
+vt 0.614888 0.903290
+vt 0.613352 0.901523
+vt 0.613136 0.902286
+vt 0.613008 0.901651
+vt 0.621300 0.902100
+vt 0.621300 0.901895
+vt 0.614601 0.902960
+vt 0.615106 0.903380
+vt 0.613042 0.902229
+vt 0.613700 0.912100
+vt 0.619900 0.902100
+vt 0.620030 0.902659
+vt 0.619900 0.901400
+vt 0.612958 0.901726
+vt 0.620132 0.901042
+vt 0.620200 0.901869
+vt 0.620143 0.900925
+vt 0.620100 0.899642
+vt 0.613762 0.901869
+vt 0.613177 0.901561
+vt 0.613512 0.901531
+vt 0.612944 0.901941
+vt 0.613560 0.902289
+vn 0.0111 0.5161 -0.8565
+vn 0.0186 0.9817 -0.1896
+vn 0.6417 0.7624 -0.0836
+vn 0.9955 0.0055 0.0944
+vn 0.1245 0.7574 0.6410
+vn -0.0197 0.9829 0.1830
+vn 0.6238 -0.4552 0.6354
+vn 0.0244 0.9945 0.1023
+vn -0.5416 0.2877 0.7898
+vn -0.7391 -0.4954 0.4564
+vn 0.6115 -0.7899 -0.0466
+vn -0.0426 -0.7708 -0.6357
+vn -0.0436 -0.7711 -0.6352
+vn -0.0432 -0.7710 -0.6354
+vn -0.0441 -0.7714 -0.6349
+vn -0.7385 0.3970 -0.5450
+vn -0.8518 0.3251 -0.4108
+vn 0.0378 0.5813 -0.8128
+vn 0.1143 0.6052 -0.7878
+vn -0.9995 0.0302 0.0000
+vn 0.9801 -0.1712 -0.1006
+vn 0.9802 -0.1704 -0.1012
+vn 0.9371 -0.0660 -0.3428
+vn 0.5573 -0.1703 -0.8126
+vn 0.8799 -0.0042 -0.4751
+vn 0.9801 -0.1711 -0.1007
+vn -0.0161 -0.5896 -0.8075
+vn -0.0010 -0.1093 -0.9940
+vn -0.0337 -0.8790 -0.4756
+vn -0.0361 -0.8440 -0.5351
+vn 0.3007 -0.1527 -0.9414
+vn 0.0220 -0.9542 0.2982
+vn -0.6688 -0.4793 -0.5683
+vn -0.6340 -0.6785 -0.3711
+vn -0.4696 0.5973 -0.6502
+vn -0.4593 0.5994 -0.6556
+vn -0.5162 0.5290 -0.6736
+vn 0.5247 0.7507 0.4014
+vn 0.1361 0.1546 0.9786
+vn -0.9747 0.1905 0.1173
+vn -0.6625 -0.2778 0.6957
+vn 0.2516 -0.6816 0.6871
+vn 0.1116 -0.5890 0.8004
+vn 0.4826 -0.0472 0.8745
+vn 0.4148 0.4181 0.8082
+vn 0.6664 -0.5565 0.4962
+vn -0.6234 -0.5366 0.5686
+vn -0.1836 -0.9787 0.0919
+vn -0.6368 -0.5598 -0.5301
+vn 0.6634 -0.5847 -0.4670
+vn 0.6579 0.0345 -0.7523
+vn 0.1606 0.1235 -0.9793
+vn -0.1733 0.6131 -0.7708
+vn -0.1591 0.0794 -0.9841
+vn -0.6647 0.1240 -0.7367
+vn -0.4461 0.6920 -0.5675
+vn 0.4643 0.5456 -0.6977
+vn 0.6436 0.7075 -0.2920
+vn 0.1115 0.8926 -0.4368
+vn 0.6628 0.3468 -0.6636
+vn -0.6943 0.3561 -0.6254
+vn -0.0722 -0.5815 0.8104
+vn -0.0478 -0.7624 0.6453
+vn -0.0514 0.1455 0.9880
+vn -0.1416 -0.6376 0.7572
+vn -0.0636 -0.1133 0.9915
+vn 0.0008 0.5727 0.8198
+vn -0.0358 0.7530 0.6570
+vn -0.0476 0.9783 0.2014
+vn -0.9586 0.2594 0.1174
+vn -0.0221 0.9938 0.1085
+vn -0.0646 0.9390 -0.3377
+vn -0.0459 0.8026 -0.5947
+vn -0.0846 0.5358 -0.8401
+vn -0.0527 0.3821 -0.9226
+vn -0.6780 0.0814 -0.7306
+vn -0.0582 -0.3344 -0.9406
+vn -0.1688 -0.1190 -0.9784
+vn -0.8173 -0.2869 -0.4998
+vn -0.0640 -0.8046 -0.5904
+vn -0.0012 -0.9972 -0.0745
+vn -0.5025 -0.8580 0.1066
+vn -0.4474 -0.6463 0.6182
+vn -0.9938 0.0889 -0.0670
+vn -0.9002 -0.1771 -0.3979
+vn -0.1874 -0.0320 -0.9818
+vn -0.3997 0.0775 -0.9134
+vn 0.5455 -0.3866 -0.7436
+vn 0.8932 -0.4433 -0.0749
+vn 0.3521 -0.6845 0.6384
+vn -0.0095 -0.8933 0.4494
+vn -0.4734 -0.8580 -0.1994
+vn -0.8537 -0.4370 0.2832
+vn -0.8215 -0.5390 -0.1861
+vn -0.7050 -0.5152 -0.4874
+vn -0.6726 0.0338 -0.7392
+vn -0.6809 0.3801 -0.6260
+vn -0.6511 0.6757 -0.3457
+vn -0.6712 0.7384 0.0650
+vn -0.6607 0.6095 0.4383
+vn -0.6861 0.3402 0.6431
+vn -0.6773 -0.0348 0.7349
+vn -0.0911 -0.7033 0.7050
+vn -0.7031 -0.4149 0.5776
+vn -0.0607 -0.8602 0.5063
+vn -0.6394 -0.7046 0.3077
+vn 0.5186 -0.5215 0.6775
+vn 0.5575 -0.8302 0.0019
+vn -0.6918 -0.5316 -0.4886
+vn 0.4575 -0.6406 -0.6167
+vn 0.8856 0.2635 0.3826
+vn -0.8161 0.3503 0.4596
+vn -0.8356 0.5074 -0.2106
+vn -0.9604 -0.2172 -0.1747
+vn 0.6417 -0.3549 -0.6799
+vn 0.0912 -0.4120 -0.9066
+vn 0.6370 0.2805 -0.7180
+vn 0.6168 -0.7862 0.0389
+vn -0.5748 -0.8182 0.0093
+vn 0.5777 -0.4368 0.6895
+vn 0.6399 0.0736 0.7649
+vn -0.9860 0.0623 0.1548
+vn 0.1451 0.6479 0.7478
+vn 0.7020 0.4741 0.5314
+vn 0.6806 0.7067 0.1933
+vn 0.5749 0.7371 -0.3552
+vn 0.3065 -0.9318 -0.1945
+vn 0.2426 -0.9569 -0.1595
+vn -0.1503 -0.4138 -0.8979
+vn -0.9969 0.0571 -0.0536
+vn -0.9992 0.0388 -0.0039
+vn -0.9990 0.0434 0.0082
+vn -0.9990 0.0441 -0.0077
+vn -0.9987 0.0495 -0.0081
+vn 0.9985 -0.0118 0.0533
+vn 0.9977 -0.0355 -0.0579
+vn 0.9999 -0.0090 -0.0079
+vn 0.9993 -0.0167 -0.0337
+vn 0.8732 0.1969 0.4458
+vn 0.9978 0.0117 -0.0659
+vn 0.2542 0.9660 -0.0468
+vn 0.9671 0.0798 -0.2416
+usemtl None.005
+s 1
+f 1/1/1 2/2/2 3/3/3
+f 2/2/2 4/4/4 3/3/3
+f 4/4/5 2/2/5 5/5/5
+f 4/4/6 5/5/6 6/6/6
+f 6/6/7 5/5/8 7/7/9
+f 7/7/9 12/8/10 6/6/7
+f 6/6/7 12/8/10 8/9/11
+f 9/10/12 10/11/13 13/12/14
+f 13/12/14 10/11/13 12/8/15
+f 13/12/16 2/2/17 11/13/18
+f 11/13/18 2/2/17 1/1/19
+f 5/5/20 12/14/10 7/7/9
+f 12/14/10 5/5/20 13/12/16
+f 13/12/16 5/5/20 2/2/17
+f 4/4/4 10/15/21 9/16/22
+f 10/15/21 4/4/4 14/17/23
+f 4/4/4 9/16/22 15/18/24
+f 4/4/4 15/18/24 11/19/25
+f 4/4/4 11/19/25 1/20/26
+f 4/4/4 1/20/26 3/3/3
+f 4/4/4 8/21/11 14/17/23
+f 4/4/4 6/22/7 8/21/11
+f 9/10/27 13/12/28 15/23/24
+f 15/23/24 13/12/28 11/13/25
+f 8/9/11 12/8/10 14/24/29
+f 14/24/29 12/8/10 10/11/30
+f 18/25/31 8/26/32 9/10/33
+f 9/10/33 8/26/32 10/11/34
+f 16/27/35 18/25/31 1/1/36
+f 1/1/36 18/25/31 11/13/37
+f 16/28/38 17/29/39 18/30/31
+f 8/31/32 18/30/31 17/29/39
+f 17/32/39 10/15/34 8/21/32
+f 17/32/39 16/27/38 1/20/40
+f 17/32/39 1/20/40 10/15/34
+f 10/15/34 1/20/40 11/19/37
+f 10/15/34 11/19/37 9/16/33
+f 9/16/33 11/19/37 18/33/31
+f 56/34/41 20/35/42 21/36/43
+f 22/37/44 56/34/41 21/36/43
+f 19/38/45 21/36/43 23/39/46
+f 23/39/46 21/36/43 24/40/47
+f 23/39/46 24/40/47 25/41/48
+f 25/41/48 26/42/49 27/43/50
+f 27/43/50 26/42/49 28/44/51
+f 28/44/51 26/42/49 29/45/52
+f 30/46/53 77/47/54 76/48/55
+f 76/48/55 31/49/56 30/46/53
+f 30/46/53 31/49/56 32/50/57
+f 28/44/51 29/45/52 78/51/58
+f 78/51/58 29/45/52 32/50/59
+f 32/50/57 31/49/56 33/52/60
+f 33/52/60 31/49/56 34/53/61
+f 51/54/62 50/55/63 35/56/64
+f 35/56/64 50/55/65 36/57/66
+f 35/56/64 36/57/66 37/58/67
+f 35/56/64 37/58/67 38/59/68
+f 38/59/68 37/58/67 39/60/69
+f 39/60/69 37/58/70 40/61/71
+f 39/60/69 40/61/71 41/62/72
+f 41/62/72 40/61/71 42/63/73
+f 41/62/72 42/63/73 43/64/74
+f 43/64/74 42/63/73 44/65/75
+f 43/64/74 44/65/75 45/66/76
+f 45/66/77 44/65/78 46/67/79
+f 45/66/77 46/67/79 47/68/80
+f 47/68/80 46/67/79 48/69/81
+f 47/68/80 48/69/81 49/70/82
+f 49/70/82 48/69/81 50/55/63
+f 49/70/82 50/55/63 51/54/62
+f 52/71/83 53/72/84 56/73/41
+f 56/73/41 53/72/84 55/74/85
+f 55/74/85 54/75/86 34/53/61
+f 55/74/85 31/76/56 56/73/41
+f 55/74/85 34/53/61 31/76/56
+f 33/52/60 64/77/87 59/78/88
+f 58/79/89 57/80/90 22/81/44
+f 33/82/60 59/83/88 32/84/57
+f 59/83/88 58/79/89 22/81/44
+f 22/81/44 32/85/57 59/83/88
+f 51/54/62 57/86/91 49/70/82
+f 53/72/92 52/71/93 61/87/94
+f 53/72/92 61/87/94 62/88/95
+f 53/72/92 62/88/95 55/74/85
+f 55/74/85 62/88/95 63/89/96
+f 55/74/85 63/89/96 54/75/86
+f 58/90/89 49/70/82 57/86/91
+f 54/75/86 63/89/96 64/77/87
+f 64/77/87 63/89/96 43/64/74
+f 43/64/74 63/89/96 65/91/97
+f 43/64/74 65/91/97 66/92/98
+f 43/64/74 66/92/98 41/62/72
+f 41/62/72 66/92/98 70/93/99
+f 41/62/72 70/93/99 39/60/69
+f 39/60/69 70/93/99 67/94/100
+f 39/60/69 67/94/100 38/59/68
+f 38/59/68 67/94/100 68/95/101
+f 38/59/68 68/95/101 35/56/64
+f 35/56/64 68/95/101 69/96/102
+f 35/56/64 69/96/102 51/54/62
+f 51/54/103 69/96/102 60/97/104
+f 51/54/103 60/97/104 52/71/93
+f 51/54/103 52/71/93 57/86/105
+f 56/34/41 22/37/44 52/71/83
+f 52/71/83 22/37/44 57/86/90
+f 71/98/106 72/99/107 56/34/41
+f 56/34/41 72/99/107 20/35/42
+f 72/99/107 71/98/106 73/100/108
+f 73/100/108 71/98/106 74/101/109
+f 73/100/108 74/101/109 75/102/110
+f 76/48/55 77/47/54 74/101/109
+f 74/101/109 77/47/54 75/102/110
+f 33/52/60 34/53/61 64/77/87
+f 64/77/87 34/53/61 54/75/86
+f 78/51/58 32/50/59 19/38/45
+f 19/38/45 32/50/59 22/103/44
+f 79/104/111 28/105/51 78/106/58
+f 28/105/51 79/104/111 27/107/50
+f 27/107/50 79/104/111 23/108/46
+f 81/109/112 76/110/55 71/111/106
+f 71/111/106 76/110/55 74/112/109
+f 80/113/113 76/110/55 81/109/112
+f 43/64/74 45/66/76 64/77/87
+f 64/77/87 45/66/76 59/78/88
+f 59/78/88 45/66/76 47/68/114
+f 59/78/88 47/68/114 58/90/89
+f 58/90/89 47/68/114 49/70/82
+f 82/114/115 83/115/116 92/116/117
+f 92/116/117 83/115/116 44/65/75
+f 84/117/118 85/118/119 82/114/115
+f 82/114/115 85/118/119 83/115/116
+f 86/119/120 50/55/65 84/117/118
+f 84/117/118 50/55/65 85/118/119
+f 50/55/65 86/119/120 36/57/66
+f 36/57/66 86/119/120 87/120/121
+f 36/57/66 87/120/121 88/121/122
+f 88/121/123 87/120/121 89/122/124
+f 88/121/123 89/122/124 90/123/125
+f 88/121/123 90/123/125 40/61/71
+f 40/61/71 90/123/125 91/124/126
+f 40/61/71 91/124/126 42/63/73
+f 42/63/73 91/124/126 92/116/117
+f 42/63/73 92/116/117 44/65/75
+f 50/55/65 48/125/20 85/126/119
+f 85/126/119 48/125/20 46/67/79
+f 85/126/119 46/67/79 83/115/20
+f 46/67/79 44/65/78 83/115/20
+f 36/57/66 88/121/122 37/58/70
+f 37/58/70 88/121/122 40/61/71
+f 82/127/115 92/128/117 87/129/121
+f 82/127/115 86/130/120 84/131/118
+f 86/130/120 82/127/115 87/129/121
+f 87/129/121 92/128/117 89/132/124
+f 92/128/117 91/133/126 89/132/124
+f 89/132/124 91/133/126 90/134/125
+f 21/36/43 19/38/45 22/103/44
+f 32/50/127 21/36/43 30/135/128
+f 30/135/128 21/36/43 20/35/42
+f 26/136/49 94/137/129 29/138/130
+f 21/139/131 93/140/132 24/141/47
+f 25/142/48 24/141/47 26/136/49
+f 32/143/133 29/138/130 95/144/134
+f 95/144/134 93/140/132 32/143/133
+f 32/143/133 93/140/132 21/139/131
+f 29/138/130 94/137/129 95/144/134
+f 98/145/135 96/146/136 30/147/137
+f 30/147/137 96/146/136 77/148/138
+f 20/149/42 98/145/135 30/147/137
+f 77/148/138 96/146/136 97/150/139
+f 20/149/42 72/151/107 98/145/135
+f 77/148/138 97/150/139 75/152/140
+f 23/153/46 25/41/48 27/154/50
+f 79/155/111 19/156/45 23/157/46
+f 79/104/111 78/106/58 19/158/45
+f 31/49/56 80/159/113 56/160/41
+f 56/160/41 80/159/113 81/161/112
+f 81/109/112 71/111/106 56/73/41
+f 31/76/56 76/110/55 80/113/113
+f 65/91/97 52/71/93 60/97/104
+f 65/91/97 61/87/94 52/71/93
+f 65/91/97 62/88/95 61/87/94
+f 65/91/97 63/89/96 62/88/95
+f 70/93/99 66/92/98 65/91/97
+f 65/91/97 67/94/100 70/93/99
+f 65/91/97 68/95/101 67/94/100
+f 60/97/104 69/96/102 65/91/97
+f 65/91/97 69/96/102 68/95/101
+f 95/144/134 94/137/129 26/162/49
+f 26/162/49 93/140/132 95/144/134
+f 24/141/47 93/140/132 26/162/49
+f 98/163/135 99/164/141 96/165/142
+f 97/166/139 96/165/136 75/102/140
+f 99/167/141 75/168/110 96/169/142
+f 99/167/141 73/170/108 75/168/110
+f 72/151/107 73/170/108 99/167/141
+f 99/167/141 98/171/135 72/151/107
diff --git a/examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror2_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror2_lores.obj
new file mode 100644
index 000000000..b78900f9c
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror2_lores.obj
@@ -0,0 +1,551 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib upper_leg_mirror2.mtl
+o Upper_Leg_Mirror_Upper_Leg_Mirror.000
+v -0.031162 -0.045909 -0.057156
+v -0.037192 -0.020447 -0.041735
+v 0.001659 -0.019725 -0.041806
+v -0.035441 -0.040975 -0.023903
+v 0.002384 -0.043700 -0.013337
+v -0.037697 -0.046884 0.008077
+v 0.002450 -0.045899 0.008059
+v -0.024011 -0.098317 -0.045184
+v -0.024397 -0.073707 -0.075752
+v -0.023230 -0.097243 -0.047136
+v -0.025081 -0.069536 -0.076188
+v 0.004005 -0.097393 -0.045062
+v 0.003209 -0.071015 -0.077166
+v -0.023224 -0.097725 -0.046376
+v -0.024579 -0.071875 -0.077093
+v -0.035652 -0.031869 -0.047502
+v -0.036031 -0.056933 -0.001119
+v -0.025880 -0.071940 -0.077253
+v 0.001674 -0.157690 -0.107220
+v 0.029728 -0.164062 -0.110900
+v 0.006347 -0.161137 -0.108253
+v 0.005877 -0.157248 -0.107420
+v 0.001630 -0.212205 -0.136987
+v 0.008334 -0.212592 -0.136371
+v 0.006482 -0.217231 -0.144064
+v 0.008838 -0.213776 -0.152261
+v 0.001044 -0.213536 -0.151782
+v 0.000856 -0.184234 -0.164789
+v 0.006601 -0.183324 -0.165639
+v 0.029610 -0.160095 -0.149892
+v 0.033913 -0.151952 -0.142108
+v 0.005964 -0.153590 -0.143799
+v 0.002594 -0.032497 -0.048179
+v 0.027447 -0.031124 -0.047842
+v -0.001772 0.006116 0.043352
+v -0.038735 -0.007250 0.046510
+v -0.039913 0.031749 0.029833
+v -0.002775 0.039311 0.018199
+v -0.040294 0.044353 0.005086
+v -0.002781 0.039512 -0.014706
+v -0.040071 0.036969 -0.026507
+v -0.002282 0.022971 -0.036504
+v -0.039282 0.010817 -0.045082
+v 0.000287 -0.010986 -0.041359
+v -0.038209 -0.024689 -0.040577
+v -0.000499 -0.036067 -0.028465
+v -0.037533 -0.047046 -0.003128
+v -0.000269 -0.043995 0.007265
+v -0.037964 -0.032810 0.034639
+v -0.000667 -0.030406 0.032147
+v 0.031003 -0.037216 0.016780
+v 0.030898 -0.039276 -0.011303
+v 0.026794 -0.005546 -0.041018
+v 0.029730 -0.023857 -0.033145
+v 0.032216 -0.156615 -0.106901
+v 0.002196 -0.038795 0.017550
+v 0.000693 -0.040402 -0.013377
+v 0.000706 -0.024478 -0.034343
+v 0.031516 -0.026661 0.030314
+v 0.030752 -0.001981 -0.040975
+v 0.030321 0.021149 -0.034505
+v 0.029623 0.035172 -0.020495
+v 0.029671 0.033676 0.022924
+v 0.030521 0.005709 0.040579
+v 0.029531 0.039728 0.005790
+v 0.037227 -0.214442 -0.140525
+v 0.030650 -0.210297 -0.135338
+v 0.030562 -0.215429 -0.144492
+v 0.037227 -0.211549 -0.153087
+v 0.030622 -0.212045 -0.153851
+v 0.036105 -0.182657 -0.164703
+v 0.030312 -0.183339 -0.165729
+v -0.000050 -0.153882 -0.142899
+v -0.001149 -0.158950 -0.110673
+v 0.036551 -0.157779 -0.110720
+v -0.047384 -0.031062 -0.048457
+v -0.038023 -0.030823 -0.049630
+v -0.046488 -0.062041 -0.003498
+v -0.037054 -0.062902 -0.003943
+v -0.047434 -0.027513 0.040009
+v -0.048993 0.002459 0.046312
+v -0.039786 0.027518 0.039215
+v -0.049154 0.027619 0.036997
+v -0.050172 0.043527 0.009530
+v -0.049034 0.040669 -0.022517
+v -0.048731 0.012184 -0.045113
+v 0.007661 -0.197712 -0.135054
+v 0.008333 -0.205171 -0.156526
+v 0.007972 -0.193237 -0.150105
+v 0.029891 -0.193314 -0.149937
+v 0.030355 -0.203220 -0.157089
+v 0.029221 -0.194992 -0.136936
+vt 0.588700 0.925800
+vt 0.589001 0.925893
+vt 0.589273 0.926010
+vt 0.588500 0.926595
+vt 0.589800 0.926864
+vt 0.588136 0.927505
+vt 0.588165 0.927503
+vt 0.589900 0.925781
+vt 0.586500 0.925823
+vt 0.588900 0.924800
+vt 0.587348 0.924721
+vt 0.588900 0.925700
+vt 0.588900 0.925000
+vt 0.586500 0.925781
+vt 0.587300 0.924800
+vt 0.586500 0.925700
+vt 0.586500 0.925725
+vt 0.587335 0.924713
+vt 0.587400 0.924700
+vt 0.588200 0.925400
+vt 0.588835 0.924875
+vt 0.588900 0.925791
+vt 0.588548 0.925825
+vt 0.588534 0.925639
+vt 0.590798 0.922005
+vt 0.589920 0.921914
+vt 0.590700 0.921789
+vt 0.589900 0.922894
+vt 0.589800 0.922441
+vt 0.589800 0.921531
+vt 0.590004 0.921471
+vt 0.589944 0.922467
+vt 0.589800 0.921495
+vt 0.590016 0.921790
+vt 0.589800 0.921146
+vt 0.589921 0.921162
+vt 0.590700 0.921900
+vt 0.590900 0.921154
+vt 0.590700 0.921138
+vt 0.590824 0.922504
+vt 0.589900 0.922408
+vt 0.589800 0.922424
+vt 0.589111 0.925929
+vt 0.589323 0.925934
+vt 0.589700 0.926968
+vt 0.589681 0.927494
+vt 0.588464 0.927690
+vt 0.588400 0.927058
+vt 0.588400 0.928049
+vt 0.589600 0.927815
+vt 0.588400 0.927444
+vt 0.589600 0.926793
+vt 0.588999 0.926429
+vt 0.589643 0.927452
+vt 0.588400 0.927670
+vt 0.589641 0.926568
+vt 0.588439 0.926644
+vt 0.589700 0.926497
+vt 0.588500 0.927206
+vt 0.589700 0.927524
+vt 0.590134 0.927833
+vt 0.584445 0.923689
+vt 0.590081 0.926915
+vt 0.589813 0.926314
+vt 0.590118 0.926611
+vt 0.584583 0.922509
+vt 0.589366 0.926412
+vt 0.589127 0.926846
+vt 0.584499 0.923664
+vt 0.588761 0.927876
+vt 0.584600 0.922519
+vt 0.590739 0.927237
+vt 0.590692 0.927885
+vt 0.590686 0.926869
+vt 0.590700 0.927463
+vt 0.590700 0.927993
+vt 0.590716 0.927443
+vt 0.590800 0.927151
+vt 0.590900 0.922080
+vt 0.590800 0.921723
+vt 0.590763 0.922538
+vt 0.590900 0.921496
+vt 0.590769 0.921866
+vt 0.589900 0.922794
+vt 0.584401 0.923601
+vt 0.584553 0.922541
+vt 0.583535 0.921867
+vt 0.582628 0.922267
+vt 0.582658 0.922697
+vt 0.584445 0.923601
+vt 0.582619 0.922573
+vt 0.583614 0.921871
+vt 0.582694 0.922212
+vt 0.588371 0.926067
+vt 0.589138 0.926785
+vt 0.588463 0.926213
+vt 0.588015 0.927179
+vt 0.588500 0.927165
+vt 0.588478 0.927783
+vt 0.588703 0.927654
+vt 0.588400 0.928010
+vt 0.588293 0.928101
+vt 0.589992 0.927574
+vt 0.589195 0.926588
+vt 0.588100 0.928306
+vt 0.669891 0.765723
+vt 0.683367 0.723836
+vt 0.688289 0.762800
+vt 0.656400 0.750000
+vt 0.669260 0.727399
+vt 0.693786 0.728063
+vt 0.697705 0.754656
+vt 0.698885 0.737052
+vt 0.590700 0.922300
+vt 0.582606 0.922207
+vt 0.583562 0.921831
+vt 0.582873 0.922100
+vt 0.584189 0.923595
+vt 0.582619 0.922640
+vt 0.583111 0.922684
+vt 0.582500 0.922472
+vt 0.584400 0.922300
+vt 0.583188 0.922240
+vt 0.583199 0.922652
+vt 0.584400 0.922300
+vt 0.583259 0.922276
+vt 0.583596 0.921828
+vt 0.584189 0.923594
+vt 0.582919 0.922100
+vt 0.582742 0.922746
+vt 0.582635 0.922218
+vt 0.589700 0.922600
+vt 0.589700 0.922436
+vt 0.584419 0.923679
+vt 0.590800 0.923058
+vt 0.590900 0.922000
+vt 0.582577 0.922263
+vt 0.582846 0.922100
+vt 0.583053 0.922100
+vt 0.582758 0.922130
+vt 0.582600 0.922459
+vn -0.0111 0.5161 -0.8565
+vn -0.6417 0.7624 -0.0834
+vn -0.0186 0.9817 -0.1896
+vn -0.9955 0.0055 0.0942
+vn -0.1245 0.7574 0.6410
+vn 0.0197 0.9829 0.1830
+vn -0.6238 -0.4552 0.6354
+vn 0.5416 0.2877 0.7898
+vn -0.0244 0.9945 0.1023
+vn 0.7393 -0.4954 0.4561
+vn -0.6111 -0.7902 -0.0466
+vn 0.0426 -0.7708 -0.6357
+vn 0.0432 -0.7710 -0.6354
+vn 0.0436 -0.7711 -0.6352
+vn 0.0441 -0.7714 -0.6349
+vn 0.7385 0.3977 -0.5445
+vn -0.0378 0.5813 -0.8128
+vn 0.8518 0.3251 -0.4108
+vn -0.1143 0.6052 -0.7878
+vn 0.9995 0.0302 0.0000
+vn -0.9802 -0.1703 -0.1013
+vn -0.9801 -0.1712 -0.1004
+vn -0.9371 -0.0658 -0.3427
+vn -0.5584 -0.1684 -0.8123
+vn -0.8800 -0.0059 -0.4749
+vn -0.9801 -0.1711 -0.1007
+vn 0.0164 -0.5914 -0.8062
+vn -0.0008 -0.1095 -0.9940
+vn 0.0331 -0.8790 -0.4757
+vn 0.0362 -0.8435 -0.5359
+vn -0.3004 -0.1525 -0.9415
+vn 0.6689 -0.4794 -0.5682
+vn -0.0219 -0.9535 0.3006
+vn 0.6339 -0.6762 -0.3753
+vn 0.4696 0.5973 -0.6502
+vn 0.4593 0.5994 -0.6556
+vn 0.5161 0.5291 -0.6735
+vn -0.5247 0.7507 0.4014
+vn -0.1361 0.1546 0.9786
+vn 0.9747 0.1905 0.1173
+vn 0.6437 -0.2988 0.7045
+vn -0.1116 -0.5889 0.8004
+vn -0.2514 -0.6790 0.6898
+vn -0.4826 -0.0473 0.8746
+vn -0.4147 0.4181 0.8082
+vn -0.6664 -0.5565 0.4962
+vn 0.6235 -0.5366 0.5687
+vn 0.1836 -0.9787 0.0919
+vn -0.6633 -0.5847 -0.4670
+vn 0.6368 -0.5599 -0.5301
+vn -0.6579 0.0345 -0.7523
+vn -0.1606 0.1235 -0.9793
+vn 0.1707 0.6272 -0.7599
+vn 0.6669 0.1294 -0.7338
+vn 0.1591 0.0794 -0.9841
+vn 0.6829 0.5071 -0.5258
+vn -0.4516 0.5567 -0.6972
+vn -0.6435 0.7075 -0.2920
+vn -0.1115 0.8926 -0.4368
+vn -0.6597 0.3479 -0.6661
+vn 0.6046 0.4057 -0.6855
+vn 0.0815 -0.5855 0.8066
+vn 0.0833 0.1778 0.9805
+vn 0.0478 -0.7624 0.6453
+vn 0.0636 -0.1133 0.9915
+vn 0.1416 -0.6376 0.7572
+vn 0.7850 0.4378 0.4383
+vn 0.0649 0.8885 0.4542
+vn 0.0182 0.9948 0.1000
+vn 0.0643 0.9476 -0.3129
+vn 0.0459 0.8026 -0.5947
+vn 0.0757 0.5177 -0.8522
+vn 0.0594 0.3662 -0.9286
+vn -0.1588 0.1696 -0.9726
+vn 0.0970 -0.3264 -0.9403
+vn 0.8245 -0.2714 -0.4965
+vn 0.2446 -0.1148 -0.9628
+vn 0.0702 -0.7938 -0.6042
+vn 0.0012 -0.9972 -0.0745
+vn 0.5025 -0.8580 0.1066
+vn 0.7462 -0.5195 0.4164
+vn 0.9998 0.0149 -0.0160
+vn 0.9925 0.0291 -0.1188
+vn 0.2112 -0.0484 -0.9762
+vn -0.6469 -0.3568 -0.6739
+vn -0.8932 -0.4433 -0.0749
+vn -0.3521 -0.6845 0.6384
+vn 0.0095 -0.8933 0.4494
+vn 0.7165 0.0163 -0.6974
+vn 0.6835 0.3736 -0.6272
+vn 0.6511 0.6757 -0.3457
+vn 0.6684 0.7416 0.0575
+vn 0.6419 0.5825 0.4987
+vn 0.6458 0.1310 0.7522
+vn 0.0904 -0.6817 0.7260
+vn 0.6979 -0.4021 0.5926
+vn 0.0607 -0.8602 0.5063
+vn 0.6394 -0.7045 0.3078
+vn -0.5110 -0.5314 0.6756
+vn -0.5626 -0.8267 -0.0036
+vn 0.6919 -0.5317 -0.4885
+vn -0.5524 -0.6015 -0.5771
+vn -0.8856 0.2634 0.3826
+vn 0.8260 0.3238 0.4614
+vn 0.9650 -0.2096 -0.1577
+vn -0.6417 -0.3549 -0.6799
+vn -0.6370 0.2805 -0.7180
+vn -0.0912 -0.4120 -0.9066
+vn -0.6168 -0.7862 0.0389
+vn 0.5748 -0.8182 0.0093
+vn -0.5777 -0.4368 0.6895
+vn -0.6399 0.0736 0.7649
+vn 0.9860 0.0623 0.1548
+vn -0.1451 0.6479 0.7478
+vn -0.7020 0.4741 0.5314
+vn -0.6806 0.7067 0.1933
+vn -0.5749 0.7371 -0.3552
+vn -0.3065 -0.9318 -0.1945
+vn -0.2426 -0.9569 -0.1595
+vn 0.9969 0.0571 -0.0536
+vn 0.1503 -0.4138 -0.8979
+vn 0.9992 0.0388 -0.0039
+vn 0.9990 0.0434 0.0082
+vn 0.9990 0.0441 -0.0077
+vn 0.9987 0.0495 -0.0081
+vn -0.9986 -0.0430 0.0301
+vn -0.9999 0.0030 -0.0160
+vn -0.9989 -0.0111 -0.0459
+vn -0.9992 -0.0128 -0.0370
+vn -0.9728 -0.0983 -0.2095
+usemtl None
+s 1
+f 1/1/1 2/2/2 3/3/3
+f 3/3/3 2/2/2 4/4/4
+f 4/4/5 5/5/5 3/3/5
+f 4/4/6 6/6/6 5/5/6
+f 6/6/7 7/7/8 5/5/9
+f 7/7/8 6/6/7 12/8/10
+f 6/6/7 8/9/11 12/8/10
+f 9/10/12 13/11/13 10/12/14
+f 13/11/13 12/8/15 10/12/14
+f 13/11/16 11/13/17 3/3/18
+f 11/13/17 1/1/19 3/3/18
+f 5/5/20 7/7/8 12/14/10
+f 12/14/10 13/11/16 5/5/20
+f 13/11/16 3/3/18 5/5/20
+f 4/4/4 9/15/21 10/16/22
+f 10/16/22 14/17/23 4/4/4
+f 4/4/4 15/18/24 9/15/21
+f 4/4/4 11/19/25 15/18/24
+f 4/4/4 1/20/26 11/19/25
+f 4/4/4 2/2/2 1/20/26
+f 4/4/4 14/17/23 8/9/11
+f 4/4/4 8/9/11 6/6/7
+f 9/10/27 15/18/24 13/11/28
+f 15/18/24 11/13/25 13/11/28
+f 8/9/11 14/17/29 12/8/10
+f 14/17/29 10/12/30 12/8/10
+f 18/21/31 9/10/32 8/22/33
+f 9/10/32 10/12/34 8/22/33
+f 16/23/35 1/1/36 18/21/31
+f 1/1/36 11/13/37 18/21/31
+f 16/23/38 18/21/31 17/24/39
+f 8/22/33 17/24/39 18/21/31
+f 17/24/39 8/22/33 10/16/34
+f 17/24/39 1/20/40 16/23/38
+f 17/24/39 10/16/34 1/20/40
+f 10/16/34 11/19/37 1/20/40
+f 10/16/34 9/15/32 11/19/37
+f 9/15/32 18/21/31 11/19/37
+f 55/25/41 21/26/42 20/27/43
+f 22/28/44 21/26/42 55/25/41
+f 19/29/45 23/30/46 21/26/42
+f 23/30/46 24/31/47 21/26/42
+f 23/30/46 25/32/48 24/31/47
+f 25/32/48 27/33/49 26/34/50
+f 27/33/49 28/35/51 26/34/50
+f 28/35/51 29/36/52 26/34/50
+f 30/37/53 71/38/54 72/39/55
+f 71/38/54 30/37/53 31/40/56
+f 30/37/53 32/41/57 31/40/56
+f 28/35/51 73/42/58 29/36/52
+f 73/42/58 32/41/59 29/36/52
+f 32/41/57 33/43/60 31/40/56
+f 33/43/60 34/44/61 31/40/56
+f 50/45/62 35/46/63 49/47/64
+f 35/46/63 36/48/65 49/47/66
+f 35/46/63 37/49/67 36/48/65
+f 35/46/63 38/50/68 37/49/67
+f 38/50/68 39/51/69 37/49/67
+f 38/50/68 40/52/70 39/51/69
+f 40/52/70 41/53/71 39/51/69
+f 40/52/70 42/54/72 41/53/71
+f 42/54/72 43/55/73 41/53/71
+f 42/54/72 44/56/74 43/55/73
+f 44/56/75 45/57/76 43/55/77
+f 44/56/75 46/58/78 45/57/76
+f 46/58/78 47/59/79 45/57/76
+f 46/58/78 48/60/80 47/59/79
+f 48/60/80 49/47/64 47/59/79
+f 48/60/80 50/45/62 49/47/64
+f 51/61/81 55/62/41 52/63/82
+f 55/62/41 54/64/83 52/63/82
+f 54/64/83 34/44/61 53/65/84
+f 54/64/83 55/62/41 31/66/56
+f 54/64/83 31/66/56 34/44/61
+f 33/43/60 58/67/85 44/56/74
+f 57/68/86 22/69/44 56/70/87
+f 33/43/60 32/71/57 58/67/85
+f 58/67/85 22/69/44 57/68/86
+f 22/69/44 58/67/85 32/71/57
+f 50/45/62 48/60/80 56/70/88
+f 54/64/83 53/65/84 60/72/89
+f 57/68/86 56/70/88 48/60/80
+f 53/65/84 44/56/74 60/72/89
+f 44/56/74 42/54/72 60/72/89
+f 42/54/72 61/73/90 60/72/89
+f 42/54/72 62/74/91 61/73/90
+f 42/54/72 40/52/70 62/74/91
+f 40/52/70 65/75/92 62/74/91
+f 40/52/70 38/50/68 65/75/92
+f 38/50/68 63/76/93 65/75/92
+f 38/50/68 64/77/94 63/76/93
+f 38/50/68 35/46/63 64/77/94
+f 35/46/63 50/45/62 64/77/94
+f 50/45/95 59/78/96 64/77/94
+f 50/45/95 51/61/81 59/78/96
+f 50/45/95 56/70/97 51/61/81
+f 55/25/41 51/61/81 22/28/44
+f 51/61/81 56/70/87 22/28/44
+f 66/79/98 55/25/41 67/80/99
+f 55/25/41 20/27/43 67/80/99
+f 67/80/99 68/81/100 66/79/98
+f 68/81/100 69/82/101 66/79/98
+f 68/81/100 70/83/102 69/82/101
+f 71/38/54 69/82/101 72/39/55
+f 69/82/101 70/83/102 72/39/55
+f 33/43/60 44/56/74 34/44/61
+f 44/56/74 53/65/84 34/44/61
+f 73/42/58 19/29/45 32/41/59
+f 19/29/45 22/84/44 32/41/59
+f 74/85/103 73/86/58 28/87/51
+f 28/87/51 27/88/49 74/85/103
+f 27/88/49 23/89/46 74/85/103
+f 75/90/104 66/91/98 71/92/54
+f 66/91/98 69/93/101 71/92/54
+f 31/66/56 75/90/104 71/92/54
+f 58/67/85 46/58/105 44/56/74
+f 58/67/85 57/68/86 46/58/105
+f 57/68/86 48/60/80 46/58/105
+f 76/94/106 86/95/107 77/96/108
+f 86/95/107 43/55/73 77/96/108
+f 78/97/109 76/94/106 79/98/110
+f 76/94/106 77/96/108 79/98/110
+f 80/99/111 78/97/109 49/47/66
+f 78/97/109 79/98/110 49/47/66
+f 49/47/66 36/48/65 80/99/111
+f 36/48/65 81/100/112 80/99/111
+f 36/48/65 82/101/113 81/100/112
+f 82/101/114 83/102/115 81/100/112
+f 82/101/114 84/103/116 83/102/115
+f 82/101/114 39/51/69 84/103/116
+f 39/51/69 85/104/117 84/103/116
+f 39/51/69 41/53/71 85/104/117
+f 41/53/71 86/95/107 85/105/117
+f 41/53/71 43/55/73 86/95/107
+f 49/47/66 79/98/110 47/59/20
+f 79/98/110 45/57/76 47/59/20
+f 79/98/110 77/96/20 45/57/76
+f 45/57/76 77/96/20 43/55/77
+f 36/48/65 37/49/67 82/101/113
+f 37/49/67 39/51/69 82/101/113
+f 76/106/106 81/107/112 86/108/107
+f 76/106/106 78/109/109 80/110/111
+f 80/110/111 81/107/112 76/106/106
+f 81/107/112 83/111/115 86/108/107
+f 86/108/107 83/111/115 85/112/117
+f 83/111/115 84/113/116 85/112/117
+f 21/26/42 22/84/44 19/29/45
+f 32/41/118 30/114/119 21/26/42
+f 30/114/119 20/27/43 21/26/42
+f 26/115/50 29/116/120 88/117/121
+f 21/118/122 24/119/47 87/120/123
+f 25/121/48 26/115/50 24/119/47
+f 32/122/124 89/123/125 29/116/120
+f 89/123/125 32/122/124 87/120/123
+f 32/122/124 21/118/122 87/120/123
+f 29/116/120 89/123/125 88/117/121
+f 92/124/126 30/125/127 90/126/128
+f 30/125/127 72/127/129 90/126/128
+f 20/128/43 30/125/127 92/124/126
+f 72/127/129 91/129/130 90/126/128
+f 20/128/43 92/124/126 67/130/99
+f 72/127/129 70/131/102 91/129/130
+f 23/132/46 27/133/49 25/32/48
+f 74/85/103 23/89/46 19/134/45
+f 74/85/103 19/134/45 73/86/58
+f 55/135/41 75/136/104 31/40/56
+f 75/90/104 55/62/41 66/91/98
+f 61/73/90 59/78/96 51/61/81
+f 61/73/90 51/61/81 52/63/82
+f 61/73/90 52/63/82 54/64/83
+f 61/73/90 54/64/83 60/72/89
+f 65/75/92 61/73/90 62/74/91
+f 61/73/90 65/75/92 63/76/93
+f 61/73/90 63/76/93 64/77/94
+f 59/78/96 61/73/90 64/77/94
+f 89/123/125 26/137/50 88/138/121
+f 26/137/50 89/123/125 87/120/123
+f 24/119/47 26/137/50 87/120/123
+f 92/124/126 90/126/128 91/139/130
+f 92/124/126 91/139/130 70/140/102
+f 92/124/126 70/140/102 68/141/100
+f 67/130/99 92/124/126 68/141/100
diff --git a/examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror_lores.obj b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror_lores.obj
new file mode 100644
index 000000000..24e02c302
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_data/laikago/upper_leg_mirror_lores.obj
@@ -0,0 +1,568 @@
+# Blender v2.79 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib upper_leg_mirror.mtl
+o Upper_Leg_Mirror_Upper_Leg_Mirror.001
+v -0.031162 -0.045909 -0.057156
+v -0.037192 -0.020447 -0.041735
+v 0.001659 -0.019725 -0.041806
+v -0.035441 -0.040975 -0.023903
+v 0.002384 -0.043700 -0.013337
+v -0.037697 -0.046884 0.008077
+v 0.002450 -0.045899 0.008059
+v -0.024011 -0.098317 -0.045184
+v -0.024397 -0.073707 -0.075752
+v -0.023230 -0.097243 -0.047136
+v -0.025081 -0.069536 -0.076188
+v 0.004005 -0.097393 -0.045062
+v 0.003209 -0.071015 -0.077166
+v -0.023224 -0.097725 -0.046376
+v -0.024579 -0.071875 -0.077093
+v -0.035652 -0.031869 -0.047502
+v -0.036031 -0.056933 -0.001119
+v -0.025880 -0.071940 -0.077253
+v 0.001674 -0.157690 -0.107220
+v 0.029728 -0.164062 -0.110900
+v 0.006347 -0.161137 -0.108253
+v 0.005877 -0.157248 -0.107420
+v 0.001630 -0.212205 -0.136987
+v 0.008334 -0.212592 -0.136371
+v 0.006482 -0.217231 -0.144064
+v 0.008838 -0.213776 -0.152261
+v 0.001044 -0.213536 -0.151782
+v 0.000856 -0.184234 -0.164789
+v 0.006601 -0.183324 -0.165639
+v 0.029610 -0.160095 -0.149892
+v 0.033913 -0.151952 -0.142108
+v 0.005964 -0.153590 -0.143799
+v 0.002594 -0.032497 -0.048179
+v 0.027447 -0.031124 -0.047842
+v -0.001772 0.006116 0.043352
+v -0.038735 -0.007250 0.046510
+v -0.039913 0.031749 0.029833
+v -0.002775 0.039311 0.018199
+v -0.040294 0.044353 0.005086
+v -0.002781 0.039512 -0.014706
+v -0.040071 0.036969 -0.026507
+v -0.002282 0.022971 -0.036504
+v -0.039282 0.010817 -0.045082
+v -0.001361 -0.007488 -0.044413
+v -0.038209 -0.024689 -0.040577
+v -0.000499 -0.036067 -0.028465
+v -0.037533 -0.047046 -0.003128
+v -0.000269 -0.043995 0.007265
+v -0.037964 -0.032810 0.034639
+v -0.000667 -0.030406 0.032147
+v 0.031003 -0.037216 0.016780
+v 0.028304 -0.040684 -0.011124
+v 0.026794 -0.005546 -0.041018
+v 0.027756 -0.022526 -0.035130
+v 0.032216 -0.156615 -0.106901
+v 0.002196 -0.038795 0.017550
+v 0.000693 -0.040402 -0.013377
+v 0.000706 -0.024478 -0.034343
+v 0.031516 -0.026661 0.030314
+v 0.031850 -0.038470 -0.011834
+v 0.031487 -0.025998 -0.030628
+v 0.030752 -0.001981 -0.040975
+v 0.000845 -0.007905 -0.040844
+v 0.030321 0.021149 -0.034505
+v 0.029623 0.035172 -0.020495
+v 0.029671 0.033676 0.022924
+v 0.030521 0.005709 0.040579
+v 0.029531 0.039728 0.005790
+v 0.037227 -0.214442 -0.140525
+v 0.030650 -0.210297 -0.135338
+v 0.030562 -0.215429 -0.144492
+v 0.037227 -0.211549 -0.153087
+v 0.030622 -0.212045 -0.153851
+v 0.036105 -0.182657 -0.164703
+v 0.030312 -0.183339 -0.165729
+v -0.000050 -0.153882 -0.142899
+v -0.001149 -0.158950 -0.110673
+v 0.036551 -0.157779 -0.110720
+v -0.047384 -0.031062 -0.048457
+v -0.038023 -0.030823 -0.049630
+v -0.046488 -0.062041 -0.003498
+v -0.037054 -0.062902 -0.003943
+v -0.047434 -0.027513 0.040009
+v -0.048993 0.002459 0.046312
+v -0.039786 0.027518 0.039215
+v -0.049154 0.027619 0.036997
+v -0.050172 0.043527 0.009530
+v -0.049034 0.040669 -0.022517
+v -0.048731 0.012184 -0.045113
+v 0.007661 -0.197712 -0.135054
+v 0.008333 -0.205171 -0.156526
+v 0.007972 -0.193237 -0.150105
+v 0.029891 -0.193314 -0.149937
+v 0.030355 -0.203220 -0.157089
+v 0.029221 -0.194992 -0.136936
+vt 0.588700 0.925800
+vt 0.589001 0.925893
+vt 0.589273 0.926010
+vt 0.588500 0.926595
+vt 0.589800 0.926864
+vt 0.588136 0.927505
+vt 0.588165 0.927503
+vt 0.589900 0.925781
+vt 0.586500 0.925823
+vt 0.588900 0.924800
+vt 0.587348 0.924721
+vt 0.588900 0.925700
+vt 0.588900 0.925000
+vt 0.586500 0.925781
+vt 0.587300 0.924800
+vt 0.586500 0.925700
+vt 0.586500 0.925725
+vt 0.587335 0.924713
+vt 0.587400 0.924700
+vt 0.588200 0.925400
+vt 0.588835 0.924875
+vt 0.588900 0.925791
+vt 0.588548 0.925825
+vt 0.588534 0.925639
+vt 0.590798 0.922005
+vt 0.589920 0.921914
+vt 0.590700 0.921789
+vt 0.589900 0.922894
+vt 0.589800 0.922441
+vt 0.589800 0.921531
+vt 0.590004 0.921471
+vt 0.589944 0.922467
+vt 0.589800 0.921495
+vt 0.590016 0.921790
+vt 0.589800 0.921146
+vt 0.589921 0.921162
+vt 0.590700 0.921900
+vt 0.590900 0.921154
+vt 0.590700 0.921138
+vt 0.590824 0.922504
+vt 0.589900 0.922408
+vt 0.589800 0.922424
+vt 0.589111 0.925929
+vt 0.589323 0.925934
+vt 0.589700 0.926968
+vt 0.589681 0.927494
+vt 0.588464 0.927690
+vt 0.588400 0.927058
+vt 0.588400 0.928049
+vt 0.589600 0.927815
+vt 0.588400 0.927444
+vt 0.589600 0.926793
+vt 0.588999 0.926429
+vt 0.589643 0.927452
+vt 0.588400 0.927670
+vt 0.589700 0.927040
+vt 0.588439 0.926644
+vt 0.589700 0.926497
+vt 0.588500 0.927206
+vt 0.589700 0.927524
+vt 0.590134 0.927833
+vt 0.584445 0.923689
+vt 0.588466 0.926929
+vt 0.588996 0.926173
+vt 0.590118 0.926611
+vt 0.584583 0.922509
+vt 0.589366 0.926412
+vt 0.589634 0.926515
+vt 0.589127 0.926846
+vt 0.584499 0.923664
+vt 0.588761 0.927876
+vt 0.584600 0.922519
+vt 0.590800 0.926908
+vt 0.590800 0.926485
+vt 0.590739 0.927237
+vt 0.590692 0.927885
+vt 0.590686 0.926869
+vt 0.590700 0.927463
+vt 0.590700 0.927993
+vt 0.590716 0.927443
+vt 0.590800 0.927151
+vt 0.590900 0.922080
+vt 0.590800 0.921723
+vt 0.590763 0.922538
+vt 0.590900 0.921496
+vt 0.590769 0.921866
+vt 0.589900 0.922794
+vt 0.584401 0.923601
+vt 0.584553 0.922541
+vt 0.583535 0.921867
+vt 0.582628 0.922267
+vt 0.582658 0.922697
+vt 0.584445 0.923601
+vt 0.582619 0.922573
+vt 0.583614 0.921871
+vt 0.582694 0.922212
+vt 0.588371 0.926067
+vt 0.589138 0.926785
+vt 0.588463 0.926213
+vt 0.588015 0.927179
+vt 0.588500 0.927165
+vt 0.588478 0.927783
+vt 0.588703 0.927654
+vt 0.588400 0.928010
+vt 0.588293 0.928101
+vt 0.589992 0.927574
+vt 0.589195 0.926588
+vt 0.588100 0.928306
+vt 0.686491 0.871010
+vt 0.666404 0.831859
+vt 0.697431 0.855925
+vt 0.665800 0.869500
+vt 0.658961 0.844347
+vt 0.676715 0.827518
+vt 0.698296 0.843489
+vt 0.686722 0.830218
+vt 0.590700 0.922300
+vt 0.582606 0.922207
+vt 0.583562 0.921831
+vt 0.582873 0.922100
+vt 0.584189 0.923595
+vt 0.582619 0.922640
+vt 0.583111 0.922684
+vt 0.582500 0.922472
+vt 0.584400 0.922300
+vt 0.583188 0.922240
+vt 0.583199 0.922652
+vt 0.584400 0.922300
+vt 0.583259 0.922276
+vt 0.583596 0.921828
+vt 0.584189 0.923594
+vt 0.582919 0.922100
+vt 0.582742 0.922746
+vt 0.582635 0.922218
+vt 0.589700 0.922600
+vt 0.589700 0.922436
+vt 0.584419 0.923679
+vt 0.590800 0.923058
+vt 0.590900 0.922000
+vt 0.582577 0.922263
+vt 0.582846 0.922100
+vt 0.583053 0.922100
+vt 0.582758 0.922130
+vt 0.582600 0.922459
+vn -0.0111 0.5161 -0.8565
+vn -0.6417 0.7624 -0.0834
+vn -0.0186 0.9817 -0.1896
+vn -0.9955 0.0055 0.0942
+vn -0.1245 0.7574 0.6410
+vn 0.0197 0.9829 0.1830
+vn -0.6238 -0.4552 0.6354
+vn 0.5416 0.2877 0.7898
+vn -0.0244 0.9945 0.1023
+vn 0.7393 -0.4954 0.4561
+vn -0.6111 -0.7902 -0.0466
+vn 0.0426 -0.7708 -0.6357
+vn 0.0432 -0.7710 -0.6354
+vn 0.0436 -0.7711 -0.6352
+vn 0.0441 -0.7714 -0.6349
+vn 0.7385 0.3977 -0.5445
+vn -0.0378 0.5813 -0.8128
+vn 0.8518 0.3251 -0.4108
+vn -0.1143 0.6052 -0.7878
+vn 0.9995 0.0302 0.0000
+vn -0.9802 -0.1703 -0.1013
+vn -0.9801 -0.1712 -0.1004
+vn -0.9371 -0.0658 -0.3427
+vn -0.5584 -0.1684 -0.8123
+vn -0.8800 -0.0059 -0.4749
+vn -0.9801 -0.1711 -0.1007
+vn 0.0164 -0.5914 -0.8062
+vn -0.0008 -0.1095 -0.9940
+vn 0.0331 -0.8790 -0.4757
+vn 0.0362 -0.8435 -0.5359
+vn -0.3004 -0.1525 -0.9415
+vn 0.6689 -0.4794 -0.5682
+vn -0.0219 -0.9535 0.3006
+vn 0.6339 -0.6762 -0.3753
+vn 0.4696 0.5973 -0.6502
+vn 0.4593 0.5994 -0.6556
+vn 0.5161 0.5291 -0.6735
+vn -0.5247 0.7507 0.4014
+vn -0.1361 0.1546 0.9786
+vn 0.9747 0.1905 0.1173
+vn 0.6456 -0.2914 0.7059
+vn -0.1116 -0.5889 0.8004
+vn -0.2514 -0.6790 0.6898
+vn -0.4826 -0.0473 0.8746
+vn -0.4147 0.4181 0.8082
+vn -0.6664 -0.5565 0.4962
+vn 0.6235 -0.5366 0.5687
+vn 0.1836 -0.9787 0.0919
+vn -0.6633 -0.5847 -0.4670
+vn 0.6368 -0.5599 -0.5301
+vn -0.6579 0.0345 -0.7523
+vn -0.1606 0.1235 -0.9793
+vn 0.1707 0.6272 -0.7599
+vn 0.6669 0.1294 -0.7338
+vn 0.1591 0.0794 -0.9841
+vn 0.6832 0.5089 -0.5237
+vn -0.4516 0.5567 -0.6972
+vn -0.6435 0.7075 -0.2920
+vn -0.1115 0.8926 -0.4368
+vn -0.6623 0.3463 -0.6644
+vn 0.6823 0.3683 -0.6314
+vn 0.0815 -0.5855 0.8066
+vn 0.0833 0.1778 0.9805
+vn 0.0478 -0.7624 0.6453
+vn 0.0636 -0.1133 0.9915
+vn 0.1416 -0.6376 0.7572
+vn 0.7850 0.4378 0.4383
+vn 0.0649 0.8885 0.4542
+vn 0.0182 0.9948 0.1000
+vn 0.0643 0.9476 -0.3129
+vn 0.0459 0.8026 -0.5947
+vn 0.0846 0.5358 -0.8401
+vn 0.0527 0.3821 -0.9226
+vn 0.6780 0.0814 -0.7306
+vn 0.0582 -0.3345 -0.9406
+vn 0.8173 -0.2869 -0.4997
+vn 0.1688 -0.1190 -0.9784
+vn 0.0640 -0.8046 -0.5904
+vn 0.0012 -0.9972 -0.0745
+vn 0.5025 -0.8580 0.1066
+vn 0.4474 -0.6463 0.6182
+vn 0.9938 0.0889 -0.0670
+vn 0.9005 -0.1765 -0.3975
+vn 0.1874 -0.0321 -0.9818
+vn -0.5455 -0.3866 -0.7436
+vn 0.3997 0.0775 -0.9134
+vn -0.8932 -0.4433 -0.0749
+vn -0.3521 -0.6845 0.6384
+vn 0.0095 -0.8933 0.4494
+vn 0.4734 -0.8580 -0.1994
+vn 0.8215 -0.5390 -0.1861
+vn 0.8537 -0.4370 0.2832
+vn 0.7050 -0.5152 -0.4874
+vn 0.6726 0.0338 -0.7393
+vn 0.6809 0.3801 -0.6260
+vn 0.6511 0.6757 -0.3457
+vn 0.6684 0.7416 0.0575
+vn 0.6419 0.5825 0.4987
+vn 0.6458 0.1310 0.7522
+vn 0.0904 -0.6817 0.7260
+vn 0.6979 -0.4021 0.5926
+vn 0.0607 -0.8602 0.5063
+vn 0.6394 -0.7045 0.3078
+vn -0.5110 -0.5314 0.6756
+vn -0.5626 -0.8267 -0.0036
+vn 0.6919 -0.5317 -0.4885
+vn -0.5524 -0.6015 -0.5771
+vn -0.8856 0.2634 0.3826
+vn 0.8260 0.3238 0.4614
+vn 0.9604 -0.2172 -0.1747
+vn -0.6417 -0.3549 -0.6799
+vn -0.6370 0.2805 -0.7180
+vn -0.0912 -0.4120 -0.9066
+vn -0.6168 -0.7862 0.0389
+vn 0.5748 -0.8182 0.0093
+vn -0.5777 -0.4368 0.6895
+vn -0.6399 0.0736 0.7649
+vn 0.9860 0.0623 0.1548
+vn -0.1451 0.6479 0.7478
+vn -0.7020 0.4741 0.5314
+vn -0.6806 0.7067 0.1933
+vn -0.5749 0.7371 -0.3552
+vn -0.3065 -0.9318 -0.1945
+vn -0.2426 -0.9569 -0.1595
+vn 0.9969 0.0571 -0.0536
+vn 0.1503 -0.4138 -0.8979
+vn 0.9992 0.0388 -0.0039
+vn 0.9990 0.0434 0.0082
+vn 0.9990 0.0441 -0.0077
+vn 0.9987 0.0495 -0.0081
+vn -0.9986 -0.0430 0.0301
+vn -0.9999 0.0030 -0.0160
+vn -0.9989 -0.0111 -0.0459
+vn -0.9992 -0.0128 -0.0370
+vn -0.9728 -0.0983 -0.2095
+usemtl None
+s 1
+f 1/1/1 2/2/2 3/3/3
+f 3/3/3 2/2/2 4/4/4
+f 4/4/5 5/5/5 3/3/5
+f 4/4/6 6/6/6 5/5/6
+f 6/6/7 7/7/8 5/5/9
+f 7/7/8 6/6/7 12/8/10
+f 6/6/7 8/9/11 12/8/10
+f 9/10/12 13/11/13 10/12/14
+f 13/11/13 12/8/15 10/12/14
+f 13/11/16 11/13/17 3/3/18
+f 11/13/17 1/1/19 3/3/18
+f 5/5/20 7/7/8 12/14/10
+f 12/14/10 13/11/16 5/5/20
+f 13/11/16 3/3/18 5/5/20
+f 4/4/4 9/15/21 10/16/22
+f 10/16/22 14/17/23 4/4/4
+f 4/4/4 15/18/24 9/15/21
+f 4/4/4 11/19/25 15/18/24
+f 4/4/4 1/20/26 11/19/25
+f 4/4/4 2/2/2 1/20/26
+f 4/4/4 14/17/23 8/9/11
+f 4/4/4 8/9/11 6/6/7
+f 9/10/27 15/18/24 13/11/28
+f 15/18/24 11/13/25 13/11/28
+f 8/9/11 14/17/29 12/8/10
+f 14/17/29 10/12/30 12/8/10
+f 18/21/31 9/10/32 8/22/33
+f 9/10/32 10/12/34 8/22/33
+f 16/23/35 1/1/36 18/21/31
+f 1/1/36 11/13/37 18/21/31
+f 16/23/38 18/21/31 17/24/39
+f 8/22/33 17/24/39 18/21/31
+f 17/24/39 8/22/33 10/16/34
+f 17/24/39 1/20/40 16/23/38
+f 17/24/39 10/16/34 1/20/40
+f 10/16/34 11/19/37 1/20/40
+f 10/16/34 9/15/32 11/19/37
+f 9/15/32 18/21/31 11/19/37
+f 55/25/41 21/26/42 20/27/43
+f 22/28/44 21/26/42 55/25/41
+f 19/29/45 23/30/46 21/26/42
+f 23/30/46 24/31/47 21/26/42
+f 23/30/46 25/32/48 24/31/47
+f 25/32/48 27/33/49 26/34/50
+f 27/33/49 28/35/51 26/34/50
+f 28/35/51 29/36/52 26/34/50
+f 30/37/53 74/38/54 75/39/55
+f 74/38/54 30/37/53 31/40/56
+f 30/37/53 32/41/57 31/40/56
+f 28/35/51 76/42/58 29/36/52
+f 76/42/58 32/41/59 29/36/52
+f 32/41/57 33/43/60 31/40/56
+f 33/43/60 34/44/61 31/40/56
+f 50/45/62 35/46/63 49/47/64
+f 35/46/63 36/48/65 49/47/66
+f 35/46/63 37/49/67 36/48/65
+f 35/46/63 38/50/68 37/49/67
+f 38/50/68 39/51/69 37/49/67
+f 38/50/68 40/52/70 39/51/69
+f 40/52/70 41/53/71 39/51/69
+f 40/52/70 42/54/72 41/53/71
+f 42/54/72 43/55/73 41/53/71
+f 42/54/72 44/56/74 43/55/73
+f 44/56/75 45/57/76 43/55/77
+f 44/56/75 46/58/78 45/57/76
+f 46/58/78 47/59/79 45/57/76
+f 46/58/78 48/60/80 47/59/79
+f 48/60/80 49/47/64 47/59/79
+f 48/60/80 50/45/62 49/47/64
+f 51/61/81 55/62/41 52/63/82
+f 55/62/41 54/64/83 52/63/82
+f 54/64/83 34/44/61 53/65/84
+f 54/64/83 55/62/41 31/66/56
+f 54/64/83 31/66/56 34/44/61
+f 33/43/60 58/67/85 63/68/86
+f 57/69/87 22/70/44 56/71/88
+f 33/43/60 32/72/57 58/67/85
+f 58/67/85 22/70/44 57/69/87
+f 22/70/44 58/67/85 32/72/57
+f 50/45/62 48/60/80 56/71/89
+f 52/63/90 60/73/91 51/61/92
+f 52/63/90 61/74/93 60/73/91
+f 52/63/90 54/64/83 61/74/93
+f 54/64/83 62/75/94 61/74/93
+f 54/64/83 53/65/84 62/75/94
+f 57/69/87 56/71/89 48/60/80
+f 53/65/84 63/68/86 62/75/94
+f 63/68/86 42/54/72 62/75/94
+f 42/54/72 64/76/95 62/75/94
+f 42/54/72 65/77/96 64/76/95
+f 42/54/72 40/52/70 65/77/96
+f 40/52/70 68/78/97 65/77/96
+f 40/52/70 38/50/68 68/78/97
+f 38/50/68 66/79/98 68/78/97
+f 38/50/68 67/80/99 66/79/98
+f 38/50/68 35/46/63 67/80/99
+f 35/46/63 50/45/62 67/80/99
+f 50/45/100 59/81/101 67/80/99
+f 50/45/100 51/61/92 59/81/101
+f 50/45/100 56/71/102 51/61/92
+f 55/25/41 51/61/81 22/28/44
+f 51/61/81 56/71/88 22/28/44
+f 69/82/103 55/25/41 70/83/104
+f 55/25/41 20/27/43 70/83/104
+f 70/83/104 71/84/105 69/82/103
+f 71/84/105 72/85/106 69/82/103
+f 71/84/105 73/86/107 72/85/106
+f 74/38/54 72/85/106 75/39/55
+f 72/85/106 73/86/107 75/39/55
+f 33/43/60 63/68/86 34/44/61
+f 63/68/86 53/65/84 34/44/61
+f 76/42/58 19/29/45 32/41/59
+f 19/29/45 22/87/44 32/41/59
+f 77/88/108 76/89/58 28/90/51
+f 28/90/51 27/91/49 77/88/108
+f 27/91/49 23/92/46 77/88/108
+f 78/93/109 69/94/103 74/95/54
+f 69/94/103 72/96/106 74/95/54
+f 31/66/56 78/93/109 74/95/54
+f 42/54/72 63/68/86 44/56/74
+f 63/68/86 58/67/85 44/56/74
+f 58/67/85 46/58/110 44/56/74
+f 58/67/85 57/69/87 46/58/110
+f 57/69/87 48/60/80 46/58/110
+f 79/97/111 89/98/112 80/99/113
+f 89/98/112 43/55/73 80/99/113
+f 81/100/114 79/97/111 82/101/115
+f 79/97/111 80/99/113 82/101/115
+f 83/102/116 81/100/114 49/47/66
+f 81/100/114 82/101/115 49/47/66
+f 49/47/66 36/48/65 83/102/116
+f 36/48/65 84/103/117 83/102/116
+f 36/48/65 85/104/118 84/103/117
+f 85/104/119 86/105/120 84/103/117
+f 85/104/119 87/106/121 86/105/120
+f 85/104/119 39/51/69 87/106/121
+f 39/51/69 88/107/122 87/106/121
+f 39/51/69 41/53/71 88/107/122
+f 41/53/71 89/98/112 88/108/122
+f 41/53/71 43/55/73 89/98/112
+f 49/47/66 82/101/115 47/59/20
+f 82/101/115 45/57/76 47/59/20
+f 82/101/115 80/99/20 45/57/76
+f 45/57/76 80/99/20 43/55/77
+f 36/48/65 37/49/67 85/104/118
+f 37/49/67 39/51/69 85/104/118
+f 79/109/111 84/110/117 89/111/112
+f 79/109/111 81/112/114 83/113/116
+f 83/113/116 84/110/117 79/109/111
+f 84/110/117 86/114/120 89/111/112
+f 89/111/112 86/114/120 88/115/122
+f 86/114/120 87/116/121 88/115/122
+f 21/26/42 22/87/44 19/29/45
+f 32/41/123 30/117/124 21/26/42
+f 30/117/124 20/27/43 21/26/42
+f 26/118/50 29/119/125 91/120/126
+f 21/121/127 24/122/47 90/123/128
+f 25/124/48 26/118/50 24/122/47
+f 32/125/129 92/126/130 29/119/125
+f 92/126/130 32/125/129 90/123/128
+f 32/125/129 21/121/127 90/123/128
+f 29/119/125 92/126/130 91/120/126
+f 95/127/131 30/128/132 93/129/133
+f 30/128/132 75/130/134 93/129/133
+f 20/131/43 30/128/132 95/127/131
+f 75/130/134 94/132/135 93/129/133
+f 20/131/43 95/127/131 70/133/104
+f 75/130/134 73/134/107 94/132/135
+f 23/135/46 27/136/49 25/32/48
+f 77/88/108 23/92/46 19/137/45
+f 77/88/108 19/137/45 76/89/58
+f 55/138/41 78/139/109 31/40/56
+f 78/93/109 55/62/41 69/94/103
+f 64/76/95 59/81/101 51/61/92
+f 64/76/95 51/61/92 60/73/91
+f 64/76/95 60/73/91 61/74/93
+f 64/76/95 61/74/93 62/75/94
+f 68/78/97 64/76/95 65/77/96
+f 64/76/95 68/78/97 66/79/98
+f 64/76/95 66/79/98 67/80/99
+f 59/81/101 64/76/95 67/80/99
+f 92/126/130 26/140/50 91/141/126
+f 26/140/50 92/126/130 90/123/128
+f 24/122/47 26/140/50 90/123/128
+f 95/127/131 93/129/133 94/142/135
+f 95/127/131 94/142/135 73/143/107
+f 95/127/131 73/143/107 71/144/105
+f 70/133/104 95/127/131 71/144/105
diff --git a/examples/pybullet/gym/pybullet_data/plane_stadium.sdf b/examples/pybullet/gym/pybullet_data/plane_stadium.sdf
index 8d7152860..65e88248a 100644
--- a/examples/pybullet/gym/pybullet_data/plane_stadium.sdf
+++ b/examples/pybullet/gym/pybullet_data/plane_stadium.sdf
@@ -3,7 +3,7 @@
<gravity>0 0 -9.8</gravity>
<model name='floor_obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='floor'>
<inertial>
<mass>0</mass>
diff --git a/examples/pybullet/gym/pybullet_data/stadium.sdf b/examples/pybullet/gym/pybullet_data/stadium.sdf
index 585b4eb16..2e212ab1f 100644
--- a/examples/pybullet/gym/pybullet_data/stadium.sdf
+++ b/examples/pybullet/gym/pybullet_data/stadium.sdf
@@ -3,7 +3,7 @@
<gravity>0 0 -9.8</gravity>
<model name='roboschool/models_outdoor/stadium/part0.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d0'>
<inertial>
<mass>0</mass>
@@ -34,7 +34,7 @@
</model>
<model name='roboschool/models_outdoor/stadium/part1.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d1'>
<inertial>
<mass>0</mass>
@@ -73,7 +73,7 @@
</model>
<model name='part2.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d2'>
<inertial>
<mass>0</mass>
diff --git a/examples/pybullet/gym/pybullet_data/stadium_no_collision.sdf b/examples/pybullet/gym/pybullet_data/stadium_no_collision.sdf
index 5ed0b533a..168119552 100644
--- a/examples/pybullet/gym/pybullet_data/stadium_no_collision.sdf
+++ b/examples/pybullet/gym/pybullet_data/stadium_no_collision.sdf
@@ -3,7 +3,7 @@
<gravity>0 0 -9.8</gravity>
<model name='roboschool/models_outdoor/stadium/part0.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d0'>
<inertial>
<mass>0</mass>
@@ -34,7 +34,7 @@
</model>
<model name='floor_obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='floor'>
<inertial>
<mass>0</mass>
@@ -73,7 +73,7 @@
</model>
<model name='part2.obj'>
<static>1</static>
- <pose frame=''>0 0 0 0 0 0</pose>
+ <pose>0 0 0 0 0 0</pose>
<link name='link_d2'>
<inertial>
<mass>0</mass>
diff --git a/examples/pybullet/gym/pybullet_data/toys/LICENSE.txt b/examples/pybullet/gym/pybullet_data/toys/LICENSE
index 655f41b0f..655f41b0f 100644
--- a/examples/pybullet/gym/pybullet_data/toys/LICENSE.txt
+++ b/examples/pybullet/gym/pybullet_data/toys/LICENSE
diff --git a/examples/pybullet/gym/pybullet_envs/examples/testEnv.py b/examples/pybullet/gym/pybullet_envs/examples/testEnv.py
index 5d30d27af..6c550fe4f 100644
--- a/examples/pybullet/gym/pybullet_envs/examples/testEnv.py
+++ b/examples/pybullet/gym/pybullet_envs/examples/testEnv.py
@@ -13,10 +13,28 @@ def test(args):
count = 0
env = gym.make(args.env)
env.env.configure(args)
+
print("args.render=", args.render)
if (args.render == 1):
env.render(mode="human")
env.reset()
+
+ w, h, vmat,projmat,camup,camfwd,hor,ver,yaw,pitch,dist,target= p.getDebugVisualizerCamera()
+ dist = 0.4
+ yaw = 0
+ p.resetDebugVisualizerCamera(dist,yaw, pitch,target)
+
+ for obindex in range (p.getNumBodies()):
+ obuid = p.getBodyUniqueId(obindex)
+ p.changeDynamics(obuid, -1, linearDamping=0, angularDamping=0)
+ for l in range (p.getNumJoints(obuid)):
+ p.changeDynamics(obuid, l, linearDamping=0, angularDamping=0, jointDamping=0)
+ #if (l==0):
+ # p.setJointMotorControl2(obuid,l,p.POSITION_CONTROL,targetPosition=0)
+ if (l==2):
+ jp,jv,_,_ = p.getJointState(obuid,l)
+ p.resetJointState(obuid,l, jp,0.01 )
+
if (args.resetbenchmark):
while (1):
env.reset()
@@ -26,6 +44,8 @@ def test(args):
print("action space:")
sample = env.action_space.sample()
action = sample * 0.0
+ action = [0,0]#sample * 0.0
+
print("action=")
print(action)
for i in range(args.steps):
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/agents/baseline_controller/dummy_gait_generator.py b/examples/pybullet/gym/pybullet_envs/minitaur/agents/baseline_controller/dummy_gait_generator.py
index 51747904f..69af3189a 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/agents/baseline_controller/dummy_gait_generator.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/agents/baseline_controller/dummy_gait_generator.py
@@ -2,7 +2,6 @@
from __future__ import absolute_import
from __future__ import division
-from __future__ import google_type_annotations
from __future__ import print_function
import copy
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/README.md b/examples/pybullet/gym/pybullet_envs/minitaur/envs/README.md
index bcdb8d0f6..6124264c9 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/README.md
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/README.md
@@ -9,7 +9,6 @@ The following two environments are used in the RSS paper "[Sim-to-Real: Learning
The rest are experimental environments.
## Prerequisites
-Install [TensorFlow](https://www.tensorflow.org/install/)
Install OpenAI gym
```
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py
index 0fbfef36d..81b89f301 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/env_randomizers/minitaur_env_randomizer.py
@@ -56,7 +56,7 @@ class MinitaurEnvRandomizer(env_randomizer_base.EnvRandomizerBase):
leg_masses_upper_bound = np.array(leg_masses) * (1.0 + self._minitaur_leg_mass_err_range[1])
randomized_leg_masses = [
np.random.uniform(leg_masses_lower_bound[i], leg_masses_upper_bound[i])
- for i in xrange(len(leg_masses))
+ for i in range(len(leg_masses))
]
minitaur.SetLegMasses(randomized_leg_masses)
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py
index b6f1c5a3d..2cff24e94 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs/minitaur_logging.py
@@ -18,8 +18,8 @@ os.sys.path.insert(0, parentdir)
import datetime
import os
import time
+import logging
-import tensorflow.compat.v1 as tf
from pybullet_envs.minitaur.envs import minitaur_logging_pb2
NUM_MOTORS = 8
@@ -74,7 +74,7 @@ def update_episode_proto(episode_proto, minitaur, action, step):
"""
max_num_steps = len(episode_proto.state_action)
if step >= max_num_steps:
- tf.logging.warning("{}th step is not recorded in the logging since only {} steps were "
+ logging.warning("{}th step is not recorded in the logging since only {} steps were "
"pre-allocated.".format(step, max_num_steps))
return
step_log = episode_proto.state_action[step]
@@ -119,12 +119,13 @@ class MinitaurLogging(object):
"""
if not self._log_path or not episode_proto.state_action:
return self._log_path
- if not tf.gfile.Exists(self._log_path):
- tf.gfile.MakeDirs(self._log_path)
+ if not os.path.exists(self._log_path):
+ os.mkdir(self._log_path)
ts = time.time()
time_stamp = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d-%H%M%S")
log_path = os.path.join(self._log_path, "minitaur_log_{}".format(time_stamp))
- with tf.gfile.Open(log_path, "w") as f:
+
+ with open(log_path, 'wb') as f:
f.write(episode_proto.SerializeToString())
return log_path
@@ -136,7 +137,7 @@ class MinitaurLogging(object):
Returns:
The minitaur episode proto.
"""
- with tf.gfile.Open(log_path, 'rb') as f:
+ with open(log_path, 'rb') as f:
content = f.read()
episode_proto = minitaur_logging_pb2.MinitaurEpisode()
episode_proto.ParseFromString(content)
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/alternating_legs_openloop.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/alternating_legs_openloop.py
index 85a8d99c2..e59306fdd 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/alternating_legs_openloop.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/alternating_legs_openloop.py
@@ -2,7 +2,6 @@
from __future__ import absolute_import
from __future__ import division
-from __future__ import google_type_annotations
from __future__ import print_function
import math
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/fixed_steptime_wrapper_env.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/fixed_steptime_wrapper_env.py
index c06ffacab..03207c92d 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/fixed_steptime_wrapper_env.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/env_wrappers/fixed_steptime_wrapper_env.py
@@ -3,7 +3,6 @@
from __future__ import absolute_import
from __future__ import division
-from __future__ import google_type_annotations
from __future__ import print_function
import time
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py
index c86c10db4..d791dd18a 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/examples/laikago_pmtg_example.py
@@ -20,7 +20,8 @@ from __future__ import print_function
import os
import gin
-import tensorflow.compat.v1 as tf
+import sys
+
from pybullet_envs.minitaur.envs_v2 import env_loader
import pybullet_data as pd
@@ -81,4 +82,5 @@ def main(argv):
if __name__ == "__main__":
- tf.app.run(main)
+
+ main(sys.argv)
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_run_policy.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_run_policy.py
new file mode 100644
index 000000000..38c33c02a
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_run_policy.py
@@ -0,0 +1,148 @@
+"""
+
+Code to load a policy and generate rollout data. Adapted from https://github.com/berkeleydeeprlcourse.
+Example usage:
+python3 laikago_ars_run_policy.py --expert_policy_file=data/lin_policy_plus_best_10.npz --json_file=data/params.json
+
+"""
+import numpy as np
+import gym
+import time
+import pybullet_envs
+try:
+ import tds_environments
+except:
+ pass
+import json
+from arspb.policies import *
+import time
+import arspb.trained_policies as tp
+import os
+
+
+import os
+import gin
+from pybullet_envs.minitaur.envs_v2 import env_loader
+
+
+import pybullet_data as pd
+
+
+
+def create_laikago_env(args):
+ CONFIG_DIR = pd.getDataPath()+"/configs_v2/"
+ CONFIG_FILES = [
+ os.path.join(CONFIG_DIR, "base/laikago_with_imu.gin"),
+ os.path.join(CONFIG_DIR, "tasks/fwd_task_no_termination.gin"),
+ os.path.join(CONFIG_DIR, "wrappers/pmtg_wrapper.gin"),
+ os.path.join(CONFIG_DIR, "scenes/simple_scene.gin")
+ ]
+
+ #gin.bind_parameter("scene_base.SceneBase.data_root", pd.getDataPath()+"/")
+ for gin_file in CONFIG_FILES:
+ gin.parse_config_file(gin_file)
+ gin.bind_parameter("SimulationParameters.enable_rendering", True)
+ gin.bind_parameter("terminal_conditions.maxstep_terminal_condition.max_step",
+ 10000)
+ env = env_loader.load()
+ return env
+
+
+def main(argv):
+ import argparse
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--expert_policy_file', type=str, default="")
+ parser.add_argument('--nosleep', action='store_true')
+
+ parser.add_argument('--num_rollouts', type=int, default=20,
+ help='Number of expert rollouts')
+ parser.add_argument('--json_file', type=str, default="")
+ parser.add_argument('--run_on_robot', action='store_true')
+ if len(argv):
+ args = parser.parse_args(argv)
+ else:
+ args = parser.parse_args()
+
+ print('loading and building expert policy')
+ if len(args.json_file)==0:
+ args.json_file = tp.getDataPath()+"/"+ args.envname+"/params.json"
+ with open(args.json_file) as f:
+ params = json.load(f)
+ print("params=",params)
+ if len(args.expert_policy_file)==0:
+ args.expert_policy_file=tp.getDataPath()+"/"+args.envname+"/nn_policy_plus.npz"
+ if not os.path.exists(args.expert_policy_file):
+ args.expert_policy_file=tp.getDataPath()+"/"+args.envname+"/lin_policy_plus.npz"
+ data = np.load(args.expert_policy_file, allow_pickle=True)
+
+ print('create Laikago gym environment:')
+ env = create_laikago_env(args)
+
+
+ lst = data.files
+ weights = data[lst[0]][0]
+ mu = data[lst[0]][1]
+ print("mu=",mu)
+ std = data[lst[0]][2]
+ print("std=",std)
+
+ ob_dim = env.observation_space.shape[0]
+ ac_dim = env.action_space.shape[0]
+ ac_lb = env.action_space.low
+ ac_ub = env.action_space.high
+
+ policy_params={'type': params["policy_type"],
+ 'ob_filter':params['filter'],
+ 'ob_dim':ob_dim,
+ 'ac_dim':ac_dim,
+ 'action_lower_bound' : ac_lb,
+ 'action_upper_bound' : ac_ub,
+ }
+ policy_params['weights'] = weights
+ policy_params['observation_filter_mean'] = mu
+ policy_params['observation_filter_std'] = std
+ if params["policy_type"]=="nn":
+ print("FullyConnectedNeuralNetworkPolicy")
+ policy_sizes_string = params['policy_network_size_list'].split(',')
+ print("policy_sizes_string=",policy_sizes_string)
+ policy_sizes_list = [int(item) for item in policy_sizes_string]
+ print("policy_sizes_list=",policy_sizes_list)
+ policy_params['policy_network_size'] = policy_sizes_list
+ policy = FullyConnectedNeuralNetworkPolicy(policy_params, update_filter=False)
+ else:
+ print("LinearPolicy2")
+ policy = LinearPolicy2(policy_params, update_filter=False)
+ policy.get_weights()
+
+ returns = []
+ observations = []
+ actions = []
+ for i in range(args.num_rollouts):
+ print('iter', i)
+ obs = env.reset()
+ done = False
+ totalr = 0.
+ steps = 0
+ while not done:
+ action = policy.act(obs)
+ observations.append(obs)
+ actions.append(action)
+
+ #time.sleep(1)
+ obs, r, done, _ = env.step(action)
+ totalr += r
+ steps += 1
+
+ #if steps % 100 == 0: print("%i/%i"%(steps, env.spec.timestep_limit))
+ #if steps >= env.spec.timestep_limit:
+ # break
+ #print("steps=",steps)
+ returns.append(totalr)
+
+ print('returns', returns)
+ print('mean return', np.mean(returns))
+ print('std of return', np.std(returns))
+
+if __name__ == '__main__':
+ import sys
+ main(sys.argv[1:])
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_train.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_train.py
new file mode 100644
index 000000000..f04404f3e
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/laikago_ars_train.py
@@ -0,0 +1,521 @@
+'''
+Parallel implementation of the Augmented Random Search method.
+Horia Mania --- hmania@berkeley.edu
+Aurelia Guy
+Benjamin Recht
+'''
+
+import parser
+import time
+import os
+import numpy as np
+import gym
+
+import arspb.logz as logz
+import ray
+import arspb.utils as utils
+import arspb.optimizers as optimizers
+from arspb.policies import *
+import socket
+from arspb.shared_noise import *
+
+##############################
+#create an envs_v2 laikago env
+
+import os
+
+import gin
+from pybullet_envs.minitaur.envs_v2 import env_loader
+import pybullet_data as pd
+
+
+
+def create_laikago_env():
+ CONFIG_DIR = pd.getDataPath()+"/configs_v2/"
+ CONFIG_FILES = [
+ os.path.join(CONFIG_DIR, "base/laikago_with_imu.gin"),
+ os.path.join(CONFIG_DIR, "tasks/fwd_task_no_termination.gin"),
+ os.path.join(CONFIG_DIR, "wrappers/pmtg_wrapper.gin"),
+ os.path.join(CONFIG_DIR, "scenes/simple_scene.gin")
+ ]
+
+ #gin.bind_parameter("scene_base.SceneBase.data_root", pd.getDataPath()+"/")
+ for gin_file in CONFIG_FILES:
+ gin.parse_config_file(gin_file)
+ gin.bind_parameter("SimulationParameters.enable_rendering", False)
+ gin.bind_parameter("terminal_conditions.maxstep_terminal_condition.max_step",
+ 10000)
+ env = env_loader.load()
+ return env
+
+
+##############################
+
+@ray.remote
+class Worker(object):
+ """
+ Object class for parallel rollout generation.
+ """
+
+ def __init__(self, env_seed,
+ env_name='',
+ policy_params = None,
+ deltas=None,
+ rollout_length=1000,
+ delta_std=0.01):
+
+ # initialize OpenAI environment for each worker
+ try:
+ import pybullet_envs
+ except:
+ pass
+ try:
+ import tds_environments
+ except:
+ pass
+
+ self.env = create_laikago_env()
+ self.env.seed(env_seed)
+
+ # each worker gets access to the shared noise table
+ # with independent random streams for sampling
+ # from the shared noise table.
+ self.deltas = SharedNoiseTable(deltas, env_seed + 7)
+ self.policy_params = policy_params
+ if policy_params['type'] == 'linear':
+ print("LinearPolicy2")
+ self.policy = LinearPolicy2(policy_params)
+ elif policy_params['type'] == 'nn':
+ print("FullyConnectedNeuralNetworkPolicy")
+ self.policy = FullyConnectedNeuralNetworkPolicy(policy_params)
+ else:
+ raise NotImplementedError
+
+ self.delta_std = delta_std
+ self.rollout_length = rollout_length
+
+
+ def get_weights_plus_stats(self):
+ """
+ Get current policy weights and current statistics of past states.
+ """
+ #assert self.policy_params['type'] == 'linear'
+ return self.policy.get_weights_plus_stats()
+
+
+ def rollout(self, shift = 0., rollout_length = None):
+ """
+ Performs one rollout of maximum length rollout_length.
+ At each time-step it substracts shift from the reward.
+ """
+
+ if rollout_length is None:
+ rollout_length = self.rollout_length
+
+ total_reward = 0.
+ steps = 0
+
+ ob = self.env.reset()
+ for i in range(rollout_length):
+ action = self.policy.act(ob)
+ ob, reward, done, _ = self.env.step(action)
+ steps += 1
+ total_reward += (reward - shift)
+ if done:
+ break
+
+ return total_reward, steps
+
+ def do_rollouts(self, w_policy, num_rollouts = 1, shift = 1, evaluate = False):
+ """
+ Generate multiple rollouts with a policy parametrized by w_policy.
+ """
+
+ rollout_rewards, deltas_idx = [], []
+ steps = 0
+
+ for i in range(num_rollouts):
+
+ if evaluate:
+ self.policy.update_weights(w_policy)
+ deltas_idx.append(-1)
+
+ # set to false so that evaluation rollouts are not used for updating state statistics
+ self.policy.update_filter = False
+
+ # for evaluation we do not shift the rewards (shift = 0) and we use the
+ # default rollout length (1000 for the MuJoCo locomotion tasks)
+ reward, r_steps = self.rollout(shift = 0., rollout_length = self.rollout_length)
+ rollout_rewards.append(reward)
+
+ else:
+ idx, delta = self.deltas.get_delta(w_policy.size)
+
+ delta = (self.delta_std * delta).reshape(w_policy.shape)
+ deltas_idx.append(idx)
+
+ # set to true so that state statistics are updated
+ self.policy.update_filter = True
+
+ # compute reward and number of timesteps used for positive perturbation rollout
+ self.policy.update_weights(w_policy + delta)
+ pos_reward, pos_steps = self.rollout(shift = shift)
+
+ # compute reward and number of timesteps used for negative pertubation rollout
+ self.policy.update_weights(w_policy - delta)
+ neg_reward, neg_steps = self.rollout(shift = shift)
+ steps += pos_steps + neg_steps
+
+ rollout_rewards.append([pos_reward, neg_reward])
+
+ return {'deltas_idx': deltas_idx, 'rollout_rewards': rollout_rewards, "steps" : steps}
+
+ def stats_increment(self):
+ self.policy.observation_filter.stats_increment()
+ return
+
+ def get_weights(self):
+ return self.policy.get_weights()
+
+ def get_filter(self):
+ return self.policy.observation_filter
+
+ def sync_filter(self, other):
+ self.policy.observation_filter.sync(other)
+ return
+
+
+class ARSLearner(object):
+ """
+ Object class implementing the ARS algorithm.
+ """
+
+ def __init__(self, env_name='HalfCheetah-v1',
+ policy_params=None,
+ num_workers=32,
+ num_deltas=320,
+ deltas_used=320,
+ delta_std=0.01,
+ logdir=None,
+ rollout_length=4000,
+ step_size=0.01,
+ shift='constant zero',
+ params=None,
+ seed=123):
+
+ logz.configure_output_dir(logdir)
+ logz.save_params(params)
+ try:
+ import pybullet_envs
+ except:
+ pass
+ try:
+ import tds_environments
+ except:
+ pass
+
+ env = create_laikago_env()
+
+ self.timesteps = 0
+ self.action_size = env.action_space.shape[0]
+ self.ob_size = env.observation_space.shape[0]
+ self.num_deltas = num_deltas
+ self.deltas_used = deltas_used
+ self.rollout_length = rollout_length
+ self.step_size = step_size
+ self.delta_std = delta_std
+ self.logdir = logdir
+ self.shift = shift
+ self.params = params
+ self.max_past_avg_reward = float('-inf')
+ self.num_episodes_used = float('inf')
+
+
+ # create shared table for storing noise
+ print("Creating deltas table.")
+ deltas_id = create_shared_noise.remote()
+ self.deltas = SharedNoiseTable(ray.get(deltas_id), seed = seed + 3)
+ print('Created deltas table.')
+
+ # initialize workers with different random seeds
+ print('Initializing workers.')
+ self.num_workers = num_workers
+ self.workers = [Worker.remote(seed + 7 * i,
+ env_name=env_name,
+ policy_params=policy_params,
+ deltas=deltas_id,
+ rollout_length=rollout_length,
+ delta_std=delta_std) for i in range(num_workers)]
+
+
+ # initialize policy
+ if policy_params['type'] == 'linear':
+ print("LinearPolicy2")
+ self.policy = LinearPolicy2(policy_params)
+ self.w_policy = self.policy.get_weights()
+ elif policy_params['type'] == 'nn':
+ print("FullyConnectedNeuralNetworkPolicy")
+ self.policy = FullyConnectedNeuralNetworkPolicy(policy_params)
+ self.w_policy = self.policy.get_weights()
+ else:
+ raise NotImplementedError
+
+ # initialize optimization algorithm
+ self.optimizer = optimizers.SGD(self.w_policy, self.step_size)
+ print("Initialization of ARS complete.")
+
+ def aggregate_rollouts(self, num_rollouts = None, evaluate = False):
+ """
+ Aggregate update step from rollouts generated in parallel.
+ """
+
+ if num_rollouts is None:
+ num_deltas = self.num_deltas
+ else:
+ num_deltas = num_rollouts
+
+ # put policy weights in the object store
+ policy_id = ray.put(self.w_policy)
+
+ t1 = time.time()
+ num_rollouts = int(num_deltas / self.num_workers)
+
+ # parallel generation of rollouts
+ rollout_ids_one = [worker.do_rollouts.remote(policy_id,
+ num_rollouts = num_rollouts,
+ shift = self.shift,
+ evaluate=evaluate) for worker in self.workers]
+
+ rollout_ids_two = [worker.do_rollouts.remote(policy_id,
+ num_rollouts = 1,
+ shift = self.shift,
+ evaluate=evaluate) for worker in self.workers[:(num_deltas % self.num_workers)]]
+
+ # gather results
+ results_one = ray.get(rollout_ids_one)
+ results_two = ray.get(rollout_ids_two)
+
+ rollout_rewards, deltas_idx = [], []
+
+ for result in results_one:
+ if not evaluate:
+ self.timesteps += result["steps"]
+ deltas_idx += result['deltas_idx']
+ rollout_rewards += result['rollout_rewards']
+
+ for result in results_two:
+ if not evaluate:
+ self.timesteps += result["steps"]
+ deltas_idx += result['deltas_idx']
+ rollout_rewards += result['rollout_rewards']
+
+ deltas_idx = np.array(deltas_idx)
+ rollout_rewards = np.array(rollout_rewards, dtype = np.float64)
+
+ print('Maximum reward of collected rollouts:', rollout_rewards.max())
+ t2 = time.time()
+
+ print('Time to generate rollouts:', t2 - t1)
+
+ if evaluate:
+ return rollout_rewards
+
+ # select top performing directions if deltas_used < num_deltas
+ max_rewards = np.max(rollout_rewards, axis = 1)
+ if self.deltas_used > self.num_deltas:
+ self.deltas_used = self.num_deltas
+
+ idx = np.arange(max_rewards.size)[max_rewards >= np.percentile(max_rewards, 100*(1 - (self.deltas_used / self.num_deltas)))]
+ deltas_idx = deltas_idx[idx]
+ rollout_rewards = rollout_rewards[idx,:]
+
+ # normalize rewards by their standard deviation
+ np_std = np.std(rollout_rewards)
+ if np_std>1e-6:
+ rollout_rewards /= np_std
+
+ t1 = time.time()
+ # aggregate rollouts to form g_hat, the gradient used to compute SGD step
+ g_hat, count = utils.batched_weighted_sum(rollout_rewards[:,0] - rollout_rewards[:,1],
+ (self.deltas.get(idx, self.w_policy.size)
+ for idx in deltas_idx),
+ batch_size = 500)
+ g_hat /= deltas_idx.size
+ t2 = time.time()
+ print('time to aggregate rollouts', t2 - t1)
+ return g_hat
+
+
+ def train_step(self):
+ """
+ Perform one update step of the policy weights.
+ """
+
+ g_hat = self.aggregate_rollouts()
+ print("Euclidean norm of update step:", np.linalg.norm(g_hat))
+ self.w_policy -= self.optimizer._compute_step(g_hat).reshape(self.w_policy.shape)
+ return
+
+ def train(self, num_iter):
+
+ start = time.time()
+ best_mean_rewards = -1e30
+
+ for i in range(num_iter):
+
+ t1 = time.time()
+ self.train_step()
+ t2 = time.time()
+ print('total time of one step', t2 - t1)
+ print('iter ', i,' done')
+
+ # record statistics every 10 iterations
+ if ((i + 1) % 10 == 0):
+
+ rewards = self.aggregate_rollouts(num_rollouts = 100, evaluate = True)
+ w = ray.get(self.workers[0].get_weights_plus_stats.remote())
+ np.savez(self.logdir + "/lin_policy_plus_latest", w)
+
+ mean_rewards = np.mean(rewards)
+ if (mean_rewards > best_mean_rewards):
+ best_mean_rewards = mean_rewards
+ np.savez(self.logdir + "/lin_policy_plus_best_"+str(i+1), w)
+
+
+ print(sorted(self.params.items()))
+ logz.log_tabular("Time", time.time() - start)
+ logz.log_tabular("Iteration", i + 1)
+ logz.log_tabular("AverageReward", np.mean(rewards))
+ logz.log_tabular("StdRewards", np.std(rewards))
+ logz.log_tabular("MaxRewardRollout", np.max(rewards))
+ logz.log_tabular("MinRewardRollout", np.min(rewards))
+ logz.log_tabular("timesteps", self.timesteps)
+ logz.dump_tabular()
+
+ t1 = time.time()
+ # get statistics from all workers
+ for j in range(self.num_workers):
+ self.policy.observation_filter.update(ray.get(self.workers[j].get_filter.remote()))
+ self.policy.observation_filter.stats_increment()
+
+ # make sure master filter buffer is clear
+ self.policy.observation_filter.clear_buffer()
+ # sync all workers
+ filter_id = ray.put(self.policy.observation_filter)
+ setting_filters_ids = [worker.sync_filter.remote(filter_id) for worker in self.workers]
+ # waiting for sync of all workers
+ ray.get(setting_filters_ids)
+
+ increment_filters_ids = [worker.stats_increment.remote() for worker in self.workers]
+ # waiting for increment of all workers
+ ray.get(increment_filters_ids)
+ t2 = time.time()
+ print('Time to sync statistics:', t2 - t1)
+
+ return
+
+def run_ars(params):
+ dir_path = params['dir_path']
+
+ if not(os.path.exists(dir_path)):
+ os.makedirs(dir_path)
+ logdir = dir_path
+ if not(os.path.exists(logdir)):
+ os.makedirs(logdir)
+
+ try:
+ import pybullet_envs
+ except:
+ pass
+ try:
+ import tds_environments
+ except:
+ pass
+ env = create_laikago_env()
+ ob_dim = env.observation_space.shape[0]
+ ac_dim = env.action_space.shape[0]
+ ac_lb = env.action_space.low
+ ac_ub = env.action_space.high
+
+ # set policy parameters. Possible filters: 'MeanStdFilter' for v2, 'NoFilter' for v1.
+ if params["policy_type"]=="nn":
+ policy_sizes_string = params['policy_network_size_list'].split(',')
+ print("policy_sizes_string=",policy_sizes_string)
+ policy_sizes_list = [int(item) for item in policy_sizes_string]
+ print("policy_sizes_list=",policy_sizes_list)
+ activation = params['activation']
+ policy_params={'type': params["policy_type"],
+ 'ob_filter':params['filter'],
+ 'policy_network_size' : policy_sizes_list,
+ 'ob_dim':ob_dim,
+ 'ac_dim':ac_dim,
+ 'activation' : activation,
+ 'action_lower_bound' : ac_lb,
+ 'action_upper_bound' : ac_ub,
+ }
+ else:
+ del params['policy_network_size_list']
+ del params['activation']
+ policy_params={'type': params["policy_type"],
+ 'ob_filter':params['filter'],
+ 'ob_dim':ob_dim,
+ 'ac_dim':ac_dim,
+ 'action_lower_bound' : ac_lb,
+ 'action_upper_bound' : ac_ub,
+ }
+
+
+ ARS = ARSLearner(env_name=params['env_name'],
+ policy_params=policy_params,
+ num_workers=params['n_workers'],
+ num_deltas=params['n_directions'],
+ deltas_used=params['deltas_used'],
+ step_size=params['step_size'],
+ delta_std=params['delta_std'],
+ logdir=logdir,
+ rollout_length=params['rollout_length'],
+ shift=params['shift'],
+ params=params,
+ seed = params['seed'])
+
+ ARS.train(params['n_iter'])
+
+ return
+
+
+if __name__ == '__main__':
+ import argparse
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--env_name', type=str, default='InvertedPendulumSwingupBulletEnv-v0')
+ parser.add_argument('--n_iter', '-n', type=int, default=1000)
+ parser.add_argument('--n_directions', '-nd', type=int, default=16)
+ parser.add_argument('--deltas_used', '-du', type=int, default=16)
+ parser.add_argument('--step_size', '-s', type=float, default=0.03)
+ parser.add_argument('--delta_std', '-std', type=float, default=.03)
+ parser.add_argument('--n_workers', '-e', type=int, default=18)
+ parser.add_argument('--rollout_length', '-r', type=int, default=2000)
+
+ # for Swimmer-v1 and HalfCheetah-v1 use shift = 0
+ # for Hopper-v1, Walker2d-v1, and Ant-v1 use shift = 1
+ # for Humanoid-v1 used shift = 5
+ parser.add_argument('--shift', type=float, default=0)
+ parser.add_argument('--seed', type=int, default=37)
+ parser.add_argument('--policy_type', type=str, help="Policy type, linear or nn (neural network)", default= 'linear')
+ parser.add_argument('--dir_path', type=str, default='data')
+
+ # for ARS V1 use filter = 'NoFilter'
+ parser.add_argument('--filter', type=str, default='MeanStdFilter')
+ parser.add_argument('--activation', type=str, help="Neural network policy activation function, tanh or clip", default="tanh")
+ parser.add_argument('--policy_network_size', action='store', dest='policy_network_size_list',type=str, nargs='*', default='64,64')
+
+
+
+
+
+ local_ip = socket.gethostbyname(socket.gethostname())
+ ray.init(address= local_ip + ':6379')
+
+ args = parser.parse_args()
+ params = vars(args)
+ run_ars(params)
+
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py
index fc53f02e7..343b58db0 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_config_test.py
@@ -6,12 +6,12 @@ from __future__ import print_function
import gin
from pybullet_envs.minitaur.envs_v2 import locomotion_gym_config
-import tensorflow.compat.v1 as tf
+import unittest
from absl.testing import parameterized
-class LocomotionGymConfigTest(tf.test.TestCase, parameterized.TestCase):
+class LocomotionGymConfigTest(unittest.TestCase):
def testSimulationParametersFromGinString(self):
config_text = (
@@ -72,4 +72,4 @@ class LocomotionGymConfigTest(tf.test.TestCase, parameterized.TestCase):
if __name__ == '__main__':
- tf.test.main()
+ unittest.main()
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py
index 51f3c9ae6..1c9ea0e9b 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/locomotion_gym_env_test.py
@@ -10,7 +10,7 @@ import random
import gin
import mock
import numpy as np
-import tensorflow.compat.v1 as tf
+import unittest
from absl.testing import parameterized
from pybullet_envs.minitaur.envs_v2 import locomotion_gym_env
@@ -56,7 +56,7 @@ class TestTask(task_interface.Task):
return False
-class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
+class LocomotionGymEnvTest(unittest.TestCase):
def setUp(self):
super().setUp()
@@ -68,7 +68,7 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
env = locomotion_gym_env.LocomotionGymEnv()
self.assertIsInstance(env.robot, minitaur_v2.Minitaur)
# The robot will stand on the ground.
- self.assertNear(env.robot.base_position[2], 0.25, 5e-2)
+ self.assertAlmostEqual(env.robot.base_position[2], 0.25, 1)
def test_reset_gym(self):
gin.parse_config_file(_CONFIG_FILE)
@@ -80,8 +80,8 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
action_dim)
observations = env_utils.flatten_observations(observations)
self.assertEqual(observations.size, 12)
- self.assertNear(observations[0], 0, 1e-2)
- self.assertNear(observations[4], desired_init_motor_angle, 2e-1)
+ self.assertAlmostEqual(observations[0], 0, 1)
+ self.assertAlmostEqual(observations[4], desired_init_motor_angle, 0)
def test_step_gym(self):
gin.parse_config_file(_CONFIG_FILE)
@@ -98,8 +98,8 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
self.assertFalse(done)
self.assertEqual(reward, steps)
self.assertEqual(observations.size, 12)
- self.assertNear(observations[0], 0, 1e-2)
- self.assertNear(observations[4], desired_motor_angle, 2e-1)
+ self.assertAlmostEqual(observations[0], 0, 1)
+ self.assertAlmostEqual(observations[4], desired_motor_angle, 1)
np.testing.assert_allclose(env._last_action,
[desired_motor_angle] * action_dim, 2e-1)
@@ -126,7 +126,7 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
env = locomotion_gym_env.LocomotionGymEnv(task=None, scene=None)
# The robot will free fall.
- self.assertNear(env.robot.base_position[2], 0.15, 5e-2)
+ self.assertAlmostEqual(env.robot.base_position[2], 0.15, 1)
def test_seed_draw_with_np(self):
gin.parse_config_file(_CONFIG_FILE)
@@ -150,12 +150,11 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
action_dim = len(env.action_space.high)
observations = env.reset(initial_motor_angles=[desired_init_motor_angle] *
action_dim)
- self.assertLen(observations, 2)
- self.assertLen(observations['IMU'], 4)
- self.assertNear(observations['IMU'][0], 0, 1e-2)
- self.assertLen(observations['MotorAngle'], 8)
- self.assertNear(observations['MotorAngle'][0], desired_init_motor_angle,
- 2e-1)
+ self.assertEqual(len(observations), 2)
+ self.assertEqual(len(observations['IMU']), 4)
+ self.assertAlmostEqual(observations['IMU'][0], 0, 2)
+ self.assertEqual(len(observations['MotorAngle']), 8)
+ self.assertAlmostEqual(observations['MotorAngle'][0], desired_init_motor_angle,0)
@@ -171,7 +170,7 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
])
env = locomotion_gym_env.LocomotionGymEnv()
- self.assertLen(env.scene.dynamic_objects, 2)
+ self.assertEqual(len(env.scene.dynamic_objects), 2)
for obj in env.scene.dynamic_objects:
self.assertIsInstance(obj, autonomous_object.AutonomousObject)
@@ -238,4 +237,4 @@ class LocomotionGymEnvTest(tf.test.TestCase, parameterized.TestCase):
if __name__ == '__main__':
- tf.test.main()
+ unittest.main()
diff --git a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py
index f82283bf3..5ae427a43 100644
--- a/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py
+++ b/examples/pybullet/gym/pybullet_envs/minitaur/envs_v2/utilities/env_utils.py
@@ -8,8 +8,13 @@ import collections
import gin
from gym import spaces
import numpy as np
+import traceback
+import logging
-import tensorflow.compat.v1 as tf
+try:
+ import tensorflow.compat.v1 as tf
+except Exception as e:
+ pass # logging.warning(traceback.format_exc())
diff --git a/examples/pybullet/gym/pybullet_envs/stable_baselines/enjoy.py b/examples/pybullet/gym/pybullet_envs/stable_baselines/enjoy.py
index 6c429abf7..d33daabe0 100644
--- a/examples/pybullet/gym/pybullet_envs/stable_baselines/enjoy.py
+++ b/examples/pybullet/gym/pybullet_envs/stable_baselines/enjoy.py
@@ -1,56 +1,72 @@
-# Code adapted from https://github.com/araffin/rl-baselines-zoo
-# it requires stable-baselines to be installed
-# Colab Notebook: https://colab.research.google.com/drive/1nZkHO4QTYfAksm9ZTaZ5vXyC7szZxC3F
+# Code adapted from https://github.com/DLR-RM/rl-baselines3-zoo
+# it requires stable-baselines3 to be installed
+# Colab Notebook: https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/pybullet.ipynb
# You can run it using: python -m pybullet_envs.stable_baselines.enjoy --algo td3 --env HalfCheetahBulletEnv-v0
# Author: Antonin RAFFIN
# MIT License
import os
import time
import argparse
-import multiprocessing
import gym
import numpy as np
import pybullet_envs
-from stable_baselines import SAC, TD3
-from pybullet_envs.stable_baselines.utils import TimeFeatureWrapper
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser("Enjoy an RL agent trained using Stable Baselines")
- parser.add_argument('--algo', help='RL Algorithm (Soft Actor-Critic by default)', default='sac',
- type=str, required=False, choices=['sac', 'td3'])
- parser.add_argument('--env', type=str, default='HalfCheetahBulletEnv-v0', help='environment ID')
- parser.add_argument('-n', '--n-episodes', help='Number of episodes', default=5,
- type=int)
- parser.add_argument('--no-render', action='store_true', default=False,
- help='Do not render the environment')
- parser.add_argument('--load-best', action='store_true', default=False,
- help='Load best model instead of last model if available')
+from stable_baselines3 import SAC, TD3
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ "Enjoy an RL agent trained using Stable Baselines3"
+ )
+ parser.add_argument(
+ "--algo",
+ help="RL Algorithm (Soft Actor-Critic by default)",
+ default="sac",
+ type=str,
+ required=False,
+ choices=["sac", "td3"],
+ )
+ parser.add_argument(
+ "--env", type=str, default="HalfCheetahBulletEnv-v0", help="environment ID"
+ )
+ parser.add_argument(
+ "-n", "--n-episodes", help="Number of episodes", default=5, type=int
+ )
+ parser.add_argument(
+ "--no-render",
+ action="store_true",
+ default=False,
+ help="Do not render the environment",
+ )
+ parser.add_argument(
+ "--load-best",
+ action="store_true",
+ default=False,
+ help="Load best model instead of last model if available",
+ )
args = parser.parse_args()
env_id = args.env
# Create an env similar to the training env
- env = TimeFeatureWrapper(gym.make(env_id))
+ env = gym.make(env_id)
- # Use SubprocVecEnv for rendering
+ # Enable GUI
if not args.no_render:
- env.render(mode='human')
+ env.render(mode="human")
algo = {
- 'sac': SAC,
- 'td3': TD3
+ "sac": SAC,
+ "td3": TD3,
}[args.algo]
# We assume that the saved model is in the same folder
- save_path = '{}_{}.zip'.format(args.algo, env_id)
+ save_path = f"{args.algo}_{env_id}.zip"
if not os.path.isfile(save_path) or args.load_best:
print("Loading best model")
# Try to load best model
- save_path = os.path.join('{}_{}'.format(args.algo, env_id), 'best_model.zip')
-
+ save_path = os.path.join(f"{args.algo}_{env_id}", "best_model.zip")
# Load the saved model
model = algo.load(save_path, env=env)
@@ -70,12 +86,14 @@ if __name__ == '__main__':
episode_length += 1
if not args.no_render:
- env.render(mode='human')
- dt = 1. / 240.
+ env.render(mode="human")
+ dt = 1.0 / 240.0
time.sleep(dt)
episode_rewards.append(episode_reward)
episode_lengths.append(episode_length)
- print("Episode {} reward={}, length={}".format(len(episode_rewards), episode_reward, episode_length))
+ print(
+ f"Episode {len(episode_rewards)} reward={episode_reward}, length={episode_length}"
+ )
mean_reward = np.mean(episode_rewards)
std_reward = np.std(episode_rewards)
@@ -83,10 +101,10 @@ if __name__ == '__main__':
mean_len, std_len = np.mean(episode_lengths), np.std(episode_lengths)
print("==== Results ====")
- print("Episode_reward={:.2f} +/- {:.2f}".format(mean_reward, std_reward))
- print("Episode_length={:.2f} +/- {:.2f}".format(mean_len, std_len))
+ print(f"Episode_reward={mean_reward:.2f} +/- {std_reward:.2f}")
+ print(f"Episode_length={mean_len:.2f} +/- {std_len:.2f}")
except KeyboardInterrupt:
pass
# Close process
- env.close() \ No newline at end of file
+ env.close()
diff --git a/examples/pybullet/gym/pybullet_envs/stable_baselines/train.py b/examples/pybullet/gym/pybullet_envs/stable_baselines/train.py
index 260cbbf9d..1eacc59b4 100644
--- a/examples/pybullet/gym/pybullet_envs/stable_baselines/train.py
+++ b/examples/pybullet/gym/pybullet_envs/stable_baselines/train.py
@@ -1,74 +1,105 @@
-# Code adapted from https://github.com/araffin/rl-baselines-zoo
-# it requires stable-baselines to be installed
-# Colab Notebook: https://colab.research.google.com/drive/1nZkHO4QTYfAksm9ZTaZ5vXyC7szZxC3F
+# Code adapted from https://github.com/DLR-RM/rl-baselines3-zoo
+# it requires stable-baselines3 to be installed
+# Colab Notebook: https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/pybullet.ipynb
# You can run it using: python -m pybullet_envs.stable_baselines.train --algo td3 --env HalfCheetahBulletEnv-v0
# Author: Antonin RAFFIN
# MIT License
import argparse
-import pybullet_envs
+import pybullet_envs # register pybullet envs
import gym
import numpy as np
-from stable_baselines import SAC, TD3
-from stable_baselines.common.noise import NormalActionNoise
-from stable_baselines.common.callbacks import EvalCallback, CheckpointCallback
-from stable_baselines.common.vec_env import DummyVecEnv
-
-from pybullet_envs.stable_baselines.utils import TimeFeatureWrapper
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser("Train an RL agent using Stable Baselines")
- parser.add_argument('--algo', help='RL Algorithm (Soft Actor-Critic by default)', default='sac',
- type=str, required=False, choices=['sac', 'td3'])
- parser.add_argument('--env', type=str, default='HalfCheetahBulletEnv-v0', help='environment ID')
- parser.add_argument('-n', '--n-timesteps', help='Number of training timesteps', default=int(1e6),
- type=int)
- parser.add_argument('--save-freq', help='Save the model every n steps (if negative, no checkpoint)',
- default=-1, type=int)
+from stable_baselines3 import SAC, TD3
+from stable_baselines3.common.noise import NormalActionNoise
+from stable_baselines3.common.callbacks import EvalCallback, CheckpointCallback
+from stable_baselines3.common.monitor import Monitor
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser("Train an RL agent using Stable Baselines3")
+ parser.add_argument(
+ "--algo",
+ help="RL Algorithm (Soft Actor-Critic by default)",
+ default="sac",
+ type=str,
+ required=False,
+ choices=["sac", "td3"],
+ )
+ parser.add_argument(
+ "--env", type=str, default="HalfCheetahBulletEnv-v0", help="environment ID"
+ )
+ parser.add_argument(
+ "-n",
+ "--n-timesteps",
+ help="Number of training timesteps",
+ default=int(1e6),
+ type=int,
+ )
+ parser.add_argument(
+ "--save-freq",
+ help="Save the model every n steps (if negative, no checkpoint)",
+ default=-1,
+ type=int,
+ )
args = parser.parse_args()
env_id = args.env
n_timesteps = args.n_timesteps
- save_path = '{}_{}'.format(args.algo, env_id)
+ save_path = f"{args.algo}_{env_id}"
# Instantiate and wrap the environment
- env = TimeFeatureWrapper(gym.make(env_id))
+ env = gym.make(env_id)
# Create the evaluation environment and callbacks
- eval_env = DummyVecEnv([lambda: TimeFeatureWrapper(gym.make(env_id))])
+ eval_env = Monitor(gym.make(env_id))
callbacks = [EvalCallback(eval_env, best_model_save_path=save_path)]
# Save a checkpoint every n steps
if args.save_freq > 0:
- callbacks.append(CheckpointCallback(save_freq=args.save_freq, save_path=save_path,
- name_prefix='rl_model'))
+ callbacks.append(
+ CheckpointCallback(
+ save_freq=args.save_freq, save_path=save_path, name_prefix="rl_model"
+ )
+ )
algo = {
- 'sac': SAC,
- 'td3': TD3
+ "sac": SAC,
+ "td3": TD3,
}[args.algo]
n_actions = env.action_space.shape[0]
- # Tuned hyperparameters from https://github.com/araffin/rl-baselines-zoo
+ # Tuned hyperparameters from https://github.com/DLR-RM/rl-baselines3-zoo
hyperparams = {
- 'sac': dict(batch_size=256, gamma=0.98, policy_kwargs=dict(layers=[256, 256]),
- learning_starts=10000, buffer_size=int(2e5), tau=0.01),
-
- 'td3': dict(batch_size=100, policy_kwargs=dict(layers=[400, 300]),
- learning_rate=1e-3, learning_starts=10000, buffer_size=int(1e6),
- train_freq=1000, gradient_steps=1000,
- action_noise=NormalActionNoise(mean=np.zeros(n_actions), sigma=0.1 * np.ones(n_actions)))
+ "sac": dict(
+ batch_size=256,
+ gamma=0.98,
+ policy_kwargs=dict(net_arch=[256, 256]),
+ learning_starts=10000,
+ buffer_size=int(3e5),
+ tau=0.01,
+ ),
+ "td3": dict(
+ batch_size=100,
+ policy_kwargs=dict(net_arch=[400, 300]),
+ learning_rate=1e-3,
+ learning_starts=10000,
+ buffer_size=int(1e6),
+ train_freq=1,
+ gradient_steps=1,
+ action_noise=NormalActionNoise(
+ mean=np.zeros(n_actions), sigma=0.1 * np.ones(n_actions)
+ ),
+ ),
}[args.algo]
- model = algo('MlpPolicy', env, verbose=1, **hyperparams)
+ model = algo("MlpPolicy", env, verbose=1, **hyperparams)
try:
model.learn(n_timesteps, callback=callbacks)
except KeyboardInterrupt:
pass
- print("Saving to {}.zip".format(save_path))
+ print(f"Saving to {save_path}.zip")
model.save(save_path)
diff --git a/examples/pybullet/gym/pybullet_envs/stable_baselines/utils.py b/examples/pybullet/gym/pybullet_envs/stable_baselines/utils.py
deleted file mode 100644
index fc64da7e7..000000000
--- a/examples/pybullet/gym/pybullet_envs/stable_baselines/utils.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Code adapted from https://github.com/araffin/rl-baselines-zoo
-# it requires stable-baselines to be installed
-# Author: Antonin RAFFIN
-# MIT License
-import gym
-import numpy as np
-from gym.wrappers import TimeLimit
-
-
-class TimeFeatureWrapper(gym.Wrapper):
- """
- Add remaining time to observation space for fixed length episodes.
- See https://arxiv.org/abs/1712.00378 and https://github.com/aravindr93/mjrl/issues/13.
-
- :param env: (gym.Env)
- :param max_steps: (int) Max number of steps of an episode
- if it is not wrapped in a TimeLimit object.
- :param test_mode: (bool) In test mode, the time feature is constant,
- equal to zero. This allow to check that the agent did not overfit this feature,
- learning a deterministic pre-defined sequence of actions.
- """
- def __init__(self, env, max_steps=1000, test_mode=False):
- assert isinstance(env.observation_space, gym.spaces.Box)
- # Add a time feature to the observation
- low, high = env.observation_space.low, env.observation_space.high
- low, high = np.concatenate((low, [0])), np.concatenate((high, [1.]))
- env.observation_space = gym.spaces.Box(low=low, high=high, dtype=np.float32)
-
- super(TimeFeatureWrapper, self).__init__(env)
-
- if isinstance(env, TimeLimit):
- self._max_steps = env._max_episode_steps
- else:
- self._max_steps = max_steps
- self._current_step = 0
- self._test_mode = test_mode
-
- def reset(self):
- self._current_step = 0
- return self._get_obs(self.env.reset())
-
- def step(self, action):
- self._current_step += 1
- obs, reward, done, info = self.env.step(action)
- return self._get_obs(obs), reward, done, info
-
- def _get_obs(self, obs):
- """
- Concatenate the time feature to the current observation.
-
- :param obs: (np.ndarray)
- :return: (np.ndarray)
- """
- # Remaining time is more general
- time_feature = 1 - (self._current_step / self._max_steps)
- if self._test_mode:
- time_feature = 1.0
- # Optionnaly: concatenate [time_feature, time_feature ** 2]
- return np.concatenate((obs, [time_feature]))
diff --git a/examples/pybullet/gym/pybullet_examples/sleeptest.py b/examples/pybullet/gym/pybullet_examples/sleeptest.py
new file mode 100644
index 000000000..564d0f74b
--- /dev/null
+++ b/examples/pybullet/gym/pybullet_examples/sleeptest.py
@@ -0,0 +1,53 @@
+import pybullet as p
+import pybullet_data as pd
+import time
+p.connect(p.GUI)
+p.setAdditionalSearchPath(pd.getDataPath())
+objects=[]
+useMaximalCoordinates=False
+
+if 0:
+ collisionShapeId = p.createCollisionShape(shapeType=p.GEOM_SPHERE, radius = 0.1)
+ batchPositions = []
+ index = 1
+ for x in range(2):
+ for y in range(1):
+ for z in range(1):
+ batchPositions.append(arr[index])
+ index=index+1
+ bodyUids = p.createMultiBody(baseMass=10,
+ baseInertialFramePosition=[0, 0, 0],
+ baseCollisionShapeIndex=collisionShapeId,
+ baseVisualShapeIndex=-1,
+ basePosition=[0, 0, 2],
+ batchPositions=batchPositions,
+ useMaximalCoordinates=useMaximalCoordinates)
+ for b in bodyUids:
+ objects.append(b)
+
+else:
+ for i in range(2):
+ for j in range(1):
+ for k in range(1):
+ ob = p.loadURDF("sphere_1cm.urdf", [0.210050 * i, 0.210050 * j, 1 + 0.210050 * k],globalScaling=20,
+ useMaximalCoordinates=useMaximalCoordinates)
+ objects.append(ob)
+ p.changeDynamics(ob, -1, activationState=p.ACTIVATION_STATE_ENABLE_SLEEPING, linearDamping=0, angularDamping=0, sleepThreshold=0.05)
+ if (i==0):
+ p.resetBaseVelocity(ob, [0,0,0], [0,0,0.22])
+
+
+timeid = p.addUserDebugText("t=", [0,0,2])
+lvelid = p.addUserDebugText("lvel", [0,0,1.8])
+avelid = p.addUserDebugText("avel", [0,0,1.6])
+t=0
+dt=1./240.
+while p.isConnected():
+ p.stepSimulation()
+ t+=dt
+ txtid = p.addUserDebugText("t="+str(t), [0,0,2],replaceItemUniqueId=timeid)
+ lin, ang = p.getBaseVelocity(ob)
+ txtid = p.addUserDebugText("lvel="+"{:.4f}".format(lin[0])+","+"{:.4f}".format(lin[1])+","+"{:.4f}".format(lin[2]), [0,0,1.8],replaceItemUniqueId=lvelid)
+ txtid = p.addUserDebugText("avel="+"{:.4f}".format(ang[0])+","+"{:.4f}".format(ang[1])+","+"{:.4f}".format(ang[2]), [0,0,1.6],replaceItemUniqueId=avelid)
+ time.sleep(dt)
+ \ No newline at end of file
diff --git a/examples/pybullet/gym/pybullet_utils/bullet_client.py b/examples/pybullet/gym/pybullet_utils/bullet_client.py
index 6543313d0..6703722ff 100644
--- a/examples/pybullet/gym/pybullet_utils/bullet_client.py
+++ b/examples/pybullet/gym/pybullet_utils/bullet_client.py
@@ -1,6 +1,7 @@
"""A wrapper for pybullet to manage different clients."""
from __future__ import absolute_import
from __future__ import division
+import os
import functools
import inspect
import pybullet
@@ -21,6 +22,7 @@ class BulletClient(object):
`pybullet.SHARED_MEMORY` connects to an existing simulation.
"""
self._shapes = {}
+ self._pid = os.getpid()
if connection_mode is None:
self._client = pybullet.connect(pybullet.SHARED_MEMORY, options=options)
if self._client >= 0:
@@ -34,7 +36,7 @@ class BulletClient(object):
def __del__(self):
"""Clean up connection if not already done."""
- if self._client>=0:
+ if self._client>=0 and self._pid == os.getpid():
try:
pybullet.disconnect(physicsClientId=self._client)
self._client = -1
diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c
index d4d45db6e..3c5d8f3ae 100644
--- a/examples/pybullet/pybullet.c
+++ b/examples/pybullet/pybullet.c
@@ -1,4 +1,4 @@
-//#include "D:/dev/visual leak detector/include/vld.h"
+//#include "D:/dev/VisualLeakDetector/include/vld.h"
#include "../SharedMemory/PhysicsClientC_API.h"
#include "../SharedMemory/PhysicsDirectC_API.h"
@@ -129,6 +129,32 @@ static int pybullet_internalGetIntFromSequence(PyObject* seq, int index)
return v;
}
+static const char* pybullet_internalGetCStringFromSequence(PyObject* seq, int index)
+{
+ const char* v = 0;
+ PyObject* item;
+
+ if (PyList_Check(seq))
+ {
+ item = PyList_GET_ITEM(seq, index);
+#if PY_MAJOR_VERSION >= 3
+ v = PyUnicode_AsUTF8(item);
+#else
+ v = PyBytes_AsString(item);
+#endif
+ }
+ else
+ {
+ item = PyTuple_GET_ITEM(seq, index);
+#if PY_MAJOR_VERSION >= 3
+ v = PyUnicode_AsUTF8(item);
+#else
+ v = PyBytes_AsString(item);
+#endif
+ }
+ return v;
+}
+
// internal function to set a float matrix[16]
// used to initialize camera position with
// a view and projection matrix in renderImage()
@@ -1336,9 +1362,10 @@ static PyObject* pybullet_loadMJCF(PyObject* self, PyObject* args, PyObject* key
PyObject* pylist = 0;
int physicsClientId = 0;
int flags = -1;
+ int useMultiBody = -1;
- static char* kwlist[] = {"mjcfFileName", "flags", "physicsClientId", NULL};
- if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|ii", kwlist, &mjcfFileName, &flags, &physicsClientId))
+ static char* kwlist[] = {"mjcfFileName", "flags", "useMultiBody", "physicsClientId", NULL};
+ if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|iii", kwlist, &mjcfFileName, &flags, &useMultiBody, &physicsClientId))
{
return NULL;
}
@@ -1354,6 +1381,11 @@ static PyObject* pybullet_loadMJCF(PyObject* self, PyObject* args, PyObject* key
{
b3LoadMJCFCommandSetFlags(command, flags);
}
+ if (useMultiBody>=0)
+ {
+ b3LoadMJCFCommandSetUseMultiBody(command, useMultiBody);
+ }
+
statusHandle = b3SubmitClientCommandAndWaitStatus(sm, command);
statusType = b3GetStatusType(statusHandle);
if (statusType != CMD_MJCF_LOADING_COMPLETED)
@@ -1361,7 +1393,7 @@ static PyObject* pybullet_loadMJCF(PyObject* self, PyObject* args, PyObject* key
PyErr_SetString(SpamError, "Couldn't load .mjcf file.");
return NULL;
}
-
+
numBodies =
b3GetStatusBodyIndices(statusHandle, bodyIndicesOut, MAX_SDF_BODIES);
if (numBodies > MAX_SDF_BODIES)
@@ -1412,11 +1444,14 @@ static PyObject* pybullet_changeDynamicsInfo(PyObject* self, PyObject* args, PyO
double jointUpperLimit = -1;
double jointLimitForce = -1;
+ double sleepThreshold = -1;
+
+
b3PhysicsClientHandle sm = 0;
int physicsClientId = 0;
- static char* kwlist[] = {"bodyUniqueId", "linkIndex", "mass", "lateralFriction", "spinningFriction", "rollingFriction", "restitution", "linearDamping", "angularDamping", "contactStiffness", "contactDamping", "frictionAnchor", "localInertiaDiagonal", "ccdSweptSphereRadius", "contactProcessingThreshold", "activationState", "jointDamping", "anisotropicFriction", "maxJointVelocity", "collisionMargin", "jointLowerLimit","jointUpperLimit", "jointLimitForce", "physicsClientId", NULL};
- if (!PyArg_ParseTupleAndKeywords(args, keywds, "ii|dddddddddiOddidOdddddi", kwlist, &bodyUniqueId, &linkIndex, &mass, &lateralFriction, &spinningFriction, &rollingFriction, &restitution, &linearDamping, &angularDamping, &contactStiffness, &contactDamping, &frictionAnchor, &localInertiaDiagonalObj, &ccdSweptSphereRadius, &contactProcessingThreshold, &activationState, &jointDamping, &anisotropicFrictionObj, &maxJointVelocity, &collisionMargin , &jointLowerLimit , &jointUpperLimit , &jointLimitForce , &physicsClientId))
+ static char* kwlist[] = {"bodyUniqueId", "linkIndex", "mass", "lateralFriction", "spinningFriction", "rollingFriction", "restitution", "linearDamping", "angularDamping", "contactStiffness", "contactDamping", "frictionAnchor", "localInertiaDiagonal", "ccdSweptSphereRadius", "contactProcessingThreshold", "activationState", "jointDamping", "anisotropicFriction", "maxJointVelocity", "collisionMargin", "jointLowerLimit","jointUpperLimit", "jointLimitForce", "sleepThreshold", "physicsClientId", NULL};
+ if (!PyArg_ParseTupleAndKeywords(args, keywds, "ii|dddddddddiOddidOddddddi", kwlist, &bodyUniqueId, &linkIndex, &mass, &lateralFriction, &spinningFriction, &rollingFriction, &restitution, &linearDamping, &angularDamping, &contactStiffness, &contactDamping, &frictionAnchor, &localInertiaDiagonalObj, &ccdSweptSphereRadius, &contactProcessingThreshold, &activationState, &jointDamping, &anisotropicFrictionObj, &maxJointVelocity, &collisionMargin , &jointLowerLimit , &jointUpperLimit , &jointLimitForce , &sleepThreshold, &physicsClientId))
{
return NULL;
}
@@ -1442,6 +1477,10 @@ static PyObject* pybullet_changeDynamicsInfo(PyObject* self, PyObject* args, PyO
{
b3ChangeDynamicsInfoSetJointLimitForce(command, bodyUniqueId, linkIndex, jointLimitForce);
}
+ if (sleepThreshold >=0)
+ {
+ b3ChangeDynamicsInfoSetSleepThreshold(command, bodyUniqueId, sleepThreshold);
+ }
if (jointLowerLimit <= jointUpperLimit)
{
@@ -7411,11 +7450,12 @@ static PyObject* pybullet_configureDebugVisualizer(PyObject* self, PyObject* arg
int physicsClientId = 0;
double remoteSyncTransformInterval = -1;
PyObject* pyLightPosition = 0;
+ PyObject* pyRgbBackground = 0;
b3PhysicsClientHandle sm = 0;
- static char* kwlist[] = {"flag", "enable", "lightPosition", "shadowMapResolution", "shadowMapWorldSize", "remoteSyncTransformInterval", "shadowMapIntensity", "physicsClientId", NULL};
+ static char* kwlist[] = {"flag", "enable", "lightPosition", "shadowMapResolution", "shadowMapWorldSize", "remoteSyncTransformInterval", "shadowMapIntensity", "rgbBackground", "physicsClientId", NULL};
- if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iiOiiddi", kwlist,
- &flag, &enable, &pyLightPosition, &shadowMapResolution, &shadowMapWorldSize, &remoteSyncTransformInterval, &shadowMapIntensity, &physicsClientId))
+ if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iiOiiddOi", kwlist,
+ &flag, &enable, &pyLightPosition, &shadowMapResolution, &shadowMapWorldSize, &remoteSyncTransformInterval, &shadowMapIntensity, &pyRgbBackground, &physicsClientId))
return NULL;
sm = getPhysicsClient(physicsClientId);
@@ -7439,6 +7479,14 @@ static PyObject* pybullet_configureDebugVisualizer(PyObject* self, PyObject* arg
b3ConfigureOpenGLVisualizerSetLightPosition(commandHandle, lightPosition);
}
}
+ if (pyRgbBackground)
+ {
+ float rgbBackground[3];
+ if (pybullet_internalSetVector(pyRgbBackground, rgbBackground))
+ {
+ b3ConfigureOpenGLVisualizerSetLightRgbBackground(commandHandle, rgbBackground);
+ }
+ }
if (shadowMapIntensity >= 0)
{
b3ConfigureOpenGLVisualizerSetShadowMapIntensity(commandHandle, shadowMapIntensity);
@@ -9068,6 +9116,55 @@ static PyObject* pybullet_getMeshData(PyObject* self, PyObject* args, PyObject*
return NULL;
}
+
+static PyObject* pybullet_resetMeshData(PyObject* self, PyObject* args, PyObject* keywds)
+{
+ int bodyUniqueId = -1;
+ b3PhysicsClientHandle sm = 0;
+ b3SharedMemoryCommandHandle command;
+ b3SharedMemoryStatusHandle statusHandle;
+ struct b3MeshData meshData;
+ int statusType;
+ PyObject* verticesObj = 0;
+ int physicsClientId = 0;
+ int numVertices = 0;
+
+ static char* kwlist[] = { "bodyUniqueId", "vertices", "physicsClientId", NULL};
+ if (!PyArg_ParseTupleAndKeywords(args, keywds, "iO|i", kwlist, &bodyUniqueId, &verticesObj, &physicsClientId))
+ {
+ return NULL;
+ }
+ sm = getPhysicsClient(physicsClientId);
+ if (sm == 0)
+ {
+ PyErr_SetString(SpamError, "Not connected to physics server.");
+ return NULL;
+ }
+
+ numVertices = extractVertices(verticesObj, 0, B3_MAX_NUM_VERTICES);
+ if (numVertices)
+ {
+ double* vertices = numVertices ? malloc(numVertices * 3 * sizeof(double)) : 0;
+ numVertices = extractVertices(verticesObj, vertices, B3_MAX_NUM_VERTICES);
+
+ command = b3ResetMeshDataCommandInit(sm, bodyUniqueId, numVertices, vertices);
+
+ statusHandle = b3SubmitClientCommandAndWaitStatus(sm, command);
+ statusType = b3GetStatusType(statusHandle);
+
+ free(vertices);
+
+ if (statusType == CMD_RESET_MESH_DATA_COMPLETED)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ }
+
+ PyErr_SetString(SpamError, "resetMeshData failed");
+ return NULL;
+}
+
static PyObject* pybullet_createVisualShape(PyObject* self, PyObject* args, PyObject* keywds)
{
int physicsClientId = 0;
@@ -9499,6 +9596,7 @@ static PyObject* pybullet_createMultiBody(PyObject* self, PyObject* args, PyObje
PyObject* linkInertialFramePositionObj = 0;
PyObject* linkInertialFrameOrientationObj = 0;
PyObject* objBatchPositions = 0;
+
static char* kwlist[] = {
"baseMass", "baseCollisionShapeIndex", "baseVisualShapeIndex", "basePosition", "baseOrientation",
@@ -9597,6 +9695,7 @@ static PyObject* pybullet_createMultiBody(PyObject* self, PyObject* args, PyObje
double linkInertialFrameOrientation[4];
int linkParentIndex;
int linkJointType;
+ const char* linkName;
pybullet_internalGetVector3FromSequence(seqLinkInertialFramePositions, i, linkInertialFramePosition);
pybullet_internalGetVector4FromSequence(seqLinkInertialFrameOrientations, i, linkInertialFrameOrientation);
@@ -12469,9 +12568,12 @@ static PyMethodDef SpamMethods[] = {
{"removeCollisionShape", (PyCFunction)pybullet_removeCollisionShape, METH_VARARGS | METH_KEYWORDS,
"Remove a collision shape. Only useful when the collision shape is not used in a body (to perform a getClosestPoint query)."},
- {"getMeshData", (PyCFunction)pybullet_getMeshData, METH_VARARGS | METH_KEYWORDS,
+ {"getMeshData", (PyCFunction)pybullet_getMeshData, METH_VARARGS | METH_KEYWORDS,
"Get mesh data. Returns vertices etc from the mesh."},
+ {"resetMeshData", (PyCFunction)pybullet_resetMeshData, METH_VARARGS | METH_KEYWORDS,
+ "Reset mesh data. Only implemented for deformable bodies."},
+
{"createVisualShape", (PyCFunction)pybullet_createVisualShape, METH_VARARGS | METH_KEYWORDS,
"Create a visual shape. Returns a non-negative (int) unique id, if successfull, negative otherwise."},
diff --git a/setup.py b/setup.py
index ef2748b4a..fd6f486a0 100644
--- a/setup.py
+++ b/setup.py
@@ -501,7 +501,7 @@ if 'BT_USE_EGL' in EGL_CXX_FLAGS:
setup(
name='pybullet',
- version='3.1.2',
+ version='3.2.0',
description=
'Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning',
long_description=
diff --git a/src/Bullet3Common/CMakeLists.txt b/src/Bullet3Common/CMakeLists.txt
index e899e67d9..03a3b404c 100644
--- a/src/Bullet3Common/CMakeLists.txt
+++ b/src/Bullet3Common/CMakeLists.txt
@@ -26,11 +26,11 @@ SET(Bullet3Common_HDRS
b3Transform.h
b3TransformUtil.h
b3Vector3.h
- shared/b3Float4
+ shared/b3Float4.h
shared/b3Int2.h
shared/b3Int4.h
shared/b3Mat3x3.h
- shared/b3PlatformDefinitions
+ shared/b3PlatformDefinitions.h
shared/b3Quat.h
)
diff --git a/src/Bullet3Common/b3AlignedObjectArray.h b/src/Bullet3Common/b3AlignedObjectArray.h
index 249e381bf..7d31b56d0 100644
--- a/src/Bullet3Common/b3AlignedObjectArray.h
+++ b/src/Bullet3Common/b3AlignedObjectArray.h
@@ -22,7 +22,7 @@ subject to the following restrictions:
///If the platform doesn't support placement new, you can disable B3_USE_PLACEMENT_NEW
///then the b3AlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors
///You can enable B3_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator=
-///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and
+///see discussion here: https://bulletphysics.orgphpBB2/viewtopic.php?t=1231 and
///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240
#define B3_USE_PLACEMENT_NEW 1
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h b/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h
index 049c9116f..e946c2ae5 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp
index 0d5bb2014..fd3e5185d 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h
index 1597809db..d162d58fe 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h b/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h
index 13269debf..3cc4f6026 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp b/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp
index cfa7c7dd1..f9b103e34 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h b/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h
index 14762a3e3..a6c21d20a 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h b/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h
index 196d0e579..c9056ec4a 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h b/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h
index 4927ae428..1e9533fb7 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp b/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp
index 885e277d8..eab17b994 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h b/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h
index f74aec4d3..82075db2a 100644
--- a/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h
+++ b/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2010 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Geometry/b3AabbUtil.h b/src/Bullet3Geometry/b3AabbUtil.h
index 396a40145..04c52d8dc 100644
--- a/src/Bullet3Geometry/b3AabbUtil.h
+++ b/src/Bullet3Geometry/b3AabbUtil.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Geometry/b3GeometryUtil.cpp b/src/Bullet3Geometry/b3GeometryUtil.cpp
index c4041003c..1c5d5a733 100644
--- a/src/Bullet3Geometry/b3GeometryUtil.cpp
+++ b/src/Bullet3Geometry/b3GeometryUtil.cpp
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3Geometry/b3GeometryUtil.h b/src/Bullet3Geometry/b3GeometryUtil.h
index 967c8d67e..9a7bf7e3a 100644
--- a/src/Bullet3Geometry/b3GeometryUtil.h
+++ b/src/Bullet3Geometry/b3GeometryUtil.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp b/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp
index 4db717f8c..867b3e0a9 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp
@@ -2,7 +2,7 @@
#if 0
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp b/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp
index 974b246f0..3a554fe5b 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2008 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h b/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h
index 7db32c630..1a67a5118 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2008 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp b/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp
index 9a448495f..e9a3d085b 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h b/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h
index 48b41abca..13470829d 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp b/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
index 8b0a834ef..c599bca2b 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
@@ -1,7 +1,7 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h b/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h
index b40b16997..46e36a3ae 100644
--- a/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h
+++ b/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp b/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp
index ec6fe9f4d..29310ec05 100644
--- a/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp
@@ -1,6 +1,6 @@
//Bullet Continuous Collision Detection and Physics Library
-//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+//Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
//
// btAxisSweep3
diff --git a/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h b/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h
index 1e42f25f3..4f5f614e1 100644
--- a/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h
+++ b/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h
@@ -1,5 +1,5 @@
//Bullet Continuous Collision Detection and Physics Library
-//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+//Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
//
// btAxisSweep3.h
diff --git a/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h b/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h
index 2ee35528f..e481fdc21 100644
--- a/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h
+++ b/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h
@@ -1,5 +1,5 @@
//Bullet Continuous Collision Detection and Physics Library
-//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+//Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
//
// btAxisSweep3.h
diff --git a/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h b/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h
index b097eca5f..4176256f3 100644
--- a/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h
+++ b/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp
index 7ee065aac..317c3f622 100644
--- a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
index bc0742ad6..fb23281aa 100644
--- a/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
+++ b/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp b/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp
index 6e36d3bd7..9cb622505 100644
--- a/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h b/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h
index b00c0b1b4..25a347e28 100644
--- a/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h
+++ b/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btDbvt.cpp b/src/BulletCollision/BroadphaseCollision/btDbvt.cpp
index 166cb04c0..ae087c8b5 100644
--- a/src/BulletCollision/BroadphaseCollision/btDbvt.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btDbvt.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btDbvt.h b/src/BulletCollision/BroadphaseCollision/btDbvt.h
index 55daa7fb5..430f5771c 100644
--- a/src/BulletCollision/BroadphaseCollision/btDbvt.h
+++ b/src/BulletCollision/BroadphaseCollision/btDbvt.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2007 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp b/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp
index d76d408aa..e71cb7daf 100644
--- a/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btDispatcher.h b/src/BulletCollision/BroadphaseCollision/btDispatcher.h
index b09b7d4d4..d59441cf5 100644
--- a/src/BulletCollision/BroadphaseCollision/btDispatcher.h
+++ b/src/BulletCollision/BroadphaseCollision/btDispatcher.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp
index 8ce1087c9..fb36acdf6 100644
--- a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h
index 56011899c..1d8272647 100644
--- a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h
+++ b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h
index d16c72542..36e5068e0 100644
--- a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h
+++ b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h
@@ -1,7 +1,7 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp b/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp
index 19f1737b7..e23610eb5 100644
--- a/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h b/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h
index 1c47b9ccf..1a01992f5 100644
--- a/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h
+++ b/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp
index b7fe0a1f3..bb02df89f 100644
--- a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp
+++ b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h
index 3e02fdc00..f97073c58 100644
--- a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h
+++ b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
index 7647f6736..57152105f 100644
--- a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
+++ b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
index d47e47530..01ebfe447 100644
--- a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
+++ b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
index 3b66d1fd0..f14fdc083 100644
--- a/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
index 7a391e059..39807fcf5 100644
--- a/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h
index eb2106576..d657242f4 100644
--- a/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
index 202039956..4b516463e 100644
--- a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
+++ b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
@@ -3,7 +3,7 @@
* Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.
* All rights reserved. Email: russ@q12.org Web: www.q12.org
Bullet Continuous Collision Detection and Physics Library
- Bullet is Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+ Bullet is Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
index 9f7d988fc..9b1b36b67 100644
--- a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
+++ b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
@@ -4,7 +4,7 @@
* All rights reserved. Email: russ@q12.org Web: www.q12.org
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h b/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h
index d6e15f555..3f578d66e 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h
+++ b/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h b/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h
index bd8128493..597f26022 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h
+++ b/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp b/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp
index 25b2b1ea4..e24757cc4 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp
+++ b/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h b/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
index 04309670c..1399148fa 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
+++ b/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp b/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp
index 89bc8d920..b067903dd 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp
+++ b/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h b/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h
index 1155de2cf..e6c67aeca 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h
+++ b/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp b/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp
index b48d9301d..04dbbf23b 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp
+++ b/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionObject.h b/src/BulletCollision/CollisionDispatch/btCollisionObject.h
index e085c4089..d1456a909 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionObject.h
+++ b/src/BulletCollision/CollisionDispatch/btCollisionObject.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -24,6 +24,7 @@ subject to the following restrictions:
#define WANTS_DEACTIVATION 3
#define DISABLE_DEACTIVATION 4
#define DISABLE_SIMULATION 5
+#define FIXED_BASE_MULTI_BODY 6
struct btBroadphaseProxy;
class btCollisionShape;
@@ -304,7 +305,7 @@ public:
SIMD_FORCE_INLINE bool isActive() const
{
- return ((getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));
+ return ((getActivationState() != FIXED_BASE_MULTI_BODY) && (getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));
}
void setRestitution(btScalar rest)
diff --git a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
index 71184f36a..c3f7f740c 100644
--- a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
+++ b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -1037,7 +1037,7 @@ struct btSingleSweepCallback : public btBroadphaseRayCallback
m_castShape(castShape)
{
btVector3 unnormalizedRayDir = (m_convexToTrans.getOrigin() - m_convexFromTrans.getOrigin());
- btVector3 rayDir = unnormalizedRayDir.normalized();
+ btVector3 rayDir = unnormalizedRayDir.fuzzyZero() ? btVector3(btScalar(0.0), btScalar(0.0), btScalar(0.0)) : unnormalizedRayDir.normalized();
///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT
m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0];
m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1];
@@ -1294,9 +1294,7 @@ public:
btVector3 normalColor(1, 1, 0);
m_debugDrawer->drawLine(center, center + normal, normalColor);
}
- m_debugDrawer->drawLine(wv0, wv1, m_color);
- m_debugDrawer->drawLine(wv1, wv2, m_color);
- m_debugDrawer->drawLine(wv2, wv0, m_color);
+ m_debugDrawer->drawTriangle(wv0, wv1, wv2, m_color, 1.0);
}
};
diff --git a/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
index b5f4a3c86..6f7ea0147 100644
--- a/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h
index 4ea5e7718..1193bd4a8 100644
--- a/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
index 9087f8439..f9dfc0a34 100644
--- a/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h b/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h
index 9fca463fb..e6a2504a9 100644
--- a/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
index e50f85e2b..52fb6b43e 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
index b72e40298..8d86dafd2 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
index b48d97f2b..8031c950b 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h b/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h
index eac5b4d82..9b7616226 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
index ba1bc06b6..d91d9c976 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
index b693da118..63402d9ae 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
index ef3ea9e39..f6e6343b3 100644
--- a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
+++ b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h
index b39a3f41d..adab540c0 100644
--- a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h
+++ b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp
index 7cd41bdb3..6c71dc5e3 100644
--- a/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h
index 65ef83e09..fef2f275b 100644
--- a/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp b/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp
index b686d98d1..18d7dfd9b 100644
--- a/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp
+++ b/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h b/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h
index fd38a4f0e..e6acbb8ef 100644
--- a/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h
+++ b/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp b/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
index 770eb2436..64a0f84ff 100644
--- a/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
+++ b/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -90,13 +90,11 @@ btManifoldResult::btManifoldResult(const btCollisionObjectWrapper* body0Wrap, co
: m_manifoldPtr(0),
m_body0Wrap(body0Wrap),
m_body1Wrap(body1Wrap)
-#ifdef DEBUG_PART_INDEX
,
m_partId0(-1),
m_partId1(-1),
m_index0(-1),
m_index1(-1)
-#endif //DEBUG_PART_INDEX
,
m_closestPointDistanceThreshold(0)
{
diff --git a/src/BulletCollision/CollisionDispatch/btManifoldResult.h b/src/BulletCollision/CollisionDispatch/btManifoldResult.h
index 6c0a2d9a4..1a8f46f2b 100644
--- a/src/BulletCollision/CollisionDispatch/btManifoldResult.h
+++ b/src/BulletCollision/CollisionDispatch/btManifoldResult.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp b/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
index 327b3f076..6a99e73df 100644
--- a/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
+++ b/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
@@ -1,7 +1,7 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h b/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h
index 197bb457c..bd222a19d 100644
--- a/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h
+++ b/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
index bc68b285b..5ab26f508 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h
index 3348bc89a..33060e83c 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
index 7fa0559f9..9c35565e5 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h
index b08d0df76..399c9279d 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
index 1bc3056c0..21e0d9433 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
index d660222f1..73c6fd1dd 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btUnionFind.cpp b/src/BulletCollision/CollisionDispatch/btUnionFind.cpp
index 816bf1e6a..906c3313e 100644
--- a/src/BulletCollision/CollisionDispatch/btUnionFind.cpp
+++ b/src/BulletCollision/CollisionDispatch/btUnionFind.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionDispatch/btUnionFind.h b/src/BulletCollision/CollisionDispatch/btUnionFind.h
index d422ef55e..59a30b169 100644
--- a/src/BulletCollision/CollisionDispatch/btUnionFind.h
+++ b/src/BulletCollision/CollisionDispatch/btUnionFind.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionShapes/btBox2dShape.cpp b/src/BulletCollision/CollisionShapes/btBox2dShape.cpp
index a3d8075da..501890ce3 100644
--- a/src/BulletCollision/CollisionShapes/btBox2dShape.cpp
+++ b/src/BulletCollision/CollisionShapes/btBox2dShape.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/CollisionShapes/btBox2dShape.h b/src/BulletCollision/CollisionShapes/btBox2dShape.h
index 7e085f9e2..6c6e72927 100644
--- a/src/BulletCollision/CollisionShapes/btBox2dShape.h
+++ b/src/BulletCollision/CollisionShapes/btBox2dShape.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp b/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
index bfdb3db5d..f81f04be9 100644
--- a/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
+++ b/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
@@ -5,7 +5,7 @@ General purpose allocator class
*/
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/Gimpact/btGenericPoolAllocator.h b/src/BulletCollision/Gimpact/btGenericPoolAllocator.h
index a535088e4..197af4fad 100644
--- a/src/BulletCollision/Gimpact/btGenericPoolAllocator.h
+++ b/src/BulletCollision/Gimpact/btGenericPoolAllocator.h
@@ -5,7 +5,7 @@ General purpose allocator class
*/
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp b/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp
index 38df8d480..623c58fc8 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h b/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h
index 67b2205c3..76c7731ee 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp b/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp
index d2a1310b2..f5b9b6824 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h b/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h
index 77b19be59..85476e611 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -30,7 +30,7 @@ class btMinkowskiSumShape;
#define MAX_CONVEX_CAST_EPSILON btScalar(0.0001)
#endif
///Typically the conservative advancement reaches solution in a few iterations, clip it to 32 for degenerate cases.
-///See discussion about this here http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=565
+///See discussion about this here https://bulletphysics.orgphpBB2/viewtopic.php?t=565
//will need to digg deeper to make the algorithm more robust
//since, a large epsilon can cause an early termination with false
//positive results (ray intersections that shouldn't be there)
diff --git a/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h b/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
index 65c9df934..7672a4129 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
index d1bbb1a46..973975f3c 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp b/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp
index 9d61e75da..41da69986 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h b/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h
index ef5979173..0ee46a59c 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp b/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp
index 7d53f8624..228860477 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2008 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h b/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h
index 893daea3f..e2cf633a4 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2008 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h b/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h
index 6fedbbb3e..fd67c3759 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2014 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2014 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp b/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
index 07629229a..3b79ddf8a 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
EPA Copyright (c) Ricardo Padrela 2006
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h b/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
index 92d6df172..90f0c174e 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
EPA Copyright (c) Ricardo Padrela 2006
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
index 5af93cb2f..bee8c330d 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
index faa02287c..eee2f7dab 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h b/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
index 573fc86bf..f2cc3409f 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -72,11 +72,17 @@ public:
btScalar distance) : m_localPointA(pointA),
m_localPointB(pointB),
m_normalWorldOnB(normal),
+ m_positionWorldOnB(0,0,0),
+ m_positionWorldOnA(0,0,0),
m_distance1(distance),
m_combinedFriction(btScalar(0.)),
m_combinedRollingFriction(btScalar(0.)),
m_combinedSpinningFriction(btScalar(0.)),
m_combinedRestitution(btScalar(0.)),
+ m_partId0(-1),
+ m_partId1(-1),
+ m_index0(-1),
+ m_index1(-1),
m_userPersistentData(0),
m_contactPointFlags(0),
m_appliedImpulse(0.f),
@@ -88,7 +94,9 @@ public:
m_contactCFM(0.f),
m_contactERP(0.f),
m_frictionCFM(0.f),
- m_lifeTime(0)
+ m_lifeTime(0),
+ m_lateralFrictionDir1(0,0,0),
+ m_lateralFrictionDir2(0,0,0)
{
}
diff --git a/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp b/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
index c042c2420..dcb29808c 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h b/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
index 8e3e39325..2ad663b12 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp b/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
index dca3e0926..366cf155c 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h b/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h
index 0e26da0eb..b07e48688 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h b/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h
index 0900eb6e8..adebcbee3 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp
index 3d11e5bce..f2de4e901 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
index 2d0df718a..58a48c7a7 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h b/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h
index ccd227109..b994aca91 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp b/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp
index 37458339e..8b011a822 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h b/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h
index 0638a30eb..e2b6bbcfc 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp b/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
index 8fda94d2a..6b65a2548 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
@@ -1,7 +1,7 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h b/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h
index 24a0a8f2d..5ed896f2f 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp
index 0f5ed1c2c..89bd067a2 100644
--- a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h
index 5d982ca37..651df7a90 100644
--- a/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h
+++ b/src/BulletDynamics/ConstraintSolver/btBatchedConstraints.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h b/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h
index 68a4a07a1..777eccf9e 100644
--- a/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h
+++ b/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp
index 4b22b2fff..e8ebe3a79 100644
--- a/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btContactConstraint.h b/src/BulletDynamics/ConstraintSolver/btContactConstraint.h
index 255489be9..b213a385f 100644
--- a/src/BulletDynamics/ConstraintSolver/btContactConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btContactConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h b/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
index 3316403a8..630416776 100644
--- a/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
+++ b/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
index 1f5420353..14ec4a8e0 100644
--- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
index b9e762e17..1febc2bc0 100644
--- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
index 74a13c624..39e0cc0ae 100644
--- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h
index c86dc373d..d2fe24b8e 100644
--- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
index aa6f69000..cb59e5a5b 100644
--- a/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h b/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h
index c7509e30a..8b1f1afdd 100644
--- a/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h b/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h
index 438456fe5..a251073ea 100644
--- a/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h
+++ b/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp b/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp
index ccf891604..454adc88c 100644
--- a/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h b/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h
index c84f274a9..a01f34c9d 100644
--- a/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h
+++ b/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp
index ad399dc57..49a46edc8 100644
--- a/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h b/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h
index 4717e1980..c0b94e9c8 100644
--- a/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
index d2641c582..419e564c4 100644
--- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h
index f3ef02fcc..cd00967d0 100644
--- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h
+++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp
index 2718da4a5..7aa9953bb 100644
--- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h
index 1861ddd7d..73a99153e 100644
--- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h
+++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
index cac5302a7..e42223c4c 100755
--- a/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
index 75ca34e97..75b185754 100755
--- a/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp
index 1ea20edcb..5c2060cf2 100644
--- a/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h b/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h
index fca8ecec8..0a8c901bc 100644
--- a/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSolverBody.h b/src/BulletDynamics/ConstraintSolver/btSolverBody.h
index 409aa8a08..8d2f108fa 100644
--- a/src/BulletDynamics/ConstraintSolver/btSolverBody.h
+++ b/src/BulletDynamics/ConstraintSolver/btSolverBody.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h b/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h
index c7938df86..9749b3315 100644
--- a/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp
index ebe679c44..953091196 100644
--- a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp
+++ b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
index d30f3dee5..3d6b08d71 100644
--- a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
+++ b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2010 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btActionInterface.h b/src/BulletDynamics/Dynamics/btActionInterface.h
index b5cac56cd..51a3fa473 100644
--- a/src/BulletDynamics/Dynamics/btActionInterface.h
+++ b/src/BulletDynamics/Dynamics/btActionInterface.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btDynamicsWorld.h b/src/BulletDynamics/Dynamics/btDynamicsWorld.h
index 3c55234a8..a5a4411ad 100644
--- a/src/BulletDynamics/Dynamics/btDynamicsWorld.h
+++ b/src/BulletDynamics/Dynamics/btDynamicsWorld.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btRigidBody.cpp b/src/BulletDynamics/Dynamics/btRigidBody.cpp
index 27fdead76..bf7224b16 100644
--- a/src/BulletDynamics/Dynamics/btRigidBody.cpp
+++ b/src/BulletDynamics/Dynamics/btRigidBody.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btRigidBody.h b/src/BulletDynamics/Dynamics/btRigidBody.h
index 7442dd1e6..00143ef4e 100644
--- a/src/BulletDynamics/Dynamics/btRigidBody.h
+++ b/src/BulletDynamics/Dynamics/btRigidBody.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp b/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp
index 8103390fb..134c482e8 100644
--- a/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp
+++ b/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h b/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h
index 12be231c7..46bd535f6 100644
--- a/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h
+++ b/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp
index 772b77420..026c2a971 100644
--- a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp
+++ b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h
index ab73a899f..dcc04cd81 100644
--- a/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h
+++ b/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletDynamics/Featherstone/btMultiBody.cpp b/src/BulletDynamics/Featherstone/btMultiBody.cpp
index dfc4f92a3..d7588aedc 100644
--- a/src/BulletDynamics/Featherstone/btMultiBody.cpp
+++ b/src/BulletDynamics/Featherstone/btMultiBody.cpp
@@ -33,8 +33,8 @@
namespace
{
-const btScalar SLEEP_EPSILON = btScalar(0.05); // this is a squared velocity (m^2 s^-2)
-const btScalar SLEEP_TIMEOUT = btScalar(2); // in seconds
+const btScalar INITIAL_SLEEP_EPSILON = btScalar(0.05); // this is a squared velocity (m^2 s^-2)
+const btScalar INITIAL_SLEEP_TIMEOUT = btScalar(2); // in seconds
} // namespace
void btMultiBody::spatialTransform(const btMatrix3x3 &rotation_matrix, // rotates vectors in 'from' frame to vectors in 'to' frame
@@ -110,6 +110,9 @@ btMultiBody::btMultiBody(int n_links,
m_canSleep(canSleep),
m_canWakeup(true),
m_sleepTimer(0),
+ m_sleepEpsilon(INITIAL_SLEEP_EPSILON),
+ m_sleepTimeout(INITIAL_SLEEP_TIMEOUT),
+
m_userObjectPointer(0),
m_userIndex2(-1),
m_userIndex(-1),
@@ -2104,10 +2107,10 @@ void btMultiBody::checkMotionAndSleepIfRequired(btScalar timestep)
motion += m_realBuf[i] * m_realBuf[i];
}
- if (motion < SLEEP_EPSILON)
+ if (motion < m_sleepEpsilon)
{
m_sleepTimer += timestep;
- if (m_sleepTimer > SLEEP_TIMEOUT)
+ if (m_sleepTimer > m_sleepTimeout)
{
goToSleep();
}
diff --git a/src/BulletDynamics/Featherstone/btMultiBody.h b/src/BulletDynamics/Featherstone/btMultiBody.h
index 9cf1ceb5a..345970d26 100644
--- a/src/BulletDynamics/Featherstone/btMultiBody.h
+++ b/src/BulletDynamics/Featherstone/btMultiBody.h
@@ -545,7 +545,10 @@ public:
{
m_canWakeup = canWakeup;
}
- bool isAwake() const { return m_awake; }
+ bool isAwake() const
+ {
+ return m_awake;
+ }
void wakeUp();
void goToSleep();
void checkMotionAndSleepIfRequired(btScalar timestep);
@@ -726,6 +729,17 @@ public:
bool isLinkAndAllAncestorsKinematic(const int i) const;
+ void setSleepThreshold(btScalar sleepThreshold)
+ {
+ m_sleepEpsilon = sleepThreshold;
+ }
+
+ void setSleepTimeout(btScalar sleepTimeout)
+ {
+ this->m_sleepTimeout = sleepTimeout;
+ }
+
+
private:
btMultiBody(const btMultiBody &); // not implemented
void operator=(const btMultiBody &); // not implemented
@@ -801,6 +815,8 @@ private:
bool m_canSleep;
bool m_canWakeup;
btScalar m_sleepTimer;
+ btScalar m_sleepEpsilon;
+ btScalar m_sleepTimeout;
void *m_userObjectPointer;
int m_userIndex2;
diff --git a/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp b/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp
index fef95f0c4..e7af332eb 100644
--- a/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp
+++ b/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp
@@ -137,7 +137,14 @@ void btMultiBodyDynamicsWorld::updateActivationState(btScalar timeStep)
btMultiBodyLinkCollider* col = body->getBaseCollider();
if (col && col->getActivationState() == ACTIVE_TAG)
{
- col->setActivationState(WANTS_DEACTIVATION);
+ if (body->hasFixedBase())
+ {
+ col->setActivationState(FIXED_BASE_MULTI_BODY);
+ } else
+ {
+ col->setActivationState(WANTS_DEACTIVATION);
+ }
+
col->setDeactivationTime(0.f);
}
for (int b = 0; b < body->getNumLinks(); b++)
diff --git a/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
index fc70d8e63..cbb41ece2 100644
--- a/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
+++ b/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
+ * Copyright (c) 2005 Erwin Coumans https://bulletphysics.org
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
diff --git a/src/BulletDynamics/Vehicle/btRaycastVehicle.h b/src/BulletDynamics/Vehicle/btRaycastVehicle.h
index 99d6894e5..b4a92b0a9 100644
--- a/src/BulletDynamics/Vehicle/btRaycastVehicle.h
+++ b/src/BulletDynamics/Vehicle/btRaycastVehicle.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
+ * Copyright (c) 2005 Erwin Coumans https://bulletphysics.org
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
diff --git a/src/BulletDynamics/Vehicle/btWheelInfo.cpp b/src/BulletDynamics/Vehicle/btWheelInfo.cpp
index d5c12f223..5313215a2 100644
--- a/src/BulletDynamics/Vehicle/btWheelInfo.cpp
+++ b/src/BulletDynamics/Vehicle/btWheelInfo.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
+ * Copyright (c) 2005 Erwin Coumans https://bulletphysics.org
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
diff --git a/src/BulletDynamics/Vehicle/btWheelInfo.h b/src/BulletDynamics/Vehicle/btWheelInfo.h
index af88b8ff8..68f61423d 100644
--- a/src/BulletDynamics/Vehicle/btWheelInfo.h
+++ b/src/BulletDynamics/Vehicle/btWheelInfo.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
+ * Copyright (c) 2005 Erwin Coumans https://bulletphysics.org
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
diff --git a/src/BulletSoftBody/btDefaultSoftBodySolver.cpp b/src/BulletSoftBody/btDefaultSoftBodySolver.cpp
index 5a79ef86e..acbf515e9 100644
--- a/src/BulletSoftBody/btDefaultSoftBodySolver.cpp
+++ b/src/BulletSoftBody/btDefaultSoftBodySolver.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btDefaultSoftBodySolver.h b/src/BulletSoftBody/btDefaultSoftBodySolver.h
index 3965b07c5..d54edcae0 100644
--- a/src/BulletSoftBody/btDefaultSoftBodySolver.h
+++ b/src/BulletSoftBody/btDefaultSoftBodySolver.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btDeformableBodySolver.cpp b/src/BulletSoftBody/btDeformableBodySolver.cpp
index 4b11fccec..699c6bcad 100644
--- a/src/BulletSoftBody/btDeformableBodySolver.cpp
+++ b/src/BulletSoftBody/btDeformableBodySolver.cpp
@@ -405,9 +405,12 @@ void btDeformableBodySolver::predictMotion(btScalar solverdt)
for (int i = 0; i < m_softBodies.size(); ++i)
{
btSoftBody* psb = m_softBodies[i];
-
if (psb->isActive())
{
+ /* Clear contacts when softbody is active*/
+ psb->m_nodeRigidContacts.resize(0);
+ psb->m_faceRigidContacts.resize(0);
+ psb->m_faceNodeContacts.resize(0);
// predict motion for collision detection
predictDeformableMotion(psb, solverdt);
}
@@ -472,10 +475,6 @@ void btDeformableBodySolver::predictDeformableMotion(btSoftBody* psb, btScalar d
{
psb->updateFaceTree(true, true);
}
- /* Clear contacts */
- psb->m_nodeRigidContacts.resize(0);
- psb->m_faceRigidContacts.resize(0);
- psb->m_faceNodeContacts.resize(0);
/* Optimize dbvt's */
// psb->m_ndbvt.optimizeIncremental(1);
// psb->m_fdbvt.optimizeIncremental(1);
diff --git a/src/BulletSoftBody/btDeformableContactConstraint.h b/src/BulletSoftBody/btDeformableContactConstraint.h
index 1e2c9f5bc..ddecb40fc 100644
--- a/src/BulletSoftBody/btDeformableContactConstraint.h
+++ b/src/BulletSoftBody/btDeformableContactConstraint.h
@@ -37,7 +37,7 @@ public:
{
}
- btDeformableContactConstraint() {}
+ btDeformableContactConstraint() : m_static(false) {}
btDeformableContactConstraint(const btDeformableContactConstraint& other)
: m_static(other.m_static), m_normal(other.m_normal), m_infoGlobal(other.m_infoGlobal)
@@ -150,7 +150,7 @@ public:
btDeformableRigidContactConstraint(const btSoftBody::DeformableRigidContact& c, const btContactSolverInfo& infoGlobal);
btDeformableRigidContactConstraint(const btDeformableRigidContactConstraint& other);
- btDeformableRigidContactConstraint() {}
+ btDeformableRigidContactConstraint() : m_binding(false) {}
virtual ~btDeformableRigidContactConstraint()
{
}
diff --git a/src/BulletSoftBody/btSoftBody.cpp b/src/BulletSoftBody/btSoftBody.cpp
index d1980ea6c..c6226a008 100644
--- a/src/BulletSoftBody/btSoftBody.cpp
+++ b/src/BulletSoftBody/btSoftBody.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -4095,7 +4095,7 @@ void btSoftBody::defaultCollisionHandler(const btCollisionObjectWrapper* pcoWrap
case fCollision::SDF_RD:
{
btRigidBody* prb1 = (btRigidBody*)btRigidBody::upcast(pcoWrap->getCollisionObject());
- if (pcoWrap->getCollisionObject()->isActive() || this->isActive())
+ if (this->isActive())
{
const btTransform wtr = pcoWrap->getWorldTransform();
const btScalar timemargin = 0;
diff --git a/src/BulletSoftBody/btSoftBody.h b/src/BulletSoftBody/btSoftBody.h
index f578487b8..e967e8790 100644
--- a/src/BulletSoftBody/btSoftBody.h
+++ b/src/BulletSoftBody/btSoftBody.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp b/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
index 750718f57..383f528ee 100644
--- a/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
+++ b/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -195,8 +195,7 @@ void btSoftBodyConcaveCollisionAlgorithm::processCollision(const btCollisionObje
if (triBody->getCollisionShape()->isConcave())
{
- const btCollisionObject* triOb = triBody->getCollisionObject();
- const btConcaveShape* concaveShape = static_cast<const btConcaveShape*>(triOb->getCollisionShape());
+ const btConcaveShape* concaveShape = static_cast<const btConcaveShape*>(triBody->getCollisionShape());
// if (convexBody->getCollisionShape()->isConvex())
{
diff --git a/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h b/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h
index 3adedbd80..0dbceebf3 100644
--- a/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h
+++ b/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodyData.h b/src/BulletSoftBody/btSoftBodyData.h
index cec6f401e..8469c3ce7 100644
--- a/src/BulletSoftBody/btSoftBodyData.h
+++ b/src/BulletSoftBody/btSoftBodyData.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodyHelpers.cpp b/src/BulletSoftBody/btSoftBodyHelpers.cpp
index f63e48f9a..e464c4668 100644
--- a/src/BulletSoftBody/btSoftBodyHelpers.cpp
+++ b/src/BulletSoftBody/btSoftBodyHelpers.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodyHelpers.h b/src/BulletSoftBody/btSoftBodyHelpers.h
index 237d29761..b292d90d1 100644
--- a/src/BulletSoftBody/btSoftBodyHelpers.h
+++ b/src/BulletSoftBody/btSoftBodyHelpers.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2008 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodyInternals.h b/src/BulletSoftBody/btSoftBodyInternals.h
index c17bbb5cd..e52b1c875 100644
--- a/src/BulletSoftBody/btSoftBodyInternals.h
+++ b/src/BulletSoftBody/btSoftBodyInternals.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -1940,6 +1940,10 @@ struct btSoftColliders
c.m_face = face;
c.m_bary = w;
c.m_friction = psb[0]->m_cfg.kDF * psb[1]->m_cfg.kDF;
+ // Initialize unused fields.
+ c.m_weights = btVector3(0, 0, 0);
+ c.m_imf = 0;
+ c.m_c0 = 0;
psb[0]->m_faceNodeContacts.push_back(c);
}
}
@@ -2011,6 +2015,10 @@ struct btSoftColliders
c.m_face = face;
c.m_bary = bary;
c.m_friction = psb[0]->m_cfg.kDF * psb[1]->m_cfg.kDF;
+ // Initialize unused fields.
+ c.m_weights = btVector3(0, 0, 0);
+ c.m_imf = 0;
+ c.m_c0 = 0;
psb[0]->m_faceNodeContacts.push_back(c);
}
}
@@ -2037,6 +2045,11 @@ struct btSoftColliders
c.m_face = face;
c.m_bary = bary;
c.m_friction = psb[0]->m_cfg.kDF * psb[1]->m_cfg.kDF;
+ // Initialize unused fields.
+ c.m_weights = btVector3(0, 0, 0);
+ c.m_margin = mrg;
+ c.m_imf = 0;
+ c.m_c0 = 0;
psb[0]->m_faceNodeContacts.push_back(c);
}
}
@@ -2096,6 +2109,11 @@ struct btSoftColliders
c.m_face = face;
c.m_bary = bary;
c.m_friction = psb[0]->m_cfg.kDF * psb[1]->m_cfg.kDF;
+ // Initialize unused fields.
+ c.m_weights = btVector3(0, 0, 0);
+ c.m_margin = mrg;
+ c.m_imf = 0;
+ c.m_c0 = 0;
psb[0]->m_faceNodeContacts.push_back(c);
}
}
diff --git a/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp b/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp
index 3127369cc..af728c053 100644
--- a/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp
+++ b/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h b/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
index 0396a52da..0feb84f94 100644
--- a/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
+++ b/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h b/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h
index bc538db4a..c41ebf74d 100644
--- a/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h
+++ b/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftBodySolvers.h b/src/BulletSoftBody/btSoftBodySolvers.h
index dbb2624ee..cdd069849 100644
--- a/src/BulletSoftBody/btSoftBodySolvers.h
+++ b/src/BulletSoftBody/btSoftBodySolvers.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp b/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp
index 329bd19d7..dcdd93202 100644
--- a/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp
+++ b/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h b/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h
index f295945a6..40cb1ec53 100644
--- a/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h
+++ b/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp b/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
index 5b65216e4..656b009e0 100644
--- a/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
+++ b/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h b/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h
index 9773af19a..7b2454590 100644
--- a/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h
+++ b/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp b/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
index 510b731fc..dc9b004a3 100644
--- a/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
+++ b/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftRigidDynamicsWorld.h b/src/BulletSoftBody/btSoftRigidDynamicsWorld.h
index be49c444d..0ecc7a0fa 100644
--- a/src/BulletSoftBody/btSoftRigidDynamicsWorld.h
+++ b/src/BulletSoftBody/btSoftRigidDynamicsWorld.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp b/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp
index 9c3e904f6..4e890baf7 100644
--- a/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp
+++ b/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h b/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
index 6f871f5b8..30923be66 100644
--- a/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
+++ b/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/BulletSoftBody/btSparseSDF.h b/src/BulletSoftBody/btSparseSDF.h
index d611726bc..ae1288d9e 100644
--- a/src/BulletSoftBody/btSparseSDF.h
+++ b/src/BulletSoftBody/btSparseSDF.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btAabbUtil2.h b/src/LinearMath/btAabbUtil2.h
index eea49dd33..67ff479c7 100644
--- a/src/LinearMath/btAabbUtil2.h
+++ b/src/LinearMath/btAabbUtil2.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btAlignedAllocator.cpp b/src/LinearMath/btAlignedAllocator.cpp
index be8f8aa6d..c8f436fb9 100644
--- a/src/LinearMath/btAlignedAllocator.cpp
+++ b/src/LinearMath/btAlignedAllocator.cpp
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -14,6 +14,7 @@ subject to the following restrictions:
*/
#include "btAlignedAllocator.h"
+#include <string.h>
#ifdef BT_DEBUG_MEMORY_ALLOCATIONS
int gNumAlignedAllocs = 0;
@@ -23,7 +24,9 @@ int gTotalBytesAlignedAllocs = 0; //detect memory leaks
static void *btAllocDefault(size_t size)
{
- return malloc(size);
+ char* data = (char*) malloc(size);
+ memset(data,0,size);//keep msan happy
+ return data;
}
static void btFreeDefault(void *ptr)
@@ -73,6 +76,8 @@ static inline void *btAlignedAllocDefault(size_t size, int alignment)
{
ret = (void *)(real);
}
+ //keep msan happy
+ memset((char*) ret, 0, size);
return (ret);
}
diff --git a/src/LinearMath/btAlignedAllocator.h b/src/LinearMath/btAlignedAllocator.h
index 971f62bfb..f6bbcdbbf 100644
--- a/src/LinearMath/btAlignedAllocator.h
+++ b/src/LinearMath/btAlignedAllocator.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btAlignedObjectArray.h b/src/LinearMath/btAlignedObjectArray.h
index b3d5d64b5..ac3e189eb 100644
--- a/src/LinearMath/btAlignedObjectArray.h
+++ b/src/LinearMath/btAlignedObjectArray.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,7 +22,7 @@ subject to the following restrictions:
///If the platform doesn't support placement new, you can disable BT_USE_PLACEMENT_NEW
///then the btAlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors
///You can enable BT_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator=
-///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and
+///see discussion here: https://bulletphysics.orgphpBB2/viewtopic.php?t=1231 and
///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240
#define BT_USE_PLACEMENT_NEW 1
diff --git a/src/LinearMath/btGeometryUtil.cpp b/src/LinearMath/btGeometryUtil.cpp
index 115e3eab8..62bbef2c9 100644
--- a/src/LinearMath/btGeometryUtil.cpp
+++ b/src/LinearMath/btGeometryUtil.cpp
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btGeometryUtil.h b/src/LinearMath/btGeometryUtil.h
index 0ce5b76d9..5ed87022e 100644
--- a/src/LinearMath/btGeometryUtil.h
+++ b/src/LinearMath/btGeometryUtil.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btIDebugDraw.h b/src/LinearMath/btIDebugDraw.h
index 82ec19a69..df4db2ff5 100644
--- a/src/LinearMath/btIDebugDraw.h
+++ b/src/LinearMath/btIDebugDraw.h
@@ -4,8 +4,8 @@ Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it freely,
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
@@ -21,7 +21,7 @@ subject to the following restrictions:
///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld.
-///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum.
+///A class that implements the btIDebugDraw interface will need to provide non-empty implementations of the the drawLine and getDebugMode methods at a minimum.
///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1]
class btIDebugDraw
{
diff --git a/src/LinearMath/btList.h b/src/LinearMath/btList.h
index b255938c3..9072abcd0 100644
--- a/src/LinearMath/btList.h
+++ b/src/LinearMath/btList.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btMatrix3x3.h b/src/LinearMath/btMatrix3x3.h
index 9c90fee1d..4391a52cd 100644
--- a/src/LinearMath/btMatrix3x3.h
+++ b/src/LinearMath/btMatrix3x3.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btMinMax.h b/src/LinearMath/btMinMax.h
index 92fea0275..cdc54f3fb 100644
--- a/src/LinearMath/btMinMax.h
+++ b/src/LinearMath/btMinMax.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btMotionState.h b/src/LinearMath/btMotionState.h
index ae6a51611..87aa60299 100644
--- a/src/LinearMath/btMotionState.h
+++ b/src/LinearMath/btMotionState.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btPoolAllocator.h b/src/LinearMath/btPoolAllocator.h
index 4e7b49660..816cd627a 100644
--- a/src/LinearMath/btPoolAllocator.h
+++ b/src/LinearMath/btPoolAllocator.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btQuadWord.h b/src/LinearMath/btQuadWord.h
index ab2d3175a..851596b17 100644
--- a/src/LinearMath/btQuadWord.h
+++ b/src/LinearMath/btQuadWord.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btQuaternion.h b/src/LinearMath/btQuaternion.h
index 53e8169b8..40d6e145c 100644
--- a/src/LinearMath/btQuaternion.h
+++ b/src/LinearMath/btQuaternion.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btRandom.h b/src/LinearMath/btRandom.h
index e659af860..775313004 100644
--- a/src/LinearMath/btRandom.h
+++ b/src/LinearMath/btRandom.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btScalar.h b/src/LinearMath/btScalar.h
index 36b90cc94..28c03b286 100644
--- a/src/LinearMath/btScalar.h
+++ b/src/LinearMath/btScalar.h
@@ -25,7 +25,7 @@ subject to the following restrictions:
#include <float.h>
/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/
-#define BT_BULLET_VERSION 307
+#define BT_BULLET_VERSION 320
inline int btGetVersion()
{
diff --git a/src/LinearMath/btSerializer.h b/src/LinearMath/btSerializer.h
index 4d1c760e2..ca8d9d988 100644
--- a/src/LinearMath/btSerializer.h
+++ b/src/LinearMath/btSerializer.h
@@ -480,8 +480,8 @@ public:
}
buffer[9] = '3';
- buffer[10] = '0';
- buffer[11] = '8';
+ buffer[10] = '2';
+ buffer[11] = '0';
}
virtual void startSerialization()
diff --git a/src/LinearMath/btStackAlloc.h b/src/LinearMath/btStackAlloc.h
index 3fc208497..761d6a429 100644
--- a/src/LinearMath/btStackAlloc.h
+++ b/src/LinearMath/btStackAlloc.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btTransform.h b/src/LinearMath/btTransform.h
index 6f2f99818..310b39766 100644
--- a/src/LinearMath/btTransform.h
+++ b/src/LinearMath/btTransform.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btTransformUtil.h b/src/LinearMath/btTransformUtil.h
index b874dd680..a5aab208f 100644
--- a/src/LinearMath/btTransformUtil.h
+++ b/src/LinearMath/btTransformUtil.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btVector3.cpp b/src/LinearMath/btVector3.cpp
index 13111157a..55796c41e 100644
--- a/src/LinearMath/btVector3.cpp
+++ b/src/LinearMath/btVector3.cpp
@@ -1,6 +1,6 @@
/*
Copyright (c) 2011 Apple Inc.
- http://continuousphysics.com/Bullet/
+ https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/LinearMath/btVector3.h b/src/LinearMath/btVector3.h
index d65ed9808..9da162772 100644
--- a/src/LinearMath/btVector3.h
+++ b/src/LinearMath/btVector3.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/btBulletCollisionCommon.h b/src/btBulletCollisionCommon.h
index 4f523756a..2de34ad3b 100644
--- a/src/btBulletCollisionCommon.h
+++ b/src/btBulletCollisionCommon.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/btBulletDynamicsCommon.h b/src/btBulletDynamicsCommon.h
index a421fa446..fef4380f6 100644
--- a/src/btBulletDynamicsCommon.h
+++ b/src/btBulletDynamicsCommon.h
@@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.