Livox-SDK / LIO-Livox

A Robust LiDAR-Inertial Odometry for Livox LiDAR
BSD 3-Clause "New" or "Revised" License
644 stars 166 forks source link

自己数据测试结果异常 #8

Open lonlonago opened 3 years ago

lonlonago commented 3 years ago

您好,我们用地平线雷达录制了自己的数据测试,场景为手持雷达在室内行走,发现运行出来的结果很奇怪,运行开始还比较正常,但是很快地图就跑飞了,截图如下: 1628558516(1)

1628558542(1)

我看了下代码,似乎地面分割部分有一些固定的参数,是否需要根据我们的高度,手持场景进行调整呢?

另外是否和雷达的重复或者非重复扫描模式有关系?

请问下可能的原因在哪,需要怎么调整呢? 谢谢回复~

lonlonago commented 3 years ago

梳理下想问的问题:1 这个项目我看说明是适合车载场景的,是否适合手持场景? 2 对雷达的重复或者非重复扫描模式是否有要求? 3 出现该现象,是否可以通过调整项目的参数解决呢?

zxd123 commented 3 years ago

老哥我之前拿horizon的雷达手持场景也出现了这个问题,然后也觉得是地面分割的固定参数的问题。但是后来把激光雷达放到了一个小车的底部(高度比较低),再用小车跑,就是正常的。所以我猜测是这个算法对于roll和pitch方向的旋转,还有Z轴方向上的抖动适应性不太强,所以手持场景效果不佳。你也可以试试把激光雷达放到一个平稳移动的东西上面(比如带轮子的椅子)再试试

zxd123 commented 3 years ago

老哥我之前拿horizon的雷达手持场景也出现了这个问题,然后也觉得是地面分割的固定参数的问题。但是后来把激光雷达放到了一个小车的底部(高度比较低),再用小车跑,就是正常的。所以我猜测是这个算法对于roll和pitch方向的旋转,还有Z轴方向上的抖动适应性不太强,所以手持场景效果不佳。你也可以试试把激光雷达放到一个平稳移动的东西上面(比如带轮子的椅子)再试试

lonlonago commented 3 years ago

老哥我之前拿horizon的雷达手持场景也出现了这个问题,然后也觉得是地面分割的固定参数的问题。但是后来把激光雷达放到了一个小车的底部(高度比较低),再用小车跑,就是正常的。所以我猜测是这个算法对于roll和pitch方向的旋转,还有Z轴方向上的抖动适应性不太强,所以手持场景效果不佳。你也可以试试把激光雷达放到一个平稳移动的东西上面(比如带轮子的椅子)再试试

@zxd123 谢谢哈,但是我使用了不用分割的部分代码,也是同样的效果,我看了下代码,地面分割的确是代码里面带了很多固定参数,这应该是很重要的一个原因。但是不使用分割也效果不好我就不知道原因了,你说的对于roll和pitch方向的旋转,还有Z轴方向上的抖动适应性不太强很有可能,但是希望作者能解答下吧。

另外问下,你小车的雷达高度大概是多少呢?

zxd123 commented 3 years ago

老哥我之前拿horizon的雷达手持场景也出现了这个问题,然后也觉得是地面分割的固定参数的问题。但是后来把激光雷达放到了一个小车的底部(高度比较低),再用小车跑,就是正常的。所以我猜测是这个算法对于roll和pitch方向的旋转,还有Z轴方向上的抖动适应性不太强,所以手持场景效果不佳。你也可以试试把激光雷达放到一个平稳移动的东西上面(比如带轮子的椅子)再试试

@zxd123 谢谢哈,但是我使用了不用分割的部分代码,也是同样的效果,我看了下代码,地面分割的确是代码里面带了很多固定参数,这应该是很重要的一个原因。但是不使用分割也效果不好我就不知道原因了,你说的对于roll和pitch方向的旋转,还有Z轴方向上的抖动适应性不太强很有可能,但是希望作者能解答下吧。

另外问下,你小车的雷达高度大概是多少呢?

放激光雷达的位置大概离地面30-40cm左右

lonlonago commented 3 years ago

@zxd123 用推车也不行。。。一米的高度,看来要用好,只能深入代码了。。

zxd123 commented 3 years ago

@zxd123 用推车也不行。。。一米的高度,看来要用好,只能深入代码了。。

可以的,要是发现了啥是问题,别忘了来这里更新下

Livox-SDK commented 3 years ago

Hi zxd123 , lonlonago,

  1. 这套算法理论上是可以用于手持场景的; 不过; 运动的过程中不能有太大的起伏以及大角度得转向不然可能会导致算不准
  2. 对雷达的重复或者非重复扫描模式没有要求
  3. 出现该现象,是否可以通过调整项目的参数解决呢? 对于这个问题;这套算法本身设计在室外使用; 在室内使用我建议您把地面分割关了以及把采样率降低一些;
lonlonago commented 3 years ago

@Livox-SDK @zxd123 是的,我看了代码内容,发现里面是有一个先自动找地面,然后校准的过程的,如果是手持场景,或者室内的话,很容易导致找不到正确的地面, 关闭地面分割,然后调整一些参数,是可以大致的达成效果的,不过效果也不是很完美,一小段室内走动,都会有很多边缘的错误,后来打开地面分割,调整一些代码的内容,效果也不是很好,没用直接关闭分割的效果好,再往下调整,我就没做了,不知道从哪做起。。采样率的调整是在哪呢?

lonlonago commented 3 years ago

另外有个问题请教下 , 这个代码里面的IMU 使用是否和其他项目中的使用不太一样呢? 其他项目我看都是把它放在图优化的框架里面去做,您这个好像就是直接和激光里程计联合优化了,但是图优化的会优化之前的因子,而您这个只考虑当前的因子,相当于一个简化版的图优化?

zxd123 commented 3 years ago

另外有个问题请教下 , 这个代码里面的IMU 使用是否和其他项目中的使用不太一样呢? 其他项目我看都是把它放在图优化的框架里面去做,您这个好像就是直接和激光里程计联合优化了,但是图优化的会优化之前的因子,而您这个只考虑当前的因子,相当于一个简化版的图优化?

没有吧老哥,这个感觉和vins差不多呀,也是把滑动窗口里的imu信息都加入ceres共同优化了呀?

Livox-SDK commented 2 years ago

Hi lonlongago

的确有一点不一样, 这个代码的IMU做的是 简耦合的滑动窗口优化, 同时优化了 IMU 位姿速度 偏置

Fellowflyingsky commented 2 years ago

您好,我们用地平线雷达录制了自己的数据测试,场景为手持雷达在室内行走,发现运行出来的结果很奇怪,运行开始还比较正常,但是很快地图就跑飞了,截图如下: 1628558516(1)

1628558542(1)

我看了下代码,似乎地面分割部分有一些固定的参数,是否需要根据我们的高度,手持场景进行调整呢?

另外是否和雷达的重复或者非重复扫描模式有关系?

请问下可能的原因在哪,需要怎么调整呢? 谢谢回复~

我想问下,你们lio-livox的 环境配置是多少? opencv3.3 pcl1.8.1 ceres1.14 eigen3.3.9 ,但是我一直crash了,我已经修改了segment的头文件里面的返回函数类型整型,我改成了void。但是后面的posesitimation 节点部分就卡住了,我怀疑是ceres优化的问题,我也进行了debug,但是还是有问题,很着急,希望你们看到给我个解答,谢谢啦