分布集中式自动驾驶系统和方法转让专利

申请号 : CN201910360926.4

文献号 : CN109855646B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张旸陈诚

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

摘要 :

本发明提供一种分布集中式自动驾驶系统和方法,包括传感器处理模块、感知定位模块、感知目标检测模块、决策模块、规划模块和车辆控制模块,通过对数据域和控制流程作出明确的划分,对各个功能系统的实现进行模块化设计,并且各个模块可以根据计算平台的负载,部署到相应数据域的控制单元。针对不同的场景有不同的计算需求,通过分布式设计,将集中运算分散到不同的计算单元模块,将大大改善系统的稳定性,效率和并行程度,从而达到系统整体性能的提升。

权利要求 :

1.一种分布集中式自动驾驶系统,对数据域和控制流程作出明确的划分,对各个功能系统的实现进行模块化设计,并且各个模块根据计算平台的负载,部署到相应数据域的控制单元,其实现包括以下步骤:步骤1,按照系统总线类别,对功能模块进行定义;功能模块的描述采用可扩展标记语言格式,对每个功能模块,定义描述包括接口、所需达到性能指标、完成功能、通信接口及数据来源,以及功能的安全和优先级等级;

所述功能模块包括传感器处理模块、感知定位模块、感知目标检测模块、决策模块、规划模块和车辆控制模块;所述传感器处理模块包含激光雷达处理、视觉处理、超声波雷达、惯性单元、GPS导航及里程计;

步骤2,定义数据域,突出用以支持完成指定功能模块的数据源种类及渠道,以及功能模块的数据产出,用以提供给系统中其他功能模块使用;各个功能模块之间的数据流交换在相应的数据域容量以内,数据域的物理承载表现形式为物理总线接口;

所述激光雷达处理用于输出点云;

所述感知目标检测模块用于场景检测、目标检测、道路检测及交通标示检测;所述感知目标检测模块用于输入点云、摄像头视频和车辆全局位置,输出目标位置、道路规则和道路指引;

感知定位模块用于输入点云、GPS经纬度、IMU惯性单元、里程计和高精度地图,输出车辆全局位置;

所述决策模块用于输入道路指引、车辆全局位置、动态地图、静态地图,输出运行决策、车道规则、目标在动态地图址位置;

所述规划模块包括可用空间、车道规划、交通规划、路径规划和路径跟随;所述规划模块用于输入车辆全局位置、运行决策、车道规则、目标在动态地图址位置和道路指引,输出车辆可跟随的路径;

所述车辆控制模块用于输入车辆可跟随的路径和车辆当前控制传感器状态,输出车辆执行器控制命令;

步骤3,定义控制及消息流,采用客户/服务器模式或消息发布/订阅模式;

步骤4,计算单元映射,参照数据域划分,通过对计算能力要求,性能指标的评估,将功能模块映射到选择的指定系统平台,根据目前可以使用的系统整体资源,做出映射决策;

步骤5, 功能模块实现,依据模块的静态定义和数据域定义,分为硬件依赖层、硬件抽象层和独立软件层;功能模块的物理实现形态表现为一到多个任务,这些任务独立或者协调运行在一个独立软件层容器当中;

步骤6,设计调度系统,调度系统完成将多个计算任务在本计算单元的独立软件层中分配;计算单元之间的任务分配与协调将由分布在各个计算单元的调度系统协商完成;

系统中布置若干主调度单元与计算单元,所述主调度单元掌握系统所有计算单元资源信息,所述主调度单元按照计算单元资源和计算任务要求,与每个计算单元上的调度中间件协商,完成计算任务分配;所述计算单元分布在不同芯片、不同硬件系统之上,由分布式计算调度协作;

所述计算任务要求包括数据要求、性能要求和资源要求,对完成自动驾驶系统应用的所有传感器协同、系统实际配置的传感器能力、计算能力、多种计算平台共存的情况下的自适应配置。

2.根据权利要求1所述的分布集中式自动驾驶系统,其特征在于:所述计算单元资源信息备份在所有备用主调度单元中,任何一个主调度单元出现故障,将由其他备选主调度单元代替;还包括步骤7,冗余设计,分布集中式自动驾驶系统中的多个计算单元形成计算集群;当集群中任何一个计算单元出现问题时,在无人干预的情况下自动切换到状态良好、有计算容量的其他计算单元代替。

3.根据权利要求2所述的分布集中式自动驾驶系统,其特征在于:分布集中式自动驾驶系统的冗余通过计算单元的物理冗余实现,或通过功能模块的软件系统容器复用实现;分布集中式自动驾驶系统的动态扩容,通过对计算资源和计算任务的抽象定义,按系统需要增加相应的软件或者硬件模块实现。

4.根据权利要求3所述的分布集中式自动驾驶系统,其特征在于:冗余计算单元产生激活状态信号,用以通告其他单元本单元是否出现故障,还能否参与系统计算,通过使用激活信号状态分析,主调度单元能够准确知道系统各个计算单元是否可以用来分配计算任务。

5.根据权利要求1所述的分布集中式自动驾驶系统,其特征在于:在步骤1中,所述功能模块在相同的硬件系统中实现,或动态被搬移到不同硬件中运行。

说明书 :

分布集中式自动驾驶系统和方法

技术领域

[0001] 本发明涉及自动驾驶技术领域,具体涉及一种分布集中式自动驾驶系统和方法。

背景技术

[0002] 自动驾驶汽车具有感知周围环境,从而在环境中无人干涉的情况下实现自主驾驶。自动驾驶系统具有复杂的算法实现,包含感知,定位,决策,规划与控制。自动驾驶系统的实现通常需要与各种类型的传感器,控制器和计算系统交互。为了处理这些复杂的运算系统以及处理各种子系统的交互,同时保证性能和降低数据转移成本,通常采用集中运算方式。。集中处理方式力图简化各种海量数据的交互,但在实际实现过程当中,往往造成系统难以维护及扩展,并且是的系统难以做到可控成本下的鲁棒性。尤其体现在核心芯片平台的选择局限性。
[0003] 采用集中运算方式固然可以保证性能和降低数据转移成本,但由于自动驾驶系统中所涉及到的传感器及输入数据类型以及种类的复杂和海量,这样的系统不仅仅对单一芯片平台的要求非常高,而且很容易在实施的过程中形成系统中主要的风险节点和性能瓶颈。而且难以实现系统的容量扩充。
[0004] 分布集中式自动驾驶系统通过构建模块化的软硬件计算单元,将自动驾驶系统按照逻辑运算分解为一系列可配置,可重组,可按照实际芯片及硬件能力部署的模块。通过合理设计,最小化软件及硬件模块间的相互依赖性,运用分布式系统的实现方式,达到灵活的可扩展,容易实现系统软硬件冗余进而保证系统的鲁棒性。解决了传统自动驾驶平台对集中式运算的依赖,去除系统中单一的性能瓶颈和稳定性的风险点,通过分布式运算实现系统冗余设计和便捷的系统能力扩展。还可以针对不同的自动驾驶应用场景定制其软硬件实现和部署方式。
[0005] 发明人基于研发过程中积累的丰富的实务经验及专业知识,加以进一步研究创新,通过良好的数据域与控制流的划分以及信息交互,提出一种分布集中式自动驾驶系统设计方法及实现途径。

发明内容

[0006] 发明目的:为了克服现有技术中存在的不足,本发明提供一种分布集中式自动驾驶系统,对数据域和控制流程作出明确的划分,对各个功能系统的实现进行模块化设计,并且各个模块可以根据计算平台的负载,部署到相应数据域的控制单元。
[0007] 技术方案:为解决上述技术问题,本发明提供的分布集中式自动驾驶系统,包括传感器处理模块、感知定位模块、感知目标检测模块、决策模块、规划模块和车辆控制模块,其中:
[0008] 传感器处理模块包含激光雷达处理、视觉处理、超声波雷达、惯性单元、GPS导航及里程计;激光雷达处理模块用于输出点云;
[0009] 感知定位模块用于输入点云、GPS经纬度、IMU惯性单元(加速度、角速度)、里程计和高精度地图,输出车辆全局位置;
[0010] 感知目标检测模块用于场景检测、目标检测、道路检测及交通标示检测;用于输入点云、摄像头视频和车辆全局位置,输出目标位置、道路规则和道路指引;
[0011] 规划模块包括可用空间、车道规划、交通规划、路径规划和路径跟随;用于输入车辆全局位置、运行决策、车道规则、目标在动态地图址位置和道路指引,输出车辆可跟随的路径;
[0012] 车辆控制模块用于输入车辆可跟随的路径,车辆当前控制传感器状态,输出车辆执行器控制命令。
[0013] 具体地,在整个系统中包含若干主调度单元,任何一个主调度单元出现故障,将由其他备选主调度单元代替;主调度单元掌握系统所有计算单元资源信息,并在所有备用主调度单元备份;主调度单元按照计算单元资源和计算任务要求,计算任务要求包括数据要求、性能要求和资源要求,和每个计算单元上的调度中间件协商,完成计算任务分配。计算单元可以是物理上在同一个硬件或者芯片平台,也可以是分布在不同芯片,不同硬件系统之上,由分布式计算调度协作完成。对完成自动驾驶系统应用的所有传感器协同,系统实际配置的传感器能力,计算能力,多种计算平台共存的情况下的自适应配置。
[0014] 具体地,分布式系统的冗余可以通过计算单元的物理冗余实现或通过功能模块的软件系统容器复用实现。分布集中式系统的动态扩容,通过对计算资源和计算任务的抽象定义,按系统需要增加相应的软件或者硬件模块实现。
[0015] 具体地,冗余设计中分布式管理系统模块产生激活状态信号,用以通告其他单元本单元的是否出现故障,还能否参与系统计算,通过使用激活信号状态分析,主调度单元能够准确知道系统各个计算单元是否可以用来分配计算任务。
[0016] 本发明同时提供一种分布集中式自动驾驶方法,包括以下步骤:
[0017] 步骤1,定义功能模块
[0018] 按照系统总线类别,对功能模块进行定义。功能模块可在相同的硬件系统中实现,也可动态被搬移到不同硬件运行。系统功能模块描述采用标准XML(可扩展标记语言)格式,对每个功能模块接口,定义描述包括所需达到性能指标、完成功能、通信接口及依赖数据来源。模块的静态描述决定了模块对系统其他部分的依赖关系,作为调度系统的被调度单元,在与其他子系统交互完成指定系统功能。功能模块的定义分为软件功能和硬件功能两部分。绝大多数模块功能的实现由软硬件协同完成。
[0019] 步骤2,定义数据域
[0020] 数据域是从数据输入输出角度对功能模块的描述。突出用以支持完成指定功能模块的数据源种类及渠道,以及功能模块的数据产出,用以提供给系统中其他功能模块使用。
[0021] 各个功能模块之间的数据流交换必须在相应的数据域容量以内。数据域的物理承载表现形式为物理总线接口,例如,CAN总线,FlexRay,以太网等。
[0022] 步骤3,定义控制及消息流
[0023] 客户/服务器模式和消息发布/订阅模式。客户/服务器模式的控制及消息流有明确的发送和接收方,根据预定的状态序列,完成模块之间的通信需求;发布/订阅模式的控制及消息流不需指定消息的接送方,而是所有订阅过感兴趣此类消息的模块都能够接受到发布方发布的消息或控制命令。
[0024] 步骤4,计算单元映射
[0025] 参照数据域划分,通过对计算能力要求,性能指标的评估,将功能模块映射到选择的指定系统平台。这样的计算单元可能是单一SoC(系统芯片),或者是在同一个硬件PCB(印刷电路板)之上的多个SoCs组,或者是在多个硬件PCB组。这种映射可以基于策略,也可基于系统设计者经验,根据目前可以使用的系统整体资源,做出映射决策。
[0026] 步骤5, 功能模块实现
[0027] 功能模块的实现依据模块的静态定义和数据域定义(输入输出),分为硬件依赖层,硬件抽象层和独立软件层。独立软件层在硬件抽象层之上,实现与具体(映射后)计算单元硬件形态相对独立的软件功能实现,完成数据域内从输入到输出的转化;硬件依赖层很大程度上作为平台软件,需要针对不同硬件形态进行开发。功能模块的硬件依赖层与计算单元的映射有紧密联系。而独立软件层与硬件抽象层在很大程度上独立于计算单元映射。
[0028] 功能模块的物理实现形态表现为一到多个任务,这些任务独立或者协调运行在一个独立软件层容器Container当中。
[0029] 步骤6,设计调度系统
[0030] 调度系统完成将多个计算任务在本计算单元的独立软件层中分配;计算单元之间的任务分配与协调将由分布在各个计算单元的调度系统协商完成。
[0031] 步骤7,冗余设计
[0032] 分布集中式自动驾驶系统中的多个计算单元形成计算集群,集群中任何一个单元出现问题,将通过系统冗余设计,由状态良好,有计算容量的其他计算单元在无人干预的情况下自动切换代替。
[0033] 有益效果:本发明的分布集中式自动驾驶系统针对不同的场景有不同的计算需求,通过分布式设计,将集中运算分散到不同的计算单元模块,将大大改善系统的稳定性,效率和并行程度,从而达到系统整体性能的提升。
[0034] 作为汽车系统的一部分,安全和稳定性是首要需求,这也是集中式自动驾驶系统实现方式的风险所在。相比而言,分布集中式自动驾驶将系统的各个功能模块划分并分布在不同的物理或逻辑计算单元,大大降低了单一节点失效风险。可以相对容易而且低成本的实现模块级冗余设计。
[0035] 分布集中式系统在系统部署方面的灵活性使得走线变的容易控制,可以通过优化物理部署达到优化噪声及干扰的目的。
[0036] 模块化的设计使得各个明确定义边界的子系统可以独立开发,测试和集成。
[0037] 模块化设计同时给系统规格,容量升级带来了实现手段。通过从局部到整体的更新和优化,从模块的更换体现为系统能力的升级和定制。
[0038] 除以上所述的本发明解决的技术问题、构成技术方案的技术特征以及由这些技术方案的技术特征所带来的优点外。为使本发明目的、技术方案和有益效果更加清楚,下面将结合本发明实施例中的附图,对本发明所能解决的其他技术问题、技术方案中包含的其他技术特征以及这些技术特征带来的优点做更为清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

附图说明

[0039] 图1是本发明实施例中软件功能定义实现的框架图
[0040] 图2是图1中功能模块实现的示例;
[0041] 图3是调度系统的实现示例;
[0042] 图4是系统控制及消息流示例;
[0043] 图5是计算单元映射示例;
[0044] 图6是计算单元冗余设计图;
[0045] 图7是功能模块冗余设计图。

具体实施方式

[0046] 实施例:
[0047] 本实施例的分布集中式自动驾驶系统中,对数据域和控制流程作出明确的划分,对各个功能系统的实现进行模块化设计,并且各个模块可以根据计算平台的负载,部署到相应数据域的控制单元。
[0048] 如图1所示,软件功能模块定义分独立软件、硬件抽象和硬件依赖三层实现部署。如图2所示,各个功能模块的实现可沿用目前已有的实现采用目前的实现方式。
[0049] 调度系统示例见图3,在整个系统中,将有一到多个主调度单元,任何一个主调度单元出现故障,将由其他备选主调度单元代替。主调度单元掌握系统所有计算单元资源信息,并在所有备用主调度单元备份。主调度单元按照计算单元资源和计算任务要求(包括数据要求,性能要求和资源要求),和每个计算单元上的调度中间件协商,完成计算任务分配。
[0050] 如图4所示,功能模块划分为以下六层:
[0051] 4.1传感器处理模块(包含激光雷达处理模块,视觉处理,超声波雷达,惯性单元,GPS导航,里程计等);
[0052] 4.2感知定位模块;
[0053] 4.3感知目标检测模块(场景检测,目标检测,道路检测,交通标示检测等);
[0054] 4.4决策模块;
[0055] 4.5规划模块(任务规划,运动规划);
[0056] 4.6车辆控制模块。
[0057] 其数据域可大致分为:
[0058] 激光雷达处理模块,输出点云;
[0059] 感知定位模块,输入点云,GPS经纬度,IMU惯性单元(加速度,角速度),里程计,高精度地图,输出车辆全局位置;
[0060] 感知目标检测模块,输入点云,摄像头视频,车辆全局位置,输出目标位置,道路规则,道路指引;
[0061] 决策模块,输入道路指引,车辆全局位置,动态地图,静态地图,输出运行决策,车道规则,目标在动态地图址位置;
[0062] 规划模块,输入车辆全局位置,运行决策,车道规则,目标在动态地图址位置,道路指引,输出车辆可跟随的路径;
[0063] 车辆控制模块,输入车辆可跟随的路径,车辆当前控制传感器状态,输出车辆执行器控制命令。
[0064] 以上模块的控制及消息流根据数据域描述流程,亦在图4中示出。
[0065] 计算单元映射示例见图5。从功能模块到计算单元的映射基于对功能模块的计算要求,由于功能模块的分层实现,使得这样的映射能很好的支持多种异构芯片平台,参照图5中功能模块软件实现中硬件依赖层对不同芯片的驱动。
[0066] 由于计算单元分布式系统的冗余可以通过计算单元的物理冗余实现,示例见图6,也可以通过功能模块的软件系统容器复用实现,示例见图7。
[0067] 冗余设计中分布式管理系统模块产生激活状态信号,用以通告其他单元本单元的是否出现故障,还能否参与系统计算,通过使用激活信号状态分析,主调度单元能够准确知道系统各个计算单元是否可以用来分配计算任务。
[0068] 上述分布集中式自动驾驶系统的工作过程如下:
[0069] 1.定义功能模块
[0070] 系统功能模块描述采用标准XML(可扩展标记语言)格式,对每个功能模块接口,所需达到性能指标,完成功能,通信接口,依赖数据来源,使用系统总线类别。模块的静态描述决定了模块对系统其他部分的依赖关系,作为调度系统的被调度单元,在与其他子系统交互完成指定系统功能。功能模块的定义分为软件功能和硬件功能两部分。绝大多数模块功能的实现由软硬件协同完成。
[0071] 2.定义数据域
[0072] 数据域是从数据输入输出角度对功能模块的描述。突出用以支持完成指定功能模块的数据源种类及渠道,以及功能模块的数据产出,用以提供给系统中其他功能模块使用。
[0073] 各个功能模块之间的数据流交换必须在相应的数据域容量以内。数据域的物理承载表现形式为物理总线接口,例如,CAN总线,FlexRay,以太网等。
[0074] 3.定义控制及消息流
[0075] 客户/服务器模式和消息发布/订阅模式。客户/服务器模式的控制及消息流有明确的发送和接收方,根据预定的状态序列,完成模块之间的通信需求;发布/订阅模式的控制及消息流不需指定消息的接送方,而是所有订阅过感兴趣此类消息的模块都能够接受到发布方发布的消息或控制命令。
[0076] 4.计算单元映射
[0077] 参照数据域划分,通过对计算能力要求,性能指标的评估,将功能模块映射到选择的指定系统平台。这样的计算单元可能是单一SoC(系统芯片),或者是在同一个硬件PCB(印刷电路板)之上的多个SoCs组,或者是在多个硬件PCB组。这种映射可以基于策略,也可基于系统设计者经验,根据目前可以使用的系统整体资源,做出映射决策。
[0078] 5.功能模块实现
[0079] 功能模块的实现依据模块的静态定义和数据域定义(输入输出),分为硬件依赖层,硬件抽象层和独立软件层。独立软件层在硬件抽象层之上,实现与具体(映射后)计算单元硬件形态相对独立的软件功能实现,完成数据域内从输入到输出的转化;硬件依赖层很大程度上作为平台软件,需要针对不同硬件形态进行开发。功能模块的硬件依赖层与计算单元的映射有紧密联系。而独立软件层与硬件抽象层在很大程度上独立于计算单元映射。
[0080] 功能模块的物理实现形态表现为一到多个任务,这些任务独立或者协调运行在一个独立软件层容器Container当中。
[0081] 6.设计调度系统
[0082] 调度系统完成将多个计算任务在本计算单元的独立软件层中分配;计算单元之间的任务分配与协调将由分布在各个计算单元的调度系统协商完成。
[0083] 7.冗余设计
[0084] 分布集中式自动驾驶系统中的多个计算单元形成计算集群,集群中任何一个单元出现问题,将通过系统冗余设计,由状态良好,有计算容量的其他计算单元在无人干预的情况下自动切换代替。
[0085] 本发明为自动驾驶系统提供了分布集中式的思路与方法,具体实现该技术方案的方法和途径很多,以上仅是以示例的方式提供的优选实施方式。本领域技术人员可以在不偏离本发明的情况下想到许多更改、改变和替代。应当理解,在实践本发明的过程中可以采用对本文所描述的本发明实施方式的各种替代方案。所附权利要求旨在限定本发明的范围,并因此覆盖这些权利要求及其等效项的范围内的方法和结构。本实施例中未明确的各组成部分均可用现有技术加以实现。