rpng / open_vins

An open source platform for visual-inertial navigation research.
https://docs.openvins.com
GNU General Public License v3.0
2.06k stars 616 forks source link

About derivation of meature function regarding to pose error states #352

Closed mingrenzhu closed 11 months ago

mingrenzhu commented 1 year ago

Hi, As stated in the openvins documentation, the state vector in the code is the error state vector, so the error state vector should be derived when the measurement equation is differentiated. When the attitude vector (rotation matrix) is derived, the state is first derived, and then the error state is derived using the state vector, as shown in the formula in this paper from Joan's doc named "Quaternion kinematics for the error-state Kalman filter" joan

but in openvins doc,when the feature derivation regarding to the pose state vector, we just calculate the normal state jacobian, not the error pose state vector. openvins doc The right process method i think is following, when we calculate the derivation of pose error state, we need transfer the rotaion to Quaternion form, and then use the derivative chain rule to calculate the derivation of pose error state using the measure function, just like joan doc

Looking forward to your reply, thanks !

goldbattle commented 11 months ago

The Jacobian shown in the last picture is taking the element wise derivative of the 4x1. This isn't actually used in any measurement equations, and this derivation won't ever be used typically. In reality, you will have a SO(3) rotation in your equation, and taking the derivative in respect to it is the same as in respect to the quaternion error state as long as you are careful. https://docs.openvins.com/classov__type_1_1JPLQuat.html#jplquat_errorstate

Another note is this codebase uses JPL quaternions, so likely you will be interested in the following report: http://mars.cs.umn.edu/tr/reports/Trawny05b.pdf