智能无人车软件系统通常由多个功能模块组成,在模块间高效、可靠地传输传感器数据以及决策和控制信息等,是智能无人车系统运行的重要保障.目前,国内外大多数智能无人车软件系统所使用的消息传输机制均基于套接字(socket),其容易部署在分布式的控制器环境中,且能满足在较小数据量下的消息快速传输.但是,随着智能无人车集成控制器性能的提升以及环境感知手段的发展,对功能模块间传输的数据量以及带宽提出了更高的要求.现有基于套接字的消息传输机制因其受网络协议的限制,需要分块传输大数据包,不仅增加了收发双方的开销,而且还增加了消息传输延迟.提出一种基于共享内存(shared memory)的智能无人车进程间消息异步传输机制,模块间通过共享内存空间进行数据交互.共享内存空间由超级块和数据块构成,通过环形队列管理数据块收发;同时,采用原子操作提高整体性能,实现图像等大数据包的有效传输.该设计应用于智能无人车模块间通信,可以明显降低数据传输时延,提高系统吞吐量.实验结果表明,该方法针对典型大数据包(如3MB)的平均传输时延为2.5ms,低于LCM的12ms以及ROS中Sharedmem_transport的3.9ms.另外,该系统的最大吞吐量达到1.1GB/s,高于LCM的180MB/s以及Sharedmem_transport的600MB/s.
Timely transmission of sensory data and control instructions is crucial between function modules of autonomous car systems. Socket-based message transmission mechanisms, e.g. LCM and IPC, are the de facto standard for this purpose because of their easy deployment and adaptability for distributed environment. However, they can no longer meet the increasing demands of high bandwidth for sharing large data packets, i.e. images and point clouds, among perception processing modules and the decision making module. The main reason is that socket-based mechanisms have to divide the large data packet into smaller data packets, which introduces extra costs for packing and unpacking, therefore results in high latency and low bandwidth. This paper proposes a new shared-memory-based inter-process message transmission mechanism, The shared memory segment is composed of a super block and several data blocks. The circular queues are deployed for fast scheduling data receiving and delivering. Meanwhile, the atomic operations are applied to improve the overall performance. Experimental results show that the average transmission delay of data packets of size 3MB is 2.Sins, which is drastically lower than LCM's 12ms and is also better than Sharedmem_transport's 3.9ms. The maximum throughput of this method is 1.1GB/s, which is much greater than LCM's 180MB/s and Sharedmem_transport's 600MB/s.