随着国内外新势力汽车厂商的迅速崛起,汽车智能化水平不断提升。车载中央计算平台和自动驾驶域控制器持续受到欢迎。说到自动驾驶,更多人可能会想到AI技术,比如Mobileye视觉感知、地图、各种规划算法、控制、大数据等。目前,越来越多的主机厂都在关注如何更高效、更准确地进行数据通信。随着自动驾驶级别从L2向L2++甚至L3/L4过渡,对数据传输的要求也越来越高。中间件的开发和应用一下子被推到了风口浪尖。说到中间件,就不得不先说说操作系统OS。操作系统有广义和狭义之分。狭义的操作系统大家都不陌生。移动设备上的iOS、Android,车载系统上的Linux、QNX等都是狭义的操作系统,通常包括内核、文件系统、驱动程序以及集成到内核中的部分协议栈。通用操作系统一般包括操作系统内核、硬件驱动层和中间件。当各家新能源汽车厂商都在谈论软件定义汽车时代的到来时,只有真正掌握芯片、操作系统、中间件、算法,以及常用且常新的应用,才能走在技术前沿。其中,通用操作系统是核心中的核心,已成为国内外主机厂自主研发竞争的方向。图1广义和狭义OS框图稍后再谈中间件。什么是中间件?直译过来,就是中间层的组件。它实际上是操作系统/底层软件和应用软件之间的桥梁。整个系统软件可以通过中间件实现不同处理器架构和芯片之间的数据共享。一套成熟的中间件往往会给开发收益带来指数级的进步,大大缩短开发周期和系统稳定性,屏蔽底层硬件差异,实现统一的API接口。图2自动驾驶中间件应用那么自动驾驶需要什么样的中间件呢?低延迟、高带宽、多并发。从整车功能域来看,自动驾驶是从外部传感器采集数据量最大的模块。为了持续检测车身周围各种复杂的环境信息,需要毫米波、摄像头、激光雷达等实现360度的无死角感知。并且为了保证安全,所有数据都需要以接近实时的速度进行处理。为了保证大量数据的实时处理,低数据延迟需要高性能的计算单元和高带宽的网络通信,数据可以轻松地在不同的核之间共享。图3自动驾驶360度传感器感知示意图传感器类型典型带宽要求3D毫米波2M/s4D毫米波100M/s8M摄像头2G/s-3G/s100线激光雷达1G/s表1典型带宽sensors从上表可以知道,随着自动驾驶功能的不断升级,对传感器的传输数据带宽和传输时延的要求也在不断提高。为了满足这种需求,业内各家自动驾驶公司也在研发自己的自动驾驶中间件来满足需求。ICERYX:博世在量产ADAS领域长期占据市场份额前三。他们对如何高效传输自动驾驶数据有着更为迫切的需求。为此,在大师MichaelP?hnl的带领下,他们开发了一套用于自动驾驶的。中文名为“冰羚羊”,英文名为ICERYX中间件。如上所述,需要在整个系统中快速传递大量与自动驾驶相关的传感数据。这里,就不得不提到进程间通信(InterProcessCommunication)的概念。以最常用的Linux系统为例。不同的进程通信或交换信息。由于不同进程的地址空间是相互独立的,所以在传输数据时不断地来回复制数据,创建和释放栈。这个复制过程不会产生任何价值。浪费并占用大量系统资源并造成不希望的延迟。图4进程间通信为了解决上述问题,ICERYX设计了“零拷贝”内存共享技术,优化了以往ADAS量产项目中遇到的问题。这种“零拷贝”将需要消费的数据(原始RGB图像或激光点云数据)通过预定义的通用接口放入ICEORYX申请的内存空间,然后引入“计数器”的概念来记录是否内存空间中的每一块数据被调用或释放。当计数器为0时,表示可以释放数据块。这样,所有的数据调用都发生在共享内存区,省去了每个进程都将数据拷贝到自己的私有存储中,大大提高了数据通信的效率。下图来自博世官方介绍资料。基于共享内存的复制并不是一种创新的通信机制,但ICOREYX使用了一种结合了发布/订阅架构、服务发现和计数器的机制。通过添加避免复制的API,实现了所谓的真正的零复制——一种从发布者到订阅者的端到端方法,无需创建副本。图5零拷贝通信(参考1)发布者将数据写入到预先申请的内存块中,订阅者可以接收到这些内存块的实时状态,知道哪些内存块正在处理,哪些内存块将要处理被发布。发布者可以在订阅者读取数据块的同时再次写入,没有任何时间干扰和延迟,因为即使正在读取之前的内存块,发布者也可以选择一个新的内存块,该内存块在操作之前已经分配内存块。ICERYX是开源的并且符合Apache-2.0许可证。任何个人或团队均可免费使用源代码,但若需通过ASIL-B或ASIL-D级别的功能安全认证,则需向博世购买相关安全服务。目前,ICEORYX中间件面临的最大挑战是主机厂需要快速推出量产车型,才能真正检验其价值。此外,由于自动驾驶感知信息的种类越来越多,如激光点云数据、摄像头RGGB帧、3D毫米波雷达目标信息、4D毫米波雷达点云信息、车辆信号数据等,如何高效的申请和分配内存块也是一个问题。实现真正“零拷贝”的前提,需要在实际项目中不断打磨和优化。ROS2:接下来,我们来看看大名鼎鼎的ROS2。说到ROS2,就不得不先说说ROS(RobotOperatingSystem)。ROS2是在ROS的基础上发展升级而来的。ROS最早是作为适配机器人的开源软件系统开发的,包含了3000多个基础库、灵活的进程间通信机制、底层驱动、硬件抽象等。如前所述,自动驾驶非常复杂,具有很高的性能。安全要求。包括车道线检测、物体检测、障碍物检测、决策、控制等模块;这些具有不同功能的模块需要集成在一起,形成一个端到端的系统。因此,找到一个合适的中间件框架并不容易。ROS广泛应用于学术界和机器人领域,灵活的消息机制开发,丰富的调试工具恰好满足了自动驾驶开发的需要。我们看到国内自驾黄埔军校??百度在Apollo1.0/2.0早期版本选择了ROS框架。但在实际开发应用中,开发者发现了ROS适配自动驾驶的不足。比如ROS通信延迟过大,需要将数据从发布节点复制到订阅节点。它可能不是机器人设计中的阻塞点,但显然会极大地影响自动驾驶系统中的数据传输效率。另外,ROS的单主节点机制也是一个瓶颈,所有的子节点通信都需要依赖单一的通信主节点。如果主节点出现故障,整个系统也会受到影响。为了解决ROS的明显缺陷,百度Apollo在3.5版本之后发布了自主研发的Cyber??RT框架来替代ROS。图6.以Master为中心的ROS交互机制ROS社区和组织也意识到了不足,并于2016年底正式发布了ROS2beta版。在新一代ROS中,带来了整体架构的创新,解决了以下问题:上一代。缺乏。ROS底层基于DDS(DataDistributionService)通信机制,取消了ROS上的Master模式。DDS遵循发布订阅模型创建全局数据块。那么每个数据发布者或订阅者都是一个数据参与者,可以读写全局数据。同时也保留了ROS中Topic数据结构的概念。图7基于主题的发布/订阅流程另外,DDS的一个重要特性是支持QoS(QualityofService),满足不同场景下不同数据传输的实时性要求。可以通过QoS策略选择不同的选项来配置每个数据传输。ROS2支持传输周期、可靠性传输、历史信息等策略。图8支持QoS策略的DDS机制当然,ROS2的整体稳定性和应用案例远不如ROS,但具有以上特点的ROS2系统,我们拭目以待。极氪软件电子中心秉承平等、多元、共同成长的价值观,不断追求产品的极致,为用户提供贴心的体验。从中央计算、智能区域控制器、整车OTA、智能车身控制、整车软件等领域出发,打造行业顶尖的电子电气架构,为智能电动汽车保驾护航。目前,我们一直在开发中央计算和区域控制器的高效IPC通信,并将其应用于量产项目。除了上述的共享内存和DDS技术外,还会使用SOME/IP协议来加强不同的业务数据。之间的传递效率。图9极氪中间件框图此外,ZEEKROS也在紧锣密鼓地进行开发和测试。作为中央计算SoC的核心中间件,将管理整车服务(支持自动驾驶、车身电控、底盘、三电和智能座舱等)迭代,提供基础平台,高度分层解耦,和分布式管理。搭载ZEEKROS的下一代3.0中央计算平台将采用全栈自研,着力打造一套高效稳定的车载软件中间件,为自动驾驶、SOA和车载OTA服务提供核心竞争力和持续赋能。
