I recently ran across ODE, an open source rigid body dynamics library. In addition to standard joint/hinge constraints (which even I can do), ODE supports collision and contact with friction (which I've never worked through).
It works pretty well, though colliding objects tend to interpenetrate noticeably (even though the docs say it uses "hard" contact constraints), and resting contact for stacked objects isn't very stable. Those are the hard problems, though, so I'm not really complaining.
Over the weekend, Anton and I stayed up into the wee hours of the morning playing around with ODE. One of its test programs has a little wheeled buggy that you can drive around, with a ramp you can drive over. Anton and I spent several hours hacking on that program--adding Anton's extensible scheme interpreter (to make it easy to build new environments), camera tracking, multiple buggies, and better driving controls. It's so much fun playing around with physically based systems. (Anton did most of the coding. I did most of the building and test driving.)
On the same website, we ran across animations from the Ph.D thesis of ODE's author. The thesis involves motion control training, and the animations show simulated robots learning to walk. I imagine we were just 3-in-the-morning-giddy, but Anton and I laughed ourselves sick watching the robots flail and twitch. 'Course, we also laughed ourselves sick whenever the buggy in the test program flipped onto its roof, so I think our sense of humor is suspect.