HKUST-Aerial-Robotics / VINS-Mono

A Robust and Versatile Monocular Visual-Inertial State Estimator
GNU General Public License v3.0
4.84k stars 2.07k forks source link

Issue in pre-integration #370

Open niebayes opened 3 years ago

niebayes commented 3 years ago

As shown in the codes, there're some expressions involve addition between rotation matrices. I think it does not make any sense to add together two rotation matrices as the rotation matrices are not in the vector space. The suggestion is adding together the quaternions and normalizing the resulted quaternion first and then transform it to the corresponding rotation matrix. A better solution might be handling the rotation directly in the manifold and then transformed back.

关于如何求旋转的均值,可以参考此处.

1ADZX commented 2 years ago

代码所示,有一些表达式涉及旋转矩阵之间的加法。我认为将两个旋转矩阵加在一起没有任何意义,因为旋转矩阵不在向量空间中。建议是先将四元数加在一起,然后将结果四元数归一化,然后将其转换为相应的旋转矩阵。更好的解决方案可能是直接在流形中处理旋转,然后再转换回来。

关于如何求旋转的均值,参考可以此处

看你是中国人,就不用英语了啊。感觉你上面说的很清楚啊,关于VINS-mono的预评分,我还有一个疑问啊,VINS_mono中预评分中delta_V的初值为什么要设置为0 ,或者我观察到,只要是涉及到IMU中值积分的时候,就如这里的V,如predict()中的tmp_V,或者processIMU()中的V[j],还有预积分中的midPointIntegration( )的delta_V的初值都为0,因为这个速度值关系到两帧IMU的位置变换,如果我这些速度值初值可能不为0,那岂不是算出来的IMU就一样了?所以我很好奇为什么要把这个速度初值设置为0,我自己仿真的IMU数据,每一帧数据速度初值是不为0的,岂不是在这里就推算错误了? 先感谢为敬啊