diff --git a/examples/pybullet/gym/pybullet_envs/examples/ANYmal.py b/examples/pybullet/gym/pybullet_envs/examples/ANYmal.py new file mode 100644 index 000000000..e413d3971 --- /dev/null +++ b/examples/pybullet/gym/pybullet_envs/examples/ANYmal.py @@ -0,0 +1,51 @@ +import pybullet as p +import pybullet_data + +import time +p.connect(p.GUI) +p.setAdditionalSearchPath(pybullet_data.getDataPath()) + +p.configureDebugVisualizer(p.COV_ENABLE_RENDERING,0) +p.configureDebugVisualizer(p.COV_ENABLE_TINY_RENDERER,0) + +ground = p.loadURDF("plane.urdf",[0,0,0], flags=p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES) + +p.changeVisualShape(ground,-1,rgbaColor=[1,1,1,0.8]) +#p.configureDebugVisualizer(p.COV_ENABLE_PLANAR_REFLECTION,1) + +print("hasNumpy = ",p.isNumpyEnabled()) + + +anymal = p.loadURDF("quadruped/ANYmal/robot.urdf",[3,3,3], flags=p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES, useMaximalCoordinates=False) +p.resetSimulation() +ground = p.loadURDF("plane.urdf",[0,0,0], flags=p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES) + +#todo, tweak this value to trade solver quality versus performance +p.setPhysicsEngineParameter(solverResidualThreshold=1e-2) + +index = 0 +numX = 3 +numY = 3 + +for i in range (numX): + for j in range (numY): + print("loading animal ", index) + index+=1 + + #anymal = p.loadURDF("atlas/atlas_v4_with_multisense.urdf",[i*3,j*3,1], flags=p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES) + anymal = p.loadURDF("quadruped/ANYmal/robot.urdf",[(i-numX/2)*2,(j-numY/2)*2,0.6], flags=p.URDF_ENABLE_CACHED_GRAPHICS_SHAPES, useMaximalCoordinates=False) + + for j in range(p.getNumJoints(anymal)): + p.setJointMotorControl2(anymal,j,p.POSITION_CONTROL,targetPosition=0, force=500) + +p.configureDebugVisualizer(p.COV_ENABLE_RENDERING,1) + + +p.setGravity(0,0,-10) +#p.setRealTimeSimulation(1) + +while (1): + p.stepSimulation() + time.sleep(1./240.) + +