SpectacularAI / HybVIO

HybVIO visual-inertial odometry and SLAM system
https://arxiv.org/abs/2106.11857
GNU General Public License v3.0
450 stars 92 forks source link

question about a jacobian #24

Closed fushi219 closed 2 years ago

fushi219 commented 2 years ago

Hi! Thanks for your beautiful code and I am confused about a jacobian and wish to get your help.

I have no idea about jacobians from https://github.com/SpectacularAI/HybVIO/blob/main/src/odometry/triangulation.cpp#L270 to https://github.com/SpectacularAI/HybVIO/blob/main/src/odometry/triangulation.cpp#L322. Are these calculations used for jacobian of landmark reprojection errors to imu poses in ekf state, which will be used in later filter update? (in this way, we do not need to project H into nullspaces of landmark.) But how the jacobians are derivated?

I know its quite boring and troublesome to explain it, so a liitle explain will be grateful, thanks!

oseiskar commented 2 years ago

Hello. You are correct, those Jacobians are intermediary steps and the goal is computing the Jacobian of the reprojection errors accurately (by differentiating an entire Gauss-Newton iteration process) so the MSCKF nullspace projection trick is not needed. This is the main difference between PIVO and MSCKF. HybVIO is a derivative of the PIVO method in this sense.

What it actually differentiated in that code block are (related to) the left and right hand side of a Gauss-Newton update step in the triangulation process.

fushi219 commented 2 years ago

Thanks a lot! I have understood the jacobians mentioned above, however, i can't figure out these: https://github.com/SpectacularAI/HybVIO/blob/e325353846d9026de6001f593134bed77824469d/src/odometry/triangulation.cpp#L337-L338 wish to get some help. Thanks!