飞行监控方法和装置及计算机可读存储介质
技术领域
本公开涉及飞行器领域,特别涉及一种飞行监控方法和装置及计算机可读存储介质。
背景技术
无人机向地面控制系统传输飞行数据指令集,地面控制系统基于飞行数据指令集可以对无人机进行监控。目前常用的飞行数据指令集是MAVLINK的开源通信指令集。
发明内容
发明人发现,MAVLINK的飞行数据指令集的结构比较杂乱,地面控制系统在监控时需要占用较多的资源处理MAVLINK的飞行数据指令集。在具有较多个监控对象的大规模集群监控应用中,处理指令集的资源消耗非常大,可能达到地面控制系统无法容忍的程度,难以实现大规模集群监控,或者,难以保障大规模集群监控的时效性。
本公开实施例所要解决的一个技术问题是,在飞行监控中降低处理指令集的资源消耗,保障大规模集群监控的可实施性和时效性。
根据本公开的一个方面,提出一种飞行监控方法,包括:
接收飞行器发送的下行指令帧的部分数据,所述下行指令帧包括父类指令标识和子类指令标识;
从所述下行指令帧的部分数据中解析出监控目标相关的指令标识,所述监控目标相关的指令标识为父类指令标识,或者,为父类指令标识和子类指令标识;
在所述监控目标相关的指令标识与所述监控目标匹配的情况下,继续接收所述下行指令帧的后续数据,以便实现所述监控目标,否则,不再接收所述下行指令帧的后续数据。
在一些实施例中,所述下行指令帧被配置为按照指令功能进行封装,一种指令功能的下行指令封装成一个下行指令帧。
在一些实施例中,所述下行指令帧被配置为按照指令功能设置实现模块,一种指令功能的下行指令设置一个实现模块。
在一些实施例中,每个所述实现模块被配置为能够单独进行更换、优化或升级。
在一些实施例中,所述指令功能依据子类指令的功能进行划分。
在一些实施例中,所述下行指令帧被配置为根据应用场景的需要,扩展所述应用场景相应的父类指令、子类指令、或者子类指令中的字段。
在一些实施例中,所述下行指令帧还包括帧头和帧尾,所述帧头和所述帧尾被配置为根据应用场景进行设置;
所述方法还包括:
从所述下行指令帧的部分数据中解析出帧头;
在所述帧头对应的应用场景符合所述监控目标的情况下,继续接收所述下行指令帧的后续数据,以便实现所述监控目标,否则,不再接收所述下行指令帧的后续数据。
根据本公开的另一个方面,提出一种飞行监控装置,包括:
接收模块,用于接收飞行器发送的下行指令帧的部分数据,所述下行指令帧包括父类指令标识和子类指令标识;
解析模块,用于从所述下行指令帧的部分数据中解析出监控目标相关的指令标识,所述监控目标相关的指令标识为父类指令标识,或者,为父类指令标识和子类指令标识;
接收决策模块,用于在所述监控目标相关的指令标识与所述监控目标匹配的情况下,继续接收所述下行指令帧的后续数据,以便实现所述监控目标,否则,不再接收所述下行指令帧的后续数据。
在一些实施例中,所述下行指令帧被配置为按照指令功能进行封装,一种指令功能的下行指令封装成一个下行指令帧。
在一些实施例中,所述下行指令帧被配置为按照指令功能设置实现模块,一种指令功能的下行指令设置一个实现模块。
在一些实施例中,每个所述实现模块被配置为能够单独进行更换、优化或升级。
在一些实施例中,所述指令功能依据子类指令的功能进行划分。
在一些实施例中,所述下行指令帧被配置为根据应用场景的需要,扩展所述应用场景相应的父类指令、子类指令、或者子类指令中的字段。
在一些实施例中,所述下行指令帧还包括帧头和帧尾,所述帧头和所述帧尾被配置为根据应用场景进行设置;
所述解析模块,还用于从所述下行指令帧的部分数据中解析出帧头;
所述接收决策模块,还用于在所述帧头对应的应用场景符合所述监控目标的情况下,继续接收所述下行指令帧的后续数据,以便实现所述监控目标,否则,不再接收所述下行指令帧的后续数据。
根据本公开的另一个方面,提出一种飞行监控装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行前述任一个实施例的飞行监控方法。
根据本公开的另一个方面,提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一个实施例的飞行监控方法。
本公开实施例通过构建层次化的下行指令帧,优先接收并解析飞行器发送的下行指令帧的部分数据,在解析出的监控目标相关的指令标识与监控目标匹配的情况下,继续接收下行指令帧的后续数据,否则,不再接收下行指令帧的后续数据,利用层次化的特性实现对下行指令帧进行快速解析和按需解析,从而大幅降低处理指令集的资源消耗,保障大规模集群监控的可实施性和时效性。
附图说明
下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍。根据下面参照附图的详细描述,可以更加清楚地理解本公开,
显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开层次化指令结构形式的下行指令帧的结构示意图。
图2为本公开飞行监控方法一些实施例的流程示意图。
图3为本公开飞行监控方法另一些实施例的流程示意图。
图4为本公开飞行监控装置一些实施例的结构示意图。
图5为本公开飞行监控装置另一些实施例的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
图1为本公开层次化指令结构形式的下行指令帧的结构示意图。
如图1所示,下行指令帧的帧格式包括帧头和帧尾,父类指令、子类指令和指令的数据部分。帧头和帧尾可以根据应用环境进行设置。例如,在物流行业,可以在帧头中添加运营区域ID字段、运营站点ID字段等,以便识别出飞行器的运营区域和运营站点。父类指令和子类指令形成层次化指令结构形式,父类指令例如可以是指令类型,子类指令例如可以是某种指令类型下属的具体指令,子类指令归属于父类指令,父类指令和子类指令联合起来表示一条指令。
例如,父类指令例如包括系统指令集(设用0x00标识)、实时数据指令集(设用0x01标识)、地面控制指令集(设用0x02标识)等。系统指令集(0x00)的子类指令例如包括心跳包(设用0x00标识)、系统状态指令(设用0x01标识)、系统消息指令(设用0x02标识)等。实时数据指令集(0x01)的子类指令例如包括飞行监测数据(设用0x00标识)、姿态数据(设用0x01标识)、速度数据(设用0x02标识)、定位数据(设用0x03标识)、航点信息(设用0x04标识)、舵机输出(设用0x05标识)、遥控信息(设用0x06标识)等。但不限于所举示例。
下面以系统指令集为例说明指令形式。
1、系统指令集的心跳包,是飞行器以一定的频率发送的信息包。
1)指令头
父类指令标识例如为:0x00,子类指令标识例如为:0x00。
2)发送频率
例如为1HZ。
3)数据部分(Data)字段详解
JDRONE_TYPE_ENUM内容如下:
数值 |
变量名 |
描述 |
0 |
type_fixed_wing |
固定翼 |
1 |
type_vtol |
垂直起降 |
2 |
type_vtol_fixed_wing |
垂直起降固定翼 |
3 |
type_quadrotor |
四旋翼 |
4 |
type_hexarotor |
六旋翼 |
5 |
type_octorotor |
八旋翼 |
JDRONE_Flight_MODE_ENUM内容如下:
2、系统指令集的系统状态指令
1)指令头
父类指令标识:0x00,子类指令标识:0x01。
2)发送频率
例如可以大于1HZ。
3)数据部分(Data)字段详解
sensors_load、sensors_enable、sensors_healt从低位到高位的编码例如依次代表:
0:三轴陀螺,1:三轴加速度计,2:三轴磁罗盘,3:绝对气压计,4:相对气压计,5:GPS,6:激光定位,7:超声定位,8:红外定位,9:雷达,10:扩展….
JDRONE_SYSTEM_MODE_ENUM内容如下:
3、系统指令集的系统消息指令,是指告警信息。
1)指令头
父类指令标识:0x00,子类指令标识:0x02。
2)发送频率
不固定,例如大于10HZ。
3)数据部分(Data)字段详解
字段 |
意义 |
severity |
数值查看JDRONE_SEVERITY_ENUM |
test |
消息内容 |
JDRONE_SEVERITY_ENUM内容如下:
数值 |
变量名 |
描述 |
0 |
severity_serious |
系统级告警,系统不可用 |
1 |
severity_significant |
主要部件告警,系统不可用 |
2 |
severity_secondary |
次要部件告警,系统可用 |
在一些实施例中,下行指令帧可以按照指令功能进行封装,一种指令功能的下行指令封装成一个下行指令帧,方便对指令集进行归类整理。在一些实施例中,指令功能可以依据子类指令的功能进行划分。例如,将系统指令集的系统状态指令封装成系统状态的下行指令帧。又例如,将实时数据指令集的定位数据封装成定位数据的下行指令帧。
在一些实施例中,下行指令帧可以按照指令功能设置实现模块,一种指令功能的下行指令设置一个实现模块。每个实现模块能够单独进行更换、优化或升级。在一些实施例中,指令功能可以依据子类指令的功能进行划分。例如,对实时数据指令集的定位数据设置一个定位传感器模块,对实时数据指令集的姿态数据设置一个姿态检测传感器模块,每个传感器模块能够单独进行更换、优化或升级,不会影响整个飞行控制系统。
在一些实施例中,下行指令帧可以根据应用场景的需要,扩展应用场景相应的父类指令、子类指令、或者子类指令中的字段。例如,根据业务需要,针对实时数据指令集增加一种子类指令,即物流信息(设用0x07标识),该扩展易于实现,并且对其他指令集没有影响,对实时数据指令集中的其他子类指令也没有影响。又例如,根据业务需要,增加一种指令集,即集群部署指令集(设父类指令用0x03标识),该扩展易于实现,并且对其他指令集没有影响。
基于上述层次化指令结构形式,地面控制系统(Ground Control System,GCS)可以很方便地对下行指令帧进行快速解析和按需解析,从而大幅降低处理指令集的资源消耗,保障大规模集群监控的可实施性和时效性。
图2为本公开飞行监控方法一些实施例的流程示意图。
如图2所示,该实施例的方法包括:步骤210-240。
在步骤210,地面控制系统接收飞行器发送的下行指令帧的部分数据。
在一些实施例中,可以根据监控业务需要确定接收的下行指令帧的部分数据。下行指令帧的部分数据例如可以是帧头,或者帧头和父类指令,或者帧头和父类指令及子类指令等。
飞行器例如可以是飞机、无人机等,但不限于所举示例。
在步骤220,地面控制系统从下行指令帧的部分数据中解析出监控目标相关的指令标识。
在一些实施例中,监控目标相关的指令标识例如为父类指令标识,或者,为父类指令标识和子类指令标识。
例如,监控目标为希望监控飞行器的例如状态是否正常等系统状态,根据前述指令集的设置示例,系统状态信息属于系统指令集的系统状态指令,因此,该监控目标相关的指令标识包括父类指令标识和子类指令标识,并且与该监控目标匹配的父类指令标识应当是表示系统指令集的标识,与该监控目标匹配的子类指令标识应当是表示系统状态指令的标识。
在步骤230,在监控目标相关的指令标识与监控目标匹配的情况下,地面控制系统继续接收下行指令帧的后续数据,以便实现监控目标。
在一些实施例中,地面控制系统继续接收下行指令帧的例如数据部分和帧尾等后续数据,并按照父类指令标识指示的父类指令以及父类指令中的子类指令标识指示的子类指令解析下行指令的数据部分,从下行指令的数据部分获取飞行器的状态信息,从而实现监控目标。
例如,按照父类指令标识指示的系统指令集以及系统指令集中的子类指令标识指示的心跳包,解析心跳包的数据部分,从心跳包的数据部分获取当前飞行模式和飞行锁定状态。
又例如,按照父类指令标识指示的实时数据指令集以及实时数据指令集中的子类指令标识指示的姿态数据指令,解析姿态数据指令指令的数据部分,从姿态数据指令指令的数据部分获取姿态数据。
在步骤240,在监控目标相关的指令标识与监控目标不匹配的情况下,不再接收下行指令帧的后续数据。
继步骤220中的示例,若地面控制系统从下行指令帧的部分数据中解析出的父类指令标识是表示系统指令集的标识,说明监控目标相关的指令标识与监控目标匹配,可以继续接收下行指令帧的后续数据,例如,继续接收子类指令,否则,不再接收下行指令帧的后续数据。若继续接收到的子类指令标识是表示系统状态指令的标识,说明监控目标相关的指令标识与监控目标依然匹配,可以继续接收下行指令帧的后续数据,例如,继续接收指令的数据部分和帧尾等信息,否则,不再接收下行指令帧的后续数据。
通过构建层次化的下行指令帧,优先接收并解析飞行器发送的下行指令帧的部分数据,在解析出的监控目标相关的指令标识与监控目标匹配的情况下,继续接收下行指令帧的后续数据,否则,不再接收下行指令帧的后续数据,利用层次化的特性实现对下行指令帧进行快速解析和按需解析,从而大幅降低处理指令集的资源消耗,保障大规模集群监控的可实施性和时效性。
图3为本公开飞行监控方法另一些实施例的流程示意图。
如图3所示,该实施例的方法包括:步骤310-350。
在步骤310,地面控制系统接收飞行器发送的下行指令帧的部分数据。
在步骤320,地面控制系统从下行指令帧的部分数据中解析出帧头。在帧头对应的应用场景符合监控目标的情况下,继续接收下行指令帧的后续数据,然后执行步骤330,在帧头对应的应用场景不符合监控目标的情况下,执行步骤350。
例如,监控目标是对物流配送的飞行器进行监控,则帧头应当包括物流行业的例如运营区域ID、运营站点ID等信息,如果有,说明帧头对应的应用场景符合该监控目标,如果没有,而是一些例如农业植保行业的信息,说明说明帧头对应的应用场景不符合该监控目标。
在步骤330,地面控制系统从下行指令帧的部分数据中解析出监控目标相关的指令标识。在监控目标相关的指令标识与监控目标匹配的情况下,然后执行步骤340,在监控目标相关的指令标识与监控目标不匹配的情况下,执行步骤350。
在步骤340,地面控制系统继续接收下行指令帧的后续数据,以便实现监控目标。
在步骤350,地面控制系统不再接收下行指令帧的后续数据。
上述的步骤310、330-350的具体实现可以参考步骤210-240,相同的内容这里不再赘述。
在图2所示实施例具有的优点的基础上,通过先解析帧头,预先筛除应用场景与监控目标不匹配的数据帧,不再接收和解析不匹配数据帧的后续数据,利用层次化的特性实现对下行指令帧进行快速解析和按需解析,从而大幅降低处理指令集的资源消耗,保障大规模集群监控的可实施性和时效性。
图4为本公开飞行监控装置一些实施例的结构示意图。
如图4所示,飞行监控装置包括以下模块。
接收模块410,用于接收飞行器发送的下行指令帧的部分数据,下行指令帧包括父类指令标识和子类指令标识。
解析模块420,用于从下行指令帧的部分数据中解析出监控目标相关的指令标识,监控目标相关的指令标识为父类指令标识,或者,为父类指令标识和子类指令标识。
接收决策模块430,用于在监控目标相关的指令标识与监控目标匹配的情况下,继续接收下行指令帧的后续数据,以便实现监控目标,否则,不再接收下行指令帧的后续数据。
在一些实施例中,下行指令帧还包括帧头和帧尾,帧头和帧尾被配置为根据应用场景进行设置。解析模块,还用于从下行指令帧的部分数据中解析出帧头;接收决策模块,还用于在帧头对应的应用场景符合监控目标的情况下,继续接收下行指令帧的后续数据,以便实现监控目标,否则,不再接收下行指令帧的后续数据。
在一些实施例中,下行指令帧被配置为按照指令功能进行封装,一种指令功能的下行指令封装成一个下行指令帧。
在一些实施例中,下行指令帧被配置为按照指令功能设置实现模块,一种指令功能的下行指令设置一个实现模块。
在一些实施例中,每个实现模块被配置为能够单独进行更换、优化或升级。
在一些实施例中,指令功能依据子类指令的功能进行划分。
在一些实施例中,下行指令帧被配置为根据应用场景的需要,扩展应用场景相应的父类指令、子类指令、或者子类指令中的字段。
利用层次化的特性实现对下行指令帧进行快速解析和按需解析,从而大幅降低处理指令集的资源消耗,保障大规模集群监控的可实施性和时效性。
图5为本公开飞行监控装置另一些实施例的结构示意图。
如图5所示,飞行监控装置包括:存储器510以及耦接至该存储器510的处理器520,处理器520被配置为基于存储在存储器510中的指令,执行前述任意一个实施例中的飞行监控方法。
其中,存储器510例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
飞行控制装置还可以包括:输入输出接口530、网络接口540、存储接口550等。这些接口530,540,550以及存储器510和处理器520之间例如可以通过总线560连接。其中,输入输出接口530为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口540为各种联网设备提供连接接口。存储接口550为SD卡、U盘等外置存储设备提供连接接口。
本公开还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任意一个实施例中的飞行监控方法。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。