产品中心

当前位置:首页 - 产品中心

产品中心

Polysync综述1

Polysync综述1

Polysync综述1是一个面向自动驾驶应用开发的平台,由中间件软件和一系列常用函数接口构成。它将底层的操作系统和硬件抽象化,暴露统一接口供上层应用调用,让自动驾驶开发变得简单可行。


图1 基于Polysync开发的自动驾驶系统架构图


从图1我们不难看出,基于Polysync中间件可以实现多样化的自动驾驶应用。应用层只需宏观的从感知系统获取信息,并将行驶策略作用于执行机构,而无需关注具体的硬件驱动。


另外,Polysync综述1提供了基于以太网的私有总线通讯及数据同步,不同的程序(我们称为“节点”)可以以独立进程的方式运行并进行数据交互。这些节点甚至可以在多台架构不一的主机(ECU或PC)上分布式运行,构成提供更强大功能的庞大系统。

 

2.Polysync总线通讯与分布式计算

一个基于Polysync的自动驾驶系统,总的来说由三部分构成:基于以太网的Polysync总线;传感器、执行器等硬件及各自对应的硬件驱动节点;若干个纯软件的应用层节点。


图2 Polysync总线与节点


如图2所示,所有节点都可独立运行,并通过总线进行数据交互。


这时系统会面临两个问题:

1. 多个节点之间需要时间同步,否则节点间通讯的延迟将导致实时性崩溃;

2. 当节点不断增加,一台主机必然无法满足所有节点(尤其是算法节点)的计算资源需求,这时必须在多台主机上部署分布式计算系统。


所幸Polysync已考虑到上述问题并有效解决。


图3 Polysync分布式解决方案


如图3所示,Polysync提供了Manager节点程序,在每台主机上都需要先启动该节点才能保证其他节点正确运行。Manager节点负责与其他主机上的Manager节点通讯,基于一种分布式数据同步协议,确保本主机上的节点与所有其他主机上的节点时间同步。

 

3.Polysync内部架构

前两章主要讲了Polysync的框架和概念,那它是如何具体实现的呢?我们可以由图4了解Polysync中间件的内部架构,它通过模块化的软件针对性的解决特定问题。


图4 Polysync中间件内部架构


中间件的下层包括3个节点通讯(IPC)模块:

  • 发布/订阅通讯机制 – 与社交媒体类似,一个节点可发布一类消息由多个订阅者接收,一个节点也可订阅一类消息由多个发布者提供。

  • 参数通讯机制– 一个节点可直接获取或设置另一个节点的参数。

  • 数据流通讯机制– 对于一些大量占用带宽的数据(如视频),同一台主机内的不同节点之间可通过数据流方式进行传输,节省资源。


Polysync综述1基于节点通讯模块,中间件的上层提供了多个通用功能模块:

  • 硬件抽象化– 统一所有传感器、摄像头和执行机构的I/O数据格式。

  • 主机抽象化– 代码一次编写到处编译,在不同架构的主机上都可运行。

  • 时间与同步– 统一所有主机中所有节点的时间戳。

  • 空间坐标转换– 默认情况下,所有传感器输入数据都统一至车辆中央坐标系。

  • 记录与回放– 在线记录原始数据,离线回放重塑在线场景。

  • 调试与诊断– 所有节点的Polysync代码都可追踪与调试。

  • 分析与统计 – 主机层次及节点层次的统计分析,如每秒发布消息数等等。

 

在下一回,我们将就以下课题展开讨论:

  • Polysync的数据模型

  • 一个示例:如何抽象IBEO传感器

  • SDF文件以及Polysync自带工具软件