讲一点点自动驾驶技术(1)概论

2023-11-16

讲一点点自动驾驶技术(1)概论

作为一个自动驾驶小菜鸟工程师,小Q入门才两三年时间,最近空闲时间比较多,利用这个平台把自己对于无人驾驶技术所看所学的东西在这进行一个整理,一来自己看着方便,二来供大家交流学习(Xiao Xi)。
ps:如果大家觉得我里面有什么错误或者更新的话,欢迎来一起交流交流,感激不尽,感激不尽,感激不尽。重要的事情讲三遍。
pps:这一个比较长的系列文章,小Q打算从概述开始,到定位系统,到感知,然后路径规划,以及决策,规划和控制乱七八糟一大堆,最后说一说深度学习和平台。但也不一定是这个顺序,想到哪里写哪里吧。
enmmmmm 先想到这些,之后想到的再加上去。
OK了, 今天开门见山第一章,概论。概论小Q会把所有的东西拎出来尽量用白话说个大概,比较适合作为小白入门读物,和大神睡前催眠读物。



前言(一些废话)

从1885卡尔本茨(小Q校杰出校友,得瑟一下 )研制成功人类第一台严格意义上的汽车,一举奠定了汽车设计基调,即使现在的汽车也跳不出这个条条框框。随着科技不断发展,汽车这种传统技术受到了来自新的发展的科技的挑战,传统OEM厂商只关心自己的传统硬件的技术积累:发动机的功率和节油经济型,变速箱的稳定和顺滑性等等传统传动件,到后来对于之后舒适性的挑战:nvh等等。而后随的时间发展车上面的结构越来越多,在20世纪70年代,电子技术大规模应用到汽车上面,之前从最开始的交流发电机,电子闪光,喇叭和电子点火到70年代末,集成电路和微处理器在汽车的电子构架的大规模推广,这时出现了两个比较经典和代表性的技术:电子汽油喷射技术和ABS,这时机械功能用电子技术进行控制已经达成了广泛的共识。后来在80年代到90年代微处理器的应用日渐成熟并且逐渐智能化。从倒车示警,TPI电子负荷调节到车上大哥大电话,都是在这个时期上车的。进入二十一世纪,多路传输,ASKS-32微处理器,从模拟到数字信号,动力优化系统,自动驾驶和电子地图,都在这时候出现。

有关一些其他的CNA bus到Flex ray一些些内容太多,以后有时间可以自己整理整理。

但是这些发展都在循规蹈矩仍然跳不出传统OEM对于汽车的定义,直到特斯拉的这个行业"搅屎棍“的诞生。就像手机行业一样,如果没有Iphone的诞生, 诺基亚还在沉迷于自己家的落后于时代的塞班系统无法自拔,而索尼还在和三星在比拼的手机摄像头的像素。如果没有特斯拉,也许我们在为宝马i8的三缸加电机续航60公里的“绿色”跑车点赞。

特斯拉如何颠覆汽车行业,在网上有太多的解读和文章了,都是高人的理解, 我就简简单单以软件方面来说点我自己的。对于汽车而言,大多数人都认为所谓的汽车就是一个发动机,传动轴,变速箱加四个轮子加上其他的系统。总而言之,大众亦或是整车厂而言对于汽车仅仅是停留在硬件制造的概念上。其他的 we dont care, 而现在的汽车,亦或是对于新能源汽车而言,它不仅仅是一个硬件的制造,而是把它升维当作一个电子数码产品:这就意味着核心的零部件从发动机变速箱转而为中控屏幕,芯片和传感器。所以在软件层面,汽车的电子构架会从分布式ECU转向集中式构架进,而发展迅速且成熟的互联网软件机器智能设备的集成式设备系统对目前的汽车电子构架实现的降维打击。并且和现代的智能电子设备相似的是,在服务和应用场景甚至辅助驾驶功能都可以通过OTA进行远程升级和更新系统,这就打开了一个潘多拉的魔盒,智能电子设备如手机可以作为我们日常支付,通讯,生活的核心设备,那汽车也可以成为我们涉及出行,家,办公地点,生活娱乐场所等等各种服务和应用的入口。
所以这就是所谓谈及的软件驱动汽车产业升级,汽车从原来的卖硬件到卖软件卖服务的转型。核心的价值和利润从传统的发动机,车身,底盘,品牌溢价,变成了软件系统,芯片,电池,大数据和服务。这是一个传统车企完全没有经验和技术积累的战场,所以对于传统车企的转型:that will be actually very bloody,不转型基本只有一个死在前面等着。所以不管是后知后觉还是先知先觉,movement should be taken somehow:丰田宣布他们在改变自己的公司定位:从传统的汽车公司转型为汽车出行公司,表示自己的潜在竞争对手从BBA大众等老牌车企转到Apple,google,BAT等互联网科技企业;大众将自己的软件部门拆分重组成立“Car.software"全新汽车开发部门,这个部门涵盖互联车辆&设备平台,智能车身&数字化座舱,自动驾驶,车辆车型&能源,数字化服务及移动出行。
在这个来临的高潮当中,100%的国内车企相信早已经看到,这是自己相对于国外oem一个弯道超车的绝好机会,对于传统汽车来讲,国外的车企有着近百年的技术积累和专利壁垒,在短时间内国内车企追平甚至超越可以说是天方夜谭。但是我们也看到,国内的车企也是相对意义的传统车企,转型势必也一样,疼,非常疼。
扯多了,回正题:软件。
实际在传统上面,如上面所讲的,汽车各个电子系统都发展的非常迅速,以分布式的构架(及每个子系统都会有他自己独立的芯片,软件亦或是处理器),但是汽车的各个部件的通信仍然是一个难题,这里套用Alex Voigt 那片非常有名的博客《Wir haben geschafen es wird blutig》(很多人误以为作者是Peter Mertens,Ex-leader F&E Audi AG)里面的比喻非常形象:Die Deutsche Automobilindustrie ist wie ein unkoordiniterter Okopus, 德国的汽车工业就像一只毫无章法的章鱼,这是一个隐含的比喻。
接下来我翻译其中几段:
“当你把章鱼的触手当作汽车的中不同功能和子系统,你会很明确的发现所有的子系统已经被明确的定义了,因为内燃机这个技术已经非常成熟,真正的创新已经不会出现了。”
“如果你在开着一辆传统OEM厂商制造的车辆,大约会有几百枚芯片各自运行这而组成一个非常复杂的网络。但这些从来都没有整合或者集中过。因为是成千上万个供应商参与,有时候他们合作开发,有时候独立开发。但是他们都有一个共同点:所有的子系统都只会在自己的小黑盒里面工作,并且不会和CPU----也就是我们类比的章鱼的中央大脑进行沟通。”

所以软件势必成为未来车企的重中之重,在未来的汽车行业中,大部分“血液里面充满的汽油”的高级管理人员必将淘汰出核心区域,取而代之的是“血液中有电和代码“的的人。不了解什么是软件什么是系统的人坐在高位去应对这一场革命,势必会在这场风暴面前安排得明明白白。

唠叨了一些废话,不是特别有逻辑,但是以后有时间了会补充,修改。不对的大家请斧正,虾虾侬们

我们回归总正题,这一篇我们来说无人驾驶技术的概述吧。


一、无人驾驶概述

说实在自动驾驶不是一个单一的技术,而是由很多各子系统组成的高度复杂的系统。小Q这里主要把它按照三个方面来讲: 算法(传感,感知和决策);客户端(操作系统和硬件平台);云(高精地图,模型训练,仿真等等)
一个非常简单的系统构架如图所示:

在这里插入图片描述图片来自:https://www.sohu.com/a/143562859_633698

这个图很重要,小Q会根据这张图一项项在下面的系列文章一个个讲。

图上所看到的子系统通过从传感器原始数据中提取信息来探测环境,以此为参考对下一步的行为做出决策。而客户端系统将这些算法合成在一起,同时满足实时性和可靠性需求。这里的云平台可以提供的功能如图所示:高精地图的日常OTA,上传并储存数据然后对识别,决策和跟踪模型进行更好的训练反过来对车辆的识别,决策和跟踪功能进行更新。

下面一个一个的走一遍个大概。然后在接下来的系列文章里面,我会剖开来一个个细说。

1.自动驾驶的算法

所谓自动驾驶的算法,重要的事情说无数遍:传感,感知和决策。

传感呢,就是从传感器获取的数据当中过滤出有用的环境信息供下一步使用;
感知分为两个方面:1,车辆定位,2,周围环境信息的理解;
决策部分就是根据传感和感知的数据进行相对应的操作来应对外部环境。

1.1传感

传感,最主要的硬件其实就是车载传感器,我这里主要说四种。

GPS/IMU

GPS(GlobalPositioningSystem):指美国国防部研制的全球定位系统。用户设备通过接收GPS信号,得到用户设备和卫星的距离观测值,经过特定算法处理得到用户设备的三维坐标、航向等信息。使用不同类型的观测值和算法,定位精度为厘米级到10米级不等。GPS的优点是精度高、误差不随时间发散,缺点是要求通视,定位范围无法覆盖到室内。

IMU(Inertial measurementunit):指惯性测量单元。包括陀螺仪和加速度计。陀螺仪测量物体三轴的角速率,用于计算载体姿态;加速度计测量物体三轴的线加速度,可用于计算载体速度和位置。IMU的优点是不要求通视,定位范围为全场景;缺点是定位精度不高,且误差随时间发散。

MM(Map matching):指地图匹配。该技术结合用户位置信息和地图数据,推算用户位于地图数据中的哪条道路及道路上的位置。

引自 https://www.cnblogs.com/amap_tech/p/11381689.html

GPS和IMU是两个互补的定位技术。GPS属于相对精度较高但刷新率较慢,一般只有10Hz左右,对于自动驾驶的车辆0.1s一个循环是远远不够的,而IMU能达到200Hz以上的刷新频率,但是IMU会随着时间而积累历史误差,导致到后面误差越来越大。所以融合GPS和IMU两种技术,可以达到高精度且高实时性的位置更新。

但是GPS的精度对于自动驾驶厘米级的精度要求远远是不够的,所以在主流的技术当中,GPS+IMU+高精地图+激光雷达或者GPS+IMU+视觉定位是主要的解决方法。这是后话,在之后的定位的章节中我们摊开细说。

激光雷达

激光雷达(LIDAR)是军转民的高精度雷达技术。激光雷达的应用一开始主要为军事领域,受到了各国军事部门的极大关注。相比普通雷达,激光雷达可提供高分辨率的辐射强度几何图像、距离图像、速度图像。在民用领域中,激光雷达因其在测距测速、三维建模等领域的优越性能也被广泛应用。

在这里插入图片描述

转自 https://blog.csdn.net/weixin_42229404/article/details/81408909?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf

激光雷达可以用于HD Mapping,localization等等用处。工作原理是发射激光束,接收表面反射,然后测量反射时间来确定距离。精度可以达到厘米级别。激光雷达分为两种,机械式激光雷达和固态激光雷达。
机械式激光雷达顾名思义,它带有控制激光发射角度的旋转部件,由光电二极管,MEMS反射镜,激光发射接收装置组成,其中机械旋转部分是指可360度旋转的MEMS发射镜。下面是机械激光雷达的原理图:


图片源自 https://blog.csdn.net/qq_38403231/article/details/100021569

下面是固态激光雷达。

固态激光雷达主要是依靠波的反射或接收来探测目标的特性,大多源自三维图像传感器的研究,实际源自红外焦平面成像仪,焦平面探测器的焦平面上排列着感光元件阵列,从无限远处发射的红外线经过光学系统成像在系统焦平面的这些感光元件上,探测器将接受到光信号转换为电信号并进行积分放大、采样保持,通过输出缓冲和多路传输系统,最终送达监视系统形成图像。
根据解决方案不同目前主流可以分为三种:

1.MEMS微电机系统
2.OPA光学相控阵技术
3.Flash

在这里插入图片描述图片源自http://mp.ofweek.com/laser/a145663427086

是不是云里雾里的,但是无所谓,其实我也不太懂,这里只是一个大概,详细的信息会在以后文章里面等我查文献揉碎了讨论讨论。

摄像头

摄像头,这个传感器的主要工作使用与目标识别和目标跟踪任务,举几个例子:车道偏离预警(LDW)、前向碰撞预警(FCW)、交通标志识别(TSR)、 车道保持辅助(LKA)、行人碰撞预警(PCW)、全景泊车(SVP)、驾驶员疲劳预警等众多功能都可借助摄像头实现。目前所有的自动驾驶系统级别的硬件解决方案都会有摄像头,因为相对于激光雷达和毫米波雷达,摄像头的成本会很低,所以性价比非常高,所以目前做到无人驾驶(L4 L5)要在周围安装至少8个1080p的高清摄像头(xRxL8V到xRxL12V方案)去观测前方,后方,左右两侧的车辆行人以及物体。通常摄像头会以60Hz的频率工作,当所有摄像头同时工作,每秒会产生以GB为单位的数据,这会对后续的处理单元硬件会有很高要求。

图就不放了,谁没见过摄像头吗??

毫米波雷达和超声波雷达

这里先解释名词,毫米波是指波长1mm到10mm之间的电磁波,即频率介于30GHz到300GHz之间的,目前主流的毫米波雷达频率为42GHz和70GHz,其中70GHz产品为新一代产品,且目前只有毫米波雷达头部企业如bosch,Conti,Denso和Delphi几家公司掌握。
超声波即频率大约为40kHz, 48kHz 和 58kHz 三种的电磁波,没打可说的。

先看看图看看长啥样子吧。

在这里插入图片描述
这是一个博士的第五代毫米波雷达,77GHz的,小Q曾经参加过这个雷达在国内的本地测试。

在这里插入图片描述
这是一个超声波雷达,其实你自己去看看自己的爱车,带倒车报警的车辆在一般在前翼子板和后面保险杠附近都会发现一个小圆圈的东西,其实就是这个玩意(倒车时候哔哔声就是这些小东西在替你探测距离)。

大概说一下这两个雷达吧。
所谓的毫米波雷达,就是指工作频段在毫米波频段的雷达,测距原理跟一般雷达一样,也就是把无线电波(雷达波)发出去,然后接收回波,根据收发之间的时间差测得目标的位置数据。毫米波雷达就是这个无线电波的频率是毫米波频段。

毫米波雷达的频带很宽,适用于各种宽带信号处理;并且可以在小的天线孔束下形成极窄的窄波束,指向性优良,跟踪精度很高;多普勒分辨力好,所以测速精度高;它对目标形状的细节敏感,素以可以提高目标分辨和目标识别能力与成像质量;抗干扰性能好,所以可以全天候工作。

超声波雷达的工作原理其实和毫米波雷达差不多,也是通过超声波发射装置向外发出超声波,到通过接收器接收到发送过来超声波时的时间差来测算距离。目前,常用探头工作频率有 40kHz, 48kHz 和 58kHz 三种。一般来说呢,频率越高,灵敏度越高,但水平与垂直方向的探测角度就越小,所以在大部分的主流采用 40kHz 的探头。超声波雷达防水、防尘,即使有少量的泥沙遮挡也不影响。探测范围在 0.1-3 米之间,而且精度较高,非常非常适合应用于泊车。

这两类雷达主要用于组成避障的最后一道防线。毫米波雷达和超声波雷达产生的数据显示的车辆道路前方最近物体的距离和速度。一旦我们发现远处有一个物体可能有碰撞的危险,那么无人驾驶车辆就应该制动或者转向(决策层,后面说)避开障碍物。因此,雷达的数据不需要太多复杂处理输出给控制器,所以转向,制动或者安全带预紧这类的“紧急”功能并不需要着重于计算流程。

1.2 感知

感知这这一部分就是传感的下一站,传感器过滤后的数据被送入感知系统,通过这些数据车辆会理解当前所处的环境和自己的位姿。理解环境和本车位姿即感知系统的三个主要任务:定位,目标识别和目标跟踪。
一个一个来简单说一下。
定位,一般来讲,在我们上面传感的段落里面我们已经知道,GPS和IMU是专门用于定位的传感器,GPS的精度高但更新速率慢,IMU更新快但是误差会累积越来越大,这时候我们就要结合两者的优点,这就是在无人驾驶当中一个非常重要的技术手段:sensor fusion,在这里我们是使用卡尔曼滤波融合两种传感器信号,提供较为精确的定位信息。
卡尔曼滤波是一个定位技术里面非常重要的一个手段,一般会有EFK(拓展卡尔曼滤波), UFK(无损卡尔曼滤波)等等多种变形。

听起来听高深莫测,一个例子就能解决:
假设你有两类不同的传感器去测量一个值,这里是我们车辆的位置信息,但它们每次的读数都不一样,怎么办?我们本能的会想到一个方法——取平均。然后呢你其实知道其中一个传感器更精准,一个差一些。那有比取平均更好的办法吗?——加权平均。假设你知道这两个传感器测量值的正态分布的方差,用这两个方差值你可以得到一个“最优”的权重。简单直白的把平均值里面的精准信息表现更突出一些。
这里,两个传感器就是IMU和GPS。
下面是找的一张IMU和GPS做融合的原理图。

顺便提一句,如果只有一个传感器,但是我有一个数学模型,一个给的是观测出来的值(传感器),一个给出的是模型算出来的值就是预测值,这样可不可以用卡尔曼滤波?
答案是非常可以,就是在t时间的观测值x(t)加上必要的噪音和t-1时候求出的t时间的预测值X(t)加权平均求出t+1时间的预测值,然后在t+1时间更新到观测值x(t+1)进行对比更新相关参数再和t时间的求得预测值X(t+1)加上必要的噪音推导出t+2时间的预测值X(t+2)再往后面接着用,逐渐迭代更新。
这个方法我在这里就提这么几句,以后会在激光雷达定位和视觉定位里面用到这种一个观测值一个预测值的卡尔曼滤波算法。
回到正题,GPS和IMU在 fusion之后得出来的定位信息准确且实用吗??
答案是并不,因为他们融合之后的精度只有米级,并且GPS信号在开阔的地方可以,如果在有遮挡的地方就信号强度就可以洗洗睡吧,并且GPS存在多路径问题,如果附近高楼林立,它会受到物体的反射干扰造成噪音几何倍增大。

所以怎么办? 还有其他传感器能用吗?
怎么没有?
第一个当然是又便宜又好用的摄像头了,就是所谓的视觉定位,在这里视觉定位我们要用的一般是双目相机,或者单目加红外的相机,因为我们需要图像的深度信息,而大部分只有双目(经过计算)和红外(直接测量)才能的搞这个信息。

简单说一下流程:首先就是通过双目或者单目红外或者其他的手段获取的立体图进行三角测量的到含有每个点深度信息的视差图,然后在相邻frame里面进行特征点的匹配,通过这些匹配点在不同frame的关联性(一般就是一个矩阵方程),反推出连续连个frame里面车辆做出的位置变化。
学过机器人的看官们看到这就知道了啥意思了,其实这就是SLAM里面的Visual Odometry, 立体视觉里程计,一般用于机器人定位。所以,在SLAM里面有的缺点他在无人驾驶里面也有,就是这种定位对照片质量非常敏感,一但光线条件不好,基本也可以洗洗睡。
下面是一张特征点匹配的图。
在这里插入图片描述
图来自高翔SLAM十四讲

还有呢,就是激光雷达了。激光雷达我们在上面讲到,也可以使用卡尔曼滤波进行融合,但是同样因为外界干扰太多会导致卡尔曼滤波处理的激光雷达数据不精确,所以我这里要提另外一种滤波形式,particle filter,粒子滤波。

怎么能通俗的理解粒子滤波呢,我试试。

假如你一个人参加了一个真人吃鸡比赛,你拿着吃鸡游戏的地图(Global Map)被人蒙着眼睛一脚从飞机上踹了下来,落地开局一个人一张地图,你也不知道你在哪,这时候你发现你开启了一个作弊器有了影分身的功能,所以你影分身出来N个你(Particle)随机均匀分布(在车辆位置估计有时候是正态分布)在这个小岛上面,然后发现你旁边有一个二层小楼,看了看地图,这个地图上面有20个二层小楼,所以我可能就在这个20 个小楼当中一个旁边,所以我让所有分身都集中到20个二层小楼旁边,然后我往旁边走(Motion Model),走了几百米就发现一座桥,所以所有分身在走的时候他们也在走,发现从二层小楼走着走着不远旁边有桥的地方有五个,所以我让所有得分影分身都往这个5个地方靠,然后再往前走又发现了一辆蹦蹦停在路边,然而这次满足条件的只有一处,那我就可以判定我的位置大概率就在地图满足条件的那个位置了。
说的不是很严密,请大神们见谅。大概意思就这。

OK,粒子滤波差不多就这意思,为什么会用到激光雷达上面呢,因为,激光雷达它产生的结果是点云图,这些点云状图对周围的环境进行了描述,但是单个的点非常难以区分,所以我们需要粒子滤波器将这些属于同一个物体的点进行划分,将特定观察到的形状和已知的地图进行比较,以减少不确定性。而激光雷达的精度可以达到10cm级别,对于无人驾驶已经基本满足要求。

所以,根据以上我们讲到的,我们其实需要将所有有关定位的传感器进行融合,即GPS+IMU+高精度地图+激光雷达信息融合或者GPS+IMU+视觉定位的方法之后得出位置信息。
大概就是下面的意思。在这里插入图片描述

1.3 目标识别和跟踪

目标识别和目标跟踪,目前主流的解决方案都是通过计算机视觉解决,而早期我们使用的是激光雷达,因为激光雷达能提供和精确的深度方面信息。但是一个东西如救世主般地出现,深度学习技术,尤其是卷积神经网络(CNN)在计算机视觉上面的应用,使得使用视觉传感器进行目标识别和跟踪成为可能,也顺手拯救了英伟达等一众显卡厂商的股价。
目标检测就是在图像和视频中扫描和搜索目标,就像下面的图一样:
在这里插入图片描述
卷积神经网络是个非常非常大的题目,小Q之前做过相关的玩意,这里是简介,以后有时间摊开讲点东西。
一般的卷积神经网络结构有以下几个层:第一部分是输入层.第二部分由n个卷积层和池化层的组合组成。第三部分由一个全连结的多层感知机分类器构成。

目标识别之后就会有了目标跟踪,一句话解释就是在目标移动的时候对他的轨迹进行一个估计,也就是跟踪目标对象的轨迹。一般在无人驾驶上面用来追踪移动车辆和过马路的行人。深度学习在目标追踪这个方面有时是很突出的。具体来说,通过使用辅助的自然图像可以离线训练一个堆叠的自动编码器,学习鲁棒性更好的通用图像特征,对抗视角和车辆位置的变化,训练好的离线模型可以用于在线的实时目标跟踪。

1.4 决策

当车辆对目前环境的理解已经够深刻,我们根据这些信息预测环境物体的运动并且对本车的路径做一个规划去避开障碍,就是这个意思。我分成行为预测,路径规划两个方面讲:

1.4.1 行为预测

一辆车行驶在车水马龙之中的时候,最难的时候是应对其他车辆的动作,这是影响自身驾驶路线的直接原因。所以,在十字路口或者叉路口的时候,难度会呈几何式上升。为了确定车辆可以在这些复杂环境中安全行驶,决策单元会对本车附近的部分车辆进行行为预测,并基于这些预测做出一个行为规划。所以为了预测其他车辆的行为,可以生成一个其他参与者可到达位置的模型。
这其实是实现全自动无人驾驶最具挑战的问题一直,举一个例子来说:前Google无人车项目的Chris Urmson曾经在演讲中就提到了google无人车项目最大的障碍就是怎么样理解并预测周围道路参与者的行为。
这一段小Q也处于知识积累不全的一个点,等下面系列文章轮到了行为预测我会查一查相关资料再好好唠一唠。在这里插入图片描述

1.4.2 路径规划

我们上面已经知道了在动态环境当中去理解每个佳通参与者的行为动作并且预测,根据预测的轨迹信息我们的车会为自己规划路径,就是让目标在规定范围内的区域找到一条起点到终点无碰撞安全的路径。
当然了如何规划出一条安全途径,最简单的方法就是搜索所有可能的路径,用代价函数确定最佳路线,但是这样的方法需要用大量的计算资源并且会有一定的延迟性。
所以为了规避发杂的计算,使用概率性模型可以非常有效的提供实施的路径规划。

1.5 自动驾驶客户端系统

所谓的客户端系统其实就是我们第一个图上面看到的最下面淡蓝色的两层面,一个是操作系统还有一个是计算(硬件)平台。
操作系统
老生常谈,客户端系统需要具备的能力:
1)系统需要具备足够的计算能力,用于快速处理大量传感器数据;
2)系统需要具有较高的鲁棒性,即使系统一部分发生故障时,系统也能够从故障中恢复;
3)系统需要在严格的能耗和资源约束下进行所有的计算。
首先呢,我们看一看操作系统。
目前来说操作系统当中开源且主流并且经典的系统就是Robot Operating System,ROS。它是针对机器人量身定做的一个分布式的计算框架。ROS的特点有以下三个:
1.分布式。点对点的分布式架构,通过做这样的设计让机器人的进程可以分别运行,便于模块化的修改和制定,提高了系统容错能力。
2.多种语言支持 : ROS支持多种编程语言。C++ 、Python 已经在ROS中实现编译,是目前应用最广的ROS开发语言,Lisp、C#、Java等语言的测试库也已经实现。
3.开源社区:ROS具有一个庞大的社区ROS WIKI,此外,ROS遵从BSD协议,对个人和商业应用的修改完全免费。

但目前来说ROS还存在下三个问题:
1.可靠性较低,ROS只有一个控制器,没有监督机制去恢复失败的节点,
2.性能,当点对面的广播消息发出去之后,系统会多次复制这条消息,导致性能降低,
3.安全性,他的人认证和加密机制较差。
目前市场内对这三个问题各自有各自的解决办法,就不一一赘述了,有形的可以去查一查。
硬件平台
现有的计算平台解决方案有以下几种:

基于GPU的计算解决方案 —— 英伟达

基于DSP的计算解决方案 —— 德州仪器

基于FPGA的解决方案 —— Altera/特斯拉
在这里插入图片描述
基于ASIC的解决方案 —— 英特尔
在这里插入图片描述

有关硬件平台的知识小Q储存不足,所以就不在这里献丑了,等到以后的系列文章里面提到时候,小Q会查足资料在这里唠唠。
或者可以看看知乎大神的一篇文章介绍:
自动驾驶系统入门(九)- 无人驾驶客户端系统
云平台
另一个要说的是无人驾驶云平台,自动驾驶汽车作为可移动的系统,需要云端计算平台提供支持。云平台由分布式计算和分布式储存两大主要功能。另外云平台可被应用与测试算法的仿真模拟,高精度地图的生成以及深度学习模型的训练。

得了,大概就这么些,说的很浅显,保持中心思想:这是概论。
非常欢迎大神们前来指正,我会一个个看一个个改。

下面看看自己的时间,如果找到其他感兴趣的话题的话,我会先写其他的,如果没找到,我会接着概论往下撺掇,重点讲一篇无人驾驶的定位系统,就会比较深入了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

讲一点点自动驾驶技术(1)概论 的相关文章

  • Windows下SpringBoot连接Redis的正确使用姿势

    1 安装Redis 1 1通过wsl安装redis 参考官方安装文档 需要在wsl2上安装redis服务 注意我们启动redis的方式 First way 采用官方文档的方式 sudo service redis server start
  • Python自学——The One Day(Python基础——介绍)

    文章目录 Python基础 介绍 前言 编译型语言和解释型语言 Python是什么 Python的优缺点是什么 优点 缺点 Python的运行过程 Python能干什么 怎样学好Python Python基础 介绍 前言 编译型语言和解释型
  • 2014年10月4399校招笔试--游戏岗

    今天参加了4399的笔试 总的来说题目不难 不过有些题没答上来 特别是选择题最后几个关于图像的题目22 25 真心不会
  • vivado中的常用AXI接口IP核

    AXI是xilinx中常用的数据接口 种类和引脚数量极多 1 AXI GPIO AXI GPIO为AXI接口提供了一个通用的输入 输出接口 可以配置成单通道和双通道 每个通道的位宽都可以单独设置 另外 通过打开或者关闭三通道缓冲器 AXI
  • 使用 ST-LINK 烧录程序到 STM32

    前言 之前博主在使用单片机时 烧录程序用的都是串口的方式 最近公司定制了一个工业版单片机目前只支持使用 ST LINK 烧录 因此博主收集了一些资料 并整理了烧录程序的流程用于分享和后期自己回顾 准备工作 准备烧录编程器 博主直接在网上买了
  • 图像仿射变换原理4:组合变换及对应变换矩阵

    老猿Python博文目录 https blog csdn net LaoYuanPython 仿射变换博文传送门 带星号的为付费专栏文章 图像仿射变换原理1 齐次坐标来龙去脉详解 图像仿射变换原理2 矩阵变换 线性变换和图像线性变换矩阵 图

随机推荐

  • Linux下 VS Code 安装与 C 编程环境配置!

    对于多文件的C项目 大部分人会选择使用 cmake 来管理编译过程 对于精力充沛的朋友来说 也可以学习一下使用这个强大的工具 但我觉得如果只想在VS Code里写几行代码应对当前需求 没必要再去学习一个完全陌生的东西 也没必要把配置过程复杂
  • 捕鱼游戏java源码

    package fishlord import java awt Color import java awt Font import java awt Graphics import java awt event MouseAdapter
  • eclipse 报错 java.lang.NullPointerException at org.eclipse.jface.resource.JFaceResources.getResources

    java lang NullPointerException at org eclipse jface resource JFaceResources getResources JFaceResources java 209 删除文件 wo
  • MySQL——流程控制(IF、CASE、LOOP、WHILE、REPEAT、LEAVE、ITERATE)

    解决复杂问题不可能通过一个 SQL 语句完成 我们需要执行多个 SQL 操作 流程控制语句的作用就是控制存储过程中 SQL 语句的执行顺序 是我们完成复杂操作必不可少的一部分 接下来让我们一起开始学习吧 流程控制 只要是执行的程序 流程就分
  • Java基础学习之并发篇:手写阻塞队列ArrayBlockingQueue

    学习目标 我们都知道在并发编程中 阻塞队列在多线程中的场景特别有用 比如在生产和消费者模型中 生产者生产数据到队列 队列满时需要阻塞线程 停止生产 消费者消费队列 对队列为空时阻塞线程停止消费 在Java中有提供不同场景的阻塞队列 那么接下
  • bilbili自动点赞脚本(python)开发

    前言 现在bilibili成了我们许多年轻人喜欢去的地方 那里有丰富的资源 好看的小姐姐 稀有的资源 会玩的大佬 还有许多不为人知的地方 这是一个和谐安康的世界 人们在这儿幸福的生活 但有一天 一切都变了 纯净的世界被恶龙所污染 弹幕区素质
  • 新手必读:Arduino UNO R3教程,原理图,引脚图,详细介绍

    刚入门的学习Arduino的朋友都会有个疑问Arduino UNO R3是什么 为什么要从Arduino UNO R3开始学起 Arduino概述 Arduino是一个开放源码电子原型平台 拥有灵活 易用的硬件和软件 Arduino专为设计
  • JAVA--位运算

    java的位运算 什么是位运算 位运算符就是在二进制的情况下对bit位的运算 在计算机当中 数字都是由二进制构成 由一串0或1构成 一个字节是由八位0或1构成 所以一般情况下都是由八位构成 但是最高位都是符号位0为正数1为负数 比如 8 0
  • 解决用Fiddler抓包,网页显示你的连接不是专用/私密连接

    一 在Fiddler安装证书 1 Tools gt Options gt HTTPS gt 勾选Capture HTTPS CONNECTs gt 勾选Decrypt HTTPS trafic gt 弹窗一路yes 如果没有弹窗 则Acti
  • 【ClickHouse内核】对于分区、索引、标记和压缩数据的协同工作

    目录 概述 写入过程 生成分区目录 生成索引 生成标记和数据压缩文件 各个底层物理文件生成的过程 查询过程 借助索引文件降低扫描范围 借助标记文件降低解压数据的大小 数据标记与压缩数据块的对应关系 多个数据标记对应一个压缩数据块 一个数据标
  • 关于umask(权限掩码)的一些知识

    关于umask 权限掩码 的一些知识 前言 首先 我们先介绍一下关于umask的一些基础知识 以方便更深入的了解umask 定义 umask user file creation mode mask 用户文件创建权限掩码 是linux系统或
  • 手动开启O2, O3优化

    O2 O3优化可以提高程序运行效率 减少程序的运行时间 通过开启O2 O3优化 可以使STL与数组模拟的数据结构各种操作的时间达到相同 但如何手动开启 将下面两句话加到程序开头即可 pragma GCC optimize 2 pragma
  • NeoVim 安装

    一 NeoVim 是什么 hyperextensible Vim based text editor 译 基于超可扩展Vim的文本编辑器 二 如何安装NeoVim 1 brew 安装 注 brew 是 MacOS 上的包管理工具 即该命令一
  • TensorIR快速入门

    本文翻译自Blitz Course to TensorIR tvm 0 9 dev0 documentation TensorIR是一种用于深度学习程序的特定领域的语言 服务于两个广泛的目的 在各种硬件后端上转换和优化程序的实现 对自动向量
  • linux数据库的测试连接,你会遇到哪些问题?

    linux安装数据库及测试连接 第一步 第二步 第三步 第四步 本文将介绍用阿里云服务器安装两种版本的数据库 及连接时会遇到的问题 一种是5 6 一种是8 0 第一步 安装完成后 测试连接 service mysqld status 第二步
  • 当经历所有大厂的实习面试过后

    学而不思则罔 思而不学则殆 当走完基本所有大厂之后 发现其实每个公司对基础能力的考察都比较注重 只有基础掌握好了 把前端所有的知识能够一连串的理清 那么不管面试题是什么 都可以游刃有余的去回答 这里就是把我所有面试过的问题的一些底层原理阐述
  • 用Docker部署自己的JupyterHub

    话在前头 用 Docker 部署 JupyterLab 感觉是部署 JupyterLab 最方便的方式了 官方提供了很多可选的镜像 也可以自己从 jupyter base notebook 中继续打包 镜像启动命令加上 NotebookAp
  • 使用tf.keras实现 softmax多分类的代码

    softmax多分类 多分类问题的关键在于输出10个概率值 然后使用softmax进行激活 softmax激活函数 能把10个输出变为10个概率分布 然后这10个概率的和为1 1 对数几率回归 解决的是 二分类的问题 对于 多个选项 的问题
  • [云原生专题-42]:K8S - 核心概念 - placeholder-有状态服务

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 placeholder 作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址
  • 讲一点点自动驾驶技术(1)概论

    讲一点点自动驾驶技术 1 概论 作为一个自动驾驶小菜鸟工程师 小Q入门才两三年时间 最近空闲时间比较多 利用这个平台把自己对于无人驾驶技术所看所学的东西在这进行一个整理 一来自己看着方便 二来供大家交流学习 Xiao Xi ps 如果大家觉