自动驾驶技术之所需技术

标签: 算法 技术
861人阅读 评论(0) 收藏 举报
分类:

之前读了一些相关的博文和技术类文章,今天来做个大汇总~~
这里写图片描述
自动驾驶涉及到的技术:从大方面来说包括硬件软件
《一》、首先我们来说硬件,有篇论文Development of Steering Control System for Autonomous Vehicle Using Geometry-Based Path Tracking Algorithm:里面详细讲到了需要的硬件:
这里写图片描述
至于自动驾驶车辆里面装哪些传感器完全由你的任务确定,比如:如果只需要完成高速公路的自动驾驶,类似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 系列,从稳定性上,推荐安装 14.04 版本。
链接:http://pan.baidu.com/s/1jIJNIPg 密码:147y
(2)、Linux基本指令必学指数
命令行操作不仅对开发大有帮助,且使用指令 apt-get install,可以快捷地完成很多软件的安装。
(3)、开发环境安装
开发环境涉及很多实际使用的库,下面通过安装某大牛在工作和学习中经常使用到的库,搭建环境所需安装包:
链接:http://pan.baidu.com/s/1sllta5v 密码:eyc8
开发环境介绍:
QT: 主要作用是做交互式的界面,比如在界面中显示当前传感器采集到的各种信息。界面交互会明显加快开发者调试程序和标定参数的过程。
OpenCV:一个非常强大的库,其中封装了大量的可应用于无人驾驶研究的函数,包括各种滤波器算法、特征点提取、矩阵运算、投影坐标转换、机器学习算法等。当然最重要的是,它在计算机视觉领域的影响力,相机标定,目标检测、识别、跟踪的接口使用起来十分方便。电子版:
链接:http://pan.baidu.com/s/1dE5eom9 密码:n2dn
libQGLViewer: OpenGL 适配 qt 的一个库,编程接口及方法与 OpenGL 大同小异,我们经常在各大无人驾驶公司宣传画上看到的环境感知信息的显示,就完全可以用 QGL 做出来。
官网链接:libQGLViewer Home Page
Boost:有着“C++准标准库”之称。对于C++开发者来说,方便直接调用,Boost是基于标准C++开发的.
QCustomplot:可以通过平面图的形式显示车载传感器的信息。鉴于 qt 内部只提供了基本的直线、圆等绘图工具,使用起来并不是很方便,因此QCustomplot诞生了。简单地调用API,然后把想要显示的数据作为参数输入进去,就可以绘制出下面这些很棒的图形。而且可以很方便地拖动和缩放。
这里写图片描述
官网地址:http://www.qcustomplot.com/index.php/tutorials/settingup
LCM:信号传输机制,LCM含多种语言如java,c++等专门针对实时系统在高带宽和低的延迟的情况下进行消息发送和数据封送处理。它提供了一个发布/订阅消息模型、自动封装/解封代码生成工具含多种编程语言版本。
官方网站:https://link.zhihu.com/?target=http%3A//lcm-proj.github.io/
Git & GithubGit:团队开发不可缺少的版本控制工具。使用Git可以极大地提高多人开发的效率,而且版本管理规范,代码追溯起来十分方便。Github在软件开发领域如雷贯耳,需要某些代码时,直接上去搜索即可。
Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


软件包含四层:感知、融合、决策、控制
这里写图片描述
1.采集:
采集传感器跟我们的PC或者嵌入式模块通信时,会有不同的传输方式。比如采集来自摄像机的图像信息,有的是通过千兆网卡实现的通信,也有的是直接通过视频线进行通信的。不同的传输介质,需要使用不同的协议去解析这些信息,这就是上文提到的“驱动层”。通俗地讲就是把传感器采集到的信息全部拿到,并且编码成团队可以使用的数据。
2、预处理
并不是拿到的传感器的所有信息都是有用的。传感器层将数据以一帧一帧、固定频率发送给下游,但下游是无法拿每一帧的数据去进行决策或者融合的。因此上游需要对信息做预处理,以保证车辆前方的障碍物在时间维度上是一直存在的,所以这里就会使用到卡尔曼滤波算法。
3、坐标转换
传感器是安装在不同地方的。因为决策控制层做车辆运动规划时,是在车体坐标系下做的(车体坐标系一般以后轴中心为O点),所以最终所有传感器的信息,都是需要转移到自车坐标系下的。
这里写图片描述
4、信息融合
信息融合是指把相同属性的信息进行多合一操作。比如摄像机检测到了车辆正前方有一个障碍物,毫米波也检测到车辆前方有一个障碍物,激光雷达也检测到前方有一个障碍物,而实际上前方只有一个障碍物,所以我们要做的是把多传感器下这辆车的信息进行一次融合,以此告诉下游,前面有一辆车,而不是三辆车。
这里写图片描述
5、决策控制
这一层次主要设计的是拿到融合数据后,如何正确做规划。规划包含纵向控制和横向控制。
纵向控制即速度控制,表现为什么时候加速,什么时候制动。
横向控制即行为控制,表现为什么时候换道,什么时候超车等

查看评论

从算法上解读自动驾驶是如何实现的?

从算法上解读自动驾驶是如何实现的? 科技新闻小鹏汽车2016-03-28 10:42 分享 3评论 [摘要]车辆路径规划问题中路网模型、路径规划算法和交通信息的智能...
  • javastart
  • javastart
  • 2017-01-29 17:55:05
  • 2176

自动驾驶技术之所需技术

之前读了一些相关的博文和技术类文章,今天来做个大汇总~~ 自动驾驶涉及到的技术:从大方面来说包括硬件和软件 《一》、首先我们来说硬件,有篇论文Development of Steering C...
  • Julialove102123
  • Julialove102123
  • 2017-09-03 11:44:14
  • 861

【JavaSE练习】面向对象_练习_模拟汽车的自动驾驶系统

模拟汽车驾驶系统  定义一个交通工具的类,包括:  属性:速度  方法:设置速度,加速度  测试类中实例化一个交通工具对象  通过方法初始化speed,打印出来  调用方法对速度进行改变  ...
  • wpf719971425
  • wpf719971425
  • 2017-06-25 21:47:31
  • 377

自动驾驶的核心技术是什么?

用4级或5级来定义自动驾驶很难有一个明确的标准,自动驾驶也不应该搞得很复杂。自动驾驶实际包含三个问题:一是我在哪?二是我要去哪?三是如何去?能完整解决这三个问题就是真正的自动驾驶。所以特斯拉升级后的8...
  • roslei
  • roslei
  • 2016-11-12 17:57:35
  • 5402

深入浅出自动驾驶(一)-图像识别

这是自动驾驶的系列文章。自动驾驶的第一步是什么呢?当然,是识别当前环境,具体来说就是识别自己的正确道路-车道线,入下图所示 1 转为灰度图 彩色的图是没法识别出车道线的,所以我们需要把他转化为...
  • jjddss
  • jjddss
  • 2017-06-08 14:44:39
  • 767

自动驾驶

以下干货来自于四维图新副总裁李昭宏的微课。 关于无人驾驶。硬件主要包括摄像头、雷达、激光雷达等;软件则包括控制系统、视觉算法等等。 由于汽车市场本身的体量,而自动驾驶又是未来的发展方向,所...
  • smallplum123
  • smallplum123
  • 2017-10-17 16:21:54
  • 387

记录:简介 深度学习在自动驾驶中的应用

自动驾驶 · 级别分类SAE 5层 * L0:无自动化,完全由人类驾驶者完成操作。 * L1:驾驶支援:通过驾驶环境对方向盘和加减速中的一项操作提供驾驶支持,其他的驾驶动作都由人类驾驶员进行操作。...
  • gikod
  • gikod
  • 2017-12-24 23:59:06
  • 104

自动驾驶核心技术之三:环境感知

自动驾驶四大核心技术,分别是环境感知、精确定位、路径规划、线控执行。 环境感知是其中被研究最多的部分,不过基于视觉的环境感知是无法满足无人驾驶要求的。 环境感知主要包括三个方面,路面、静态物体...
  • roslei
  • roslei
  • 2016-11-12 18:02:38
  • 5784

深度学习在自动驾驶中的应用

intro Implementation Data for Training Network Simulation Test ResourceintroNvidia在做自动驾驶的时候,思路和传统思路果...
  • c602273091
  • c602273091
  • 2016-12-30 21:28:59
  • 2537

深度学习与自动驾驶 - MIT出品

这门自动驾驶课程由麻省理工MIT开设,话题前沿且实践性质很强。课程面向机器学习初学者,但已经有大量经验的研究人员也能从课程提供的从实践出发的深度学习方法和应用中受益。免费课程链接:点击这里【目录】(课...
  • lsj960922
  • lsj960922
  • 2018-03-22 15:00:10
  • 105
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 14万+
    积分: 5571
    排名: 5775
    公众号:目标检测和深度学习
    目标检测和深度学习公众号:目标检测和深度学习
    博客专栏
    最新评论