SLAM学习日志(一) 2D(单线)激光雷达运动畸变校正(1 介绍篇)

3 篇文章 3 订阅

1. 背景

  激光雷达完成一帧360°的扫描需要一定的时间(通常为0.05s至0.2s),若在一帧数据的扫描过程中,机器人发生大幅度的运动,会导致扫描到的点云产生严重的变形,严重影响建图精度。因此,对运动畸变进行补偿与校正能显著提高建图的鲁棒性。
  具体原理讲解见:SLAM学习日志(二) 2D(单线)激光雷达运动畸变校正(2 原理篇)

2. 利用IMU进行畸变校正的方法

  首先,订阅IMU消息,将最新的IMU消息加入固定长度的循环队列中。接收到激光雷达数据时,解析激光雷达数据帧中每一个激光雷达扫描点的时间戳。在IMU队列中查找在时间上相邻的两帧IMU数据,通过球面线性插值的方式计算该扫描点时刻激光雷达的姿态。最后,通过齐次坐标变换将激光点坐标变换至统一的坐标系下。

3. 效果

以下为单帧点云的校正效果,红色的是原始点云,白色的是校正后的点云。
效果
以下为室内在剧烈运动下的建图效果对比,实际运动轨迹边原地左右自转边前进。左图使用的是原始数据,右图使用的是校正后的数据。该数据包的链接:百度网盘,提取码 jimf

在这里插入图片描述

4. 源码

见个人github仓库 链接

5. 参数解释

参数名类型解释
lidar_topicstring订阅的激光数据话题名
lidar_msg_delay_timedouble雷达数据传输滞后的估计,单位毫秒,一般在10ms内
scan_direction_clockwisebool激光雷达扫描旋转方向,true为顺时针,false为逆时针;方向不对会增大畸变
imu_topicstring订阅的imu话题名
imu_frequencydouble估计的imu发布频率,仅用来确定队列长度,不需要很精确
output_frame_idstring输出消息的frame_id
pub_raw_scan_pointcloudbool是否发布校正前的点云
pub_laserscanbool是否将校正后的数据重新封装为LaserScan消息发布
laserscan_angle_incrementdouble接上条,发布的LaserScan消息的角度分辨率,分辨率越小,转换精度越高,单位为弧度(空白数据用nan填充)
use_range_filterbool是否限定输出的扫描距离
range_filter_mindouble扫描距离的最小值
range_filter_maxdouble扫描距离的最大值
use_angle_filterbool是否限定输出的角度范围,默认为 − π -\pi π + π +\pi +π
angle_filter_mindouble扫描角度的最小值,单位为弧度
angle_filter_maxdouble扫描角度的最大值,单位为弧度
use_radius_outlier_filterbool是否使用PCL库的RadiusOutlierRemoval滤波器,用来移除离群点
radius_outlier_filter_search_radiusdoubleRadiusOutlierRemoval滤波器参数,搜索半径
radius_outlier_filter_min_neighborsdoubleRadiusOutlierRemoval滤波器参数,有效点的最少近邻点数量

在这里插入图片描述

  • 10
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值