Hey there,
I have some questions about the GPSFactor.
1. The "evaluateError()" is :
Vector GPSFactor::evaluateError(const Pose3& p,
boost::optional<Matrix&> H) const {
return p.translation(H) -nT_;
}
and the "p.translation(H)" is:
const Point3& Pose3::translation(OptionalJacobian<3, 6> H) const {
if (H) *H << Z_3x3, rotation().matrix();
return t_;
}
which means the derivatives of t(p.translation) with respect to R and t is 0_3×3 and R, right?
I mean intuitively the derivative of t(p.translation) w.r.t t should be identity I_3×3. in the "evaluateError()" of GPS factor.
So, How to deduce the derivatives?
2. As we return p.translation(H) -nT_ , the GPSFactor measurement "nT_" must be transformed to the measurement center, e.g., the IMU center, with the translation parameter between GPS antenna and the body center, which is also known as LeverArm.
If we take the leverarm t_ig as a constant and treat the GPS as 3D(actually 1D) body with the same axes of the IMU, we can define the the transform parameter as T_ig = [Eye(3) t_ig], just as we do in the VIO system.
How to deduce the derivatives with T_ig?
Thanks in advance!