HOWTO 4 wheel vehicle
From ODE Wiki
Good examples of making working vehicles are Jon Watte's carworld and raycar. You could maybe flesh out this article using those two. Raycar is the simplest.
Introduction
If you came here, you probably already know that building a working vehicle in ODE isn't that easy. Maybe you notice that the wheels have trouble turning when rotating at high speeds? Maybe you encountered the lostop/histop bug in ODE 0.5. Maybe you noticed your vehicle flips over when turning, when going at moderate speeds?
All this is because ODE is a pretty accurate simulator. Here's a hint: Implement the same workarounds that have been put in real cars.
Stop rolling over
You'll need to implement "anti-sway bars". In real vehicles, these were bars that linked each opposite suspension, so that when one side is pressed down (when going in a curve), it also pressed down on the suspension on the other side. This prevents the car from tilting over too much.
This is an example of how to compute the force adapted from the OgreVehicle class assuming 4 wheels:
private void applyAntiSwayBarForces() {
amt = 0;
for(int i = 0; i < 4; i++) {
Vector3 anchor2 = wheels[i].Joint.Anchor2;
Vector3 anchor1 = wheels[i].Joint.Anchor;
Vector3 axis = wheels[i].Joint.Axis2;
displacement = Vector3.Dot(anchor1-anchor2,axis);
if(displacement > 0) {
amt = displacement * swayForce;
if(amt > swayForceLimit)
amt = swayForceLimit;
wheels[i].Body.AddForce(-axis *amt); //downforce
wheels[i^1].Body.AddForce(axis *amt); //upforce
}
}
}
Check the FAQ
The FAQ addresses many issues that might arise in a car simulation, like wheels getting stuck in geoms, or numerical errors in the hinge constraints. Be sure to check it.
Categories: Stubs | HOWTO

