ROS小车研究笔记4/1/2023:研究文章Detecting Glass in Simultaneous Localisation and Mapping

原文出处
@article{Wang201797,
title = “Detecting glass in Simultaneous Localisation and Mapping”,
journal = “Robotics and Autonomous Systems”,
volume = “88”,
pages = “97 - 103”,
year = “2017”,
issn = “0921-8890”,
doi = “http://dx.doi.org/10.1016/j.robot.2016.11.003”,
author = “Xun Wang and JianGuo Wang”
}

激光雷达是SLAM机器人常用的传感器。由于激光雷达的原理依靠发射激光并通过反射光线判断物体,在面对透明度高的物体,如玻璃时,检测精度会受到很大影响。该论文基于镜面反射和漫反射的不同性质,提出了一种激光雷达玻璃检测算法

1 物理原理
对于大多数物体,由于表面粗糙,光线会在其表面上发生漫反射,即入射光会反射到不同方向上。而对于光滑平面,如玻璃板和镜面,光线会发生镜面反射,即入射光反射到一个方向,且入射角等于反射角。
在这里插入图片描述
另外,当入射光线和镜面(或玻璃面)垂直时,反射光线会沿入射方向原路返回。此时激光雷达接受的到反射光线强度会很高
在这里插入图片描述

基于镜面反射和漫反射的不同性质,我们可以推断出如果入射激光在物体上发生漫反射,激光雷达在不同角度上接受到的光强会较为稳定。而入射激光在物体上发生镜面反射,激光雷达在大部分角度上接受到的光强会低于漫反射的值,但在和入射光线垂直的角度上接受的较强值。

作者利用不同物体进行实验证实了该猜想,并且证明物体离激光雷达的距离不会对这一性质产生明显影响
在这里插入图片描述
如图,发生镜面反射的物体(玻璃和镜子)在scan range接近0度时接受到光强明显高于漫反射物体,而在其他角度上光强一般低于漫反射物体。

2 算法实现

要判断反射光线是否来自镜面反射,可以通过以下几点判断:
1 在垂直方向上光线强度明显高于一般情况下光强。
2 在垂直方向上光强随角度变化很大

算法中可以设置以下参数来调整玻璃判断的条件:
1 glassTrigIntensity: 光强的阈值下限。只有强度高于这一值的光线才被认为来自于玻璃反射
2 glassIntensityDelta:光强变化阈值,只有多个数据点之间光强变化大于这一值才认为来自于玻璃反射
3 glassProfileWidth:最大玻璃板长度

文中给出的这三个参数值为8000,4000,5
在这里插入图片描述

算法实现:
在这里插入图片描述

作者将该玻璃检测算法融入到了OpenSLAM的Gmapping算法里用于对建图地图进行玻璃检测。玻璃检测节点Glass Detection读取传入的odom和激光雷达信息,生成检测到的玻璃数据点存入GlassDetectionCache,然后将这些数据点添加到Gmapping生成的原始地图中作为最终得到的地图

在这里插入图片描述
根据测试,该方法在一般办公室环境下玻璃检测准确率达到95%,常规的gmapping算法准确度只达到30%。另外,该方法没有产生任何错误判断(将不是玻璃的物体判断为玻璃)

论文作者将算法开源,可见地址https://github.com/uts-magic-lab/slam_glass

猜你喜欢

转载自blog.csdn.net/Raine_Yang/article/details/129898207