一种无人车多源车身信息分布式通信系统设计

2023-05-08 00:18杨金龙徐晓林
安阳师范学院学报 2023年2期
关键词:底层车身分布式

杨金龙,徐晓林

(郑州科技学院 大数据与人工智能学院,河南 郑州 450064)

无人驾驶技术对于车辆信息的获取是其实现自动驾驶的必要前提:多源感知传感器、决策系统均需获取来自车辆不同域的车身信息,以此来感知当前车辆具体运行状态进而决策车辆自动驾驶功能。但无人驾驶车辆EE架构复杂且节点众多,涉及各个域间及域内不同系统和不同节点之间的通信,以往的数据处理方式在基于CAN、LIN等总线技术或以太网通信基础上获取的原始数据通过UDP或TCP方式供自动驾驶车辆内各模块使用,但TCP或UDP的 SOCKET仅是一对一的关系,由于域内涉及通信节点多,不仅各模块之间需要进行数据交互,且不同模块对于数据的实时性要求又各有不同,所以无人驾驶的通信模式应该是一个多对多的关系[1]。提出一种多源车身信息分布式通信系统,能处理域间底层各电子控制单元(Electronic Control Unit,ECU)间通信和域内上层各应用间的基于多输入、多输出的通信。该车身信息综合处理系统底层基于车载以太网音视频桥接(audio video bridger,AVB)技术及车载控制器域网(controller area network,CAN)总线技术实现双冗余数据传输,以此获取自动驾驶不同域间各系统底层通信车辆数据;上层采用基于异步消息队列(Zero Message Queue,ZMQ)及结构化数据存储方式(Protocol Buffers,Protobuf)实现无人驾驶域内各节点模块的多对多消息传递,并采用多线程并行调度方式形成整体分布式并发框架,构建一种无人驾驶域间及域内各模块的高效实时多源车身信息系统,为域内上层应用的感知、决策等模块提供实时、全面的车身信息。

1 总体方案设计

多源车身信息分布式通信系统设计目的是通过获取底层域间不同系统的原始信息数据为自动驾驶的上层应用模块如各感知模块、决策模块提供可靠、稳定、全面的车身信息[2]。总体设计框架如图1所示,自上向下依次为:上层应用模块、系统服务模块、底层域间EEA架构模块。

图1 无人驾驶车辆信息分布式并发通信框架图

底层域间EEA架构模块以自动驾驶域的智能驾驶平台为核心主节点,分别划分为底盘动力域、车身域、网联域各子节点。各子节点间采用AVB/CAN双冗余通信机制,为整个自动驾驶域提供全面的车身信息原始数据;该底层双冗余架构可实现域间冗余通信和制动、转向等车辆安全功能的冗余控制,达到多重保护作用及备用功能机制。

系统服务模块基于底层双冗余通信实现对车辆信息的采集处理,并采用ZMQ机制向上层应用发布数据。该模块基于可移植操作系统接口(Potabel Openting System interface of UNIX,POXSI)的多线程并发实现对各域间模块的车辆信息进行采集,具体包括:动力域AVB/CAN的双冗余数据处理线程模块、车身域AVB/CAN的双冗余数据处理线程模块、网联域AVB/CAN的双冗余数据处理线程模块。

上层应用基于ZMQ消息队列及Protobuf数据存储结构实现各域内模块的信息交互,主要订阅及发布车身信息。ZMQ可以构建多对多的通信连接模式,在自动驾驶CPU多核通信下ZMQ的异步IO机制可以实现异步消息处理任务,形成分布式并发处理框架。该并发框架主要实现以下目标:为自动驾驶决策、各感知模块提供全面、丰富的整车信息输入接口,为决策模块提供自动驾驶车辆控制的数据输出接口,感知模块为决策模块提供多维信息感知融合接口,为车辆控制提供线控及人机交互的AVB以太网、CAN的双冗余传出传入接口。

2 分布式并发通信模型设计

依据图1的分布式并发通信框架,车身信息分布式通信模型主要分为自动驾驶底层域间通信模型和域内上层应用通信模型。域间通信模型通过虚拟局域网(Virtual Local Area Network,VLAN)技术在逻辑上划分多个广播域,每个VLAN内的控制器可以直接通信,不同VLAN内的域间控制器如要通信需通过中央网关实现。即域间通信模型以不同域间控制器为通信节点,以中央网关为信息交换核心而构建的AVB以太网/CAN总线双冗余通信模型;该模型中的主要通信节点包括自动驾驶域、动力底盘域、车身仪表域、网联娱乐域[3]。

域内通信以ZMQ的快速消息架构为消息中间件实现自动驾驶域内各应用模块与车身信息的数据交互。其中ZMQ以消息为导向支持多种通信模式,其异步IO机制可以构建多核应用程序实现异步消息处理。自动驾驶域内各应用模块对于处于共享地位的车身信息数据不再是点到点的一对一需求关系,而是多点对多点的通信关系,这种多对多的通信方式更适合于自动驾驶域内各不同模块节点间的数据交互。系统域内分布式通信根据实际对车身信息的需求采用基于ZMQ消息队列的发布-订阅和请求-应答两种通信模式。

2.1 PUB-SUB模式

在无人驾驶分布式并发通信框架结构中,上层应用模块内的各子模块间、系统服务模块与上层应用各模块间采用了发布-订阅模式进行消息传递,即多个订阅者可订阅发布者消息;以车身信息为例,车身信息发布模块发布的消息数据,决策、各感知模块均可订阅使用。车身信息PUB-SUB基础模型如图2所示:车身信息进程对外的发布信息端口为56 000,其他各模块进程可基于该端口实现数据订阅,所连接地址结构基于同一IP地址。

图2 车身信息Pub-Sub基础模型

2.2 REQ-REP模式

ZMQ的请求-应答(request-response,REQ-REP)模式是基于可靠通信模型所建立的,用于将请求从ZMQ-REQ客户端发送到一个或多个ZMQ-REP服务端,且每个发送的请求到达服务端后都会得到服务端相应回应。该模式可保证数据通信过程中的可靠性,在无人驾驶多任务分配中,数据可靠性尤为重要;框架图(图1)中的系统服务模块中涉及的故障诊断子模块即采用了REQ-REP的通信模型。故障对无人驾驶的安全性起到至关重要的作用,在故障发生时刻需第一时间保证上层决策实时准确获取到故障,所以故障诊断通信采用REQ-REP通信模式。无人车的故障诊断REQ-REP通信基础模型如图3所示。

图3 故障诊断REQ- REP通信基础模型

该诊断模块分为故障客户端和故障服务器端,其中客户端设计为诊断库模块,对外提供故障接口函数。无人驾驶各业务模块调用诊断客户端接口函数向诊断服务器请求发送故障,服务器收到后回应以确定故障收到。涉及的自动驾驶域内各业务模块均是以客户端的形式调用相应的故障请求函数,并向服务端发送故障码或是请求相应的故障码。服务器以诊断库的形式一方面订阅收集所有故障,收到故障后会回应客户端以确认故障收到;一方面又响应相关业务模块的故障请求将收集到的故障对外进行发布[4]。

3 软件设计

3.1 数据流向

无人驾驶车身信息分布式并发框架数据流如图4所示,涉及整个无人驾驶域间各系统之间的数据通信及域内各模块节点之间的消息通信,主要包括上层域内各模块节点的ZMQ消息通信及底层域内各控制系统的双冗余数据传输[5-6]。

图4 无人驾驶分布式并发框架数据流

依据自动驾驶域内上层应用模块的分布特点及底层域间不同控制器的通信方式,结合各模块节点自身功能及对信息的需求不同,主要分为域间通信接口及域内通信接口,域间通信接口如表1所示。

表1所示几类通信接口采用多线程并行通信及线程锁方式在整个车身信息软件中实现。4、5、6为双向通信接口,一方面向上承接来自上层应用的决策、融合模块的结构化格式控制数据,一方面向下发布经协议转换后的底层AVB/CAN数据。考虑控制底层车辆的对象不同,动力运动控制和车身仪表显示对控制数据的实时性要求不同,前者需要更快的响应和反馈,所以决策和融合模块的异步消息发送速率不同[7-8];域内异步消息通信接口如表2所示。

表1 域间通信接口

表2 域内异步消息通信通信接口

每一个接口在程序内部均是一个具备独立功能的线程,对于各接口的共享数据采用互斥锁机制实现协议转换并最终发送给底层。异步消息队列的消息通信和数据分发方式可以对各数据处理子节点进行整合。接口中5、6、7均为双向通信接口;一方面为面向域内上层应用模块的异步消息接口;一方面为面向域间底层不同系统的AVB/CAN通信接口。

数据流的接口在整个嵌入式车身信息软件模块中的具体设计流程如图5所示。通过数据流接口的建立,为整个车身信息数据库搭建了从数据源双向获取、数据源统一收集解析处理、协议数据格式转换、状态数据上层发布、控制数据下层订阅、底层数据组包处理双冗余控制的整体通信流程。

3.2 车身信息软件设计

整个分布式并发框架利用ZMQ、Protobuf结合POSIX多线程编程综合实现[9-11],针对不同订阅端对共享车身信息的需求不同,采用线程互斥机制,防止共享资源数据的不同步。其中车身信息模块为整个架构中的信息汇集节点,多线程设计结构如图6所示。

图5 车身信息软件模块通信流程图

图6 车身信息多线程设计框架

3.2.1 车身发布信息模块软件设计

车身发布信息模块为自动驾驶系统提供车辆全部信息的关键模块。模块具有两类接口,一类为面向底层通信的AVB两线以太网及CAN总线的双冗余通讯接口;一类为面向上层应用以ZMQ为主的发布-订阅接口,为上层决策、感知等模块发布车身信息。该两类接口均为独立线程,依据自动驾驶对信息速度要求的不同,发布给决策的车身模块采用了50 ms的发送周期,发布给感知的车身模块采用了100 ms的发送周期;该模块的发布-订阅模式基于同一个主机IP地址,但由于发送周期不同采用了不同的发送地址端口。

车身信息的端口和IP配置统一写在CJSON配置文件中,通过读写配置文件来获取地址和端口号。读写配置文件方式使用灵活简便,其中地址结构中IP地址非写死状态,可以根据功能需要对配置文件的数据进行修改,但不会涉及程序的重新编译工作。车身信息模块的CJSON配置格式文件部分内容如下:

{

"vehicleinfo_to_decision":"tcp//:xxx.xxx.xxx.xxx:56000",

"vehicleinfo_to_perceive":"tcp//:xxx.xxx.xxx.xxx:57000",

"decision_to_vehiclectl":"tcp//:xxx.xxx.xxx.xxx:58000",

"speed_to_perceive":100,

"speed_to_decision":50,

"diagnosis_addr":"tcp://xxx.xxx.xxx.:30000",

……..

}

3.2.2 车控订阅信息模块软件设计

车控订阅信息模块的主要功能是订阅决策下发的车辆控制数据以及融合的障碍物仪表显示数据,承载着自动驾驶对车辆的动力、转向控制及仪表人机交互显示等功能。该模块面向域内上层应用采用ZMQ发布-订阅方式通信;面向域间下层采用AVB及CAN双冗余通信[12]。通信接口主要包括五类:面向上层为决策车身电器控制发布接口、决策动力控制发布接口、融合仪表显示发布接口;面向底层接口有CAN数据发送接口、AVB数据发送接口。每一个接口以单线程形式对各接口的共享数据采用互斥锁机制进行通信,实现数据解算并最终发送给底层应用。由于车辆控制的执行机构其响应速度和实时性要求不同,对于决策下发的数据采用了不同的发送机制,对实时性、瞬时响应要求较高的动力、转向等执行机构发送周期控制在10 ms;对于实时性要求不高的车身电器、仪表等执行机构发送周期控制在100 ms。

4 实验验证

4.1 域间系统通信测试

该系统基于多核异构的系统级芯片(system on chip,SOC)实现,此平台是面向高级驾驶辅助系统(advanced driving assistance system,ADAS)使用的车规级计算平台,研究中将其作为智能驾驶核心处理平台来构建多源车身信息分布式通信系统。测试过程基于POSIX多线程实现车身信息分布式并发通信框架,并同时截取了车身、决策、融合模块等各模块的的发布订阅部分数据及底层域间的各系统的AVB通信数据。其中底层域间各系统的主要测试通信数据流如表3所示。

表3 域间系统测试通信

依据表3的通信数据方式,通过Wireshark工具采集到的原始AVB数据如图9所示。其中图9(a)为底层域间的整车动力域的以太网AVB原始车身信息数据;图中的标记2-5依次为采集并经MAC地址过滤后的有效CAN数据帧,包括具体的CANID,CAN数据长度及8字节有效CAN数据。图9(b)为车身域的AVB数据,其中标号2-3为MAC地址过滤后的有效CAN数据,标号4为8字节CAN数据帧,标号5为CAN数据长度。

图9(a) 整车动力域以太网AVB原始数据

图9(b) 整车车身域以太网AVB原始数据

4.2 域内各模块通信测试分析

对于自动驾驶域内的上层各应用模块,车身信息模块作为共享数据具备提供车辆状态信息服务和控制获取两类功能,以便为各应用模块提供基本的车身状态信息和获得实时的车控信息数据。域内各典型模块的测试通信数据如表4所示,测试过程主要针对域内各应用模块的发布-订阅车身信息来进行收发验证。

表4 自动驾驶域内模块通信测试

车控订阅信息模块,主要采用异步消息通道来订阅自动驾驶域内的上层决策、融合等模块的车辆控制信息,主要包括车身电器控制、动力系统控制、仪表交互显示等。图10(a)为车控模块通过建立两个不同ZMQ通信信道所订阅的信息,包括决策发布的车辆控制信息以及感知融合发布的障碍物信息;该两种信息再经Protobuf反序列化及组包封装成以太网AVB数据或CAN数据,进一步实现对车辆底层的运动控制及仪表的图像显示等。

图10(a) 决策/融合发布的车控信息

车身发布信息模块通过AVB/CAN冗余通信获取到底层不同域间的车辆状态信息后,经预处理、解析及序列化后,将车身状态消息数据对外进行统一发布,以便供融合、决策等域内各上层应用模块订阅;从图10(b)的决策和融合订阅的数据对比可以看出,决策和融合模块订阅的车身信息数据的数值结果是完全一致的,实现了分布式通信的发布者与订阅者一对多的通信关系,确保不同节点的数据共享及兼容。

图10(b) 决策/融合模块订阅的车身信息

5 结语

研究以高性能多核异构SOC为核心计算平台,设计一种多源车身信息分布式通信系统:一方面通过以太网AVB和CAN双冗余通信获取整车不同域间的底层原始车身数据,一方面基于异步消息队列ZMQ实现域内上层各应用模块间的消息发布与订阅,以此搭建了一种无人驾驶车辆整体的车身信息通信系统;该系统已在一种无人驾驶公交车上进行实测应用,运行可靠稳定,为决策、感知等自动驾驶域内各模块节点提供了稳定、实时的车辆信息数据。由于无人驾驶车辆的EEA架构复杂且通信节点众多,一旦硬件平台更换,车身信息软件的相应组件也可能需要重头开发,复用性不高;所以为了使系统满足平台差异化、可重用性特点,后续会在该系统基础上进行基于AUTOSAR的车身分布式通信的深入研究,以满足未来软件定义汽车的应用需求。

猜你喜欢
底层车身分布式
姑苏城内话车身
航天企业提升采购能力的底层逻辑
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究
事故车维修中的车身防腐(三)
卡板在车身修复过程中的作用
车身塑料件的焊接修复方法
西门子 分布式I/O Simatic ET 200AL
回到现实底层与悲悯情怀