diff options
Diffstat (limited to 'examples/pybullet/gym/pybullet_envs/examples/microtaur.py')
-rw-r--r-- | examples/pybullet/gym/pybullet_envs/examples/microtaur.py | 467 |
1 files changed, 0 insertions, 467 deletions
diff --git a/examples/pybullet/gym/pybullet_envs/examples/microtaur.py b/examples/pybullet/gym/pybullet_envs/examples/microtaur.py deleted file mode 100644 index 2d5b843a3..000000000 --- a/examples/pybullet/gym/pybullet_envs/examples/microtaur.py +++ /dev/null @@ -1,467 +0,0 @@ -import pybullet as p -import pybullet_data as pd - -import time -import math - - -def drawInertiaBox(parentUid, parentLinkIndex, color): - return - dyn = p.getDynamicsInfo(parentUid, parentLinkIndex) - mass = dyn[0] - frictionCoeff = dyn[1] - inertia = dyn[2] - if (mass > 0): - Ixx = inertia[0] - Iyy = inertia[1] - Izz = inertia[2] - boxScaleX = 0.5 * math.sqrt(6 * (Izz + Iyy - Ixx) / mass) - boxScaleY = 0.5 * math.sqrt(6 * (Izz + Ixx - Iyy) / mass) - boxScaleZ = 0.5 * math.sqrt(6 * (Ixx + Iyy - Izz) / mass) - - halfExtents = [boxScaleX, boxScaleY, boxScaleZ] - pts = [[halfExtents[0], halfExtents[1], halfExtents[2]], - [-halfExtents[0], halfExtents[1], halfExtents[2]], - [halfExtents[0], -halfExtents[1], halfExtents[2]], - [-halfExtents[0], -halfExtents[1], halfExtents[2]], - [halfExtents[0], halfExtents[1], -halfExtents[2]], - [-halfExtents[0], halfExtents[1], -halfExtents[2]], - [halfExtents[0], -halfExtents[1], -halfExtents[2]], - [-halfExtents[0], -halfExtents[1], -halfExtents[2]]] - - p.addUserDebugLine(pts[0], - pts[1], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[1], - pts[3], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[3], - pts[2], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[2], - pts[0], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - - p.addUserDebugLine(pts[0], - pts[4], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[1], - pts[5], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[2], - pts[6], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[3], - pts[7], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - - p.addUserDebugLine(pts[4 + 0], - pts[4 + 1], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[4 + 1], - pts[4 + 3], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[4 + 3], - pts[4 + 2], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - p.addUserDebugLine(pts[4 + 2], - pts[4 + 0], - color, - 1, - parentObjectUniqueId=parentUid, - parentLinkIndex=parentLinkIndex) - - -toeConstraint = True -useMaximalCoordinates = False -useRealTime = 1 - -#the fixedTimeStep and numSolverIterations are the most important parameters to trade-off quality versus performance -fixedTimeStep = 1. / 100 -numSolverIterations = 50 - -if (useMaximalCoordinates): - fixedTimeStep = 1. / 500 - numSolverIterations = 200 - -speed = 10 -amplitude = 0.8 -jump_amp = 0.5 -maxForce = 3.5 -kneeFrictionForce = 0 -kp = 1 -kd = .5 -maxKneeForce = 1000 - -physId = p.connect(p.SHARED_MEMORY) - -if (physId < 0): - p.connect(p.GUI) -#p.resetSimulation() -p.setAdditionalSearchPath(pd.getDataPath()) -angle = 0 # pick in range 0..0.2 radians -orn = p.getQuaternionFromEuler([0, angle, 0]) -p.loadURDF("plane.urdf", [0, 0, 0], orn) -p.setPhysicsEngineParameter(numSolverIterations=numSolverIterations) -p.startStateLogging(p.STATE_LOGGING_GENERIC_ROBOT, - "genericlogdata.bin", - maxLogDof=16, - logFlags=p.STATE_LOG_JOINT_TORQUES) -p.setTimeOut(4000000) - -p.setGravity(0, 0, 0) -p.setTimeStep(fixedTimeStep) - -orn = p.getQuaternionFromEuler([0, 0, 0.4]) -p.setRealTimeSimulation(0) -quadruped = p.loadURDF("quadruped/microtaur/microtaur.urdf", [1, -1, .3], - orn, - useFixedBase=False, - useMaximalCoordinates=useMaximalCoordinates, - flags=p.URDF_USE_IMPLICIT_CYLINDER) -nJoints = p.getNumJoints(quadruped) - -jointNameToId = {} -for i in range(nJoints): - jointInfo = p.getJointInfo(quadruped, i) - jointNameToId[jointInfo[1].decode('UTF-8')] = jointInfo[0] - -motor_front_rightR_joint = jointNameToId['motor_front_rightR_joint'] -motor_front_rightL_joint = jointNameToId['motor_front_rightL_joint'] -knee_front_rightL_joint = jointNameToId['knee_front_rightL_joint'] -hip_front_rightR_joint = jointNameToId['hip_front_rightR_joint'] -knee_front_rightR_joint = jointNameToId['knee_front_rightR_joint'] -motor_front_rightL_joint = jointNameToId['motor_front_rightL_joint'] -motor_front_leftR_joint = jointNameToId['motor_front_leftR_joint'] -hip_front_leftR_joint = jointNameToId['hip_front_leftR_joint'] -knee_front_leftR_joint = jointNameToId['knee_front_leftR_joint'] -motor_front_leftL_joint = jointNameToId['motor_front_leftL_joint'] -motor_front_leftL_joint = jointNameToId['motor_front_leftL_joint'] -knee_front_leftL_joint = jointNameToId['knee_front_leftL_joint'] -motor_back_rightR_joint = jointNameToId['motor_back_rightR_joint'] -knee_back_rightR_joint = jointNameToId['knee_back_rightR_joint'] -motor_back_rightL_joint = jointNameToId['motor_back_rightL_joint'] -motor_back_rightL_joint = jointNameToId['motor_back_rightL_joint'] -knee_back_rightL_joint = jointNameToId['knee_back_rightL_joint'] -motor_back_leftR_joint = jointNameToId['motor_back_leftR_joint'] -knee_back_leftR_joint = jointNameToId['knee_back_leftR_joint'] -motor_back_leftL_joint = jointNameToId['motor_back_leftL_joint'] -motor_back_leftL_joint = jointNameToId['motor_back_leftL_joint'] -knee_back_leftL_joint = jointNameToId['knee_back_leftL_joint'] - -#fixtorso = p.createConstraint(-1,-1,quadruped,-1,p.JOINT_FIXED,[0,0,0],[0,0,0],[0,0,0]) - -motordir = [-1, -1, -1, -1, 1, 1, 1, 1] -halfpi = 1.57079632679 -twopi = 4 * halfpi -kneeangle = -2.1834 - -dyn = p.getDynamicsInfo(quadruped, -1) -mass = dyn[0] -friction = dyn[1] -localInertiaDiagonal = dyn[2] - -print("localInertiaDiagonal", localInertiaDiagonal) - -#this is a no-op, just to show the API -p.changeDynamics(quadruped, -1, localInertiaDiagonal=localInertiaDiagonal) - -#for i in range (nJoints): -# p.changeDynamics(quadruped,i,localInertiaDiagonal=[0.000001,0.000001,0.000001]) - -drawInertiaBox(quadruped, -1, [1, 0, 0]) -#drawInertiaBox(quadruped,motor_front_rightR_joint, [1,0,0]) - -for i in range(nJoints): - drawInertiaBox(quadruped, i, [0, 1, 0]) - -if (useMaximalCoordinates): - steps = 400 - for aa in range(steps): - p.setJointMotorControl2(quadruped, motor_front_leftL_joint, p.POSITION_CONTROL, - motordir[0] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_front_leftR_joint, p.POSITION_CONTROL, - motordir[1] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_back_leftL_joint, p.POSITION_CONTROL, - motordir[2] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_back_leftR_joint, p.POSITION_CONTROL, - motordir[3] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_front_rightL_joint, p.POSITION_CONTROL, - motordir[4] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_front_rightR_joint, p.POSITION_CONTROL, - motordir[5] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_back_rightL_joint, p.POSITION_CONTROL, - motordir[6] * halfpi * float(aa) / steps) - p.setJointMotorControl2(quadruped, motor_back_rightR_joint, p.POSITION_CONTROL, - motordir[7] * halfpi * float(aa) / steps) - - p.setJointMotorControl2(quadruped, knee_front_leftL_joint, p.POSITION_CONTROL, - motordir[0] * (kneeangle + twopi) * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_front_leftR_joint, p.POSITION_CONTROL, - motordir[1] * kneeangle * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_back_leftL_joint, p.POSITION_CONTROL, - motordir[2] * kneeangle * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_back_leftR_joint, p.POSITION_CONTROL, - motordir[3] * (kneeangle + twopi) * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_front_rightL_joint, p.POSITION_CONTROL, - motordir[4] * (kneeangle) * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_front_rightR_joint, p.POSITION_CONTROL, - motordir[5] * (kneeangle + twopi) * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_back_rightL_joint, p.POSITION_CONTROL, - motordir[6] * (kneeangle + twopi) * float(aa) / steps) - p.setJointMotorControl2(quadruped, knee_back_rightR_joint, p.POSITION_CONTROL, - motordir[7] * kneeangle * float(aa) / steps) - - p.stepSimulation() - #time.sleep(fixedTimeStep) -else: - - p.resetJointState(quadruped, motor_front_leftL_joint, motordir[0] * halfpi) - p.resetJointState(quadruped, knee_front_leftL_joint, motordir[0] * kneeangle) - p.resetJointState(quadruped, motor_front_leftR_joint, motordir[1] * halfpi) - p.resetJointState(quadruped, knee_front_leftR_joint, motordir[1] * kneeangle) - - p.resetJointState(quadruped, motor_back_leftL_joint, motordir[2] * halfpi) - p.resetJointState(quadruped, knee_back_leftL_joint, motordir[2] * kneeangle) - p.resetJointState(quadruped, motor_back_leftR_joint, motordir[3] * halfpi) - p.resetJointState(quadruped, knee_back_leftR_joint, motordir[3] * kneeangle) - - p.resetJointState(quadruped, motor_front_rightL_joint, motordir[4] * halfpi) - p.resetJointState(quadruped, knee_front_rightL_joint, motordir[4] * kneeangle) - p.resetJointState(quadruped, motor_front_rightR_joint, motordir[5] * halfpi) - p.resetJointState(quadruped, knee_front_rightR_joint, motordir[5] * kneeangle) - - p.resetJointState(quadruped, motor_back_rightL_joint, motordir[6] * halfpi) - p.resetJointState(quadruped, knee_back_rightL_joint, motordir[6] * kneeangle) - p.resetJointState(quadruped, motor_back_rightR_joint, motordir[7] * halfpi) - p.resetJointState(quadruped, knee_back_rightR_joint, motordir[7] * kneeangle) - -#p.getNumJoints(1) - -if (toeConstraint): - cid = p.createConstraint(quadruped, knee_front_leftR_joint, quadruped, knee_front_leftL_joint, - p.JOINT_POINT2POINT, [0, 0, 0], [0, 0.005, 0.1], [0, 0.01, 0.1]) - p.changeConstraint(cid, maxForce=maxKneeForce) - cid = p.createConstraint(quadruped, knee_front_rightR_joint, quadruped, knee_front_rightL_joint, - p.JOINT_POINT2POINT, [0, 0, 0], [0, 0.005, 0.1], [0, 0.01, 0.1]) - p.changeConstraint(cid, maxForce=maxKneeForce) - cid = p.createConstraint(quadruped, knee_back_leftR_joint, quadruped, knee_back_leftL_joint, - p.JOINT_POINT2POINT, [0, 0, 0], [0, 0.005, 0.1], [0, 0.01, 0.1]) - p.changeConstraint(cid, maxForce=maxKneeForce) - cid = p.createConstraint(quadruped, knee_back_rightR_joint, quadruped, knee_back_rightL_joint, - p.JOINT_POINT2POINT, [0, 0, 0], [0, 0.005, 0.1], [0, 0.01, 0.1]) - p.changeConstraint(cid, maxForce=maxKneeForce) - -if (1): - p.setJointMotorControl(quadruped, knee_front_leftL_joint, p.VELOCITY_CONTROL, 0, - kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_front_leftR_joint, p.VELOCITY_CONTROL, 0, - kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_front_rightL_joint, p.VELOCITY_CONTROL, 0, - kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_front_rightR_joint, p.VELOCITY_CONTROL, 0, - kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_back_leftL_joint, p.VELOCITY_CONTROL, 0, kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_back_leftR_joint, p.VELOCITY_CONTROL, 0, kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_back_leftL_joint, p.VELOCITY_CONTROL, 0, kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_back_leftR_joint, p.VELOCITY_CONTROL, 0, kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_back_rightL_joint, p.VELOCITY_CONTROL, 0, - kneeFrictionForce) - p.setJointMotorControl(quadruped, knee_back_rightR_joint, p.VELOCITY_CONTROL, 0, - kneeFrictionForce) - -p.setGravity(0, 0, -10) - -legnumbering = [ - motor_front_leftL_joint, motor_front_leftR_joint, motor_back_leftL_joint, - motor_back_leftR_joint, motor_front_rightL_joint, motor_front_rightR_joint, - motor_back_rightL_joint, motor_back_rightR_joint -] - -for i in range(8): - print(legnumbering[i]) -#use the Minitaur leg numbering -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[0], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[0] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[1], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[1] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[2], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[2] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[3], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[3] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[4], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[4] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[5], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[5] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[6], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[6] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[7], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[7] * 1.57, - positionGain=kp, - velocityGain=kd, - force=maxForce) -#stand still -p.setRealTimeSimulation(useRealTime) - -t = 0.0 -t_end = t + 5 -ref_time = time.time() -while (t < t_end): - p.setGravity(0, 0, -10) - if (useRealTime): - t = time.time() - ref_time - else: - t = t + fixedTimeStep - if (useRealTime == 0): - p.stepSimulation() - time.sleep(fixedTimeStep) - -print("quadruped Id = ") -print(quadruped) -p.saveWorld("quadru.py") -logId = p.startStateLogging(p.STATE_LOGGING_MINITAUR, "quadrupedLog.bin", [quadruped]) - -#jump -t = 0.0 -t_end = t + 100 -i = 0 -ref_time = time.time() - -while (1): - if (useRealTime): - t = time.time() - ref_time - else: - t = t + fixedTimeStep - if (True): - - target = math.sin(t * speed) * jump_amp + 1.57 - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[0], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[0] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[1], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[1] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[2], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[2] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[3], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[3] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[4], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[4] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[5], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[5] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[6], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[6] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - p.setJointMotorControl2(bodyIndex=quadruped, - jointIndex=legnumbering[7], - controlMode=p.POSITION_CONTROL, - targetPosition=motordir[7] * target, - positionGain=kp, - velocityGain=kd, - force=maxForce) - - if (useRealTime == 0): - p.stepSimulation() - time.sleep(fixedTimeStep) |