CN110275830A - 基于延续的无人机编队飞控系统的动态调试方法 - Google Patents
基于延续的无人机编队飞控系统的动态调试方法 Download PDFInfo
- Publication number
- CN110275830A CN110275830A CN201910510606.2A CN201910510606A CN110275830A CN 110275830 A CN110275830 A CN 110275830A CN 201910510606 A CN201910510606 A CN 201910510606A CN 110275830 A CN110275830 A CN 110275830A
- Authority
- CN
- China
- Prior art keywords
- unmanned plane
- breakpoint
- flight control
- state machine
- task
- 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.)
- Pending
Links
- 230000015572 biosynthetic process Effects 0.000 title claims abstract description 31
- RZVHIXYEVGDQDX-UHFFFAOYSA-N 9,10-anthraquinone Chemical compound C1=CC=C2C(=O)C3=CC=CC=C3C(=O)C2=C1 RZVHIXYEVGDQDX-UHFFFAOYSA-N 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 14
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 230000003466 anti-cipated effect Effects 0.000 claims description 2
- 238000012805 post-processing Methods 0.000 claims description 2
- 238000007689 inspection Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 7
- 208000028399 Critical Illness Diseases 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- 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
- G05D1/104—Simultaneous control of position or course in three dimensions specially adapted for aircraft involving a plurality of aircrafts, e.g. formation flying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Aviation & Aerospace Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了基于延续的无人机编队飞控系统的动态调试方法,包括完成状态机转换步骤,设置实时断点步骤,停止无人机执行任务并保存状态步骤,读取状态并恢复无人机任务执行步骤。首先将无人机的飞行控制系统中编队构成部分编译成可手动控制的结构,即将无人机编队飞控系统的原程序代码转变成状态机,然后设置实时断点的位置,检查状态机中每一步,判断所有的断点,最后确定最新设置的断点。确定好断点所在的位置之后,根据函数式编程中的延续(Continuation)技术概念,让无人机在此处停止当前的执行任务,保存状态机信息和重要参数。检查程序这一步是否有问题,没有出现异常就让无人机从断点处恢复,继续开始执行任务。
Description
技术领域
本发明涉及一种基于延续的无人机编队飞控系统的动态调试方法,属于无人机飞行控制和动态调试技术领域。
背景技术
无人机是一种由无线电遥控设备或自身程序控制装置操纵的无人驾驶飞行器。无人机的应用日益普遍,由于具有结构简单、尺寸小、造价低、使用灵活、适应性强和不必冒生命危险等特点,无人机现已得到各国的广泛关注。无人机的编队飞行又具有单机飞行所没有的特点和优势,因此具有更为广阔的发展前景。本文以无人机的编队飞行为研究背景,着重研究其编队组成的动态调试问题。
动态调试一般是指利用调试器来跟踪软件运行,单步调试是动态调试的一种。单步调试功能是调试系统的重要功能之一,使用户能以源代码行为单位对程序进行控制。单步调试可以控制程序运行一个或若干个代码行。通过这种方式,用户可以结合变量查看、堆栈查看、观察点等调试功能,把潜在的程序错误定位至某个代码行。单步调试是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。目前很多的开发工具都支持单步调试,在需要调试的代码段设置断点,然后按预设的快捷键步进。
单步调试功能一般分为两大类:汇编级单步调试功能和源代码级单步调试功能。汇编级单步调试功能指单步调试控制运行的单位是汇编语言的代码行。源代码级单步调试指单步调试控制运行的单位是高级语言源代码中的代码行。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种基于延续的无人机编队飞控系统的动态调试方法,使得编队飞行中的无人机能够正常有效地执行任务,从而克服上述现有技术中的缺陷。
为实现上述目的,本发明提供了一种基于延续的无人机编队飞控系统的动态调试方法,包括以下步骤:
步骤1:完成状态机转换步骤:首先将无人机飞控系统中执行编队任务部分的代码编译成状态机,简单来说即用switch-case语句结构来改写这部分代码,这样一来无人机编队组成的部分就成了一种可以控制的结构。
步骤2:设置实时断点步骤:将原程序代码行的位置对应到状态机中特定case语句中,即每一个case语句都包含原程序的一行代码,这些位置就是设置断点的位置。设置断点的位置,然后程序开始检查无人机每一步的执行,判断是否存在一个实时断点。
步骤3:停止无人机执行任务并保存状态步骤:检测到步骤2中的实时断点,找出断点所在的行位置,接着利用抛出异常的方法在此处停止程序运行、停止任务的执行,然后,通过捕获调用栈来保存此处的状态机和局部变量,以便以后恢复他们。
步骤4:读取状态并恢复无人机任务执行步骤:检查暂停这一步是否出现问题,如果没有就恢复步骤3中的调用栈,程序从刚才保存状态的地方重新开始恢复执行。重复步骤3和步骤4对原程序代码每一行进行单步调试,直到整个程序执行完毕。
本文采用的是第二类源代码级单步调试功能,对无人机编队组成的源代码进行单步调试。
基于延函数式编程中延续的概念,延续调用的时候,当前的程序状态被替换成延续性被捕获时的状态,比如,当前的调用栈被替换成被捕获的延续性的调用栈。通过延续性,你的代码可以真正地“跳转”到不同地方。它们是底层的“原语操作”,能让你完全控制代码的执行流程。暂停并保存保存无人机某一处的状态,然后再读取信息从某处重新开始执行任务。
本发明进一步限定的技术方案为:
优选地,上述技术方案中,所述步骤1完成状态机转换具体步骤为:
步骤1.1:将无人机飞控系统中执行编队任务部分的代码编译成状态机,简单来说即用switch-case语句结构来改写这部分代码,这样无人机编队组成的部分就可以分解成单步执行,方便我们进行后续控制操作。
优选地,上述技术方案中,所述步骤2中设置实时断点具体步骤为:
步骤2.1:将步骤1.1中原程序中分解的单步操作对应到状态机中特定case语句中,每一个case语句对应原程序的一行代码;
步骤2.2:设置一个或多个断点,即在原程序中添加一行debugger语句,然后在状态机的case语句中将这行语句编译成throw new Conterror()语句。
步骤2.3:开始检查每一步的执行,判断是否存在一个最新断点。如果没有检测到断点的位置,跳出单步调试器,直接输出结果。
优选地,上述技术方案中,所述步骤3中停止无人机执行任务并保存状态具体步骤为:
步骤3.1:如果检测到步骤2.3中的断点,利用抛出异常技术来暂停无人机在这一步的任务执行。
步骤3.2:然后捕获这一步时刻的调用栈,利用一个列表来保存状态机和飞行任务中的重要参数。
优选地,上述技术方案中,所述步骤4中读取状态并恢复无人机任务执行具体步骤为:
步骤4.1:暂停之后开始检测无人机执行到这一步是够出现异常,是够按照预期来执行任务,如果没有出现异常就恢复调用栈,如果发现bug就记录下来,方便后期处理
步骤4.2:读取步骤3.2中列表的参数,让程序从断点处重新开始执行。
步骤4.3:重复步骤3和步骤4对原程序代码每一行进行单步调试,直到整个程序执行完毕。
本发明与已有技术对比具有以下的一些特点和创新之处:
(1)结合函数式编程中延续的概念来实现单步调试工具。当检测到一个断点时,单步调试器会捕获当前的延续,停止无人机执行,保存状态机和一些参数。当需要继续执行任务的时候,通过简单地调用刚才被保存的延续,可以让无人机继续往下执行。
(2)单步调试器与无人机飞控系统中编队构成部分相结合,有效地测试无人机编队原程序代码是否能正常运行,以此来提高系统的可靠性和准确性。
附图说明:
图1为系统动态调试的流程图。
步骤1)完成队形动态调整部分状态机转换
步骤1.1)将无人机飞控系统中leader-follower角色转化的动态调整部分的代码编译成状态机,简单来说即用switch-case语句结构来改写这部分代码,这样一来无人机编队中角色转化的过程就可以分解成单步执行。
步骤2)设置实时断点
步骤2.1)将步骤1.1队形动态调整程序中分解的单步操作对应到状态机中特定case语句中,即每一个case语句对应动态调整程序中每一步操作步骤;
步骤2.2)在原程序代码中设置一个或多个断点,即在原动态调整程序中添加一行debugger语句,然后在状态机的case语句中将这行语句编译成一个抛出异常的语句。
步骤2.3)开始检查无人机队形转化的每一步的执行,判断是否存在一个最新断点。如果没有检测到断点的位置,跳出单步调试器,直接显示这一步无人机动态调整的状态结果。
步骤3)停止无人机队形转化并保存状态
步骤3.1)如果检测到步骤2.3中的断点,利用抛出异常技术来暂停无人机在这一步的动态调整。
步骤3.2)然后捕获当前程序这一步这一时刻的调用栈,利用一个列表来保存状态机和飞行任务中的重要参数。
步骤4)读取状态并恢复无人机队形转化
步骤4.1)暂停之后开始检测无人机队形转化执行到这一步是够出现异常,是够按照预期来进行队形转化,如果没有出现异常就恢复调用栈,如果发现错误就及时记录。
步骤4.2)读取步骤3.2中列表的参数,让动态调整的程序从断点处重新继续队形转化。
步骤4.3)重复步骤3和步骤4对原程序代码每一行进行单步调试,直到整个leader-follower队形转化完毕。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (4)
1.一种基于延续的无人机编队飞控系统的动态调试方法,其特征在于:包括以下步骤:
步骤1:完成状态机转换步骤:将无人机飞控系统中执行编队任务部分的代码编译成状态机,即用switch-case语句结构来改写这部分代码,无人机编队组成的部分就成了我们可以控制的结构;
步骤2:设置实时断点步骤:将原程序代码行的位置对应到状态机中特定case语句中,即每一个case语句都包含原程序的一行代码,这些位置就是设置断点的位置;人工手动点击设置断点的位置,然后程序开始检查每一步的执行,判断是否存在一个实时断点;
步骤3:停止无人机执行任务并保存状态步骤:检测到步骤2中的实时断点,找出断点所在的行位置,接着利用抛出异常的技术在此处停止程序运行、停止任务的执行,然后,通过捕获调用栈来保存此处的状态机和局部变量,以便以后恢复他们;
步骤4:读取状态并恢复无人机任务执行步骤:检查暂停这一步是否出现问题,如果没有就恢复步骤3中的调用栈,程序从断点处开始恢复执行;
步骤5:重复步骤3和步骤4对原程序代码每一行进行单步调试,直到整个程序执行完毕。
2.如权利要求1所述的基于延续的无人机编队飞控系统的动态调试方法,其特征在于:所述步骤2中设置实时断点具体步骤为:
步骤2.1:将步骤1中原程序中分解的单步操作对应到状态机中特定case语句中,每一个case语句对应原程序的一行代码;
步骤2.2:设置一个或多个断点,即在原程序中添加一行debugger语句,然后在状态机的case语句中将这行语句编译成throw new Conterror()语句;
步骤2.3:开始检查每一步的执行,判断是否存在一个最新断点;如果没有检测到断点的位置,跳出单步调试器,直接输出结果。
3.如权利要求1所述的基于延续的无人机编队飞控系统的动态调试方法,其特征在于:所述步骤3中停止无人机执行任务并保存状态具体步骤为:
步骤3.1:如果检测到步骤2.3中的断点,利用抛出异常的方法来暂停无人机在这一步的任务执行;
步骤3.2:然后捕获这一步这一时刻的调用栈,利用一个列表来保存状态机和飞行任务中的重要参数。
4.如权利要求1所述的基于延续的无人机编队飞控系统的动态调试方法,其特征在于:所述步骤4中读取状态并恢复无人机任务执行具体步骤为:
步骤4.1:暂停之后开始检测无人机执行到这一步是够出现异常,是够按照预期来执行任务,如果没有出现异常就恢复调用栈,如果发现bug就记录下来,方便后期处理;
步骤4.2:读取步骤3.2中列表的参数,让程序从此处重新开始执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910510606.2A CN110275830A (zh) | 2019-06-13 | 2019-06-13 | 基于延续的无人机编队飞控系统的动态调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910510606.2A CN110275830A (zh) | 2019-06-13 | 2019-06-13 | 基于延续的无人机编队飞控系统的动态调试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110275830A true CN110275830A (zh) | 2019-09-24 |
Family
ID=67960817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910510606.2A Pending CN110275830A (zh) | 2019-06-13 | 2019-06-13 | 基于延续的无人机编队飞控系统的动态调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110275830A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110585A (zh) * | 2021-04-28 | 2021-07-13 | 一飞(海南)科技有限公司 | 一种编队舞步状态切换飞行的方法、系统、无人机及应用 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140039362A (ko) * | 2012-09-20 | 2014-04-02 | (주) 픽소니어 | 무인기 비행제어 소프트웨어 검증 방법 |
CN107991905A (zh) * | 2017-12-25 | 2018-05-04 | 南京邮电大学 | 一种基于Web的多无人机任务规划的仿真系统 |
CN108228467A (zh) * | 2018-01-30 | 2018-06-29 | 北京航天长征飞行器研究所 | 一种嵌入式飞控软件算法快速验证方法及系统 |
-
2019
- 2019-06-13 CN CN201910510606.2A patent/CN110275830A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140039362A (ko) * | 2012-09-20 | 2014-04-02 | (주) 픽소니어 | 무인기 비행제어 소프트웨어 검증 방법 |
CN107991905A (zh) * | 2017-12-25 | 2018-05-04 | 南京邮电大学 | 一种基于Web的多无人机任务规划的仿真系统 |
CN108228467A (zh) * | 2018-01-30 | 2018-06-29 | 北京航天长征飞行器研究所 | 一种嵌入式飞控软件算法快速验证方法及系统 |
Non-Patent Citations (4)
Title |
---|
AKIRA_CN: "【译】用 JavaScript 实现单步调试", 《HTTPS://75.TEAM/POST/IMPLEMENTING-A-STEPPING-DEBUGGER-IN-JAVASCRIPT.HTML》 * |
M. M. TOUSI: "A hybrid fault diagnosis and recovery for a team of unmanned vehicles", 《2008 IEEE INTERNATIONAL CONFERENCE ON SYSTEM OF SYSTEMS ENGINEERING》 * |
佚名: "Implementing a Stepping Debugger JavaScript", 《HTTPS://ARCHIVE.JLONGSTER.COM/IMPLEMENTING-STEPPING-DEBUGGER-JAVASCRIPT》 * |
喻钢: "用异常处理机制获取程序继续", 《北京工业大学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110585A (zh) * | 2021-04-28 | 2021-07-13 | 一飞(海南)科技有限公司 | 一种编队舞步状态切换飞行的方法、系统、无人机及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100458729C (zh) | 嵌入式操作系统中接口测试的自动化运行方法 | |
US6161216A (en) | Source code debugging tool | |
CN107111544B (zh) | 生产诊断中的历史控制流可视化 | |
US7721265B1 (en) | Source code debugging method and apparatus for use in script testing environment | |
CN101587455B (zh) | 一种用于vxWorks操作系统检查内存泄漏的方法 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
US9727444B2 (en) | Program subset execution and debug | |
CN105512023B (zh) | 一种Monkey测试方法及装置 | |
US20080077780A1 (en) | System and Method for Software Debugging | |
US9274930B2 (en) | Debugging system using static analysis | |
CN101414278B (zh) | 基于动态反编译技术的二进制应用程序调试方法 | |
CN109726135A (zh) | 一种多核调试方法、装置及计算机可读存储介质 | |
CN101639805A (zh) | 用于在程序调试中跟踪变量的方法和设备 | |
CN100456260C (zh) | 一种用于对解释语言程序进行调试方法及装置 | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
CN107045474B (zh) | 一种Fuzz测试中的程序流跟踪方法及装置 | |
CN110275830A (zh) | 基于延续的无人机编队飞控系统的动态调试方法 | |
CN115757183A (zh) | 天熠嵌入式操作系统下一种基于代理的任务级调试方法 | |
US20120110383A1 (en) | Method and apparatus for off-line analyzing crashed programs | |
CN116775442A (zh) | 一种软件调试系统 | |
CN109189452A (zh) | 一种电子设备的软件更新方法、装置及存储介质 | |
CN101295278A (zh) | 定位被改写代码段所在进程的方法及装置 | |
CN110647467B (zh) | 基于单步异常的目标码覆盖率测试方法、系统及介质 | |
Asghar et al. | Efficient debugging of large algorithmic modelica applications | |
CN110188042A (zh) | 一种基于软件开发平台中多目标交叉调试系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190924 |