[ODE] RE: Wheel rotation problem

Peter kaffiene at xtra.co.nz
Thu Oct 10 13:33:02 2002


> -----Original Message-----
> From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of
McEvoy,
> Nick
> Sent: Friday, 13 September 2002 11:49 a.m.
> To: 'ode@q12.org'
> Subject: [ODE] RE: Wheel rotation problem
> 
> Marco Grubert wrote:
> >My observations is that mass of the connected objects has a huge
impact
> on
> >stability. I started out with a 500kg chassis and 15kg wheels.
Reducing
> this
> >to 1/10th of the original value significantly improved the top speed
when
> >wheel bending occurs. It appears as though the object mass would
increase
> >with higher speed, pushing the wheels into a /\ shape when driving
> straight
> >or a // shape when doing a left turn.
> 
> // Chassis
> CLength = 0.7f;
> CWidth = 0.5f;
> CHeight = 0.2f;
> CMass = 1.0f;
> 
> // Wheels
> WRadius = 0.15f;
> WMass = 0.2f;
> 
> Gravity=-5.0f; // yes a strange value but who said my game is on earth
:)
> 
> I'll do some more parameter tweaking. :)
> 
> 
> >I have not yet tried moving the hinge2
> >anchor points around- does that make any difference?
> 
> No I have not tried that idea yet.
> 
> 
> >I did not notice any difference when setting the finite rotation
mode.
> >However, the documentation suggests setting the axis every timestep
> (which
> >you don´t do in the sample code).
> 
> I see that in the doco ... NOW ... missed it before ... so
> dBodySetFiniteRotationAxis() should be call each step !?  I'll try
that
> then.
> 
> 
> >I don´t quite understand how this mode
> >operates or why the axis has to be reset. Why should it change during
> >iterations ?
> 
> Yes good question (why call each time step) ... I don't understand it
> either
> ... I'm no physics guru. :-(
> 
> 
> >How are you adjusting the axes´ angles? I had this problem when only
> >querying one wheel, calculating the difference and then applying the
same
> >value to both joints. Calculating the rate of change independently
for
> each
> >of the two front joints fixed that problem.
> 
> Ahhh your right on this one I think ... I was calculating each wheel
> (steering) independently.  I'll fix it this weekend.
> 
> // Motor
> for (i = 0; i <= 1; i++)
> {
> 	dJointSetHinge2Param(mODEJoint[i], dParamVel2, -speed);
> 	dJointSetHinge2Param(mODEJoint[i], dParamFMax2, 0.1);
> }
> 
> // Steering - woops this is wrong ... I'll fix it as per your
suggestion
> !!!
> for (i = 0; i <= 1; i++)
> {
> 	dReal v = steer - dJointGetHinge2Angle1(mODEJoint[i]);
> 	if (v > 0.1) v = 0.1;
> 	if (v < -0.1) v = -0.1;
> 	v *= 10.0;
> 	dJointSetHinge2Param(mODEJoint[i], dParamVel, v);
> 	dJointSetHinge2Param(mODEJoint[i], dParamFMax, 0.2);
> 	dJointSetHinge2Param(mODEJoint[i], dParamLoStop, -0.75);
> 	dJointSetHinge2Param(mODEJoint[i], dParamHiStop, 0.75);
> 	dJointSetHinge2Param(mODEJoint[i], dParamFudgeFactor, 0.1);
> }
> 


Nick, did any of these experiments work? (i.e. get rid of the
wheel-bending problem)?

Cheers,

Peter.