[ODE] test_buggy strangeness

Nate W coding at natew.com
Thu Nov 29 01:53:01 MST 2001


On Wed, 28 Nov 2001, Adam Rotaru wrote:

> --- Nate W <coding at natew.com> wrote:
> > I just finished modifying the 'buggy' test app to include a closed
> > loop of joints and bodies.  It's behaving a bit strangely [....]
> 
>   I played around with it a bit, and it's indeed behaving strangly.  
> I managed to fix it by changing the joint between one conrod and the
> back wheel from hinge to balljoint.
>
> My guess is that the two rods are constrained into one line by both
> the prismatic joint and the hinge joint, and the solver cannot
> correctly handle this. With the ball joint one constraint is removed.

That allows the buggy to roll forward and backward without lurching, but
it still steers funny.  With a ball joint at both ends of the conrod, the
buggy handles just as it did in the original program.

It's interesting to watch the conrod as the buggy drives around in tight
circles.  The conrod twists on its long axis.  It takes four circles of
the buggy for the conrod to make one complete rotation along its
axis.  Anyone got ideas about this quirk?  

> BTW, I noticed that one of the conrods does not collide with the
> ground (you can see this if you remove the prismatic joint, the first
> rod just falls through the ground).  I believe this is caused by the
> fact that both rods use the same box object (box[1]).

Yep, that was going to be the subject of my next question, thanks for
answering pre-emptively.  If the collision detection code checks for
collisions once per box, rather than once per reference-to-box, that might
explain this.  This is easy enough to address at the application level.
Just out of curiousity though, would there be a performance penalty to
make collision detection support multiple instantiations of the same
geometry objects?

> When I make those separate, the rod collides with the ground OK, but
> not with the chassis (??). 

I think that's explained by the first three lines of nearCallback - if one
of the colliding objects isn't the ground or the jump ramp (ground_box),
the collisions are ignored.

ODE is cool stuff.  I've been looking at ODE and Dynamechs for a project
I'm starting on, and I've chosen ODE.  The more I play with ODE's API, the
more I like it.  Nice work, Russel!

-- 

Nate Waddoups
Redmond WA USA
http://www.natew.com







More information about the ODE mailing list