I am trying to find the end-effector spatial velocity Jacobian for a robot with a free-floating base. Due to the free-floating base, the jacobian should contain a base component and a manipulator comment (see https://spart.readthedocs.io/en/latest/Tutorial_Kinematics.html#jacobians)
V_ee = end-effector spatial velocity
J_b = base jacobian component
J_m = manipulator jacobian component
v = generalized velocities
V_ee = [J_b, J_m] v
Until now, I was using SPART toolbox to do this in Matlab (https://github.com/NPS-SRL/SPART) and now I am moving to Drake. I tried using CalcJacobianSpatialVelocity in the MultiBodyPlant and the manipulator Jacobian is correct when compared to SPART. However, the base component of the Jacobian is all zeros. This is different from what I expected and from SPART as for a free-floating base, the base velocities contribute to the end-effector spatial velocities.
An example reproduction of this issue can be found here: https://colab.research.google.com/github/vyas-shubham/DrakeTests/blob/main/freeFloating/computeJacobian.ipynb
I think I'm either doing one of these wrong while using Drake:
- Using the CalcJacobianSpatialVelocity wrong. This is unlikely as the manipulator jacobian is correct and the base frame is also correct (only 1 frame in URDF).
- Making a wrong URDF for calculating Jacobians for Free-Floating base. Maybe I need to specify differently in URDF a floating-base for Drake to include this in the Jacobian computation?