locusrobotics / fuse

The fuse stack provides a general architecture for performing sensor fusion live on a robot. Some possible applications include state estimation, localization, mapping, and calibration.
Other
729 stars 123 forks source link

MinusJacobian Orientation3dStamped #324

Closed jakemclaughlin6 closed 1 year ago

jakemclaughlin6 commented 1 year ago

I am attempting to compute jacobians with respect to the orientation. I am computing them wrt the 3d tangent space. I am assuming to "lift" them back into the manifold that ceres expects (4d quaternion) I multiply my jacobian on the right with the jacobian computed in ComputeMinusJacobian? I am assuming the quaternion is given as (w, x, y, z).

i.e.

jacobian = df_dq * ComputeMinusJacobian(q)

where df_dq is the jacobian of function f wrt q, and is a 3x3 matrix

However when i compare the analytical jacobian of this to the numerical jacobian they are not close. I am computing the numerical jacobian directly in the 4d quaternion space by perturbing it as if it were a 4d vector.