核弹教父老黄曾经说过,Nvidia是一家软件公司,颇以为然。但凡了解点Nvidia产品的人都会对其广阔而深入的软件生态赞赏有加。这些年最成功的当属CUDA生态,硬是把GPGPU并行计算这个很有技术门槛的活拉入平常码农家。
因为Nvidia的强大软件和生态能力,驱使我好奇其在自驾平台上的软件栈架构和组件。向标杆学习!
Jetson Orin AGX module首先要问个问题,自驾平台的软件栈的目标的是什么?个人认为有四个主要目的:
充分发挥异构硬件的算力和效率
满足车规需求
提供端到端的数据采集、处理、存储、标注、训练和部署的工具集
提供高效仿真环境,加速学习过程
当然,易用,兼容,易Debug等特性是所有软件必备的,就不单独分析了。
Nvidia面对的客户是全球的,它必须全力帮助客户简化开发过程,这是吸引玩家构建生态的关键。
Nvidia的自驾平台(例如DRIVE AGX XAVIER)如下图所示,按照从下往上,分为传感器层、芯片和I/O层、虚拟化层、OS层、中间件层和应用层。
DRIVE AGX XAVIER(与Orin大体一致) Platform这张图宏观的反应了Nvidia自驾平台提供了哪些规格特性
支持大量传感器,包括Camera、Lidar、Radar、GPS、IMU
支持大量的外部接口,包括PCIe、MIPI、CAN、Ethernet、NOR、eMMC、GPIO等
车规级自驾SoC和车规级MUC,SoC内包括CPU、GPU、DLA、PVA、ISP、Codec等
支持Hypervisor虚拟化和AutoSAR框架
支持车规级Drive OS、QNX、Linux
支持大量API,包括OpenGL、EGL、CUDA、cuDNN、TensorRT、NvMedia等
支持大量自驾算法和应用,包括感知、地图、规划、执行等方方面面
支持从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自驾平台的确走在了行业最前沿,在没有超越之前,我们需要的更多是学习,学习,学习!