SLAM从入门到精通(lidar的运动畸变矫正)

编程入门 行业动态 更新时间:2024-10-23 23:33:14

SLAM从入门到精通(lidar的运动<a href=https://www.elefans.com/category/jswz/34/1748636.html style=畸变矫正)"/>

SLAM从入门到精通(lidar的运动畸变矫正)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163】

        前面我们说过,很多时候传感器的数据并不能直接拿过来使用。这里面除了噪声的原因之外,另外一部分原因就是传感器数据本身也有可能是脏数据,存在运动畸变的可能性。以激光雷达为例,假设一个机器人往前行走,速度是1m/s,lidar旋转的速度是10次/s。一开始的时候,lidar检测前面1m处有一个物体。那么100ms之后,同样的物体,其实这个时候距离只有0.9m了。如果lidar的裸数据没有经过畸变矫正的话,那么不管制图还是定位,本身都是一个错误的结果。

1、处理方法

        目前主要的处理办法,就是利用其它传感器数据对lidar数据进行修正。由于其他传感器的频率,本身要比lidar快的多,所以默认短时间内其他传感器的数据是可靠、有效的。通常实践中,一般会用imu对lidar的theta进行修正,而用odom对lidar的x、y进行修正。

2、参考blog

        网上有一篇针对运动畸变非常好的文章,非常适合拿来一读,它的地址如下所示,

        相关的代码可以参考这个链接,

3、收集imu和odom数据

        在处理lidar数据之前,一般需要对imu和odom的数据进行收集。收集的方法通常就是用queue保存接收到的imu和odom数据。主要目的,则是在处理lidar数据之前找到合适的imu和odom区间,这样才能对lidar数据进行调优处理。

4、lidar数据处理

        lidar数据主要分成这几个步骤。首先,需要缓存一帧lidar数据。这帧数据的结束时间,也就是下一帧数据的开始时间。另外,lidar上电的时候,一般也是机器人刚刚工作的时候。此时机器人还没有开始工作,也就没有移动,所以缓存一帧,一般问题不大。

        其次,对imu和odom数据分别进行裁剪。裁剪的目的主要是挑出合适的区间数据,然后对这些数据进行掐头去尾的操作,留出合适的数据范围。对每一个范围,计算出对应的角度偏移量和x、y偏移量。

        接着就是用imu和odom的数据对lidar数据进行修正。先确认当前数据的时间点,找出对应的imu和odom区间,通过角度偏移、x&y偏移以及插值的方法计算出总的偏移量,最后再用这些总的偏移量对lidar数据一个一个进行矫正。

        剩下来的工作就比较简单了,只需要发布数据和重置参数就可以了。发布lidar数据比较好理解,重置参数则是对imu和odom中过时的数据进行清空处理。

5、注意事项

        对lidar数据的矫正处理本质上需要有一定的soc算力做支撑。如果机器人本身行走的很慢,不做x和y方向的矫正也可以的。但是机器人旋转的话,对于lidar数据的影响还是蛮大的,最好借助于imu对于lidar的角度数据进行一下矫正。

        此外,最好不要用odom的角度数据对lidar数据进行矫正,因为odom的角度也是近似求解出来的,本身精度其实也比较差。

附录

        在csdn上,《从零开始搭二维激光SLAM》这个专栏非常不错,建议可以好好学习下,

.html

更多推荐

SLAM从入门到精通(lidar的运动畸变矫正)

本文发布于:2024-03-10 14:12:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1728200.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:畸变   入门   SLAM   lidar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!