#script to track a robot with a VR controller attached to it. import time import pybullet as p #first try to connect to shared memory (VR), if it fails use local GUI c = p.connect(p.SHARED_MEMORY) if (c<0): c = p.connect(p.GUI) p.resetSimulation() p.setGravity(0,0,0) print(c) if (c<0): p.connect(p.GUI) #load the MuJoCo MJCF hand minitaur = p.loadURDF("quadruped/minitaur.urdf") robot_cid = -1 POSITION=1 ORIENTATION=2 BUTTONS=6 p.setRealTimeSimulation(1) controllerId = -1 while True: events = p.getVREvents() for e in (events): #print (e[BUTTONS]) if (e[BUTTONS][33]&p.VR_BUTTON_WAS_TRIGGERED ): if (controllerId >= 0): controllerId = -1 else: controllerId = e[0] if (e[0] == controllerId): if (robot_cid>=0): p.changeConstraint(robot_cid,e[POSITION],e[ORIENTATION], maxForce=5000) if (e[BUTTONS][32]&p.VR_BUTTON_WAS_TRIGGERED ): if (robot_cid>=0): p.removeConstraint(robot_cid) #q = [0,0,0,1] euler = p.getEulerFromQuaternion(e[ORIENTATION]) q = p.getQuaternionFromEuler([euler[0],euler[1],0]) #-euler[0],-euler[1],-euler[2]]) robot_cid = p.createConstraint(minitaur,-1,-1,-1,p.JOINT_FIXED,[0,0,0],[0.1,0,0],e[POSITION],q,e[ORIENTATION])