System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机,尤其涉及一种车辆行为树代码的自动生成方法和装置。
技术介绍
1、相关技术中,在汽车软件开发过程中,经常需要处理各种状态的切换,一般情况下,使用if...else if...或者switch case处理各种状态的切换。但是在遇到一些比较复杂的逻辑,需要很多的状态,并且有一些状态还要处理一些复杂的逻辑,这个时候再用if...else if...或者switch case的方法就会严重影响后期的维护。有限状态机就是为了解决这种多状态切换的一种数学模型。
2、有限状态机(fsm)在许多不同情况下用于对复杂实体状态进行建模。一个简单的有限状态机如图1所示,实体可以从一种状态转换到另一种状态,也可以保持当前状态。箭头表示过渡。过渡发生的条件需要编码到fsm本身中。
3、现有技术中,在ros1中的move_base就是基于状态机的。基于状态机的实现方式,状态与执行内容是绑定在一起的。当执行内容需要在多个状态中执行时,各个状态下都是需要放置执行内容的逻辑。当业务逻辑代码分散在各处时就不太好维护了,特别是对于复杂的机器人系统。
4、另一种比较常见的组织机器人行为的方式是行为树。行为树是树状的结构,它的逻辑流程是由xml文件描述的。行为树本身并不具体实现具体的执行内容,它只负责将执行内容进行编排。以navigation2为例,具体的执行内容实现是放在各个server中的。行为树上的节点与server进行通信,请求具体的执行内容,然后获得反馈。根据反馈结果又可以请求另外的执行内容。这些不同的执行
5、自动驾驶系统应用程序的功能逻辑流程,可以使用状态机或分层状态机,但是考虑到状态机的状态转换与条件判断很多情况下都是使用hardcode的方式进行实现的,后期对逻辑的修改与整合并不是非常方便。
6、使用车辆行为树的方式,可以在逻辑上做到与状态机对等,并且具有状态机不具备的运行时加载与较为方便的可视化编程方式。
7、如图2所示,车辆行为树(behavior tree)是一种树形结构的图,有根节点,有分支,而且子节点个数可以任意,当要决策当前某个实体要做什么样的行为时,就会自顶向下的,通过一些条件来搜索这棵树,最终确定需要做的行为(叶节点),并且执行它,这就是行为树的基本原理。
8、现有技术中,车辆行为树开源库为behaviortree.cpp,该开源库采用c++编写,车辆行为树的逻辑可以由xml文件以配置文件的方式加载,用户自定义叶子节点也可以动态加载,具有相当强大的灵活性,并且提供了图形化编辑工具groot。
9、综合分析该
的发展状况,在汽车软件开发过程中使用车辆行为树(behavior tree),目前存在如下问题:
10、问题1、研发工程师需要开发一个behavior tree xml文件,用于描述车辆行为树的逻辑,即对执行内容进行编排,xml文件一般手动编辑,编辑过程繁琐耗时;
11、问题2、研发工程师需要开发c++文件,用于加载behavior tree xml文件,并且负责具体执行内容的实现,c++文件也是手动开发编辑,开发过程繁琐耗时。
技术实现思路
1、为克服相关技术中存在的问题,本公开提供一种车辆行为树代码的自动生成方法和装置。
2、根据本公开实施例的第一方面,提供一种车辆行为树代码的自动生成方法,包括:获取用户组建的车辆行为树结构图,将所述车辆行为树结构图转化为前端数据模型;
3、根据所述前端数据模型自动生成对车辆行为树的执行内容进行编排的xml文件和实现所述执行内容的车辆行为树代码文件;
4、根据所述xml文件通过所述车辆行为树代码文件对所述执行内容依次执行,实现车辆行为的控制。
5、根据本公开实施例的第二方面,提供一种车辆行为树代码的自动生成装置,包括:
6、转化模块,用于获取用户组建的车辆行为树结构图,将所述车辆行为树结构图转化为前端数据模型;
7、生成模块,用于根据所述前端数据模型自动生成对车辆行为树的执行内容进行编排的xml文件和实现所述执行内容的车辆行为树代码文件;
8、执行模块,用于根据所述xml文件通过所述车辆行为树代码文件对所述执行内容依次执行,实现车辆行为的控制。
9、根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本公开第一方面所提供的车辆行为树代码的自动生成方法。
10、根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的车辆行为树代码的自动生成方法的步骤。
11、根据本公开实施例的第五方面,提供一种车辆,存储有一组指令集,所述指令集被所述车辆执行,以实现本公开第一方面所提供的车辆行为树代码的自动生成方法。
12、本公开的实施例提供的技术方案可以包括以下有益效果:本专利技术实施例提供了基于web工具的车辆行为树编辑工具,用于描述车辆行为树,通过解析前端数据模型,生成车辆行为树xml文件和c++文件,即完成车辆行为树框架代码的自动生成。解决了现有技术中behavior tree xml文件和c++源码文件需要手动编辑的问题,可以方便地和灵活地针对车辆行为树进行描述,根据前端数据模型自动地生成车辆行为树的框架代码,降低了汽车软件中使用车辆行为树的技术门槛,提高了工作效率。
13、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
本文档来自技高网...【技术保护点】
1.一种车辆行为树代码的自动生成方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述获取用户组建的车辆行为树结构图,将所述车辆行为树结构图转化为前端数据模型包括:
3.根据权利要求1所述的方法,其特征在于,根据所述前端数据模型自动生成对车辆行为树的执行内容进行编排的XML文件和实现所述执行内容的车辆行为树代码文件具体包括:
4.根据权利要求3所述的方法,其特征在于,
5.根据权利要求1所述的方法,其特征在于,所述根据所述XML文件通过所述车辆行为树代码文件对所述执行内容依次执行,实现车辆行为的控制具体包括:
6.根据权利要求1所述的方法,其特征在于,
7.一种车辆行为树代码的自动生成装置,其特征在于,包括:
8.一种电子设备,其特征在于,包括:
9.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时,以实现所述权利要求1-6中任一所述的车辆行为树代码的自动生成方法的步骤。
10.一种车辆,其特征在于,
【技术特征摘要】
1.一种车辆行为树代码的自动生成方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述获取用户组建的车辆行为树结构图,将所述车辆行为树结构图转化为前端数据模型包括:
3.根据权利要求1所述的方法,其特征在于,根据所述前端数据模型自动生成对车辆行为树的执行内容进行编排的xml文件和实现所述执行内容的车辆行为树代码文件具体包括:
4.根据权利要求3所述的方法,其特征在于,
5.根据权利要求1所述的方法,其特征在于,所述根据...
【专利技术属性】
技术研发人员:熊磊,许倜,陈永波,
申请(专利权)人:国科础石重庆软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。