基于DDS协议在自动驾驶中实现分布式通信的方法转让专利

申请号 : CN201910553707.8

文献号 : CN110086891B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王保曾张旸陈诚

申请人 : 奥特酷智能科技(南京)有限公司

摘要 :

本发明应用于自动驾驶领域,提供基于DDS协议在自动驾驶中实现分布式通信的方法,采用DDS服务以数据为纽带构建无中心化的网络拓扑,实现多传感器的快速接入以及数据通信,根据传感器特性做多传感器数据融合;DDS服务提供丰富的QoS服务质量策略,能够保障数据进行实时性、高效、灵活地分发,在分布式数据传输中,结合Linux流量控制框架,提高传感器数据传输质量,在数据处理单元,采用共享内存方式,减少数据拷贝开销。

权利要求 :

1.一种基于DDS协议在自动驾驶中实现分布式通信的方法,其特征在于包含以下步骤:

步骤1),以Ubuntu系统为平台,构建DDS环境,用于接入多传感器,所述传感器包括摄像头、激光雷达、超声波雷达、GPS及惯性单元;

步骤2),根据传感器数据特点,定义符合DDS规范的数据结构,生成相应发布者和订阅者程序,通过RTPS协议发现数据发布者与订阅者,数据发布者与订阅者根据相同数据类型与数据名相互关联;还包括QoS策略配置,最可靠与最高效两种策略的选择,以及队列深度配置,保证数据发送时的灵活性;在最可靠策略中,发布者通过订阅者应答确认数据是否正常接收,如果丢失进行重传;而最高效策略,覆盖订阅者接收队列中未处理的旧数据,确保最新数据及时传输;

步骤3),对于分布式接入的传感器,采用网络传输,根据不同传感器数据优先级、流量大小,结合Linux TC流量控制框架,设置传感器数据报文TOS字段,映射到不同的TC队列,对于优先级高的数据进入高优先级TC队列,得到优先调度;对于数据量较大的传感器数据进入队列较深的队列,得到更多调度机会,保证传感器数据网络传输质量;

步骤4),在数据处理单元中,传感器数据采用共享内存的方式提供给数据融合、定位模块,多个模块订阅使用同一种传感器数据,采用共享内存的方式,避免数据拷贝,提高数据处理效率,保证实时性;

步骤5),通过节点管理运行时UI,对传感器节点参数查询与配置、节点运行状态查询、节点数据收发统计,所述运行时UI提供可视化的界面,实现对传感器节点发布者和订阅者程序的监测与统计,实时反映当前节点被订阅情况和数据收发统计,监测节点是否异常。

2.根据权利要求1所述的基于DDS协议在自动驾驶中实现分布式通信的方法,其特征在于:以DDS服务为基础,实现多传感器数据接入,并提高优化数据传输/处理质量,根据环境感知信息,实现车身定位、障碍物检测以及红绿灯信息识别,做决策与路径规划,通过路径坐标信息,转换成车辆横向纵向控制信息,从而实现车辆的控制。

说明书 :

基于DDS协议在自动驾驶中实现分布式通信的方法

技术领域

[0001] 本发明属于自动驾驶技术领域,涉及数据通信/数据处理,具体而言DDS协议在实现自动驾驶分布式通信中的应用。

背景技术

[0002] 随着科技进步以及人工智能发展,自动驾驶行业快速发展。目前,自动驾驶技术主要围绕环境感知、精确定位、决策与规划以及控制与执行等功能构建软件平台。因自动驾驶道路环境与场景复杂多变,感知部分需要具备不同场景下的感知能力与冗余备份,依赖于激光雷达、视觉、毫米波雷达、超声波雷达等多传感器的信息采集与数据融合,软件平台需要具备大带宽、实时性、稳定性以及分布式等特点。
[0003] 目前,国内部分方案基于机器人操作系统ROS(Robot Operating System )构建自动驾驶软件平台,使用ROS作为消息中间件,提供基于消息发布-订阅的分布式通信框架,易于集成多传感器,广泛应用于工业控制。
[0004]  ROS以ROS Master为中心,实现不同节点(node)之间的消息发布-订阅,如图1所示,传感器节点作为发布者(Publisher),首先通知(Advertise)自己提供的数据类型,而订阅者(Subscriber)向ROS Master订阅(Subscribe)某种消息,如果ROS Master发现发布订阅消息类型以及消息名一致,则更新(Pub Update)发布者(Publisher)的信息给订阅者(Subscriber),建立订阅者(Subscriber)向发布者(Publisher)的数据请求(Data Request),实现发布者(Publisher)向订阅者的消息发送(Data Messages)。可见,该模型存在过度依赖ROS Master单一节点的问题,而且缺乏异常恢复机制,一旦ROS Master拥塞或者异常,将影响整个系统消息交互;而且ROS不提供QoS服务质量策略,不能保证数据的高效、灵活地分发;另外ROS为开源软件,虽然功能生态丰富,但很难在自动驾驶领域构建符合车规级的软件平台。
[0005] 数据分发服务DDS(Data Distribution Service for Real-Time-Systems),作为分布式实时通信中间件,面向实时系统的数据分布服务,其发布-订阅体系架构,强调以数据为中心,如图2所示,使用RTPS服务发现协议实现完全的P2P节点发现,完成节点自动发现构建无中心化的网络拓扑;并且提供丰富的QoS服务质量策略,能够保障数据进行实时性、高效、灵活地分发;同时具备跨平台特性,广泛应用于国防、民航以及工业控制领域。而且汽车开发系统架构AUTOSAR(AUTOmotive Open System Architecture)也开始集成DDS服务,使得以DDS服务构建自动驾驶平台成为可能。

发明内容

[0006] 发明目的:为了克服现有技术中ROS系统存在的不足,并提高传感器数据传输质量和减小数据处理开销,本发明提供基于DDS协议在自动驾驶中实现分布式通信方法。
[0007] 技术方案:为解决上述技术问题,本发明提供的基于DDS协议在自动驾驶中实现分布式通信的方法,包含以下步骤:
[0008] 步骤1),以Ubuntu系统为平台,构建DDS环境,方便多传感器接入;
[0009] 步骤2),根据传感器数据特点,定义符合DDS规范的数据结构,生成相应发布者和订阅者程序,通过RTPS协议发现数据发布者与订阅者,数据发布者与订阅者根据相同数据类型相互关联;
[0010] 步骤3),对于分布式接入的传感器,通过网络传输,根据不同传感器数据优先级,设置相应的数据报文的TOS字段,保证传感器数据网络传输质量;
[0011] 步骤4),在数据处理单元中,传感器数据采用共享内存的方式,提供给数据融合、定位等模块,避免数据拷贝;
[0012] 步骤5),实现节点管理运行时UI,对传感器节点参数查询与配置、节点运行状态查询、节点数据收发统计。
[0013] 具体地,所述传感器包括摄像头、激光雷达、超声波雷达、GPS及惯性单元等。
[0014] 具体地,所述步骤2)中还包括QoS策略配置,最可靠与最高效选择、队列深度配置等,保证数据发送时的灵活性。
[0015] 具体地,所述步骤3)中根据不同传感器数据优先级、流量大小,结合Linux TC流量控制框架,设置传感器数据报文TOS字段,映射到不同的TC队列,保证数据的网络传输质量。
[0016] 具体地,所述步骤4)在数据处理单元中,多个模块需要使用同一种传感器数据,采用共享内存的方式,避免数据拷贝,提高数据处理效率,保证实时性。
[0017] 具体地,所述步骤5)提供可视化的界面,实现对传感器节点发布订阅应用程序的监测与统计,实时反映当前节点被订阅情况、数据收发统计等,监测节点是否异常。
[0018] 有益效果:本发明采用DDS数据服务联接传感器、决策与路径规划、车辆控制、V2X、高精度地图等,以数据为纽带构建无中心化的网络拓扑,便于多传感器的快速接入以及数据通信,并且DDS服务提供丰富的QoS服务质量策略,能够保障数据进行实时性、高效、灵活地分发,结合Linux TC流量控制框架,进一步提高数据传输效率,在数据处理过程中,采用共享内存的方式,避免数据拷贝。
[0019] 除以上所述的本发明解决的技术问题、构成技术方案的技术特征以及由这些技术方案的技术特征所带来的优点外。为使本发明目的、技术方案和有益效果更加清楚,下面将结合本发明实施例中的附图,对本发明所能解决的其他技术问题、技术方案中包含的其他技术特征以及这些技术特征带来的优点做更为清楚、完整的描述。

附图说明

[0020] 图1是现有ROS系统的处理流程图;
[0021] 图2是DDS协议中P2P节点发现示意图;
[0022] 图3是本发明实施例中DDS服务的分布式通信系统架构图;
[0023] 图4是DDS服务QoS策略示意图;
[0024] 图5是本发明实施例中数据通信分层示意图;
[0025] 图6是本发明节点管理运行时UI功能示意图。

具体实施方式

[0026] 实施例:
[0027] 自动驾驶核心部分包括环境感知、精确定位、决策与规划以及控制与执行,环境感知需要借助多传感器实现,在自动软件平台中,传感器数据通信是基础。
[0028] 自动驾驶过程中,需要做到精确定位,精确到具体车道。如图3所示,根据高精度地图(HD Map)以及车身其他传感器信息(如GNSS/RTK、Lidar)进行定位(Location);结合交通灯、交通标示进行下一步的决策与路径规划,交通灯信息有两个途径,一是本身高精度地图提供交通灯位置信息,通过视觉识别红绿灯情况,二是,后续随着V2X(Vehicle to Everything)的发展,V2X可以提供交通信息,包括红绿灯信息、道路拥堵信息等,DDS支持分布式网络通信,可以融合V2X。
[0029] 在整个DDS网络中,根据多传感器环境感知信息,实现车身定位、障碍物检测以及红绿灯信息,可以去做决策与路径规划(Planning),通过路径坐标信息,转换成车辆横向纵向控制信息,从而实现车辆的控制(Vehicle Control)。
[0030] 另外,如图4所示,DDS QoS提供最可靠与最高效(Reliability-Best Effort)两种数据传输策略,其中最可靠策略中,发布者通过订阅者应答(Ack)确认数据是否正常接收,如果丢失进行重传;而最高效策略,覆盖订阅者接收队列中未处理的旧数据,确保最新数据及时传输。DDS服务同时提供单播和组播两种数据形式,在多个应用程序订阅相同数据时,提供组播形式的数据发布,减轻带宽负担。在数据发布过程中,约束数据发布者周期发布存在性包(LiveLiness),以检测数据发布者是否失效,自动恢复。
[0031] 车身传感器通常采用分布式接入,部分传感器有预处理单元,如图5所示,在与数据处理单元通信时,通常采用TCP或者UDP,DDS QoS提供数据传输策略,但是,对于不同数据通过网络设备调度时,并不能保证实时性和一定优先级区别。本方案借助Linux TC(Traffic Control)流量控制框架,设置不同传感器数据报文服务类型TOS(Type Of Service)字段,根据不同优先级映射到不同的TC队列,对于优先级高的数据进入高优先级TC队列,得到优先调度;对于数据量较大的传感器数据进入队列较深的队列,得到更多调度机会,从而提高传感器数据传输质量。
[0032] 对于数据处理单元,需要订阅处理多种传感器数据,并且同一种传感器数据通常被多个模块订阅,本方案采用共享内存的方式,减少同一传感器数据的拷贝,可以避免数据处理延时。
[0033] DDS服务包括RTPS协议,RTPS协议分为简单域参与者发现协议SPDP(Simple Participant Discovery Protocol)和简单端点发现协议SEDP(Simple Endpoint Discovery Protocal)。SPDP用于发现其他域参与者(Participant),SEDP用于域参与者之间交换发布者和订阅者的信息,如果数据类型与数据名一致,从而实现发布者订阅者之间的一对一、一对多的自动发现,不存在中心节点。
[0034] DDS QoS提供最可靠与最高效(Reliability-Best Effort)两种数据传输策略,通常常用最高效传输策略,对于在多个应用程序订阅相同数据时,提供组播形式的数据发布,减轻带宽负担,根据不同数据优先级、流量大小,设置不同报文TOS字段,映射到不同TC队列,对于多个应用程序订阅相同数据时,采用共享内存的方式,避免数据拷贝。
[0035] DDS服务提供符合DDS规范的接口定义语言IDL(Interface  Definition Language),用户根据传感器数据类型,自定义传感器数据结构文件,由DDS工具生成相应的发布-订阅节点代码,可以快速实现传感器的数据接入。
[0036] DDS服务基于C/C++实现,不依赖其他复杂第三方库,支持Window、Linux以及其他实时操作系统,易于搭建,以自动驾驶常用传感器GPS为例,说明传感器接入过程。
[0037] 1)以Ubuntu系统为平台,搭建DDS环境,方便多传感器接入;
[0038] 2)根据传感器数据特点,自定义GPS数据类型为struct NavSatFix,生成相应发布者和订阅者程序,通过RTPS协议发现关联数据发布者与订阅者;
[0039]   struct Time{
[0040]     long sec;
[0041]     unsigned long nanosec;
[0042] };
[0043] struct Header{
[0044]     Time stamp;
[0045]     string frame_id;
[0046] };
[0047] struct NavSatStatus{
[0048]    octet status;
[0049]    unsigned short service;
[0050] };
[0051] struct NavSatFix{
[0052]    Header header;
[0053]    NavSatStatus status;
[0054]    double latitude;
[0055]    double longitude;
[0056]    double altitude;
[0057]    double position_covariance[9];
[0058]    octet  position_covariance_type;
[0059] };
[0060] 3)GPS数据通常为10HZ 50HZ,频率不高、数据量不大,配置相应TOS优先级为3,映~射到TC队列;
[0061] 4)由于多个模块使用GPS数据,发布程序采用组播的方式发布;
[0062] 5)对于数据处理单元,多个订阅程序通过共享内存的方式,订阅处理GPS数据;
[0063] 6)如图6所示,通过节点管理UI,可实现GPS节点的QoS参数调整、GPS数据的订阅方查询、GPS数据频率查询,检测节点运行是否正常。
[0064] 本发明为自动驾驶的分布式通信提供了DDS协议的思路与方法,具体实现该技术方案的方法和途径很多,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,对附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。