CN111596915B - 基于状态机图的无人机飞行模式的c++代码生成方法 - Google Patents
基于状态机图的无人机飞行模式的c++代码生成方法 Download PDFInfo
- Publication number
- CN111596915B CN111596915B CN202010425423.3A CN202010425423A CN111596915B CN 111596915 B CN111596915 B CN 111596915B CN 202010425423 A CN202010425423 A CN 202010425423A CN 111596915 B CN111596915 B CN 111596915B
- Authority
- CN
- China
- Prior art keywords
- state
- xmi
- name
- unmanned aerial
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000010586 diagram Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 title claims abstract description 41
- RZVHIXYEVGDQDX-UHFFFAOYSA-N 9,10-anthraquinone Chemical compound C1=CC=C2C(=O)C3=CC=CC=C3C(=O)C2=C1 RZVHIXYEVGDQDX-UHFFFAOYSA-N 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims abstract description 16
- 238000006243 chemical reaction Methods 0.000 claims abstract description 5
- 239000002131 composite material Substances 0.000 claims description 108
- 230000006870 function Effects 0.000 claims description 81
- 230000006399 behavior Effects 0.000 claims description 50
- 230000007704 transition Effects 0.000 claims description 30
- 230000008054 signal transmission Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 238000009472 formulation Methods 0.000 claims description 2
- 239000000203 mixture Substances 0.000 claims description 2
- 239000011800 void material Substances 0.000 description 31
- 238000011161 development Methods 0.000 description 11
- 238000011105 stabilization Methods 0.000 description 8
- 150000001875 compounds Chemical class 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/08—Control of attitude, i.e. control of roll, pitch, or yaw
- G05D1/0808—Control of attitude, i.e. control of roll, pitch, or yaw specially adapted for aircraft
- G05D1/0816—Control of attitude, i.e. control of roll, pitch, or yaw specially adapted for aircraft to ensure stability
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/10—Simultaneous control of position or course in three dimensions
- G05D1/101—Simultaneous control of position or course in three dimensions specially adapted for aircraft
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Aviation & Aerospace Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Navigation (AREA)
Abstract
本发明提出了一种基于状态机图的无人机飞行模式的C++代码生成方法,用于解决现有技术中存在的代码生成方法不贴合于无人机平台,缺少代码转换方法,导致生成无人机代码的效率不高,生成代码的质量不足的问题。实现步骤为:制定无人机飞行控制系统各飞行模式的工作流程;构建无人机的框架SysML状态机图;基于框架SysML状态机图构建飞行模式mi的子SysML状态机图;获取每个飞行模式mi的XMI文件;制定层次性代码生成规则;基于层次性代码生成规则,获取无人机飞行控制系统的C++代码。
Description
技术领域
本发明涉及软件开发领域,特别是涉及一种基于SysML状态机图的嵌入式系统软件的C++代码生成方法。
背景技术
嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求功能、可靠性、成本、体积、功耗、环境等灵活裁剪软硬件模块的专用计算机系统,由于存储空间有限,因而要求软件代码紧凑、可靠,且对实时性有严格要求。目前,在嵌入式系统开发过程中使用的语言种类有很多,但仅有少数的几种语言得到了比较广泛的应用,主要有Ada、C/C++等。由于C++语言既具有汇编语言的效率,又具有高级语言的易编程性,所以是目前使用最广泛的嵌入式系统编程语言。一个优秀的C++代码程序逻辑应该是清晰的,这可以让漏洞难以隐藏,开发周期短并且高度模块化,易于扩展和维护。
现有的C++代码生成方法分为使用文档开发和使用模型驱动开发两种,其中模型驱动开发,其基本思想是让开发中心从编程转移到高级别抽象中去,通过模型转成代码或其他构件来驱动部分或全部的自动化开发。模型驱动拥有开发快、降低成本、提高质量、可维护性高、可重用性好等优点,拥有很好的发展前景。但是如何建立一个贴合设计对象的模型是使用模型驱动开发中要首先考虑的问题。
无人机的飞行控制系统就是一个典型的嵌入式系统,而无人机飞行模式就是飞行控制系统的核心。根据需求的不同,飞行模式分为依赖全球卫星定位系统的模式:Auto、Circle、Drift、Follow Me、Guided、Loiter、PosHold、RTL和Throw模式;不依赖全球卫星定位系统的模式:Acro、Alt Hold、Land、Sport和Stabilize模式。
随着无人机的各项功能趋于完善,无人机飞行控制系统飞行模式作为一种实时控制系统,其复杂性也日益增加,这使得系统建模成为一项巨大的挑战。对于大多数系统,建模必须同时考虑连续时间和离散事件,而创建一个允许这两个因素之间同步和交互的验证环境就成了阻碍飞行控制系统发展的一大障碍。
申请公布号为CN 105242914 A,名称为“基于模型驱动生成代码的方法及系统”c++的专利申请,公开了一种基于模型驱动生成代码的方法及系统,该专利的系统在数据模型层由数据库模型、模型架构以及代码模板三部分构成,在代码生成的过程中,由模型分析模块从数据库模型及操作模型中获取有编程人员所指定的模型对象,通过模板引擎根据这些对象调用对应的代码模板,最后,代码生成器负责清理这些模型对象之间的关系,并根据模板引擎产生最终的基于对象的代码。该发明使用的一种基于模型驱动生成代码的方法及系统积极性的代码生成模式,具有双向推导的代码生成机制,具有插件式的代码生成架构,有效提高了代码的效率和质量,但因为只提出了使用模型驱动生成C++代码的一般流程,不贴合无人机平台;对于使用何种图来进行模型驱动没有进行约束,缺少标准化设计流程;缺少详细的代码转换方法,需要设计者自行设计。这些都导致生成无人机代码的效率不高,生成代码的质量不足。
发明内容
本发明的目的在于克服上述现有技术存在的不足,提出了一种基于状态机图的无人机飞行模式的C++代码生成方法,用于解决现有技术中存在的代码生成方法不贴合无人机平台,缺少标准化设计流程,缺少详细的代码转换方法的问题。
为实现上述目的,本发明采取的技术方案包括如下步骤:
(1)制定无人机飞行控制系统各飞行模式的工作流程:
(1a)根据无人机的不同任务需求,将无人机飞行控制系统的n个飞行模式划分为全球卫星导航定位系统飞行模式子集合M1和非全球卫星导航定位系统飞行模式子集合M2,其中M1中至少包含自动模式,M2中至少包含降落模式,并将M1和M2合并为无人机飞行控制系统飞行模式集合M,M={m1,m2,...,mi,...,mn},其中mi表示第i个飞行模式,1≤i≤n,n≥2,且M1∪M2=M,
(1b)将每个飞行模式mi划分为数据获取模块、功能模块和控制信号传输模块,并根据每个飞行模式mi的任务需求制定mi所划分的三个模块的工作流程;
(2)构建无人机的框架SysML状态机图:
构建包括多个状态和各状态之间迁移的无人机框架SysML状态机图,多个状态包括初始化状态、结束状态、下降状态、数据获取复合状态、调库复合状态、模式复合状态以及控制复合状态,其中:
初始化状态,用于对待生成的C++代码内部变量进行定义,该状态中的行为执行结束后无人机迁移至数据获取复合状态;
结束状态,用于结束C++代码;
下降状态,用于调用设定的下降函数完成无人机下降,该状态中的行为执行结束后迁移至结束状态;
数据获取复合状态,包括连接伪状态和自写子状态,其中连接伪状态用于对从其他状态迁移至数据获取复合状态的事件进行判断,若需要调用代码库则迁移至调库复合状态中的传感库子状态,否则迁移至自写子状态;自写子状态用于代码设计人员手动编写数据获取C++代码以获取俯仰角、横滚角、偏航角速度、高度、油门和当前位置,当油门最低、升降速度小于预定值并且高度不超过预定值时,迁移至结束状态,该状态中的行为执行结束后迁移至模式复合状态的连接伪状态;
调库复合状态,包括传感库子状态、核心库子状态、功能库子状态和接口库子状态;传感库子状态用于调用传感器代码库中的函数,以获取无人机姿态数据,该状态中的行为执行结束后迁移至数据获取复合状态中的自写子状态;核心库子状态用于调用帮助快速完成无人机飞行控制系统的计算工作代码库中的函数,该状态中的中的行为执行结束后转换至功能库子状态;功能库子状态用于调用快速完成无人机飞行模式mi的相应功能的代码库中的函数,该状态中的行为执行结束后迁移至模式复合状态的连接伪状态;接口库子状态用于使用无人机接口代码库中的函数以获得硬件接口,该状态中的行为执行结束后转换至控制复合状态中的位置管理器子状态;
模式复合状态,包括连接伪状态、卫星导航子状态和非卫星导航子状态;连接伪状态用于对从其他状态迁移至模式复合状态的事件进行判断,若需要全球卫星导航系统辅助飞行的迁移至卫星导航子状态,否则迁移至非卫星导航子状态;卫星导航子状态用于使用调库复合状态中的传感库子状态得到的数据和数据获取复合状态中的自写子状态得到的目标点位置数据,如果通过全球卫星导航系统得到的位置信息和当前位置吻合则意味着到达目标位置,迁移至下降状态,否则迁移至调库复合状态中的接口库子状态,如果在卫星导航子状态中检测到飞行员发出了操作信号就转换至非卫星导航子状态;非卫星导航子状态用于接收飞行员操作,再通过使用已有库函数计算得到的数据或根据不同模式需求手写函数计算得到的目标点位置数据,该状态中的行为执行结束后迁移至调库复合状态中的接口库子状态;
控制复合状态,包括位置控制器子状态、姿态控制器子状态和数据发送子状态;位置控制器子状态用于获取无人机竖直方向数据,该状态中的行为执行结束后结束后迁移至姿态控制器子状态;姿态控制器子状态用于期望数据调用库函数或自写函数的接口改变无人机姿态,该状态中的行为执行结束后转换至数据发送子状态;数据发送子状态用于向无人机操作员发送结果数据,该状态中的行为执行结束后转换至数据获取复合状态中的连接伪状态;
(3)基于框架SysML状态机图构建飞行模式mi的子SysML状态机图:
根据每个飞行模式mi中三个模块的工作流程为框架SysML状态机图中的每个子状态添加行为和事件,得到与n个飞行模式对应的n个子SysML状态机图T={t1,t2,...,ti,...,tn};
(4)获取每个飞行模式mi的XMI文件:
通过papyrus软件,将每个飞行模式mi对应的子SysML状态机图ti转化为XMI文件X={x1,x2,...,xi,...,xn};
(5)制定层次性代码生成规则:
(5a)制定层次性代码生成规则的第一层代码生成规则:
(5a1)对XMI文件xi逐行查找以<packagedElement name="name*">中name*命名一个接口类,作为外界访问此状态机图的接口,在该接口类中定义各个状态的state变量,接口类的初始化函数中包括各个状态机图中的状态的state变量初始化,以及接口类state的默认定义用来确定初始状态,其次该类中包括状态机图中所有<transition xmi:type="uml:Transition"xmi:id="*"name="*"source="*"target="*"/>事件的定义;
(5a2)建立一个以<packagedElement name="name*">中name*加state命名的用于接口类访问内部状态的具体接口的抽象类,此抽象类中包含(5a1)定义的接口类的变量context,抽象类的初始化函数的形参为(5a1)定义接口类变量,以d命名,在该初始化函数内部定义context=d,在该抽象类中包含ti中所有事件的声明,事件具体的实现由继承于该抽象类的子类来完成;
(5a3)在(5a1)定义的接口类中加入一个由(5a2)定义的抽象类state变量,用来记录当前状态图所处的状态;
(5b)制定层次性代码生成规则的第二层代码生成规则:
(5b1)对XMI文件xi逐行查找,xi中每一<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>作为简单状态,将xi每一<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>之中有<region xmi:type="uml:Region"xmi:id=""name=""></region>且“region”中有至少一个<subvertex xmi:type="uml:State"xmi:id=""name=""/>或<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>作为复合状态,复合状态分为顺序复合状态和并发复合状态,在复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中只有一个<region xmi:type="uml:Region"xmi:id="*"name="*"></region>作为顺序复合状态,在复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中有两个及以上<regionxmi:type="uml:Region"xmi:id="*"name="*"></region>作为并发复合状态处理;
(5b2)简单状态和复合状态均建立为C++类,以<subvertex xmi:type="uml:State"xmi:id="*"name="name*"></subvertex>中name*为此类命名,继承自第一层代码生成规则的抽象类;
(5b3)顺序复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>内部的每一个<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>或<subvertex xmi:type="uml:State"xmi:id=""name="name*"/>建立为一个C++类,类名为name*,这个类继承自外部的顺序复合状态类;
(5b4)并发复合状态的每个<region xmi:type="uml:Region"xmi:id="*"name="name*"></region>单独生成一个抽象类作为访问其内部子状态<subvertex xmi:type="uml:State"xmi:id=""name="name*"/>或<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>的接口,类名为name*,其<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中所有的<connectionPoint xmi:type="uml:Pseudostate"xmi:id=""name="name*"kind=""/>和<transition xmi:type="uml:Transition"xmi:id=""name="name*"source=""target=""/>转换为以name*为函数名的函数定义在此抽象类中,每个内部子状态类继承自其所属<region xmi:type="uml:Region"xmi:id="*"name="name*"></region>的抽象类;
(5b5)每个<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>状态中的<connectionPoint xmi:type="uml:Pseudostate"xmi:id=""name="name*"kind=""/>,将其定义为此状态类中的函数,函数名为name*,其中when行为转化为if函数来实现;
(5b6)使用<transition xmi:type="uml:Transition"xmi:id=""source=""target=""><trigger xmi:type="uml:Trigger"xmi:id=""name=""event="id*"/></transition>中的id*逐行查找XMI文件xi,通过source和target分别确定事件的来源和目标,将<packagedElement xmi:type="uml:ChangeEvent"xmi:id="id*"name=""><changeExpression xmi:type="uml:type*"xmi:id=""name="name*"/>定义为来源状态的类中的函数,以name*为函数名;
(5b7)<subvertex xmi:type="uml:Pseudostate"xmi:id=""name=""kind="junction"/>为伪状态,逐行查找XMI文件xi当目标状态为伪状态时,在来源状态生成的类中通过对伪状态的转换条件进行判断来进行状态迁移;
(6)基于层次性代码生成规则,获取无人机飞行控制系统的C++代码:
(6a)根据第一层代码生成规则对XMI文件xi进行提取,得到接口类代码以及以抽象类代码;
(6b)根据第二层代码生成规则对XMI文件xi进行提取,得到包括实现行为的函数的状态的代码;
(6c)将步骤(6a)和(6b)生成的代码进行合并,得到飞行模式mi的C++代码,并将所有飞行模式的代码合并得到无人机飞行控制系统的C++代码。
本发明与现有技术相比,具有如下优点:
1、本发明采用了构建无人机的框架SysML状态机图对无人机飞行控制系统的飞行模式进行建模,提出了框架SysML状态机图作为无人机飞行控制系统飞行模式的设计模板,简化飞控系统飞行模式的设计流程,使代码生成方法更加贴近于无人机平台,缩短无人机代码设计周期,提高了生成代码的效率。
2、本发明制定层次性代码生成规则,由SysML状态机图直接转换为代码,减少代码错误,提高代码的质量。
附图说明
图1是本发明的实现流程图。
图2是本发明构建的无人机的框架SysML状态机图。
具体实施方式
以下结合附图和具体实施例,对本发明作进一步详细说明:
参照图1,本发明包括如下步骤:
步骤1)制定无人机飞行控制系统飞行模式的工作流程:
(1a)构建一个只有三种飞行模式的简易无人机飞行控制系统,这三种飞行模式分别为自动模式、降落模式和自稳模式,无人机为完成所设定的任务目标需要使用的功能不同,根据这些的不同任务需求,将无人机飞行控制系统的这3个飞行模式划分为需要全球卫星导航定位系统才能运行的飞行模式子集合M1和不需要全球卫星导航定位系统就可运行的飞行模式子集合M2,其中M1中包含自动模式,M2中包含降落模式和自稳模式,并将M1和M2合并为无人机飞行控制系统飞行模式集合M,M={m1,m2,...,mi,...,mn},其中mi表示第i个飞行模式,1≤i≤n,n=3,且M1∪M2=M,
(1b)将自稳模式划分为数据获取模块、功能模块和控制信号传输模块,数据获取模块的工作流程包括获取无人机操作员的输入和无人机当前姿态信息;功能模块的工作流程包括将无人机操作员输入转换为倾斜角度、计算的到飞行员期望的偏航角速度、计算得到无人机操作员想要的油门大小;控制信号传输模块的工作流程包括输出无人机操作员期望油门至姿态控制器以及返回执行完成信号与无人机操作员;
将降落模式划分为数据获取模块、功能模块和控制信号传输模块,数据获取模块的工作流程包括获取垂直方向速度、获取加速度、获取当前位置和获取当前速度;功能模块的工作流程包括对飞行员输入应用简单模式转换、计算得到无人机操作员期望的倾斜角度以及计算得到无人机操作员期望的偏航角速度;控制信号传输模块的工作流程包括将电机设置为全量程以及呼叫姿态控制器;
将自动模式划分为数据获取模块、功能模块和控制信号传输模块,数据获取模块的工作流程包括获取当前位置、获取高度目标、设定航路点控制器目标和获取最小导航距离;功能模块的工作流程包括起飞、航路点、降落、返程、圆点、样条和NAV导航七个功能,其中起飞功能包括设定水平目标、获取高度目标和设定航路点控制器目标,航路点功能为向航路点控制器发送目标,降落功能包括将目标设置为停止点以及呼叫位置特定的陆地启动功能,返航功能包括将起飞位置设定为目标位置以及调用导航模式,圆点功能包括设定圆心位置、设置圆半径以及设定移动条件,样条功能为获得路径以及调用NAV导航,NAV导航功能为调用导航模式接管无人机;功能模块中七个功能对应的控制信号传输模块的工作流程都包括运行航路点控制器、呼叫位置控制器、呼叫姿态控制器以及返回执行完成信号与无人机操作员。
步骤2)构建无人机的框架SysML状态机图,其结构如图2所示;
构建包括多个状态和各状态之间迁移的无人机框架SysML状态机图,多个状态包括初始化状态、结束状态、下降状态、数据获取复合状态、调库复合状态、模式复合状态以及控制复合状态,其中:
初始化状态,用于对待生成的C++代码内部变量进行定义,该状态中的行为执行结束后无人机迁移至数据获取复合状态;
结束状态,用于结束C++代码;
下降状态,用于调用设定的下降函数完成无人机下降,该状态中的行为执行结束后迁移至结束状态;
数据获取复合状态,包括连接伪状态和自写子状态,其中连接伪状态用于对从其他状态迁移至数据获取复合状态的事件进行判断,若需要调用代码库则迁移至调库复合状态中的传感库子状态,否则迁移至自写子状态;自写子状态用于代码设计人员手动编写数据获取C++代码以获取俯仰角、横滚角、偏航角速度、高度、油门和当前位置,当油门最低、升降速度小于预定值并且高度不超过预定值时,迁移至结束状态,该状态中的行为执行结束后迁移至模式复合状态的连接伪状态;
调库复合状态,包括传感库子状态、核心库子状态、功能库子状态和接口库子状态;传感库子状态用于调用传感器代码库中的函数,以获取无人机姿态数据,该状态中的行为执行结束后迁移至数据获取复合状态中的自写子状态;核心库子状态用于调用帮助快速完成无人机飞行控制系统的计算工作代码库中的函数,该状态中的中的行为执行结束后转换至功能库子状态;功能库子状态用于调用快速完成无人机飞行模式mi的相应功能的代码库中的函数,该状态中的行为执行结束后迁移至模式复合状态的连接伪状态;接口库子状态用于使用无人机接口代码库中的函数以获得硬件接口,该状态中的行为执行结束后转换至控制复合状态中的位置管理器子状态;
模式复合状态,包括连接伪状态、卫星导航子状态和非卫星导航子状态;连接伪状态用于对从其他状态迁移至模式复合状态的事件进行判断,若需要全球卫星导航系统辅助飞行的迁移至卫星导航子状态,否则迁移至非卫星导航子状态;卫星导航子状态用于使用调库复合状态中的传感库子状态得到的数据和数据获取复合状态中的自写子状态得到的目标点位置数据,如果通过全球卫星导航系统得到的位置信息和当前位置吻合则意味着到达目标位置,迁移至下降状态,否则迁移至调库复合状态中的接口库子状态,如果在卫星导航子状态中检测到飞行员发出了操作信号就转换至非卫星导航子状态;非卫星导航子状态用于接收飞行员操作,再通过使用已有库函数计算得到的数据或根据不同模式需求手写函数计算得到的目标点位置数据,该状态中的行为执行结束后迁移至调库复合状态中的接口库子状态;
控制复合状态,包括位置控制器子状态、姿态控制器子状态和数据发送子状态;位置控制器子状态用于获取无人机竖直方向数据,该状态中的行为执行结束后结束后迁移至姿态控制器子状态;姿态控制器子状态用于期望数据调用库函数或自写函数的接口改变无人机姿态,该状态中的行为执行结束后转换至数据发送子状态;数据发送子状态用于向无人机操作员发送结果数据,该状态中的行为执行结束后转换至数据获取复合状态中的连接伪状态。
步骤3)基于框架SysML状态机图构建飞行模式mi的子SysML状态机图:
以自稳模式为例,根据每个自稳模式三个模块的工作流程为框架SysML状态机图中的每个子状态添加行为和事件,得到定高模式的子SysML状态机图t1,该SysML状态机图的状态包括init状态、data状态、stop状态、mode复合状态和control复合状态,其中:
init状态,根据框架SysML状态机图初始化状态修改得到,用于待C++代码内部变量进行定义,该状态中的行为执行结束后无人机迁移至date状态,迁移事件名称为tran1。
data状态,根据框架SysML状态机图数据获取复合状态修改得到,因为定高模式无需获取无人机目前姿态数据,所以data状态为空状态。当油门最低、升降速度小于预定值,并且高度不超过预定值时,转换到stop状态,该转换条件名称为theConstraint,该迁移事件名称为tran2。该状态中的行为执行结束后迁移至mode复合状态,该迁移事件名称为tran3。
stop状态,根据框架SysML状态机图结束状态修改得到,用于退出定高模式。
mode复合状态,根据框架SysML状态机图模式复合状态修改得到,因为定高模式无需全球卫星导航系统,所以mode复合状态只包含GPSn子状态,转换到GPSn子状态的事件名称为tran4;GPSn子状态,根据框架SysML状态机图模式复合状态的非卫星导航子状态修改得到,该状态中包含三个do行为:do/get_pilot_desired_lean_angles,用以将无人机操作员的输入转换为倾斜角度、do/get_pilot_desired_yaw_rate,用以计算的到飞行员期望的偏航角速度和do/get_pilot_desired_throttle,用以计算得到飞行员想要的油门大小。该状态中的行为执行结束后无人机迁移至control复合状态,该迁移事件名称为tran5。
control复合状态,根据框架SysML状态机图控制复合状态修改得到,因为定高模式无需位置管理器,所以control复合状态只包括attitude子状态和return子状态,转换到attitude子状态的事件名称为tran6;attitude子状态,根据框架SysML状态机图姿态控制器子状态修改得到,包括一个do行为:do/input_euler_angle_roll_pitch_euler_rate_yaw,用以使用期望数据改变无人机姿态。该状态中的行为执行结束后无人机迁移至returnd子状态,该迁移事件名称为tran7;returnd子状态,根据框架SysML状态机图数据发送子状态修改得到,包括一个do行为:do/returndata,用以返回给无人机操作员操作成功信号,该状态中的行为执行结束后无人机迁移至data状态保证重复接收飞行员操作,事件名称tran8。
降落模式以及自动模式生成子SysML状态机图的过程和自稳模式生成子SysML状态机图的过程相同,降落模式生成的子SysML状态机图为t2,自动模式生成子SysML状态机图为t1,子SysML状态机图的集合为T={t1,t2,...,ti,...,tn},1≤i≤n,n=3。
步骤4)获取每个飞行模式mi的XMI文件:
Papyrus是一个基于Eclipse平台UML2建模工具。通过Papyrus将之前生成的子SysML状态机图在Papyrus上建模,新建一个Papyrus Model项目,选择SystemsEngineering中的SysML,进一步选择文件的保存位置,进一步representation kind选择State Machine Diagram,将每个飞行模式mi对应的子SysML状态机图ti建模到此PapyrusModel项目中,在项目的workspace中得到转化成功的XMI文件X={x1,x2,...,xi,...,xn},1≤i≤n,n=3。
以自稳模式为例,获得的XMI文件为:
自稳模式的XMI文件为x1。
获得降落模式和自动模式的XMI文件过程与自稳模式相同,降落模式的XMI文件为x2,自动模式的XMI文件为x3。
步骤5)制定层次性代码生成规则;
(5a)制定层次性代码生成规则的第一层代码生成规则:
(5a1)对XMI文件xi逐行查找以<packagedElement name="name*">中name*命名一个接口类,作为外界访问此状态机图的接口,在该接口类中定义各个状态的state变量,接口类的初始化函数中包括各个状态机图中的状态的state变量初始化,以及接口类state的默认定义用来确定初始状态,其次该类中包括状态机图中所有<transition xmi:type="uml:Transition"xmi:id="*"name="*"source="*"target="*"/>事件的定义;
(5a2)建立一个以<packagedElement name="name*">中name*加state命名的用于接口类访问内部状态的具体接口的抽象类,此抽象类中包含(5a1)定义的接口类的变量context,抽象类的初始化函数的形参为(5a1)定义接口类变量,以d命名,在该初始化函数内部定义context=d,在该抽象类中包含ti中所有事件的声明,事件具体的实现由继承于该抽象类的子类来完成;
(5a3)在(5a1)定义的接口类中加入一个由(5a2)定义的抽象类state变量,用来记录当前状态图所处的状态;
(5b)制定层次性代码生成规则的第二层代码生成规则:
(5b1)对XMI文件xi逐行查找,xi中每一<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>作为简单状态,将xi每一<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>之中有<region xmi:type="uml:Region"xmi:id=""name=""></region>且“region”中有至少一个<subvertex xmi:type="uml:State"xmi:id=""name=""/>或<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>作为复合状态,复合状态分为顺序复合状态和并发复合状态,在复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中只有一个<region xmi:type="uml:Region"xmi:id="*"name="*"></region>作为顺序复合状态,在复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中有两个及以上<region xmi:type="uml:Region"xmi:id="*"name="*"></region>作为并发复合状态处理;
(5b2)简单状态和复合状态均建立为C++类,以<subvertex xmi:type="uml:State"xmi:id="*"name="name*"></subvertex>中name*为此类命名,继承自第一层代码生成规则的抽象类;
(5b3)顺序复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>内部的每一个<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>或<subvertex xmi:type="uml:State"xmi:id=""name="name*"/>建立为一个C++类,类名为name*,这个类继承自外部的顺序复合状态类;
(5b4)并发复合状态的每个<region xmi:type="uml:Region"xmi:id="*"name="name*"></region>单独生成一个抽象类作为访问其内部子状态<subvertex xmi:type="uml:State"xmi:id=""name="name*"/>或<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>的接口,类名为name*,其<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中所有的<connectionPoint xmi:type="uml:Pseudostate"xmi:id=""name="name*"kind=""/>和<transition xmi:type="uml:Transition"xmi:id=""name="name*"source=""target=""/>转换为以name*为函数名的函数定义在此抽象类中,每个内部子状态类继承自其所属<region xmi:type="uml:Region"xmi:id="*"name="name*"></region>的抽象类;
(5b5)每个<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>状态中的<connectionPoint xmi:type="uml:Pseudostate"xmi:id=""name="name*"kind=""/>,将其定义为此状态类中的函数,函数名为name*,其中when行为转化为if函数来实现;
(5b6)使用<transition xmi:type="uml:Transition"xmi:id=""source=""target=""><trigger xmi:type="uml:Trigger"xmi:id=""name=""event="id*"/></transition>中的id*逐行查找XMI文件xi,通过source和target分别确定事件的来源和目标,将<packagedElement xmi:type="uml:ChangeEvent"xmi:id="id*"name=""><changeExpression xmi:type="uml:type*"xmi:id=""name="name*"/>定义为来源状态的类中的函数,以name*为函数名;
(5b7)<subvertex xmi:type="uml:Pseudostate"xmi:id=""name=""kind="junction"/>为伪状态,逐行查找XMI文件xi当目标状态为伪状态时,在来源状态生成的类中通过对伪状态的转换条件进行判断来进行状态迁移;
步骤6)基于层次性代码生成规则,获取无人机飞行控制系统飞行模式的C++代码:
(6a)根据第一层代码生成规则对自稳模式的XMI文件x1进行提取,得到接口类代码以及以抽象类代码:
class stabilize
{
stabilizestate state;
init initstate;
date datestate;
mode modestate;
GPSn GPSnstate;
control controlstate;
attitude attitudestate;
returnd returndstate;
stabilize()
{
initstate=new init();
datestate=new date();
modestate=new mode();
stopstate=new stop();
GPSnstate=new GPSn();
controlstate=new control();
attitudestate=new attitude();
returndstate=new returnd();
state=initstate;//set default state
}
void theConstraint(){state.theConstraint();}
void tran1(){state.tran1();}
void tran2(){state.tran2();}
void tran3(){state.tran3();}
void tran4(){state.tran4();}
void tran5(){state.tran5();}
void tran6(){state.tran6();}
void tran7(){state.Tran7();}
void tran8(){state.Tran8();}
}
class stabilizestate
{
stabilize context;
stabilizestate(stabilize d){context=d;}
void theConstraint(){}
void tran1(){}
void tran2(){}
void tran3(){}
void tran4(){}
void tran5(){}
void tran6(){}
void tran7(){}
void tran8(){}
}
(6b)根据第一层代码生成规则对自稳模式的XMI文件x1进行提取,得到接口类代码以及以抽象类代码:
class init:public stabilizestate
{
void tran1(){context.state=context.datestate;}
}
class date:public stabilizestate
{
void tran2(){
if(theConstraint)
{
context.state=context.stopstate;
}
}
void tran3(){context.state=context.modetate;}
}
class stop:public stabilizestate
{
return 0;
}
class mode:public stabilizestate
{
void tran4(){context.state=context.GPSnstate;}
}
class GPSn:public mode
{
void get_pilot_desired_lean_angles(){}
void get_pilot_desired_yaw_rate(){}
void get_pilot_desired_throttle(){}
void tran5(){context.state=context.controlstate;}
}
class control:public stabilizestate
{
void tran6(){context.state=context.attitudestate;}
}
class attitude:public control
{
void input_euler_angle_roll_pitch_euler_rate_yaw(){}
void tran7(){context.state=context.returndstate;}
}
class returnd:public control
{
void returndata(){}
void tran8(){context.state=context.datestate;}
}
(6c)将(6a)和(6b)生成的代码进行合并,得到定高模式的C++代码,降落模式的XMI文件x2和自动模式的XMI文件x3生成代码的过程和定高模式生成代码的过程相同。
将所有飞行模式的代码合并得到无人机飞行控制系统飞行模式的C++代码。
Claims (2)
1.一种基于状态机图的无人机飞行模式的C++代码生成方法,其特征在于,包括如下步骤:
(1)制定无人机飞行控制系统各飞行模式的工作流程:
(1a)根据无人机的不同任务需求,将无人机飞行控制系统的n个飞行模式划分为全球卫星导航定位系统飞行模式子集合M1和非全球卫星导航定位系统飞行模式子集合M2,其中M1中至少包含自动模式,M2中至少包含降落模式,并将M1和M2合并为无人机飞行控制系统飞行模式集合M,M={m1,m2,...,mi,...,mn},其中mi表示第i个飞行模式,1≤i≤n,n≥2,且
(1b)将每个飞行模式mi划分为数据获取模块、功能模块和控制信号传输模块,并根据每个飞行模式mi的任务需求制定mi所划分的三个模块的工作流程;
(2)构建无人机的框架SysML状态机图:
构建包括多个状态和各状态之间迁移的无人机框架SysML状态机图,多个状态包括初始化状态、结束状态、下降状态、数据获取复合状态、调库复合状态、模式复合状态以及控制复合状态,其中:
初始化状态,用于对待生成的C++代码内部变量进行定义,该状态中的行为执行结束后无人机迁移至数据获取复合状态;
结束状态,用于结束C++代码;
下降状态,用于调用设定的下降函数完成无人机下降,该状态中的行为执行结束后迁移至结束状态;
数据获取复合状态,包括连接伪状态和自写子状态,其中连接伪状态用于对从其他状态迁移至数据获取复合状态的事件进行判断,若需要调用代码库则迁移至调库复合状态中的传感库子状态,否则迁移至自写子状态;自写子状态用于代码设计人员手动编写数据获取C++代码以获取俯仰角、横滚角、偏航角速度、高度、油门和当前位置,当油门最低、升降速度小于预定值并且高度不超过预定值时,迁移至结束状态,该状态中的行为执行结束后迁移至模式复合状态的连接伪状态;
调库复合状态,包括传感库子状态、核心库子状态、功能库子状态和接口库子状态;传感库子状态用于调用传感器代码库中的函数,以获取无人机姿态数据,该状态中的行为执行结束后迁移至数据获取复合状态中的自写子状态;核心库子状态用于调用帮助快速完成无人机飞行控制系统的计算工作代码库中的函数,该状态中的中的行为执行结束后转换至功能库子状态;功能库子状态用于调用快速完成无人机飞行模式mi的相应功能的代码库中的函数,该状态中的行为执行结束后迁移至模式复合状态的连接伪状态;接口库子状态用于使用无人机接口代码库中的函数以获得硬件接口,该状态中的行为执行结束后转换至控制复合状态中的位置管理器子状态;
模式复合状态,包括连接伪状态、卫星导航子状态和非卫星导航子状态;连接伪状态用于对从其他状态迁移至模式复合状态的事件进行判断,若需要全球卫星导航系统辅助飞行的迁移至卫星导航子状态,否则迁移至非卫星导航子状态;卫星导航子状态用于使用调库复合状态中的传感库子状态得到的数据和数据获取复合状态中的自写子状态得到的目标点位置数据,如果通过全球卫星导航系统得到的位置信息和当前位置吻合则意味着到达目标位置,迁移至下降状态,否则迁移至调库复合状态中的接口库子状态,如果在卫星导航子状态中检测到飞行员发出了操作信号就转换至非卫星导航子状态;非卫星导航子状态用于接收飞行员操作,再通过使用已有库函数计算得到的数据或根据不同模式需求手写函数计算得到的目标点位置数据,该状态中的行为执行结束后迁移至调库复合状态中的接口库子状态;
控制复合状态,包括位置控制器子状态、姿态控制器子状态和数据发送子状态;位置控制器子状态用于获取无人机竖直方向数据,该状态中的行为执行结束后结束后迁移至姿态控制器子状态;姿态控制器子状态用于期望数据调用库函数或自写函数的接口改变无人机姿态,该状态中的行为执行结束后转换至数据发送子状态;数据发送子状态用于向无人机操作员发送结果数据,该状态中的行为执行结束后转换至数据获取复合状态中的连接伪状态;
(3)基于框架SysML状态机图构建飞行模式mi的子SysML状态机图:
根据每个飞行模式mi中三个模块的工作流程为框架SysML状态机图中的每个子状态添加行为和事件,得到与n个飞行模式对应的n个子SysML状态机图T={t1,t2,...,ti,...,tn};
(4)获取每个飞行模式mi的XMI文件:
通过papyrus软件,将每个飞行模式mi对应的子SysML状态机图ti转化为XMI文件X={x1,x2,...,xi,...,xn};
(5)制定层次性代码生成规则:
(5a)制定层次性代码生成规则的第一层代码生成规则:
(5a1)对XMI文件xi逐行查找以<packagedElement name="name*">中nam e*命名一个接口类,作为外界访问此状态机图的接口,在该接口类中定义各个状态的state变量,接口类的初始化函数中包括各个状态机图中的状态的state变量初始化,以及接口类state的默认定义用来确定初始状态,其次该类中包括状态机图中所有<transition xmi:type="uml:Transition"xmi:id="*"name="*"source="*"target="*"/>事件的定义;
(5a2)建立一个以<packagedElement name="name*">中name*加state命名的用于接口类访问内部状态的具体接口的抽象类,此抽象类中包含(5a1)定义的接口类的变量context,抽象类的初始化函数的形参为(5a1)定义接口类变量,以d命名,在该初始化函数内部定义context=d,在该抽象类中包含ti中所有事件的声明,事件具体的实现由继承于该抽象类的子类来完成;
(5a3)在(5a1)定义的接口类中加入一个由(5a2)定义的抽象类state变量,用来记录当前状态图所处的状态;
(5b)制定层次性代码生成规则的第二层代码生成规则:
(5b1)对XMI文件xi逐行查找,xi中每一<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>作为简单状态,将xi每一<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>之中有<region xmi:type="uml:Region"xmi:id=""name=""></region>且“region”中有至少一个<subvertex xmi:type="uml:State"xmi:id=""name=""/>或<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>作为复合状态,复合状态分为顺序复合状态和并发复合状态,在复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中只有一个<region xmi:type="uml:Region"xmi:id="*"name="*"></region>作为顺序复合状态,在复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中有两个及以上<region xmi:type="uml:Region"xmi:id="*"name="*"></region>作为并发复合状态处理;
(5b2)简单状态和复合状态均建立为C++类,以<subvertex xmi:type="uml:State"xmi:id="*"name="name*"></subvertex>中name*为此类命名,继承自第一层代码生成规则的抽象类;
(5b3)顺序复合状态<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>内部的每一个<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>或<subvertex xmi:type="uml:State"xmi:id=""name="name*"/>建立为一个C++类,类名为name*,这个类继承自外部的顺序复合状态类;
(5b4)并发复合状态的每个<region xmi:type="uml:Region"xmi:id="*"name="name*"></region>单独生成一个抽象类作为访问其内部子状态<subvertex xmi:type="uml:State"xmi:id=""name="name*"/>或<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>的接口,类名为name*,其<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>中所有的<connectionPoint xmi:type="uml:Pseudostate"xmi:id=""name="name*"kind=""/>和<transition xmi:type="uml:Transition"xmi:id=""name="name*"source=""target=""/>转换为以name*为函数名的函数定义在此抽象类中,每个内部子状态类继承自其所属<region xmi:type="uml:Region"xmi:id="*"name="name*"></region>的抽象类;
(5b5)每个<subvertex xmi:type="uml:State"xmi:id="*"name="*"></subvertex>状态中的<connectionPoint xmi:type="uml:Pseudostate"xmi:id=""name="name*"kind=""/>,将其定义为此状态类中的函数,函数名为name*,其中when行为转化为if函数来实现;
(5b6)使用<transition xmi:type="uml:Transition"xmi:id=""source=""target=""><trigger xmi:type="uml:Trigger"xmi:id=""name=""event="id*"/></transition>中的id*逐行查找XMI文件xi,通过source和target分别确定事件的来源和目标,将<packagedElement xmi:type="uml:ChangeEvent"xmi:id="id*"name=""><changeExpression xmi:type="uml:type*"xmi:id=""name="name*"/>定义为来源状态的类中的函数,以name*为函数名;
(5b7)<subvertex xmi:type="uml:Pseudostate"xmi:id=""name=""kind="junction"/>为伪状态,逐行查找XMI文件xi当目标状态为伪状态时,在来源状态生成的类中通过对伪状态的转换条件进行判断来进行状态迁移;
(6)基于层次性代码生成规则,获取无人机飞行控制系统飞行模式的C++代码:
(6a)根据第一层代码生成规则对XMI文件xi进行提取,得到接口类C++代码以及以抽象类C++代码;
(6b)根据第二层代码生成规则对XMI文件xi进行提取,得到含有实现行为的状态的代码;
(6c)将步骤(6a)和(6b)生成的代码进行合并,得到飞行模式mi的C++代码,并将所有(n)飞行模式的代码合并 ,得到无人机飞行控制系统飞行模式的C++代码。
2.根据权利要求1所述的基于状态机图的无人机飞行模式 的C++代码生成方法,其特征在于,步骤(1b)所述的将每个飞行模式mi划分为数据获取模块、功能模块和控制信号传输模块,以及三个模块的工作流程,其中:
三个模块的划分标准为:数据获取模块用于获取无人机当前姿态数据和控制人员发送的控制数据,功能模块用于实现为无人机的任务需求而做的计算和操作,控制信号传输模块用于向无人机硬件接口和操作员发送计算结果数据;
三个模块的工作流程,是指无人机为实现特定的任务目标而做的用文字表述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010425423.3A CN111596915B (zh) | 2020-05-19 | 2020-05-19 | 基于状态机图的无人机飞行模式的c++代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010425423.3A CN111596915B (zh) | 2020-05-19 | 2020-05-19 | 基于状态机图的无人机飞行模式的c++代码生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111596915A CN111596915A (zh) | 2020-08-28 |
CN111596915B true CN111596915B (zh) | 2022-12-02 |
Family
ID=72189524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010425423.3A Active CN111596915B (zh) | 2020-05-19 | 2020-05-19 | 基于状态机图的无人机飞行模式的c++代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111596915B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110585B (zh) * | 2021-04-28 | 2022-12-13 | 一飞(海南)科技有限公司 | 一种编队舞步状态切换飞行的方法、系统、无人机及应用 |
CN113220037B (zh) * | 2021-06-11 | 2022-03-15 | 长江大学 | 一种无人机混合路径规划方法 |
CN113553062A (zh) * | 2021-07-23 | 2021-10-26 | 中国电子科技集团公司第二十八研究所 | 一种基于模板技术的状态机代码生成方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986318A (zh) * | 2010-11-26 | 2011-03-16 | 南京航空航天大学 | 飞行控制系统概念样机设计方法 |
CN103645891A (zh) * | 2013-11-28 | 2014-03-19 | 陕西千山航空电子有限责任公司 | 一种基于飞行数据的快速诊断方法 |
CN109255193A (zh) * | 2018-09-26 | 2019-01-22 | 中国航空综合技术研究所 | 基于模型转换的飞机后缘襟翼控制系统的设计方法 |
CN110502211A (zh) * | 2019-08-02 | 2019-11-26 | 中国航空无线电电子研究所 | 一种基于SysML模块图的AADL模型构造方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9377998B2 (en) * | 2011-11-08 | 2016-06-28 | The Mathworks, Inc. | Code generation for control design |
JP6038959B2 (ja) * | 2012-02-15 | 2016-12-07 | ザ マスワークス, インクThe Mathworks, Inc. | 状態機械モデルを記述する統合状態遷移表 |
US9875454B2 (en) * | 2014-05-20 | 2018-01-23 | Verizon Patent And Licensing Inc. | Accommodating mobile destinations for unmanned aerial vehicles |
-
2020
- 2020-05-19 CN CN202010425423.3A patent/CN111596915B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986318A (zh) * | 2010-11-26 | 2011-03-16 | 南京航空航天大学 | 飞行控制系统概念样机设计方法 |
CN103645891A (zh) * | 2013-11-28 | 2014-03-19 | 陕西千山航空电子有限责任公司 | 一种基于飞行数据的快速诊断方法 |
CN109255193A (zh) * | 2018-09-26 | 2019-01-22 | 中国航空综合技术研究所 | 基于模型转换的飞机后缘襟翼控制系统的设计方法 |
CN110502211A (zh) * | 2019-08-02 | 2019-11-26 | 中国航空无线电电子研究所 | 一种基于SysML模块图的AADL模型构造方法 |
Non-Patent Citations (4)
Title |
---|
"Cabin pressurization control system design of civil aircraft by model based systems engineering";Xiaodong Xu等;《2017 Chinese Automation Congress (CAC)》;20180101;第3035-3040页 * |
"基于Stateflow的无人机多模态控制转换逻辑设计";朱飞翔等;《海军航空工程学院学报》;20171030;第32卷(第5期);第431-437、456页 * |
"基于SysML的双余度管理软件设计";王亮等;《航空计算技术》;20190731;第49卷(第4期);第128-131页 * |
"无人机网络中基于状态迁移的访问控制模型";马卓然等;《西安电子科技大学学报(自然科学版)》;20181231;第45卷(第6期);第44-50页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111596915A (zh) | 2020-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111596915B (zh) | 基于状态机图的无人机飞行模式的c++代码生成方法 | |
US10635844B1 (en) | Methods and systems for simulating vision sensor detection at medium fidelity | |
Payton | An architecture for reflexive autonomous vehicle control | |
CN103513992A (zh) | 一种通用的教育娱乐机器人应用软件研制平台 | |
US9152393B1 (en) | Dynamic entities for a model of a graphical modeling environment | |
CN102999322A (zh) | 一种工业控制器软件界面设计方法 | |
Miura et al. | Autoware toolbox: Matlab/simulink benchmark suite for ros-based self-driving software platform | |
Bredereke et al. | Safety-relevant mode confusions—modelling and reducing them | |
US7178148B2 (en) | Information processing apparatus | |
CN109977514B (zh) | 一种雷达同步数据流图模型调度序列生成方法 | |
CN116089261A (zh) | 一种面向直升机低空任务规划的地面验证系统及方法 | |
CN111241626B (zh) | 一种基于快速原型的无人机拦阻着陆实时仿真方法 | |
US11386624B2 (en) | Artificial intelligence and augmented reality system and method | |
CN111291444B (zh) | 飞机装配的建模方法、装置、设备及存储介质 | |
Chou et al. | Modal processes: Towards enhanced retargetability through control composition of distributed embedded systems | |
Smyrniotis et al. | A knowledge-based system for recognizing man-made objects in aerial images. | |
Sun et al. | An intelligent driving simulation platform: architecture, implementation and application | |
Hyde | Fostering innovation in design and reducing implementation costs by using graphical tools for functional specification | |
Lea et al. | Fuzzy logic control for camera tracking system | |
Ismail | Next-generation lane centering assist system: design and implementation of a lane centering assist system, using NXP-Bluebox | |
Gong et al. | An interactive task modeling method for the development of augmented reality maintenance guiding system | |
Ahmad et al. | An autonomous driver model for the overtaking maneuver for use in microscopic traffic simulation | |
Thompson | Structuring formal state-based specifications for reuse and the development of product families | |
Ramaswamy | A model-driven framework development methodology for robotic systems | |
Migneco | Traffic sign recognition algorithm: a deep comparison between Yolov5 and SSD Mobilenet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |