hku-mars / LiDAR_IMU_Init

[IROS2022] Robust Real-time LiDAR-inertial Initialization Method.
GNU General Public License v2.0
803 stars 138 forks source link

关于代码中去除点云运动畸变的一个小问题 #58

Closed kylelee2023 closed 1 year ago

kylelee2023 commented 1 year ago

你好,在学习代码过程中,关于运动补偿部分有个小问题。在IMU_Processing.hpp文件418行:

[1]  V3D P_compensate = state_inout.rot_end.transpose() * (R_i * P_i + T_ei);

而在fast lio2中325行的处理为:

[2]  V3D P_compensate = imu_state.offset_R_L_I.conjugate() * (imu_state.rot.conjugate() * (R_i * (imu_state.offset_R_L_I * P_i + imu_state.offset_T_L_I) + T_ei) - imu_state.offset_T_L_I);                                      

通过公式推导,将激光系下的Pi点通过外参和相对运动关系投影到扫描结束时刻的过程,和fast lio2中的实现公式[2]一致。但是对于公式[1]的实现不太理解,有几个问题:

  1. 在进行补偿过程中为什么没有涉及激光到imu的旋转外参,只涉及了平移外参?
  2. state_inout中平移和旋转状态变量是表示激光系到世界系的运动,还是IMU系到世界系的关系?看论文中xk表示激光到世界的运动,但是看IMU_Processing.hpp状态传播的公式又感觉是imu系的状态变量?

最后感谢LiDAR_IMU_Init的工作,学习到了很多,希望您可以抽出宝贵时间答疑解惑,谢谢。

zfc-zfc commented 1 year ago

你好,在学习代码过程中,关于运动补偿部分有个小问题。在IMU_Processing.hpp文件418行:

[1]  V3D P_compensate = state_inout.rot_end.transpose() * (R_i * P_i + T_ei);

而在fast lio2中325行的处理为:

[2]  V3D P_compensate = imu_state.offset_R_L_I.conjugate() * (imu_state.rot.conjugate() * (R_i * (imu_state.offset_R_L_I * P_i + imu_state.offset_T_L_I) + T_ei) - imu_state.offset_T_L_I);                                      

通过公式推导,将激光系下的Pi点通过外参和相对运动关系投影到扫描结束时刻的过程,和fast lio2中的实现公式[2]一致。但是对于公式[1]的实现不太理解,有几个问题:

  1. 在进行补偿过程中为什么没有涉及激光到imu的旋转外参,只涉及了平移外参?
  2. state_inout中平移和旋转状态变量是表示激光系到世界系的运动,还是IMU系到世界系的关系?看论文中xk表示激光到世界的运动,但是看IMU_Processing.hpp状态传播的公式又感觉是imu系的状态变量?

最后感谢LiDAR_IMU_Init的工作,学习到了很多,希望您可以抽出宝贵时间答疑解惑,谢谢。

感谢您的指正,此处是代码中遗留的bug,新的版本已经修复。