绑定手机号
获取验证码
确认绑定
提问
0/255
提问
订阅开课提醒需关注服务号
回答成功
知道了
扫码关注智猩猩服务号登录
请使用微信扫描二维码
扫描二维码分享给微信好友
您已订阅成功,有新课程,我们将第一时间提醒您。
知道了
发送提问成功
回答可在
“我的——我的提问”中查看
知道了
失败
欢迎来智东西
关注我们
智东西
车东西
芯东西
智猩猩
0
0
Nvidia自驾平台软件栈浅析-Overview
分类: 自动驾驶
2022-04-23 12:40:31

核弹教父老黄曾经说过,Nvidia是一家软件公司,颇以为然。但凡了解点Nvidia产品的人都会对其广阔而深入的软件生态赞赏有加。这些年最成功的当属CUDA生态,硬是把GPGPU并行计算这个很有技术门槛的活拉入平常码农家。

因为Nvidia的强大软件和生态能力,驱使我好奇其在自驾平台上的软件栈架构和组件。向标杆学习!

Jetson Orin AGX module

首先要问个问题,自驾平台的软件栈的目标的是什么?个人认为有四个主要目的:

  1. 充分发挥异构硬件的算力和效率

  2. 满足车规需求

  3. 提供端到端的数据采集、处理、存储、标注、训练和部署的工具集

  4. 提供高效仿真环境,加速学习过程

当然,易用,兼容,易Debug等特性是所有软件必备的,就不单独分析了。

Nvidia面对的客户是全球的,它必须全力帮助客户简化开发过程,这是吸引玩家构建生态的关键。

Nvidia的自驾平台(例如DRIVE AGX XAVIER)如下图所示,按照从下往上,分为传感器层、芯片和I/O层、虚拟化层、OS层、中间件层和应用层。

DRIVE AGX XAVIER(与Orin大体一致) Platform

这张图宏观的反应了Nvidia自驾平台提供了哪些规格特性

  1. 支持大量传感器,包括Camera、Lidar、Radar、GPS、IMU

  2. 支持大量的外部接口,包括PCIe、MIPI、CAN、Ethernet、NOR、eMMC、GPIO等

  3. 车规级自驾SoC和车规级MUC,SoC内包括CPU、GPU、DLA、PVA、ISP、Codec等

  4. 支持Hypervisor虚拟化和AutoSAR框架

  5. 支持车规级Drive OS、QNX、Linux

  6. 支持大量API,包括OpenGL、EGL、CUDA、cuDNN、TensorRT、NvMedia等

  7. 支持大量自驾算法和应用,包括感知、地图、规划、执行等方方面面

  8. 支持从L1到L4的各种安全、车规、诊断等关键模块

任何一条都是高强度投资软硬件算法团队的结果!

咱们再Zoom In,看看关键的DRIVE OS长什么样子:

DRIVE OS以及之上的中间件DRIVEWORKS和应用层DRIVE AV/IX

据说最新版本的Drive OS是可以量产的符合车规的OS,它能为软件提供安全的运行环境,提供了很多安全服务,例如secure boot, security services, firewall, and over-the-air updates.而软件栈部分它提供了Type-1 Hypervisor,NVIDIA CUDA libraries,NVIDIA TensorRT, NvMedia等关键软件。总体上,Drive OS覆盖面非常全面,与自驾相关的你能想到的和没考虑到的,它几乎都涵盖了。当然,个人认为与Linux相比,最重要的还是其安全特性。

在Drive OS之上是Nvidia完全自己开发的DriveWorks中间件,它最重要的作用就是为自驾提供核心的感知->规划->执行相关的服务,其中感知又是负载最重的部分,包括了sensor的抽象层,sensor静态和动态标定,sensor数据的采集等,根据Radar和Lidar数据构建的点云处理,以及感知核心-神经网络框架。在规划和执行环节,Nvidia开发了一套Egomotion算法,其中结合了SLAM、光流、追踪等模块来预测车的位姿和速度、加速度等物理信息,再通过Vehicle IO模块读取车的底盘信息后决策下一步机构操作。

有了OS和中间件,自然就能方便的开发出各种应用了。Nvidia根据车载服务需求开发了两套软件供开发者使用,包括自驾部分(Drive AV)和座舱部分(Drive IX)。需要注意的是,虽然Nvidia提供了座舱软件服务,但从整个软件栈来看,它缺少Android的支持或者第三方APP的支持,多屏显示部分的支持也缺失。所以,个人认为Nvidia的座舱软件部分提供的是与自驾类似的感知部分,这也许能弥补某些座舱SoC算力不足的场景。这说明Nvidia的定位很清楚,它不想触及更上层的应用开发,而是聚焦大算力平台建设,发挥自己的强项。

虽然Nvidia提供了几乎所有自驾所需要的硬件和软件,但是软件栈部分是基于模块化的,开发者可以根据自身的优势替换其中任何模块,做出有竞争力的产品。如果实力不足也不要紧,可以购买全家桶。所以,Nvidia在自驾上的服务做得非常周到,这是Nvidia在技术栈上的实力,也是老黄为它的刀法留下了无限可能,只要你出钱,总有一套组合满足你的需求!

你认为这么多模块很赚钱了?那你就小看老黄了。自动驾驶最大一块工作量在采集存储数据->训练网络->部署网络这个循环不停的迭代,这块蛋糕岂能丢了?当然训练本来就是Nvidia的强项,但是自驾训练更难的是长尾效应,采集不常见和危险场景下的数据成本是无法承担的,即便拥有几百万俩上路的Tesla也需要“人造”来解决问题,对于还没有量产的车厂,仿真就是必不可少的了。

自驾仿真环境是Nvidia另一个未来级产品的一个应用而已,这个产品是如今火爆的Metaverse概念的一个平台级产品,老黄给它取了个宏大又类似的名字Ominiverse。基于先进的光追渲染和AI一体平台能力,Nvidia希望构建各种应用场景的孪生数字世界(Digital twin),而城市交通网正是一个难度很大但是价值也巨大的应用场景。

对于自驾来说,最重要的是真实性。包括光影的真实性,车、人、路、标识、物的物理真实性,被仿真车量从各种sensor到底盘到控制的真实性。这些对仿真平台的算力和算法是极大的考验。另外一个要点是,仿真环境是否能迅速复现问题触发时的世界,这对于问题的解决也至关重要。

到此,Nvidia闭环了自驾在线和离线,软件和硬件各个方面的服务。Nvidia自驾平台的确走在了行业最前沿,在没有超越之前,我们需要的更多是学习,学习,学习!