RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.25k stars 1.25k forks source link

CentroidalMomentumMatrix Computation: "getCMM" #193

Closed robodreamer closed 10 years ago

robodreamer commented 10 years ago

Hi I was looking into the implementation of Centroidal Momentum Matrix in Drake to verify my own computation. However, I found out that currently the code "getCMM" assumes that the joints are only rotating about z-axis. So, I fixed jcalc, dXtrans, dXrotx/y/z, but right now I see that X_joint_to_body are also computed with assumption of z-axis rotation. But I can't find where X_joint_to_body is computed. Could you help me to generalize for rotation about any axes (x,y,z)?

Thanks!

tkoolen commented 10 years ago

Hi Andy,

We're currently in the process of cleaning a lot of this up, but I'll answer your questions based on master for now.

Drake master uses Featherstone's Matlab library (http://royfeatherstone.org/spatial/v1/documentation.html) to do the dynamics and kinematics. That library assumes that the z-axis is always the joint axis. X_joint_to_body, which is the transform that maps spatial motion vectors in Featherstone's joint frame to Drake's body frame, is set in the RigidBodyManipulator.addJoint method. https://github.com/RobotLocomotion/drake/blob/master/systems/plants/%40RigidBodyManipulator/RigidBodyManipulator.m#L346

I don't think you should have to change jcalc etc. The transformations between Featherstone's joint frame and Drake's body frame should happen behind the scenes.

Best, Twan

robodreamer commented 10 years ago

Thanks, Twan!