一种基于模型基框架的自主无人系统软件自适应演化方法与流程

    专利2023-06-02  52



    1.本发明涉及一种基于模型基框架的自主无人系统软件自适应演化方法,属于无人系统软件体系结构。


    背景技术:

    2.aadl(architecture analysis and design language)是一种应用于嵌入式系统领域的体系结构建模语言,支持航空、航天、汽车等领域复杂实时的安全关键系统的设计与分析。aadl具有语法简单、功能强大、可扩展等优点,能够对嵌入式软件的功能和非功能属性进行建模与描述,在开发早期对系统进行分析与验证。aadl提供了标准化的文本和图形描述,是一个用以区分各类组件接口规范、组件实现蓝图以及组件实例之间的区别的组件基建模语言。组件由组件类型和组件实现两种方式描述。组件类型定义了组件与外界联系的接口,如特征、流应用、模式、属性等;组件实现定义了组件的内部结构,如子组件、连接、流等。使用aadl组件保存代码中的接口信息,使用端口可以表示接口的输入输出。引用自文献《feiler,peter h.,david p.gluch,and john j.hudak.the architecture analysis design language(aadl):an introduction.carnegie-mellon univ pittsburgh pa software engineering inst,2006.》。
    3.爬虫是一种按照一定的规则,自动地抓取网络上信息的程序或者脚本,可以在无人管理的情况下长期运行。
    4.antlr提供了源码到抽象语法树转换的流程工具,使用idea编辑器的antlr插件,可以将c++代码转换成可供访问的抽象语法树。
    5.aadl的输入输出端口无法表示接口的数据类型,并且源码的属性信息也会丢失。由工具转换得到的抽象语法树只有访问的权限,没有修改的权限。爬虫爬取的数据存在重复的情况。基于模型基的无人系统需要将以上技术结合起来,构成完整的工作流程,并且要能够实现框架成长与演化的长期问题。这些是本申请需要解决的问题。


    技术实现要素:

    6.本发明技术解决问题:克服现有技术的什么不足,提供一种基于模型基框架的自主无人系统软件自适应演化方法,整合了aadl、b/s架构、爬虫、antlr等技术,突破软件长期生存与演化的运行时支撑架构等关键问题,使系统能够动态适应资源变化的需求。
    7.本发明所采用的技术方案是:基于模型及框架的自主无人系统软件自适应演化方法包括以下步骤:
    8.步骤(1):使用服务器搭建基于模型基框架的自主无人系统,前端以网页的形式接收用户的请求,包括用户对测试项目的需求和用户对任务、资源、环境的需求,前端将需求送至网站后台;
    9.步骤(2):网站后台接收到请求后,将分析结果送至仿真测试平台,同时从资源库中调取aadl组件,结合已建模的无人系统,即aadl模型基框架,构建aadl文件,送至osate工
    具;
    10.步骤(3):仿真测试平台根据需求的分析结果,选择不同的任务、资源、环境,构建相应的仿真测试环境;
    11.步骤(4):osate工具将aadl文件转换成xml文件,调用xml解析器,将解析后的信息送至代码生成器;
    12.步骤(5):代码生成器根据解析信息,调用资源库中的源码文件和ros项目文件,结合代码生成器自动生成的代码,生成符合用户需求的项目,送至仿真测试平台,经过仿真测试,将项目和项目的测试结果送至网站前端,供用户下载;
    13.步骤(6):网站后台调用爬虫,爬取框架中可替换的核心算法,基于aadl模型基框架进行分析和处理,处理后的结果送至网站的资源库中保存;
    14.步骤(7):步骤(6)和步骤(2)~(5)互不影响,网站后台并行处理以上各个步骤的任务。
    15.在所述步骤(2)中,无人系统软件使用aadl进行建模,作为成长演化的模型基,模型基是组成系统框架的基础,系统框架的成长性包括但不限于,针对其中可更替的核心算法进行替换、针对软件更新系统框架、扩充资源库等。
    16.在所述步骤(2)中,aadl模型基框架使用进程组件对ros项目进行建模,使用aadl自定义属性,添加对项目的描述,包括项目源码路径、项目的测试结果、测试时的任务资源环境;使用线程对函数进行建模,使用aadl自定义属性,添加对函数的描述,包括函数源码路径、函数的返回值、返回值类型;使用端口对函数的输入输出进行建模,使用aadl的自定义属性添加对模型基的描述,包括输入输出的数据类型。
    17.在所述步骤(6)中,爬虫由输入的关键词进行搜索和爬取,其功能包括,调用github提供的爬虫接口爬取单个cpp文件;解析github网页的html文件爬取整个项目。
    18.在所述步骤(6)中,代码的分析与处理功能,使用antlr工具链将待分析源码转换成抽象语法树;将antlr提供的抽象语法树转换成自定义的、可操作的树结构;利用抽象语法树分析源码,包括:提取源码中接口信息,将接口信息和源码属性保存在aadl组件中;通过比较不同源码的抽象语法树相似度,删去重复爬取的内容。
    19.本发明的有益效果是,使用服务器结合多种技术,借助aadl建模语言构建了基于模型基框架的无人软件系统,与传统技术相比,有效地提高ros系统中源码的组件级重用性,解决了现有的ros项目包寿命短(与ros版本寿命相对应)的问题,为长时间尺度上框架的成长与演化提供了支撑架构,解决了无人软件系统长期的支持与发展问题。
    附图说明
    20.图1为本发明方法的示意图;
    21.图2为基于aadl系统架构的图形界面;
    22.图3为aadl组件到ros项目的流程图;
    23.图4为仿真测试平台的示意图;
    24.图5为从爬虫到aadl组件的流程图。
    具体实施方式
    25.为使本发明更加容易理解,结合一个实例对本发明作进一步阐述,但该实施例不构成对本发明的任何限制。
    26.如图1所示:本发明具体实施步骤如下:
    27.步骤(1):使用服务器搭建基于模型基框架的自主无人系统,前端以网页的形式接收用户的请求,包括用户对测试项目的需求和用户对任务、资源、环境的需求。用户自定义需求,可以针对任务、资源、环境中的一项或者多项任务进行选择。
    28.前端将需求送至网站后台,网站后台根据需求,自动选择合适的模型基框架,并构建相应的仿真测试环境。
    29.步骤(2):网站后台接收到请求后,同时从资源库中调取aadl组件,结合已建模的无人系统,即aadl模型基框架,构建aadl文件,送至osate工具;
    30.基于模型基的框架使用不同组件表示不同对象,包括:aadl模型基框架使用进程组件对ros项目进行建模,使用aadl自定义属性,添加对项目的描述,包括项目源码路径、项目的测试结果、测试时的任务资源环境;使用线程对函数进行建模,使用aadl自定义属性,添加对函数的描述,包括函数源码路径、函数的返回值、返回值类型;使用端口对函数的输入输出进行建模,使用aadl的自定义属性添加对模型基的描述,包括输入输出的数据类型。通过osate进行图形化建模(通过拖图方式),可以根据搭建好的框架导出基于aadl语言表述的代码,图形化表示如图2所示,最外层的system1.impl为整个系统框架,用来包含线程和进程组件。其中的实线框为进程组件,包括amcl、move_base、map_server。进程组件可包含线程组件,如图中的move_base,其中的虚线框为线程组件,包括global_planner、local_planner、global_costmap、local_costmap、recovery_behaviors。黑色箭头代表数据的流通方向,连线表示各个组件间的数据流通关系。有模型基框架的情况下,通过挑选框架中组件,即库中的aadl组件文件,即可组合成符合框架的aadl文件。
    31.步骤(3):仿真测试平台根据需求的分析结果,选择不同的任务、资源、环境,包括不同的地图环境、不同的测试脚本、时间资源、路径长度资源等,以此构建相应的仿真测试环境。针对不同的任务要求,网站从库中选取测试脚本;针对不同的资源要求,网站以资源约束为目标来评价测试结果,使得软件的性能符合资源约束;针对不同的环境,网站更替仿真测试地图,根据不同软件项目在测试地图上的测试结果,给用户返还项目。
    32.步骤(4):通过osate工具将aadl文件转换成xml文件,调用xml解析器,将解析后的信息送至代码生成器;
    33.步骤(5):代码生成器根据解析信息,调用资源库中的源码文件和ros项目文件,结合代码生成器自动生成的代码,生成符合用户需求的项目。如图3所示,通过组合已有的aadl组件,得到aadl文件,通过osate工具,将aadl文件转换成xml文件,经过解析器和代码生成器的处理,生成可在ros系统下编译运行的项目文件,包括源码(source code)和ros项目文件:编译文件cmakelist、头文件、项目描述文件package.xml。
    34.之后启动仿真测试平台,如图4所示,经过仿真测试,仿真测试平台编译项目,调用任务发布脚本,向无人设备发送任务;选择地图环境,通过rviz软件可视化无人设备的运行情况;测试结束后,分析测试结果与资源约束的要求。同时将项目和项目的测试结果送至网站前端和模型基框架中,送至模型基框架的信息保存在aadl组件中,作为历史经验加入到
    框架中,供推荐算法与需求分析算法,拥有历史经验的模型基框架具有成长性,也避免了重复测试带来的资源浪费;送至网站前端的项目供用户分析和下载;
    35.步骤(6):网站后台调用爬虫,爬取框架中可替换的核心算法,基于aadl模型基框架进行分析和处理,处理后的结果送至网站的资源库中保存;
    36.如图5所示,爬虫爬取代码文件(.cpp)和项目文件(.zip),之后经过idea的antlr插件,将爬取下来的文件和库中文件转换成抽象语法树。通过比较抽象语法树,判断爬取下来的文件和库中的文件是否相似,如果相似度超过一定阈值则删去爬取下来的文件,如果没有超过阈值,则将爬取下来的文件与不同类别的库文件进行比较,得到爬取文件与不同类别文件的相似度,将其归类于相似度最高的那一类文件。之后从抽象语法树中提取接口信息,包括函数名称、输入输出、返回值、源码路径等,生成aadl组件,保存在资源库中。爬虫爬取两种不同类型的代码文件,第一种(.cpp)通过调用github的接口,根据关键词爬取相关的代码文件。第二种(.zip)通过解析github网页的html,根据关键词,爬取整个项目文件。
    37.步骤(7):步骤(6)和步骤(2)~(5)互不影响,网站后台并行处理以上各个步骤的任务。用户的请求都是根据已有的库文件进行代码生成,不会受到爬虫和框架更新的影响。爬虫定时运行,不断搜索框架中的可替换算法,同时系统框架也可以进行更新,给用户提供更多的选择。

    技术特征:
    1.一种基于模型基框架的自主无人系统软件自适应演化方法,其特征在于,步骤如下:步骤(1):使用服务器搭建基于模型基框架的自主无人系统,前端以网页的形式接收用户的请求,包括用户对测试项目的需求和用户对任务、资源、环境的需求,前端将需求送至网站后台;步骤(2):网站后台接收到请求后,将分析结果送至仿真测试平台,同时从资源库中调取aadl组件,结合已建模的无人系统,即aadl模型基框架,构建aadl文件,送至osate工具;步骤(3):仿真测试平台根据需求的分析结果,选择不同的任务、资源、环境,构建相应的仿真测试环境;步骤(4):osate工具将aadl文件转换成xml文件,调用xml解析器,将解析后的信息送至代码生成器;步骤(5):代码生成器根据解析信息,调用资源库中的源码文件和ros项目文件,结合代码生成器自动生成的代码,生成符合用户需求的项目,送至仿真测试平台,经过仿真测试,将项目和项目的测试结果送至网站前端,供用户下载;步骤(6):网站后台调用爬虫,爬取框架中可替换的核心算法,基于aadl模型基框架进行分析和处理,处理后的结果送至网站的资源库中保存;步骤(7):步骤(6)和步骤(2)~(5)互不影响,网站后台并行处理以上各个步骤的任务。2.根据权利要求1所述的基于模型基框架的自主无人系统软件自适应演化方法,其特征在于,在所述步骤2中,无人系统软件使用aadl进行建模,作为成长演化的模型基,模型基是组成系统框架的基础,系统框架的成长性包括但不限于,针对其中可更替的核心算法进行替换、针对软件更新系统框架、扩充资源库。3.根据权利要求1所述的基于模型基框架的自主无人系统软件自适应演化方法,其特征在于,在所述步骤(2)中,aadl模型基框架使用进程组件对ros项目进行建模,使用aadl自定义属性,添加对项目的描述,包括项目源码路径、项目的测试结果、测试时的任务资源环境;使用线程对函数进行建模,使用aadl自定义属性,添加对函数的描述,包括函数源码路径、函数的返回值、返回值类型;使用端口对函数的输入输出进行建模,使用aadl的自定义属性添加对模型基的描述,包括输入输出的数据类型。4.根据权利要求1或2所述的基于模型基框架的自主无人系统软件自适应演化方法,其特征在于,所述步骤(6)中,爬虫由输入的关键词进行搜索和爬取,其功能包括,调用github提供的爬虫接口爬取单个cpp文件;解析github网页的html文件爬取整个项目。5.根据权利要求1所述的基于模型基框架的自主无人系统软件自适应演化方法,其特征在于,步骤(6)中,代码的分析与处理功能,使用antlr工具链将待分析源码转换成抽象语法树;将antlr提供的抽象语法树转换成自定义的、可操作的树结构;利用抽象语法树分析源码,包括:提取源码中接口信息,将接口信息和源码属性保存在aadl组件中;通过比较不同源码的抽象语法树相似度,删去重复爬取的内容。
    技术总结
    本发明公开了一种基于模型基框架的自主无人系统软件自适应演化方法,使用服务器搭建基于模型基框架的自主无人系统,将AADL架构、爬虫以及ANTLR工具链结合起来,构建了完整的工作流程。利用AADL语言现有的线程、进程等构件的表示方法对ROS节点及navigation功能模块进行描述,搭建相应框架,设计了代码生成软件,结合AADL文件与OSATE工具,根据框架直接生成代码,可在ROS环境下编译运行。利用爬虫在服务器上定时运行,不断扩充框架中的算法种类,结合AADL已有的基础文件,与新增的功能模块共同构建系统模型,解决框架长期生长的问题。使用ANTLR工具链,实现代码分析功能,解决框架开发以及框架与外界交互的技术难题。以及框架与外界交互的技术难题。以及框架与外界交互的技术难题。


    技术研发人员:丁嵘
    受保护的技术使用者:北京航空航天大学
    技术研发日:2020.12.11
    技术公布日:2021/3/9

    转载请注明原文地址:https://wp.8miu.com/read-64540.html

    最新回复(0)