低速无人驾驶汽车适用的目标识别感知控制算法

MEMS/传感技术

1268人已加入

描述

一、诸论

(一)研究背景

伴随着人工智能的高速发展,为解决交通堵塞、通行效率低的问题,自动驾驶汽车取得了前所未有的发展。

汽车作为重要的运载工具,通过车载传感器(车规级传感器设备),可视设备,控制器,执行器等电子设备,形成一种可以在任意地点,任意时刻,能够接入任意信息的模式,为汽车提供智能环境的支持,达到提高车辆安全性的目的。目标识别感知及控制系统目前已经成为汽车智能化的亮点和卖点。

2015年,工信部发布的《中国制造2025》明确提出,到2025年,我国将掌握自动驾驶的总体技术以及各项关键技术,要建立起比较完善的智能网联汽车的自主研发体系,生产配套体系以及产业群,要基本完成汽车产业的转型升级。所以在政策和市场的共同作用下,我国的智能汽车技术发展迅猛,智能汽车领域相关系统以及应用软件的开发已经初步成形。

本论文以温州大学瓯江学院智能车综合开发控制系统台架为平台,以LS-C161A型16线激光雷达为研究对象,充分运用Apollo、51Simone综合仿真系统,以传感器技术、多传感器融合为基础,解决了传统激光雷达测试成本高、仿真效果差、训练集单一的缺点,对基于激光雷达的目标识别感知控制算法提出了改进措施;并对基于低速无人驾驶车辆上的目标识别进行了深入的研究;最后,基于多传感器融合的确定性目标关联算法,实现了特殊道路场景下不确定数目的多个车辆目标的跟踪,为汽车的主动防撞及自动驾驶奠定坚实的基础。

(二)激光雷达的定义和关键技术

激光雷达又称光学雷达(LiDAR,Light Detection And Ranging),是一种先进的光学遥感技术。激光雷达可以用于测量物体距离和表面形状,其测量精度可达厘米级。

激光雷达

图1-1 激光雷达工作原理

激光雷达,是以发射激光束探测目标的位置、速度等特征量的综合雷达系统。其工作原理是向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较,作适当处理后,就可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数,从而对目标车辆等目标进行探测、跟踪和识别。

本论文研究的LS-161A型激光雷达采用混合固态激光雷达方式,集合了 16 个激光收发组件,测量距离高达 150 米,测量精度+/- 2cm 以内,出点数高达 300,000 点/秒,水平测角 360°,垂直测角 -15°~15°。LS-161A通过 16 个激光发射组件快速旋转的同时发射高频率激光束对外界环境进 行持续性的扫描,经过测距算法提供三维空间点云数据及物体反射率,可以让机器看到周围的世界,为定位、导航、避障等提供有力的保障。

二、基于激光雷达的目标识别

(一)引言

激光雷达是一种主动探测传感器,其受环境干扰小,精度高、速度快的特点,广泛适用于移动机器人、AGV等的目标检测和识别方面。

关于激光雷达的目标检测,主要集中在行人和障碍物方面,针对以上两种目标,重点在于如何研究高效的控制模型。对于自动驾驶汽车来说,从高清图像中检测出特征物体尤为重要,例如不易被发现的红绿灯、行人等。

目标识别的难点在于以下几个方面

l 无法准确无误的分割目标物体,特别是目标特征不显著的物体;

l 不同的物体在不同角度的探测结果不同;

l 环境对目标物体信息的干扰;

(二)基于激光雷达的环境感知

自动驾驶的四大核心技术包括环境感知、精度定位、路径规划和线控执行四大部分,环境感知是实现自动驾驶的先决和必要条件,越来越多的研究表明,仅仅依靠视觉的环境感知很难达到自动驾驶要求的。

环境感知主要包括路面、静态物体和动态物体三个方向。自动驾驶汽车对于动态物体的感知,不仅要检测物体,还要对其轨迹进行追踪,从而预计车辆的行驶轨迹。对于市区道路尤其中国的复杂市区必不可少。

激光雷达

图2-1 激光雷达环境感知

(三)激光雷达目标数据预处理

通常激光雷达在工作时,每一束激光对应一个目标物体的三维立体坐标(静态位姿),但实际上目标物体是在不断运动和变化的,在运动和变化的过程中会发生物体的形状畸形变化,为了保证目标数据的稳定和可靠,我们要去除物体畸形变化。

由激光雷达原始产生的目标数据,可以获取每一束激光打在障碍物上的激光点距的绝对距离值和角度值。转换为目标距离值和角度值,去畸变之后,转化为新的数据重新发布。

首先我们要先假设一个自动驾驶车辆模型,使得模型车辆做匀速直线运动,然后将每一个时间的数据存储在队列里面。

以下是数据预处理的操作过程和源代码:

l 主函数
#初始化LidarMotionCalib节点
ros::init(argc,argv,"LidarMotionCalib");
#构建一个tf监听者对象
tf::TransformListener tf(ros::Duration(10.0));
#构建 LidarMotionCalibration 对象 , 把tf作为构造函数的参数传入
LidarMotionCalibrator tmpLidarMotionCalib(&tf);
#进入回调函数
ros::spin();
l 点云类
public: 
    tf::TransformListener* tf_; 
    ros::NodeHandle nh_; 
    ros::Subscriber scan_sub_;
    ros::Publisher points_pub_;

l 点云类的构造函数

LidarMotionCalibrator( tf::TransformListener* tf )
    {
        tf_ = tf;
        scan_sub_ = nh_.subscribe("/scan", 10, &LidarMotionCalibrator::ScanCallBack, this);
        points_pub_ = nh_.advertise("/cloud", 10);
    }
    ~LidarMotionCalibrator()
    {
        if(tf_!=NULL)
            delete tf_;
    }

(四)激光雷达数据可视化

Pcl Visualizer是cloud Viewer的后端可视化工具,但它在单线程中运行,若要使用PCLVisualizer类必须使用调用函数,这样可以避免可视化的并发问题。

以下是实现数据可视化的代码:

include  //类 CloudViewer 头文件声明
include  //标准输入输岀头文件声明
include  //I/O 相关头文件声明
include  //PCD 文件读取头文件声

下面函数作为回调函数,在主函数中注册后只执行一次,函数具体实现对可视

化对象背景颜色设置等。

void
 
-
staticunsigned count = 0 
std:: stringstream ss;
 
//FIXMES possible race condition here:
 
viewerPsycho (pci::visualization::PCLVisualizer& viewer)
ss« Once per viewer loop:VV count + + >
viewer. removeShape (Mtext" , 0);
viewer. addText (ss. str(), 2009 300, "text" t 0);
下面函数是主函数,首先加载点云文件到点云对象,并初始化可视化对象vie-wer, 注册上面定义的回调函数,执行循环直到收到关闭 viewer的消息退出程序。
main
pci::PointCloucKpci:: PointXYZRGBA>:: Ptr cloud (new pci::PointCloud)»
pci»s io::loadPCDFile ("maize, ped", * cloud)} //加载点云文件
pci:: visual izat ion:: CloudViewer viewer ("Cloud Viewer");//创建 viewer 对象
//showCloud函数是同步的,在此处等待直到渲染显示为止
viewer.showCloud(cloud)
//该注册函数在可视化时只调用一次
//在此处可以添加其他处理
user_data + + ;
}
return;

编译并运行程序,得到点云数据图。

激光雷达

(五)激光雷达滤波处理

PCL中总结了几种需要进行点云滤波处理的情况,这几种情况分别如下:

(1) 点云数据密度不规则需要平滑。

(2) 因为遮挡等问题造成离群点需要去除。

(3) 大量数据需要进行下采样(Downsample)。

(4) 噪声数据需要去除。

对应的方法如下:

(1) 按具体给定的规则限制过滤去除点。

(2) 通过常用滤波算法修改点的部分属性。

(3) 对数据进行下采样。

双边滤波算法是通过取邻近采样点的加权平均来修正当前采样点的位置,从而达到滤波效果。同时也会有选择剔除部分与当前采样点“差异”太大的相邻采样点,从而达到保持原特征的目的。

pcl.filters库提供了对噪声点和离群点去除的具体实现# filters模块利用32个类与5个函数实现了利用filters对点云数据进行不同的滤波以达到除去不需要的点的目的,其依赖于 pci:: common,pci::sample.consensus、pci::search、pci::kdtree、pci::octree 模块。

(六)激光雷达点云构建深度图像

深度图像(Depth Images)也被称为距离影像(Range Images),是指将从图像采集器到场景中各点的距离(深度)值作为像素值的图像,它直接反映了景物可见表面的几何形状,利用它可以很方便的解决3D目标描述中的许多问题。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。

因为记录距离信息的方式的差异性,所以在英文文献中对深度图像的表达呈现出很强的多样性。使用较多的表达是:range image。Arman和Aggarwal在对三维目标识别技术进行综述时指出depth map、dense~depth map、depth image、rangepicture^3D imagesurface height map都是等价的表示术语。除此以外的常见表达还有:dense-range image、depth aspect image、2. 5D image、3D data、xyz mapssur-face profiles 等。

从数学模型上看,深度图像可以看做是标量函数j 在集合K上的离散采样,得到图像,其中旳Er为二维网格(矩阵)的索引e£R,/={1 ,・・・盘},如下图所示:

激光雷达

(七)激光雷达点云关键点

NARF(Normal Aligned Radial Feature)关键点是为了从深度图像中识别物体而提出的,关键点探测的重要一步是减少特征提取时的搜索空间,把重点放在重要的结构上,对NARF关键点提取过程有以下要求:

①提取的过程必须考虑边缘以及物体表面变化信息在内;

②关键点的位置必须稳定的可以被重复探测,即使换了不同的视角;

③关键点所在的位置必须有稳定的支持区域,可以计算描述子和进行唯一的估计法向量。为了满足上述要求,提出以下探测步骤来进行关键点提取:

(1) 遍历每个深度图像点,通过寻找在近邻区域有深度突变的位置进行边缘检测。

(2) 遍历每个深度图像点,根据近邻区域的表面变化决定一测度表面变化的系数,以及变化的主方向。

(3) 根据第二步找到的主方向计算兴趣值,表征该方向与其他方向的不同,以及该处表面的变化情况,即该点有多稳定。

(4) 对兴趣值进行平滑过滤。

(5) 进行无最大值压缩找到最终的关键点,即为NARF关键点。

(八)激光雷达特征提取

3D点云特征描述与提取是点云信息处理中的最基础也是最关键的一部分,点云的识别、分割、重采样、配准、曲面重建等处理大部分算法,都严重依赖特征描述与提取的结果。从尺度上来分,一般分为局部特征描述和全局特征描述,例如局部的法线、等几何形状特征的描述,全局的拓扑特征描述,都属于3D点云特征描述与提取范畴。在PCL中,目前已有很多基本的特征描述子与提取算法,相信在社区的快速增长下会集成和添加更多特征描述子和提取算法。

利用描述子建立曲面间的对应点在3D物体识别领域有广泛应用。采用一个向量描述曲面上指定点及其邻域的形状特征,通过匹配向量的值来建立不同曲面间点的对应关系,此冋量即为指定点的描述子,经典描述子3D形状内容描述子构造简单,辨别力强,且对噪声不敏感。其构造方法为:在以指定点p为中心的球形支撑域内,沿径向、方向角和俯仰角3个坐标方向划分成网格,统计落入网格内的点数,构造向量Vo V的每个元素与支撑域内的一个网格对应,元素的值为对应网格中的点数,向量V即为点P的描述子。

三、总结

本论文通过对激光点云数据的综合处理,得出了一种低速无人驾驶汽车适用的目标识别感知控制算法。对低速自动驾驶汽车研究提供了理论依据,也为低速自动驾驶Demo研究提供了数据支持。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分