const Point3& Pose3::translation(OptionalJacobian<3, 6> Hself) const {
if (Hself) *Hself << Z_3x3, rotation().matrix();
return t_;
}
In the GPSFactor, my understanding is that the derivative of position depends on rotation because we are linearizing around the current pose estimate, and applying incremental updates in the *local* frame, not the world frame.
My question is: why does PartialPriorFactor have the simple "one-hot" Jacobian, while GPSFactor has an orientation-dependent Jacobian? Am I missing an obvious difference between these two cases?
Based on GPSFactor, shouldn't the Jacobian of a Pose3 w.r.t to one of its position components be the following?
Matrix36 H_world_t_body;
world_P_body.translation(H_world_t_body);Matrix16 H_world_axis_body = H_world_t_body.row(axis_index);
Happy to provide the toy example where PartialPriorFactor<Pose3> fails under non-identity rotation if that would be helpful.
Thanks,
Milo