又是一波冲击! | 自动驾驶再次被苏醒(提供部分源码)

计算机视觉研究院专栏

今天早上自动驾驶直播,有轰动了出租车领域,成熟的技术支撑该领域的进步,不就相比在一线大城市会陆续体现自动驾驶的优势,今天我们也是和大家来分享自动驾驶的乐趣及相关知识!

1.案例——来自知乎(青红fly)

以百度Apollo的软件架构为例,自动驾驶系统核心需要解决几个问题:

  • 我在哪儿 — 高精度地图,定位;

  • 当前我周边环境是怎样的 — 感知和融合;

  • 未来我周边环境可能会怎样 — 预测;

  • 在以上信息下我应该怎么走 — 决策,规划,控制。

激光雷达天然自带三维信息,是L4自动驾驶的主力传感器。从学术会议的趋势来看激光雷达检测相关的研究是近年的一个热点,缺点是传感器比较昂贵可视距离做不到太远。但个人认为随着商业的推动和技术发展,它会像固态硬盘一样便宜起来。

毫米波雷达对动态物体速度信息敏感,能精准地测量速度,缺点是误 比较多,而且由于相关厂商的高度垄断和封装化,该传感器很少能拿到原始数据,能做的事情不多,相关研究进展比较少。超声波雷达了解不多,主要用于泊车等场景,像法雷奥泊车产品等已经面世多年,近年相关研究和进展其实并不多,貌似多见于各大PR稿中。

融合

融合是一个挺宽泛的概念,本质是结合多个传感器的结果进行推理判断,最终给出全局唯一的结果。

感知融合可以粗分为两种类型:先对原始数据进行处理再统一出结果的前融合;和每个传感器单独出结果再对结果进行处理的后融合。这个同定位领域的紧耦合松耦合概念非常像,名字叫法不同而已。

当前自动驾驶领域应用最多的是后融合。基本工作原理是会维护一个全局的物体列表,每个传感器的结果到来后,会在物体列表中进行匹配并更新状态,如果没有物体能匹配上则创建新的全局物体并加入列表。

后融合优点十分明显,它对各个传感器的时间同步要求没那么严格,同时能对传感器有容错,某个传感器坏掉不至于系统立马瘫痪。缺点是精度相比于前融合会有损失,同时由于每个传感器的特点,融合策略的不同选择可能会带来意想不到的结果。比如毫米波雷达有很多误检,所以在很多融合策略中该传感器并不会创建全局物体而只负责更新,那在其它传感器也没工作的时候就会带来系统层面的误检(特别是一些不带激光雷达的系统)。

前融合应该算是一个研究发展趋势,随着传感器同步做得越来越好,相信更多的研究成果会出来,个人感觉多sensor的multi-modal detection会是感知融合后面的一个发展方向,因为就单纯从信息损失角度来说前融合的精度也是必然比后融合要好的。

有一篇论文主要研究动态物体间的交互建模。出发点是当前的很多建模方案例如pooling和attention,都是基于目标之间的欧式距离来判断交互关系的强弱,但我们认为这种基于欧氏距离的判断方法,不能很好的处理现实生活中复杂的情况。比如下图的三组行人,红色两组虽然距离较远,但是表现出了跟随的行为,而红蓝两组虽然距离较近,但是没有产生很强的相互作用。

MIT Autonomous Vehicle Technology Study: Large-Scale Deep Learning Based Analysis of Driver Behavior and Interaction with Automation(https://arxiv.org/pdf/1711.06976.pdf)

自动驾驶技术之所需技术

至于自动驾驶车辆里面装哪些传感器完全由你的任务确定,比如:如果只需要完成高速公路的自动驾驶,类似Tesla 的AutoPilot 功能,那根本不需要使用到激光传感器;如果是完成城区路段的自动驾驶,没有激光传感器,仅靠视觉是很困难的。

1、选汽车,之前读到一篇媒体 道,讲谷歌(雷克萨斯 RX450h)、苹果(雷克萨斯 RX450h)选车的门道,RX450h 是一辆混动车,附博文地址,主要是考虑到几个方面的因素,一是自动驾驶系统所消耗的电量巨大,混动和纯电动*在这方面有明显优势。另一方面是是发动机的底层控制算法相比于电机复杂太多,与其花大量时间在标定和调试底层上,不如直接选用电动车研究更高层的算法。所以尽量不要选纯汽油车。

2、控制器:

在前期算法预研阶段,推荐使用工控机(Industrial PC,IPC),因为工控机比嵌入式设备更稳定、可靠, 区支持及配套的软件也更丰富。百度开源的Apollo推荐了一款包含GPU的工控机,型 为 Nuvo-5095GC,回头可以查一查。

当算法研究得较为成熟时,就可以将嵌入式系统作为控制器,比如Audi和TTTech共同研发的zFAS,目前已经应用在最新款Audi A8上量产车上了。

3、can卡

工控机与汽车底盘的交互必须通过专门的语言——CAN。从底盘获取当前车速及方向盘转角等信息,需要解析底盘发到CAN总线上的数据;工控机通过传感器的信息计算得到方向盘转角以及期望车速后,也要通过 CAN卡 将消息转码成底盘可以识别的信 ,底盘进而做出响应。CAN卡可以直接安装在工控机中,然后通过外部接口与CAN总线相连。Apollo使用的CAN卡,型 为 ESD CAN-PCIe/402

4、全球定位系统(GPS)+惯性测量单元(IMU)

无人驾驶系统依靠GPS+IMU就可以知道自己在哪(经纬度),在朝哪个方向开(航向),IMU还能提供诸如横摆角速度、角加速度等更丰富的信息,这些信息有助于自动驾驶汽车的定位和决策控制。Apollo的GPS型 为NovAtel GPS-703-GGG-HV,IMU型 为NovAtel SPAN-IGM-A1。

5、感知传感器

感知传感器包括视觉传感器、激光传感器、雷达传感器等。

视觉传感器就是摄像头,摄像头分为单目视觉,双目(立体)视觉。比较知名的视觉传感器提供商有以色列的Mobileye,加拿大的PointGrey,德国的Pike等。

激光传感器分为单线,多线一直到64线。每多一线,成本上涨1万RMB,当然相应的检测效果也更好。比较知名的激光传感器提供商有美国的Velodyne和Quanergy,德国的Ibeo等。国内有速腾聚创和禾赛科技。

雷达传感器是车厂Tier1的强项,因为雷达传感器已经在汽车上得到了广泛使用。知名的供应商当然是博世、德尔福、电装等。

软件方面:

(1)操作系统

推荐使用 Linux 作为无人驾驶研究的操作系统。大部分做无人驾驶的团队都用的 Linux,最常用且普及率很高的当属 Ubuntu 系列。

(2)开发环境安装

开发环境涉及很多实际使用的库:

QT: 主要作用是做交互式的界面,比如在界面中显示当前传感器采集到的各种信息。界面交互会明显加快开发者调试程序和标定参数的过程。

OpenCV:一个非常强大的库,其中封装了大量的可应用于无人驾驶研究的函数,包括各种滤波器算法、特征点提取、矩阵运算、投影坐标转换、机器学习算法等。当然最重要的是,它在计算机视觉领域的影响力,相机标定,目标检测、识别、跟踪的接口使用起来十分方便。电子版:

libQGLViewer:OpenGL 适配 qt 的一个库,编程接口及方法与 OpenGL 大同小异,我们经常在各大无人驾驶公司宣传画上看到的环境感知信息的显示,就完全可以用 QGL 做出来。

Boost:有着“C++准标准库”之称。对于C++开发者来说,方便直接调用,Boost是基于标准C++开发的.

QCustomplot:可以通过平面图的形式显示车载传感器的信息。鉴于 qt 内部只提供了基本的直线、圆等绘图工具,使用起来并不是很方便,因此QCustomplot诞生了。简单地调用API,然后把想要显示的数据作为参数输入进去,就可以绘制出下面这些很棒的图形。而且可以很方便地拖动和缩放。

?————————————————

如果想加入我们“计算机视觉研究院”,请扫二维码加入我们。我们会按照你的需求将你拉入对应的学习群!

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

又是一波冲击! | 自动驾驶再次被苏醒(提供部分源码)

扫码关注我们

关注回复:自动驾驶,获取源码

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月22日
下一篇 2020年5月22日

相关推荐