论文解读--Visual Lane Tracking and Prediction for Autonomous Vehicles-程序员宅基地

技术标签: 算法  自动驾驶  论文解读  目标检测  人工智能  目标跟踪  

自动驾驶汽车视觉车道线跟踪和预测

摘要

        我们提出了一种用于自动驾驶汽车跟踪水平道路车道标记位置的可视化方法。我们的方法是基于预测滤波的。预测步骤估计在每个新的图像帧中期望的车道标记位置。它也是基于汽车的运动学模型和嵌入式测程传感器产生的信息。使用适当准备的测试车辆获得的实验结果表明,在某些条件下,如振荡和变道,预测步骤可以显著地减少跟踪误差。因此,我们相信我们的方法应用于基于图像的控制自动驾驶汽车可以提高系统性能。

1.介绍

        汽车本身无疑是现代自动化的最大挑战之一。一方面,飞机和船舶的汽车驾驶员是众所周知的和广泛使用的。另一方面,由于更加复杂,对于汽车和卡车,这项技术仍在开发中。其目标是使汽车自动从地址A驾驶到地址B,与有经验的人类司机一样安全(或更安全)。在这种情况下,用户就只是一名乘客。

        对于汽车来说,自动驾驶系统的一个基本要求是能够将车辆保持在道路内,并行驶在车道的中心。这需要了解周围环境的知识,这是通过安装在汽车上的传感器获得的,例如,照相机、激光扫描、GPS和惯性单元。

       (NASHMAN,1992年)、(SCHNEIDERMAN,1994年)、(POMERLEAU,1996年)、(BROGGI,1999年)和(LU,2002年)等项目只依赖于摄像机生成的灰度图像,用于检测道路的位置和估计曲率。在(CHRISMAN,1998)和(SALES,2010)中,彩色图像被用来对属于道路的区域进行分类。这一想法也被应用于(DAHLKAMP,2006),以扩大系统的范围,超出在其自主车辆上使用的激光测距仪(LRF)传感器的范围。

        立体视觉系统允许计算场景上物体的距离。在(BROGGI,2010)和(LIMA,2010)中使用了双目视觉系统(立体视觉)用于障碍检测。但是,这种系统具有计算成本高的缺点。

        像(GUIZZO,2011)和(自动驾驶实验室,2012)等项目将LRF传感器与相机、GPS、IMU和地图信息相结合,使自动驾驶研究达到前所未有的水平。这两个项目都成功地完成了在真实城市环境中的自主导航任务。

        在巴西,这一领域的研究正在开始发展,我们强调一些:为你驾驶,UNIFEI(VEERMAS,2010),CADU,UFMG(LIMA,2010),VERO,CTI /Campinas(VERO,2012),EESC / USP(SENA,2012),CARINACARINA,2010),由ICMC / USP开发。我们大学的另一个小组(UFES)也在开发一个自动驾驶汽车项目。他们买了一辆已经安装了主要硬件组件的车,他们主要关注的是软件方面。他们的主要目标是了解人类大脑是如何利用图像来解释世界的(LCAD,2013)。另一方面,我们项目的主要目标是建立一辆具有简单和低计算成本的解决方案的自动驾驶汽车。为了实现这一目标,我们正在通过安装执行器和传感器来调整普通汽车。我们的汽车已经能够在可控的条件下,在真实的道路上自动驾驶(VIVACQUA等人,2012年)。

        我们的系统由一台连接到一个USB摄像头的笔记本电脑和一个接口板组成。USB摄像头安装在前挡风玻璃上,指向道路。接口板将计算机连接到汽车编码器,并连接到负责驱动轮定位的步进电机。

        计算视觉系统产生的视觉信息受到由遮挡、反射、阴影等引起的噪声或误差的影响。为了使这些问题的影响最小化,对原始图像进行过滤过程,以产生更可靠的信息。这些信息是所谓的模型状态的基础,并被反馈到视觉算法中,以定义感兴趣的图像区域(ROI)(见图1)。在(VIVACQUA 等人,2012)中,这些信息也被控制器用来使自动驾驶汽车保持在道路的中心。

图1:用来生成模型状态的可视化信息流

        一些视觉车道跟踪的方法(SCHNEIDERMAN,1994)、(AUFRERE,2000)、(LU,2002)和(CHOI,2012)。它们都使用某种过滤过程来更新其模型状态(描述车道标记的参数),但没有一种方法使用预测为了实现预测,车辆的位移信息必须是可访问的和可靠的。我们已经对我们的自动驾驶汽车进行了必要的调整,在本文中,我们提出了一种基于预测过滤的可视化方法来跟踪水平道路车道标记的位置的可视化方法。预测步骤估计在每一个新的图像帧中的期望车道标记位置,以最小化跟踪误差。下面的几部分将对我们的系统进行解释,并讨论一些实验结果。

2.参照系

        在进行预测步骤之前,需要将系统参照系从相机的参照系更改为汽车的参照系,考虑到摄像机在原点(自我参照系-OR)。在自动驾驶汽车中使用的视觉系统检测到的水平车道标记(VIVACQUA,2012)通过反向透视投影(图2)进行映射,就像图像是从天空看到的一样,假设道路是完美的平面(鸟瞰图)。

图2:参照系。(A)相机参照系;(B)汽车参照系

        在自我参照系中,原点是地平面中相机正下方的点,Z轴对应于汽车的位移方向(当向前移动时),X轴是横向方向。图2 (B)显示了与图2 (A)图像中检测到的信息对应的两条导线(左和右)。预测步骤的基本思想是,可以根据运动学模型预测汽车在下一个图像帧中的位置,在实际帧上的位置。        

3.汽车运动学模型

        汽车运动学模型可以用图3所示的自行车模型来近似。图中:Pr为描述车辆轨迹的圆周的中心,Pc为车辆中的摄像机位置(或原点),R为Pc描述的轨迹曲率半径,Lt为车辆前后轴的距离,Lr为或原点与后轴的距离,α为前轮转角。

图3:汽车运动学模型

        使用汽车运动学模型(1),根据其参数和前轮转角(α),我们可以计算出世界参照系(WR)中的车辆轨迹。

 (1)

        其中,x、z、θ为车辆在WR中的位置和方向,v为车辆的线速度。值得注意的是,世界参照系WR的起源是固定在地面上的,而不是固定在汽车上的。因此,当汽车移动时,点Pc描述了点线轨迹,固定物体在世界中的位置保持不变。

4.位置预测

        在OR参考系中,点Pc与原点重合,世界上的固定物体旋转Pr,但方向相反。图4显示了在或参考系统中所看到的世界上一个固定物体的初始位置。根据初始位置的信息和由运动学模型所定义的轨迹,可以估计未来的位置。

图4:对象位置预测:(a)右转;(b)左转;(c)直行。

        旋转中心(Pr)、摄像机轨迹的曲率半径(R)和角位移(Δθ)采用(2)、(3)和(4)进行计算。

        以米为单位的距离(通过位于前轴的编码器获得)和前轮转角(α)(通过安装在驱动轮轴上的另一个编码器获得):

 (2)

 (3)

 (4)

        其中,ΔL为位移距离。

5.抛物线旋转

        要估计任何物体的新位置,人们只需知道旋转中心(Pr)、旋转角度(Δθ),并应用一个二维旋转操作。在(VIVACQUA,2012)中描述的自动驾驶车辆的具体案例中,系统被测试,跟踪对象是构成道路模型的两个道路车道标记。每一个标记都用一个二次多项式表示。

 (5)

        给定旋转抛物线的一个点(X,Z),我们可以通过反向旋转操作,在原始抛物线中找到相应的点(X,Z),由下式给出

 (6)

 (7)

        其中Px和Pz为旋转中心的坐标。在(5)中替换(6)和(7),我们得到了旋转抛物线的一般形式:

 (8)

        这种形式与软件中使用的原始数据结构不兼容,不允许对X给定Z的显式计算,这在计算上是不可取的。为了解决这个问题,我们提出了一种方法来找到一个良好的旋转抛物线的近似值,以保持在(5)中给出的默认形式。

        考虑旋转的抛物线方程

 (9)

        我们需要解决的问题是找到系数a2r,a1r和a0r。解决这个问题的一般思想是:找到区间内原始抛物线x (z)的中心点M[z0..z1];应用Δθ绕Pr点旋转(从而使M变成Mr);考虑Mr属于新的抛物线xr (z);并考虑这个点的切线方向被旋转角度Δθ减去。

        切线在M点上的倾角由给出。利用切线差的性质,我们有:

。由于旋转的抛物线曲率没有改变,我们有a2r=a2。系数a1r可以用计算,系数a0r用计算。通过这样做,我们得到在OR参考系的旋转抛物线参数。

图5:旋转抛物线的近似值

6.滤波

        我们考虑到车道标记位置在连续帧中不会有太大的变化,大量的噪声会导致图像快速变化(如反射或遮挡)。为此,我们选择使用一阶低通滤波器,考虑到其对系统行为的影响,我们在实验中定义了该时间常数:如果该值过低,滤波对零星误差测量的衰减作用很小。另一方面,如果它太高,这将延迟响应,并且会给模型带来困难,例如在弯道前后发生的道路形状的缓慢变化。在用车载摄像机在80km/h速度下拍摄的视频进行测试后,我们发现τ = 3的值在鲁棒性和响应速度之间产生了很好的折衷。

        式(10)表示表示状态模型的向量Wi。式(11)是低通滤波器的表达式,它从视觉系统(Ui)生成的度量中更新模型状态。

 (10)

 (11)

7.实验结果

        为了测量预测系统的性能,我们使用一个适当适应的测试车辆进行了一些实验,以获取与里程长测量同步的道路图像。该车辆在三种曲率条件下驾驶,如图6: (A)在左转;(B)在一条直线上;和(C)在右转。在每个曲率条件下,车辆就轨迹的振荡水平以三种不同模式进行(图6 (D)至6 (F)):无振荡(L0),车辆沿与导线平行的道路行驶;低振荡水平(L1),车辆周期性穿过中心线;高振荡(L2),车辆也穿过中心线,但有更明显的偏差。

图6:实验条件:(A)左转、(B)直行、(C)右转、(D、E、F)对应路线

        在轨迹中引入振荡,迫使车辆移动不平行于道路线,以便预测能够证明其保持模型状态接近瞬时测量的能力。

        测试在100米长的路径上以大约40 km/h的速度进行,每40 ms采集一次数据(图像和里程计)。图7显示了图6中每个轨迹的注册驱动轮位置。

图7:在试验中获得的驱动轮位置数据

        收集到的数据在实验室进行分析,用来评估系统性能(有和不使用预测)。所使用的性能指数是绝对水平平均误差(AHAE),由模型定义的曲线与瞬时测量定义的曲线的差值计算出来。

 (12)

8.讨论

        图8显示了从测试中获得的视频中获得的帧序列,它与图6(D)中所示的L2轨迹的情况相对应。这个序列对应于车辆远离中心线的延伸,可以从黄色标记的连续位移到左边。

图8:帧序列,显示了有和没有预测的跟踪过程。

        图8清楚地显示,与只使用滤波和预测的模型(黑色虚线)相比,使用滤波和预测的模型(白色虚线)更接近度量值(红色连续线)。这说明了我们的方法的好处。

        感知模型状态和视觉测量之间更接近的另一种方法是通过图9中的图,图中显示了过滤模型和带有预测的过滤模型的多项式的参数a0(车道偏移)和a1(车道方向)。曲率参数(a2)没有给出,因为它在考虑的拉伸中实际上是恒定的。

图9:仅滤波和滤波-预测的模型参数表现

图10:振荡等级2中的累积误差

        在图9中,我们可以注意到低通滤波去除高频噪声的能力,这导致了延迟平滑曲线(没有预测情况)。通过使用预测,可以减少不期望的延迟(预测)。这种减少是因为预测补偿了汽车运动对捕获图像的影响。图10为具有较高振荡(L2)的测试条件下,指数AHAE的归一化累积误差(NAE),其中认为无预测的累积误差为1。用(13)计算,其中n为实验中使用的总帧数。

 (13)

        在所有测试用例中,有预测的累积误差上升速率小于未有预测的累积误差(低于0,51)。

        图11总结为在所有测试条件下得到的最终NAE值,详见图11。我们可以注意到,当汽车以较高振荡水平的轨迹行驶时,NAE的值会降低。这是因为当存在振荡时,车道标记在摄像机视野内横向发生位移,预测的使用补偿了这种效应,使模型更接近真实测量,同时保持滤波过程给出的鲁棒性。我们相信,预测步骤将提高自动驾驶车辆在类似条件下驾驶时的性能。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41691854/article/details/134761426

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法