liangheming / M_FASTLIVO

FAST-LIVO easy to read, esay to understand
MIT License
21 stars 3 forks source link

关于ieskf 残差计算以及观测更新疑问 #3

Closed SharkPeppero closed 3 weeks ago

SharkPeppero commented 4 weeks ago

ieskf 作者想请问一下您代码中的写法: 【源码的写法】源代码构建了 有效点个数的H矩阵和 观测误差z矩阵,然后用他们提出的卡尔曼增益的计算公式进行计算K,然后进行步长计算以及状态量的协方差更新。

【问题一】:图片左下角是您写的H和b矩阵,这里是想构建高斯牛顿进行误差状态量步长求解吗?那为什么右侧还组织了 一次 误差小量组成的H和b, J.block<3, 3>(0, 0) = jrInv(delta.segment<3>(0)); J.block<3, 3>(6, 6) = jrInv(delta.segment<3>(6)); J.block<3, 3>(12, 12) = jrInv(delta.segment<3>(12)); b += (J.transpose() m_P.inverse() delta); H += (J.transpose() m_P.inverse() J); 这一块代码的含义是什么呀??

【问题二】然后求解步长的方式 为什么不是 H.inverse() b (高斯牛顿问题不是 Hdelta_x = b)

【问题三】您的这个写法好像没有高维度矩阵计算,因为fastlio2作者提出的K的新计算方式,避免观测维度求逆计算,为啥在你代码中完全看不到K的计算过程呀,您的这个写法是自己推导公式的吗 有资料可以参考吗

【问题四】在测试过程中还发现你的代码在港大的数据包,配置文件一致的情况下,初始时刻港大原版的TF一开始z是不稳定的我测试有3cm的偏移,在您的项目里测试了纯lio发现没有z偏移的情况,这个方面是你有啥处理吗。是不是因为你代码用sopuhs处理,将所有的小量都考虑进去了吗(存在疑问,对于李代数转李群后李群相乘的操作,港大是用自己写的罗德里格斯公式计算的,您这里使用sophus的左成雅阁比转换计算 是不是sophus计算的精度会比较好)?

看您代码,发现好多有用的东西,还希望您不吝赐教 ^_^