Has anybody used this library before? What were your experiences? Pros/Cons?
Here is a great, high-quality blog post about the reason for Wolfire's switch from ODE to Bullet:
The biggest paragraph is most likely this one:
When I tried dropping four hundred boxes on the Overgrowth "desert fort" scene, Bullet performed the simulation twice as fast as ODE did, even without Bullet's optional performance features like multi-threading and OpenCL. One of the factors in its speed is its use of Sony's newly open-sourced SIMD vector math library, which you can find here if you'd like to use it separately.
I've personally never used it, but I think this article gives a good idea of pros/cons: http://blog.wolfire.com/2010/03/Comparing-ODE-and-Bullet
To summarize the article, it looks like ODE is well documented and stable, but doesn't quite have the cutting edge features and efficiency that some of the more actively developed but less documented alternatives have.
(I have used Bullet and I can vouch for it being a rather nice piece of middleware, though as the article suggests, the documentation is a bit iffy).
Bullet didn't exist the last time I used ODE (via PyODE, which I will say is a very nice API wrapper) so I can't comment on that. The biggest issue I had with it was stability. It tends to be a very jittery simulation if you don't tune it juuuust right (which takes a lot of poorly documented voodoo). If you use big units that isn't such a big deal, but I made the mistake of using smaller numbers. The joints system is very flexible once you start to think of your system in ODE terms. Also a decent annoyance, it uses a bitfield for collision groups, so you can only have 32 of them.
Bullet is derived from ODE. When I first saw ODE, it was a bit too poor, in my perception, after playing a bit with Havok and PhysX. The only reason why I was searching for alternatives was that I needed 64 bit double precision float, for a real-size space multiplayer game. Bullet on the other hand had more coming from the box. It has a great community, and lots of developers working on plugins like something to manage concave shapes (they had 2 alternatives - approximation to convex compound objects and simulation of the original trimesh), CCD implementation, model import, etc. It also had wrappers for some of the 3D engines (don't remember exactly which, might be Ogre3D and XNA). It was very much ahead of ODE, and OpenSource.
This was 2 years ago though, much may have changed. But right then, in the same simulations, nVidia PhysX showed much better performance, and was richer in functionality. So if you plan on using 32 bit single precision float, I'm not sure whether you'll find anything better than PhysX.