import pybullet as p import time import pybullet_data p.connect(p.GUI) p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.setGravity(0, 0, -10) p.setTimeStep(0.001) #p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 0) #p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0) plane = p.loadURDF('plane.urdf') vel=0 prev_ang=0 #wh= p.addUserDebugParameter('Velocity', -100, 100, 0) cubeStartPos = [0,0,0.001] cubeStartOrientation = p.getQuaternionFromEuler([0,0,0]) bot = p.loadURDF('balance.urdf', cubeStartPos, cubeStartOrientation ) k=-18.6925 kd=-0.62 ki=-0.000 add =0 while True: #vel = p.readUserDebugParameter(wh) cubePos, cubeOrn = p.getBasePositionAndOrientation(bot) cubeEuler = p.getEulerFromQuaternion(cubeOrn) add=add+cubeEuler[0] dv = k*cubeEuler[0] + kd*(cubeEuler[0]-prev_ang) + ki*add prev_ang=cubeEuler[0] vel=vel+dv p.setJointMotorControl2(bot, 0, p.VELOCITY_CONTROL, targetVelocity=vel) p.setJointMotorControl2(bot, 1, p.VELOCITY_CONTROL, targetVelocity=-vel) #p.applyExternalTorque(bot, 0, [vel,0,0],p.LINK_FRAME) #p.applyExternalTorque(bot, 1, [-vel,0,0],p.LINK_FRAME) #cubePos, cubeOrn = p.getBasePositionAndOrientation(bot) #p.resetDebugVisualizerCamera(cameraTargetPosition=cubePos) #camTargetPos = cubePos #viewMatrix = p.computeViewMatrixFromYawPitchRoll(camTargetPos) #projectionMatrix = [ # 1.0825318098068237, 0.0, 0.0, 0.0, 0.0, 1.732050895690918, 0.0, 0.0, 0.0, 0.0, # -1.0002000331878662, -1.0, 0.0, 0.0, -0.020002000033855438, 0.0 #] #start = time.time() #img_arr = p.getCameraImage(viewMatrix=viewMatrix, projectionMatrix=projectionMatrix, shadow=1, lightDirection=[1, 1, 1]) #stop = time.time() p.stepSimulation()