add example of a free moving sphere controlled by external torque
add some toy shape sorter cube (not finished yet)
This commit is contained in:
61
examples/pybullet/examples/externalTorqueControlledSphere.py
Normal file
61
examples/pybullet/examples/externalTorqueControlledSphere.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import pybullet as p
|
||||
import pybullet_data
|
||||
import time
|
||||
|
||||
p.connect(p.GUI)
|
||||
p.setAdditionalSearchPath(pybullet_data.getDataPath())
|
||||
p.loadSDF("stadium.sdf")
|
||||
p.setGravity(0,0,-10)
|
||||
objects = p.loadMJCF("mjcf/sphere.xml")
|
||||
sphere = objects[0]
|
||||
p.resetBasePositionAndOrientation(sphere,[0,0,1],[0,0,0,1])
|
||||
p.changeDynamics(sphere,-1,linearDamping=0.9)
|
||||
p.changeVisualShape(sphere,-1,rgbaColor=[1,0,0,1])
|
||||
forward = 0
|
||||
turn = 0
|
||||
|
||||
|
||||
forwardVec = [2,0,0]
|
||||
cameraDistance = 1
|
||||
cameraYaw = 35
|
||||
cameraPitch = -35
|
||||
|
||||
while (1):
|
||||
|
||||
spherePos, orn = p.getBasePositionAndOrientation(sphere)
|
||||
|
||||
cameraTargetPosition = spherePos
|
||||
p.resetDebugVisualizerCamera(cameraDistance,cameraYaw,cameraPitch,cameraTargetPosition)
|
||||
camInfo = p.getDebugVisualizerCamera()
|
||||
camForward = camInfo[5]
|
||||
|
||||
|
||||
keys = p.getKeyboardEvents()
|
||||
for k,v in keys.items():
|
||||
|
||||
if (k == p.B3G_RIGHT_ARROW and (v&p.KEY_WAS_TRIGGERED)):
|
||||
turn = -0.5
|
||||
if (k == p.B3G_RIGHT_ARROW and (v&p.KEY_WAS_RELEASED)):
|
||||
turn = 0
|
||||
if (k == p.B3G_LEFT_ARROW and (v&p.KEY_WAS_TRIGGERED)):
|
||||
turn = 0.5
|
||||
if (k == p.B3G_LEFT_ARROW and (v&p.KEY_WAS_RELEASED)):
|
||||
turn = 0
|
||||
|
||||
if (k == p.B3G_UP_ARROW and (v&p.KEY_WAS_TRIGGERED)):
|
||||
forward=1
|
||||
if (k == p.B3G_UP_ARROW and (v&p.KEY_WAS_RELEASED)):
|
||||
forward=0
|
||||
if (k == p.B3G_DOWN_ARROW and (v&p.KEY_WAS_TRIGGERED)):
|
||||
forward=-1
|
||||
if (k == p.B3G_DOWN_ARROW and (v&p.KEY_WAS_RELEASED)):
|
||||
forward=0
|
||||
|
||||
force = [forward*camForward[0],forward*camForward[1],0]
|
||||
cameraYaw = cameraYaw+turn
|
||||
|
||||
if (forward):
|
||||
p.applyExternalForce(sphere,-1, force , spherePos, flags = p.WORLD_FRAME )
|
||||
|
||||
p.stepSimulation()
|
||||
time.sleep(1./240.)
|
||||
Reference in New Issue
Block a user