46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
import pybullet as p
|
|
import time
|
|
import math
|
|
|
|
p.connect(p.GUI)
|
|
useMaximalCoordinates = False
|
|
|
|
p.setGravity(0,0,-10)
|
|
plane=p.loadURDF("plane.urdf",[0,0,-1],useMaximalCoordinates=useMaximalCoordinates)
|
|
|
|
p.setRealTimeSimulation(0)
|
|
|
|
|
|
velocity = 1
|
|
num = 40
|
|
p.configureDebugVisualizer(p.COV_ENABLE_GUI,0)
|
|
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING,1)#disable this to make it faster
|
|
p.configureDebugVisualizer(p.COV_ENABLE_TINY_RENDERER,0)
|
|
p.setPhysicsEngineParameter(enableConeFriction=1)
|
|
|
|
for i in range (num):
|
|
print("progress:",i,num)
|
|
|
|
x = velocity*math.sin(2.*3.1415*float(i)/num)
|
|
y = velocity*math.cos(2.*3.1415*float(i)/num)
|
|
print("velocity=",x,y)
|
|
sphere=p.loadURDF("sphere_small_zeroinertia.urdf", flags=p.URDF_USE_INERTIA_FROM_FILE, useMaximalCoordinates=useMaximalCoordinates)
|
|
p.changeDynamics(sphere,-1,lateralFriction=0.02)
|
|
#p.changeDynamics(sphere,-1,rollingFriction=10)
|
|
p.changeDynamics(sphere,-1,linearDamping=0)
|
|
p.changeDynamics(sphere,-1,angularDamping=0)
|
|
p.resetBaseVelocity(sphere,linearVelocity=[x,y,0])
|
|
|
|
prevPos = [0,0,0]
|
|
for i in range (2048):
|
|
p.stepSimulation()
|
|
pos = p.getBasePositionAndOrientation(sphere)[0]
|
|
if (i&64):
|
|
p.addUserDebugLine(prevPos,pos,[1,0,0],1)
|
|
prevPos = pos
|
|
|
|
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING,1)
|
|
|
|
|
|
while (1):
|
|
time.sleep(0.01) |