Hi!
I had a problem with moveit's computeVariableVelocity, which I tracked down to a weird Jacobian matrix in my model.
The robot has X, Y and Z prismatic joints, then a Z revolute. But with the joint-states all zeroed out, I'm getting a jacobian
1.304 0.31889 0.41454 0
-0.03 0.97173 -0.06256 0.575
0.19219 0.23349 2.48029 0
0 0 0 0
0 0 0 0
0 0 0 1
which looks very wrong in a bunch of ways (not least, 1m of Z joint movement turns into 2.4m of worldspace Z!). Only the final revolute joint looks right.
Stepping into getJacobian, things seem to go wrong around line 1161:
joint_transform = reference_transform * getGlobalLinkTransform(link);
joint_axis = joint_transform * static_cast(pjm)->getAxis();
When I hit this line, getGlobalLinkTransform returns a valid matrix that includes translation. There's nothing in reference transform to cancel this out, so prismatic axis gets rotated *and translated*, and joint_axis ends up totally wonky.
Is there something wrong with my RobotModel here? Am I misunderstandingt the Jacobian?
↧