[ODE] Static objects start rotating?

Jon Watte (ODE) hplus-ode at mindcontrol.org
Sun Aug 12 14:35:33 MST 2007


I see two problems:

1) You're only creating a single joint. That's only OK for a sphere to 
come to rest. As I said below, you'll need three (or preferrably more) 
for other geoms to allow a body to come to rest.

2) You're not turning on the friction model, so "mu" is a maximum force. 
0.1 Newtons isn't that much,

Cheers,

          / h+


James Frye wrote:
> "Jon Watte (ODE)" <hplus-ode at mindcontrol.org> wrote on 08/12/2007 08:51:55
> AM:
>
>   
>> First, are you creating a ground? If so, how?
>> Are you using gravity? If so, how much?
>> Are you using fixed or variable step size?
>> What does your nearcallback look like? What joints are created, if any,
>> each step?
>>
>> If you have, say, a plane for ground, and you use reasonable gravity, a
>> step size of 0.01, and create at least 3 contacts per body (preferrably
>> more), it should come to rest pretty quickly, although a little
>> rotational and linear inertial dampening each step certainly helps.
>>     
>
> The ground plane & gravity are set with
>
>   dWorldSetGravity (world, 0.0, 0.0, -9.81);
>   dCreatePlane (space, 0.0, 0.0, 1.0, 0.0);
>
> I'm using a fixed timestep, dT = 0.005 sec.  That was selected because it
> gave close to realistic time in other models, and let me put off doing
> real timing code.
>
> The nearCallback code is
>
>   b1 = dGeomGetBody (o1);
>   b2 = dGeomGetBody (o2);
>
>   /* exit without doing anything if the two bodies are connected by a joint */
>
>   if (b1 && b2 && dAreConnected (b1, b2))
>     return;
>
>   contact.surface.mode = 0;
>   contact.surface.mu   = 0.1;
>   contact.surface.mu2  = 0.0;
>   if (dCollide (o1, o2, 0, &contact.geom, sizeof (dContactGeom)))
>   {
>     c = dJointCreateContact (world, contactgroup, &contact);
>     dJointAttach (c, b1, b2);
>   }
>
> This was copied straight out of one of the test programs.  (After, of
> course running it through indent to de-obfuscate it.).
>
> There aren't any joints or other bodies in the code, since it's my
> version of a "Hello, World", the simplest case of one body just sitting
> there that I intend to keep adding to until I get my working model.,
>
> Thanks,
> James
>
> _______________________________________________
> ODE mailing list
> ODE at ode.org
> http://ode.org/mailman/listinfo/ode
>
>
>   


More information about the ODE mailing list