[ODE] strange oscillations while steering a roboter arm
Sebastian Gieselmann
sgieselmann at freenet.de
Wed Apr 25 00:31:43 MST 2007
Here is the Code:
import pygame
from pygame.locals import *
import ode
def coord(x,y):
"Convert world coordinates to pixel coordinates."
return 320+170*x, 400-170*y
def xcoord(x):
return 320+170*x
def ycoord(y):
return 400-170*y
# Initialize pygame
pygame.init()
# Open a display
srf = pygame.display.set_mode((640,480))
# Create a world object
world = ode.World()
world.setGravity((0,-9.81,0))
world.setERP(1.8)
#world.setCFM(0.002)
# Create bodies
arm = ode.Body(world)
Marm = ode.Mass()
Marm.setSphere(3000, 0.2)
arm.setMass(Marm)
arm.setPosition(( 0, 1, 0))
# Joints
jArm = ode.HingeJoint(world)
jArm.attach(arm, ode.environment)
jArm.setAnchor( (0, 2, 0) )
jArm.setAxis((0,0,1))
# Simulation loop...
fps = 50
dt = 1.0/fps
loopFlag = True
clk = pygame.time.Clock()
force = 0.0
#jArm.addTorque(1000)
while loopFlag:
events = pygame.event.get()
for e in events:
if e.type==QUIT:
loopFlag=False
if e.type==KEYDOWN:
loopFlag=False
# Clear the screen
srf.fill((255,255,255))
# Draw the two bodies
x2,y2,z2 = arm.getPosition()
pygame.draw.circle(srf, (255,0,0), coord(x2,y2), 20, 0)
pygame.draw.line(srf, (255,0,0), coord(0,2), coord(x2,y2), 2)
pygame.display.flip()
# Next simulation step
force = force + 2.4
jArm.addTorque(force)
world.step(dt)
# Try to keep the specified framerate
clk.tick(fps)
More information about the ODE
mailing list