RobotLocomotion/drake — pull request #65 by jacob-izr (2014-03-19 15:27:13+00:00)
Title: Added mass and buoyancy forces, with example code

Hi Russ,

I've been working on setting up Drake to model flapping flight dynamics. So far I've implemented the added-mass forces, and I'll be working on some low-order wake models next. The added-mass forces are implemented as an additional force element definition called RigidBodyAddedMass, which integrates in with RigidBodyManipulator by reading data from the URDF file and appropriately augmenting the inertia of the parent body. I have also written a similar force element RigidBodyBuoyancy, which allows for placing a center of buoyancy on a body for performing underwater simulations.

For validation, I've included a simple underwater robot arm plant UnderwaterAcrobot with both added-mass and buoyancy. UnderwaterAcrobot runs equations of motion derived by hand from Lagrange. The test urdfDynamicsTest() compares the UnderwaterAcrobot and RigidBodyManipulator solutions, and you can see both solutions with runURDFandAnalyticSoln(). I think I got everything to integrate with the unit tests.

If you're curious, the added-mass formulation is similar to http://www.itk.ntnu.no/ansatte/Fossen_Thor/papers/jmms95.pdf. Please let me know if you have any questions.

Thanks,
Jacob