自动驾驶(七十四)---------硬件平台介绍
在整个自动驾驶中,我们之前讨论了很多软件算法,很少涉及到硬件领域,今天结合我接触的一些硬件知识做一个总结,整理硬件在整个自动驾驶中的作用和市面上常见的几种硬件。
1. 软硬件架构
软硬件架构也是三部分组成:硬件平台,操作系统,软件算法。
硬件平台具体是指计算平台,目前主流的自动驾驶芯片解决方案主要包括GPU、FPGA、DSP和ASIC四种。其作用主要包含三个方面:
- 提供传感器数据的接口,把传感器的数据导入计算平台。
- 分析传感器传入的数据,结合车辆自身情况进行计算,主要是计算车辆的控制信号。
- 提供对外的输出接口,把计算的控制信号,通过接口输出到车身总线上。
2. 常见硬件平台
- 英伟达基于GPU的计算解决方案——DRIVE PX2,由于特殊的硬件设计,其在图像处理和深度学习方面有独特的优势。
- 德州仪器基于DSP的解决方案——TDA4,其具有专用的深度学习加速器和内部开发的矩阵乘法加速器(MMA),SoC可以处理高达8MP的前置摄像头的视频流,也可以处理四到六个3-MP摄像头以及雷达,LiDAR和超声传感器的组合。
- Altera基于FPGA的解决方案——CycloneV SoC,集成了基于ARM处理器的硬件处理器系统(HPS),具有更有效的逻辑综合功能。
- 恩智浦NXP自动驾驶汽车的计算平台BlueBox,S32V芯片包含有不同的图形处理引擎,特制的高性能图形处理加速器,高性能ARM内核,高级APEX图形处理和传感器融合。它的功能包括了传感器/执行器管理和故障检验。
- 寒武纪的芯片,寒武纪1M,采用台积电7nm工艺制造,能耗比达到5Tops/W,即每瓦特5万亿次运算,并提供2Tops、4Tops、8Tops三种规模的处理器核,满足不同场景、不同量级的AI处理需求,并支持多核互联。
- 高通骁龙SA8155平台,高通的性能和整合5g的能力吊打市面上一众厂商,目前还没有太多厂商使用,但是潜力很大。
- 谷歌TPU,第四代TPU芯片性能也首次披露,得益于硬件创新及软件优化,TPU v4的性能较TPU v3平均提升2.7倍,此外基于TPU v3的谷歌最强ML训练超算峰值性能超430 PFLOPs。
3. 操作系统
在上面总结的硬件平台中,首先运行一套操作系统,我总结了5中车载的操作系统:
- WinCE:微软起了个大早,干了个晚集,随着Linux和Android的冲击,已经放弃对WinCE的维护,一种分层的架构,分别由内核模式层和用户模式层组成。
- Linux:Linux支持多用户、多任务、支持多线程和多CPU,是一个性能稳定的多用户网络操作系统。
- Android: 不用多介绍,包含一套文件系统,多媒体构架,SQLite数据库、图形处理、网络开发的库文件等等。
- QNX: QNX采用微内核结构,大部分的子系统,包括用户应用软件,互相通信都是通过kernel call的方式。
iOS:苹果对汽车的开发还处于保密阶段,我们只能翘首以待未来的结果。
4. 软件算法编译
之前我们讨论的所以软件算法,都是在以上操作系统上运行,即编译出对应的可执行文件运行,下面总结一下对应的常用编译方法:
- SCons:脚本可以用python书写,不过距离构建还有一些差距,自动配置功能很弱 ,跨平台构建能力不足。
- Waf:用 Python语言作为构建脚本,可读性、可维护性和便利性。
- CMake:目前比较成熟,但是采用的是一个自定义的格式,劣势也十分明显。
- premake:业界口碑最好,采用代码简单优美的lua语言:灵活、优美、知识复用好。
5. 总结
有了硬件,接入传感器数据,在操作系统中,运行编译好的可执行文件,就能实时计算控制信号,并通过总线接口发出信号,这就是整个自动驾驶软硬件流程。
作为一个软件工程师,必须要掌握硬件知识,打通自动驾驶上下游,具有宏观的视野,重点关注与自己的领域,深耕细作,才能利于不败之地。
自动驾驶(七十四)---------硬件平台介绍相关推荐
- 自动驾驶(十四)---------车道线检测
目前车道线检测主要有两种方法:传统方法,深度学习,本文主要从传统方法出发来介绍车道线检测,毕竟Mobileye也没有用到太多的深度学习(以前和Moblieye有交流). 再者,一直以来我们传统汽车行业 ...
- 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具
[简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...
- 七十四、Python | Leetcode数字系列(下篇)
@Author:Runsen @Date:2020/7/3 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- 打怪升级之小白的大数据之旅(七十四)<初识Kafka>
打怪升级之小白的大数据之旅(七十四) 初识Kafka 引言 学完Flume之后,接下来将为大家带来Kafka相关的知识点,在工作中,Kafka和Flume经常会搭配使用,那么Kafka究竟是什么呢?让 ...
- JavaScript学习(七十四)—递归函数
JavaScript学习(七十四)-递归函数 一.什么是递归? 如果一个函数可以在内部调用其本身,那么这个函数就是递归函数,简单地说,函数内部自己调用自己,这个函数就是递归函数 由于递归很容易发生&q ...
- 第七十四章 Caché 函数大全 $WREVERSE 函数
文章目录 第七十四章 Caché 函数大全 $WREVERSE 函数 大纲 参数 描述 示例 第七十四章 Caché 函数大全 $WREVERSE 函数 以相反的顺序返回字符串中的字符,识别出代理对. ...
- Tsukinai的第七十四个程序(输出字符串中的元音字母)
Tsukinai的第七十四个程序 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 程序的运行示例如下: 提示信息:"\n输入字符串:" 字符串中的元音字母是eo ...
- 第七十四篇:机器学习优化方法及超参数设置综述
第七十四篇:机器学习优化方法及超参数设置综述 置顶 2019-08-25 23:03:44 廖佳才 阅读数 207更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...
- C语言/C++常见习题问答集锦(七十四) 之裨补阙漏
C语言/C++常见习题问答集锦(七十四) 之裨补阙漏 程序之美 1.编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址.(注意: 主函数中用****作为结束输入的标 ...
- 达芬奇密码 第七十四章
达芬奇密码 第七十四章[@more@] 第七十四章 "你怎么不说话呢?"兰登注视着"猎鹰者"号机舱对面的索菲说. "太累了.还有这首诗,我怎么也看不明 ...
最新文章
- Jquery mobile技术咖们走进来瞧瞧吧
- Potocol Buffer详解
- 周华健,歌声伴我长大(一)
- ES6的字符串与正则表达式
- 《HTTP 权威指南》笔记:第十四章 安全 HTTP
- 网络研讨室_即将举行的网络研讨会:调试生产中Java的5种最佳实践
- 九州云腾双因素认证系统_阿里云全资收购九州云腾,加速构建云上零信任体系...
- 史上最强DIY,手工制作一只会说话的机器狗
- 【tyvj1863】【codevs1995】黑魔法师之门,有毒的并查集
- FPGA UART总线协议简介
- windows linux 传文件_2种windows到linux上传文件的方法
- 易用性强的数据库管理工具DBeaverEE v22.0.1
- (3)机器人的DH参数建模详解
- Essential Netty in Action 《Netty 实战(精髓)》
- 渗透测试抓包工具-wireshark
- python时区转换_Python pytz时区转换
- android 中角度计算
- 灰太狼大王讲java之抽象类
- “远程办公效率低?” 谈谈职场沟通与交流
- Tita :OKR落地推行的具体方法