ZikangYuan / sr_lio

[IROS 2024] A LiDAR-inertial odometry (LIO) package that can adjust the execution frequency beyond the sweep frequency
GNU General Public License v2.0
467 stars 64 forks source link

运行单变量的LIO模式无效 #5

Closed jiejie567 closed 1 year ago

jiejie567 commented 1 year ago

很优秀的工作。但是我们遇到了以下问题:配置文件motion_compensation:CONSTANT_VELOCITY, sweep_cut_num: 1。运行LIO模式直接会飞,运行LO模式正常,请问是什么原因呢?我这边多个人测试了都是这样的情况。期待你的回复,同时祝愿论文中稿。

ZikangYuan commented 1 year ago

谢谢!还请给我一点时间调试一下,调试完后会第一时间回复。另外,您是在哪个序列上测试的呢?还请告知一下

jiejie567 commented 1 year ago

感谢回复。我们在utbm 0716 0713上两个rosbag 和 hk 01-17这个rosbag(共3个)都测试了。将motion_compensation设置为CONSTANT_VELOCITY(也就是用单变量),weep_cut_num: 1(不分段)用LIO模式,发现会直接飞;当我们在此基础上把IMU预积分的约束注释掉,发现系统正常运行,猜测问题出在IMU预积分上。然而,我们仔细地检查了IMU预积分的代码,没发现问题。假如Yuan发现了问题,还请告诉我。不得不说在CT模式下还是能运行得很好的。再次感谢。

ZikangYuan commented 1 year ago

您客气了。好的,我会在这两天内完成测试并回复。

ZikangYuan commented 1 year ago

久等了,我在utbm 0716上做了下测试,结果如下: sweep_cun_num=1,motion_compensation=CONTINUES 能正常跑通 sweep_cut_num=1, motion_compensation=CONSTANT_VELOCITY 开始会直接飞 我对CONSTANT_VELOCITY模式下的stateInitialization, distortFrame, transformPoint等函数逐一进行了排查,但仍然没有发现代码上的逻辑问题 后来,我又尝试调整了IMU和雷达残差项约束的权重,调整方式为,增加config/utbm.yaml中的IMU噪声参数的方差,以此降低IMU的权重:acc_cov: 0.1->1.0 gyr_cov: 0.1->1.0 b_acc_cov: 0.0001->0.01 b_gyr_cov: 0.0001->0.01 但仍然跑不通

很抱歉,目前为止,我尚不清楚具体问题出在哪儿,后续如果有空的话,我会做更细致的排查,并在该project的github主页上说明。

jiejie567 commented 1 year ago

感谢您,方便加个wechat吗,我猜测大概是IMU预积分的约束问题,因为我把添加IMU预积分约束的代码注释掉了,系统能正常运行。我的wechat: xj498530205

ZikangYuan commented 1 year ago

您好,原先sweep_cut_num=1,motion_compensation=CONSTANT_VELOCITY,distance=POINT_TO_PLANE模式下无法正常运行的问题,经过热心网友的帮助,已经解决,代码已作出相应更新。