在整个自动驾驶中,我们之前讨论了很多软件算法,很少涉及到硬件领域,今天结合我接触的一些硬件知识做一个总结,整理硬件在整个自动驾驶中的作用和市面上常见的几种硬件。

1. 软硬件架构

软硬件架构也是三部分组成:硬件平台,操作系统,软件算法。

硬件平台具体是指计算平台,目前主流的自动驾驶芯片解决方案主要包括GPU、FPGA、DSP和ASIC四种。其作用主要包含三个方面:

  1. 提供传感器数据的接口,把传感器的数据导入计算平台。
  2. 分析传感器传入的数据,结合车辆自身情况进行计算,主要是计算车辆的控制信号。
  3. 提供对外的输出接口,把计算的控制信号,通过接口输出到车身总线上。

2. 常见硬件平台

  1.  英伟达基于GPU的计算解决方案——DRIVE PX2,由于特殊的硬件设计,其在图像处理和深度学习方面有独特的优势。
  2. 德州仪器基于DSP的解决方案——TDA4,其具有专用的深度学习加速器和内部开发的矩阵乘法加速器(MMA),SoC可以处理高达8MP的前置摄像头的视频流,也可以处理四到六个3-MP摄像头以及雷达,LiDAR和超声传感器的组合。
  3. Altera基于FPGA的解决方案——CycloneV SoC,集成了基于ARM处理器的硬件处理器系统(HPS),具有更有效的逻辑综合功能。
  4. 恩智浦NXP自动驾驶汽车的计算平台BlueBox,S32V芯片包含有不同的图形处理引擎,特制的高性能图形处理加速器,高性能ARM内核,高级APEX图形处理和传感器融合。它的功能包括了传感器/执行器管理和故障检验。
  5. 寒武纪的芯片,寒武纪1M,采用台积电7nm工艺制造,能耗比达到5Tops/W,即每瓦特5万亿次运算,并提供2Tops、4Tops、8Tops三种规模的处理器核,满足不同场景、不同量级的AI处理需求,并支持多核互联。
  6. 高通骁龙SA8155平台,高通的性能和整合5g的能力吊打市面上一众厂商,目前还没有太多厂商使用,但是潜力很大。
  7. 谷歌TPU,第四代TPU芯片性能也首次披露,得益于硬件创新及软件优化,TPU v4的性能较TPU v3平均提升2.7倍,此外基于TPU v3的谷歌最强ML训练超算峰值性能超430 PFLOPs。

3. 操作系统

       在上面总结的硬件平台中,首先运行一套操作系统,我总结了5中车载的操作系统:

  1. WinCE:微软起了个大早,干了个晚集,随着Linux和Android的冲击,已经放弃对WinCE的维护,一种分层的架构,分别由内核模式层和用户模式层组成。
  2. Linux:Linux支持多用户、多任务、支持多线程和多CPU,是一个性能稳定的多用户网络操作系统。
  3. Android: 不用多介绍,包含一套文件系统,多媒体构架,SQLite数据库、图形处理、网络开发的库文件等等。
  4. QNX: QNX采用微内核结构,大部分的子系统,包括用户应用软件,互相通信都是通过kernel call的方式。
  5. iOS:苹果对汽车的开发还处于保密阶段,我们只能翘首以待未来的结果。

4. 软件算法编译

之前我们讨论的所以软件算法,都是在以上操作系统上运行,即编译出对应的可执行文件运行,下面总结一下对应的常用编译方法:

  1. SCons:脚本可以用python书写,不过距离构建还有一些差距,自动配置功能很弱 ,跨平台构建能力不足。
  2. Waf:用 Python语言作为构建脚本,可读性、可维护性和便利性。
  3. CMake:目前比较成熟,但是采用的是一个自定义的格式,劣势也十分明显。
  4. premake:业界口碑最好,采用代码简单优美的lua语言:灵活、优美、知识复用好。

5. 总结

      有了硬件,接入传感器数据,在操作系统中,运行编译好的可执行文件,就能实时计算控制信号,并通过总线接口发出信号,这就是整个自动驾驶软硬件流程。

作为一个软件工程师,必须要掌握硬件知识,打通自动驾驶上下游,具有宏观的视野,重点关注与自己的领域,深耕细作,才能利于不败之地。

自动驾驶(七十四)---------硬件平台介绍相关推荐

  1. 自动驾驶(十四)---------车道线检测

    目前车道线检测主要有两种方法:传统方法,深度学习,本文主要从传统方法出发来介绍车道线检测,毕竟Mobileye也没有用到太多的深度学习(以前和Moblieye有交流). 再者,一直以来我们传统汽车行业 ...

  2. 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具

    [简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...

  3. 七十四、Python | Leetcode数字系列(下篇)

    @Author:Runsen @Date:2020/7/3 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. 打怪升级之小白的大数据之旅(七十四)<初识Kafka>

    打怪升级之小白的大数据之旅(七十四) 初识Kafka 引言 学完Flume之后,接下来将为大家带来Kafka相关的知识点,在工作中,Kafka和Flume经常会搭配使用,那么Kafka究竟是什么呢?让 ...

  5. JavaScript学习(七十四)—递归函数

    JavaScript学习(七十四)-递归函数 一.什么是递归? 如果一个函数可以在内部调用其本身,那么这个函数就是递归函数,简单地说,函数内部自己调用自己,这个函数就是递归函数 由于递归很容易发生&q ...

  6. 第七十四章 Caché 函数大全 $WREVERSE 函数

    文章目录 第七十四章 Caché 函数大全 $WREVERSE 函数 大纲 参数 描述 示例 第七十四章 Caché 函数大全 $WREVERSE 函数 以相反的顺序返回字符串中的字符,识别出代理对. ...

  7. Tsukinai的第七十四个程序(输出字符串中的元音字母)

    Tsukinai的第七十四个程序 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 程序的运行示例如下: 提示信息:"\n输入字符串:" 字符串中的元音字母是eo ...

  8. 第七十四篇:机器学习优化方法及超参数设置综述

    第七十四篇:机器学习优化方法及超参数设置综述 置顶 2019-08-25 23:03:44 廖佳才 阅读数 207更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

  9. C语言/C++常见习题问答集锦(七十四) 之裨补阙漏

    C语言/C++常见习题问答集锦(七十四) 之裨补阙漏 程序之美 1.编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址.(注意: 主函数中用****作为结束输入的标 ...

  10. 达芬奇密码 第七十四章

    达芬奇密码 第七十四章[@more@] 第七十四章 "你怎么不说话呢?"兰登注视着"猎鹰者"号机舱对面的索菲说. "太累了.还有这首诗,我怎么也看不明 ...

最新文章

  1. Jquery mobile技术咖们走进来瞧瞧吧
  2. Potocol Buffer详解
  3. 周华健,歌声伴我长大(一)
  4. ES6的字符串与正则表达式
  5. 《HTTP 权威指南》笔记:第十四章 安全 HTTP
  6. 网络研讨室_即将举行的网络研讨会:调试生产中Java的5种最佳实践
  7. 九州云腾双因素认证系统_阿里云全资收购九州云腾,加速构建云上零信任体系...
  8. 史上最强DIY,手工制作一只会说话的机器狗
  9. 【tyvj1863】【codevs1995】黑魔法师之门,有毒的并查集
  10. FPGA UART总线协议简介
  11. windows linux 传文件_2种windows到linux上传文件的方法
  12. 易用性强的数据库管理工具DBeaverEE v22.0.1
  13. (3)机器人的DH参数建模详解
  14. Essential Netty in Action 《Netty 实战(精髓)》
  15. 渗透测试抓包工具-wireshark
  16. python时区转换_Python pytz时区转换
  17. android 中角度计算
  18. 灰太狼大王讲java之抽象类
  19. “远程办公效率低?” 谈谈职场沟通与交流
  20. Tita :OKR落地推行的具体方法

热门文章

  1. Python 全栈系列89 - python 发微博文字+图片
  2. git merge --no--ff 详解
  3. 将地图导出为图片或PDF文件
  4. 史上最全面的UE4 文件操作,打开,读、写,增、删、改、查
  5. mybatipse 下载_Windows实用软件推荐(2)——下载工具
  6. 模拟电路设计(17)---典型RC正弦波振荡器
  7. win10增加matlab虚拟内存,详细教你win10如何增加虚拟内存
  8. $.inArray()方法
  9. 从《西部世界》看你的数据价值
  10. edge插件默认下载位置