0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从硬软件两方面谈自动驾驶这个庞大而且复杂的工程所涉及的技术

ml8z_IV_Technol 来源:未知 作者:易水寒 2018-07-03 09:58 次阅读

自动驾驶是一个庞大而且复杂的工程,涉及的技术很多,大部分答主仅从软件方面进行了介绍,而且太过细致。我从硬件和软件两方面谈一谈自动驾驶汽车所涉及的技术。

Google从2009年开始做自动驾驶,到现在已有8个年头。8个年头的技术积累还无法将自动驾驶技术量产落地,可见自动驾驶技术并不简单。

自动驾驶是一个庞大而且复杂的工程,涉及的技术很多,大部分答主仅从软件方面进行了介绍,而且太过细致。本文从硬件和软件两方面谈一谈自动驾驶汽车所涉及的技术。

一. 硬件

离开硬件谈自动驾驶都是耍流氓。

先看个图,下图基本包含了自动驾驶研究所需要的各种硬件。

然而…

这么多传感器并不一定会同时出现在一辆车上。某种传感器存在与否,取决于这辆车需要完成什么样的任务。如果只需要完成高速公路的自动驾驶,类似Tesla 的 AutoPilot 功能,那根本不需要使用到激光传感器;如果你需要完成城区路段的自动驾驶,没有激光传感器,仅靠视觉是很困难的。

自动驾驶系统工程师要以任务为导向,进行硬件的选择和成本控制。

1.汽车

既然要做自动驾驶,汽车当然是必不可少的东西。

从我司做自动驾驶的经验来看,做开发时,能不选纯汽油车就别选。

一方面是整个自动驾驶系统所消耗的电量巨大,混动和纯电动在这方面具有明显优势。另一方面是是发动机的底层控制算法相比于电机复杂太多,与其花大量时间在标定和调试底层上,不如直接选用电动车研究更高层的算法。

国内也有媒体专门就测试车辆的选择做过调研。

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)

人类开车,从A点到B点,需要知道A点到B点的地图,以及自己当前所处的位置,这样才能知道行驶到下一个路口是右转还是直行。

无人驾驶系统也一样,依靠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的强项,因为雷达传感器已经在汽车上得到了广泛使用。知名的供应商当然是博世、德尔福、电装等。

6.硬件部分总结

组装一套可以完成某项功能的自动驾驶系统需要及其丰富的经验,并且要对各传感器的性能边界及控制器计算能力了如指掌。优秀的系统工程师能在满足功能的要求下将成本控制在最低,使其量产、落地的可能性更大。

二. 软件

大部分答主已对软件进行了阐述,我也从我的角度介绍以下软件的开发。

软件部分的内容已在我的回答:无人驾驶,个人如何研究?中进行了介绍。

以下内容前半段为搬运。

软件包含四层:感知、融合、决策、控制。

各个层级之间都需要编写代码,去实现信息的转化,更细化的分类如下。

1.采集

传感器跟我们的PC或者嵌入式模块通信时,会有不同的传输方式。

比如我们采集来自摄像机的图像信息,有的是通过千兆网卡实现的通信,也有的是直接通过视频线进行通信的。再比如某些毫米波雷达是通过CAN总线给下游发送信息的,因此我们必须编写解析CAN信息的代码。

不同的传输介质,需要使用不同的协议去解析这些信息,这就是上文提到的“驱动层”。

通俗地讲就是把传感器采集到的信息全部拿到,并且编码成团队可以使用的数据。

2.预处理

传感器的信息拿到后会发现不是所有信息都是有用的。

传感器层将数据以一帧一帧、固定频率发送给下游,但下游是无法拿每一帧的数据去进行决策或者融合的。为什么?

因为传感器的状态不是100%有效的,如果仅根据某一帧的信号去判定前方是否有障碍物(有可能是传感器误检了),对下游决策来说是极不负责任的。因此上游需要对信息做预处理,以保证车辆前方的障碍物在时间维度上是一直存在的,而不是一闪而过。

这里就会使用到智能驾驶领域经常使用到的一个算法——卡尔曼滤波。

3.坐标转换

坐标转换在智能驾驶领域十分重要。

传感器是安装在不同地方的,比如超声波雷达(上图中橘黄色小区域)是布置在车辆周围的;当车辆右方有一个障碍物,距离这个超声波雷达有3米,那么我们就认为这个障碍物距离车有3米吗?

并不一定!因为决策控制层做车辆运动规划时,是在车体坐标系下做的(车体坐标系一般以后轴中心为O点),所以最终所有传感器的信息,都是需要转移到自车坐标系下的。

因此感知层拿到3m的障碍物位置信息后,必须将该障碍物的位置信息转移到自车坐标系下,才能供规划决策使用。

同理,摄像机一般安装在挡风玻璃下面,拿到的数据也是基于摄像机坐标系的,给下游的数据,同样需要转换到自车坐标系下。

什么是自车坐标系?

请拿出你的右手,以大拇指 → 食指 → 中指 的顺序开始念 X、Y、Z。

然后把手握成如下形状:

把三个轴的交点(食指根部)放在自车坐标系后轴中心,Z轴指向车顶,X轴指向车辆前进方向。

各个团队可能定义的坐标系方向不一致,只要开发团队内部统一即可。

4.信息融合

信息融合是指把相同属性的信息进行多合一操作。

比如摄像机检测到了车辆正前方有一个障碍物,毫米波也检测到车辆前方有一个障碍物,激光雷达也检测到前方有一个障碍物,而实际上前方只有一个障碍物,所以我们要做的是把多传感器下这辆车的信息进行一次融合,以此告诉下游,前面有一辆车,而不是三辆车。

从硬软件两方面谈自动驾驶这个庞大而且复杂的工程所涉及的技术

5.决策规划

这一层次主要设计的是拿到融合数据后,如何正确做规划。规划包含纵向控制和横向控制。

纵向控制即速度控制,表现为 什么时候加速,什么时候制动。

横向控制即行为控制,表现为 什么时候换道,什么时候超车等

6.软件长什么样子?

自动驾驶系统中的部分软件看起来和下面类似。

从硬软件两方面谈自动驾驶这个庞大而且复杂的工程所涉及的技术

软件的名字反映了该软件的实际作用——

app_driver_camera 摄像机驱动

app_driver_hdmap 高精度地图驱动

app_driver_ins 惯导驱动

app_driver_lidar 激光传感器驱动

app_driver_mwr 毫米波传感器驱动

app_fusion_freespace 自由行驶区域融合

app_fusion_lane 车道线融合

app_fusion_obstacle 障碍物融合

app_planning&decision 规划决策

然而实际上攻城狮们会编写一些其他软件用于自己的调试工作,比如记录数据和回放数据的工具。

从硬软件两方面谈自动驾驶这个庞大而且复杂的工程所涉及的技术

还有用于传感器信息显示的可视化程序,类似下图的效果。

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

    关注

    2545

    文章

    50406

    浏览量

    750742
  • Google
    +关注

    关注

    5

    文章

    1752

    浏览量

    57357
  • 自动驾驶
    +关注

    关注

    782

    文章

    13602

    浏览量

    165870

原文标题:自动驾驶汽车涉及哪些技术?

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA在自动驾驶领域有哪些应用?

    控制。在视觉算法方面,FPGA利用自身并行处理和高速存储器的特点,极大地加快了算法的执行速度,提高了运算效率。 五、未来发展趋势随着自动驾驶技术的不断发展,FPGA在自动驾驶领域的应用
    发表于 07-29 17:09

    自动驾驶真的会来吗?

    自动驾驶和背后技术有了更广泛地讨论、更深刻地认知;另一方面则是让不少风投看到了机会,认为传感器芯片为代表的硬件研发,以及计算机视觉为支撑的软件技术,将会迎来更大的关注度。特斯拉的aut
    发表于 07-21 09:00

    自动驾驶的到来

      传统汽车厂商更趋向于通过技术的不断积累,场景的不断丰富,逐步辅助驾驶过渡到半自动驾驶,进而在将来最终实现无人驾驶;某些高科技公司则希望
    发表于 06-08 15:25

    AI/自动驾驶领域的巅峰会议—国际AI自动驾驶高峰论坛

    已经渗透到了社会生活的方方面面。人工智能在自动驾驶领域将对整个汽车出行领域产生颠覆性变革。汽车的人工智能技术和数据后端的最新突破使自动驾驶成为可能。深度学习、高级数字助理和动态电子视野
    发表于 09-13 13:59

    自动驾驶汽车时代:天线测量与模拟比任何时候都来得关键

    驾驶测试”。当前业界面临的挑战有两方面:•确认安装在车辆上的天线可在参考环境中运作•提供创建虚拟测试环境的能力,以模拟汽车如何与复杂环境中的其他汽车进行互动如果车辆的数字天线模型可用,最新的
    发表于 01-08 10:53

    如何让自动驾驶更加安全?

    以及先进制造业、新材料、新能源的配合,也需要深入研究法律、伦理等方面的问题,这是一个系统工程,也是协同融通、集成创新的过程。“中国拥有世界上最为庞大的汽车消费群体,未来在中国市场销售的自动驾驶
    发表于 05-13 00:26

    联网安全接受度成自动驾驶的关键

    技术发展已经不是实现自动驾驶汽车的最大阻碍。  举例来说,当无人自动驾驶汽车处于行驶状态,自动驾驶模式切换回手动
    发表于 08-26 06:45

    如何保证自动驾驶的安全?

    自动驾驶技术为人们勾勒出了一副美好的未来出行的画面:坐上没有方向盘的汽车,一觉睡到公司门口;甚至我们可能不再拥有一辆汽车,需要出门时共享自动驾驶汽车会自己到来,送到目的地时会自行离开……不过
    发表于 10-22 07:45

    网联化自动驾驶的含义及发展方向

      随着自动驾驶的快速发展,新技术逐渐涌现,通信技术被产业认为是未来网联化自动驾驶发展的关键技术
    发表于 01-12 15:42

    自动驾驶技术的实现

    k随着汽车电子的日益复杂化以及汽车电子电气架构(EEA)的升级,人们对于联网智能汽车的需求也在逐步上升,大量先进技术往汽车上应用,如高级驾驶辅助系统(ADAS)、自动驾驶等,这些新
    发表于 09-03 08:31

    详细说明多项自动驾驶底层软件技术

    过程就涉及多项自动驾驶底层软件技术,如内存动态分配、芯片运算能力、芯片实时监控策略。本文将针对这三方面内容进行详细说明。  功能安全拦路虎:内存分配与访问  在汽车电子系统的
    发表于 11-09 16:09

    LabVIEW开发自动驾驶的双目测距系统

    LabVIEW开发自动驾驶的双目测距系统 随着车辆驾驶技术的不断发展,自动驾驶技术正日益成为现实。
    发表于 12-19 18:02

    硬件和软件两方面谈一谈自动驾驶汽车所涉及技术

    方面是整个自动驾驶系统所消耗的电量巨大,混动和纯电动在这方面具有明显优势。另一方面是是发动机的底层控制算法相比于电机复杂太多,与其花大量时
    的头像 发表于 11-27 17:14 5775次阅读

    两方面自动驾驶车辆运动规划技术进行了综述

    这是在图表中找到单源最短路径的图搜索方法。搜索空间近似为一个离散的单元格,晶格[22,23]。具体描述和实现可见文献[24,25]。在自动驾驶方面,文献[26]实现了该算法在多车场景的仿真
    的头像 发表于 06-07 10:24 5264次阅读
    <b class='flag-5'>两方面</b>对<b class='flag-5'>自动驾驶</b>车辆运动规划<b class='flag-5'>技术</b>进行了综述

    自动驾驶系统涉及哪些技术

    自动驾驶作为一个庞杂的系统工程,其所涉及技术点比较多,本文主要从硬件和软件两方面简要谈谈
    发表于 06-01 15:04 0次下载
    <b class='flag-5'>自动驾驶</b>系统<b class='flag-5'>涉及</b>哪些<b class='flag-5'>技术</b>