一种基于有限状态机的无人机安全飞行方法
未命名
08-13
阅读:229
评论:0
1.本发明涉及一种基于有限状态机的无人机安全飞行方法,属于无人机技术领域。
背景技术:
2.小型旋翼无人机作为一种机器人开发平台,具有低成本、小尺寸、高机动、自由悬停的特点,这使得它在狭小复杂地形下实现自主导航具有得天独厚的优势。但旋翼无人机的续航时间比较短,因此单个无人机的任务能力往往较小,像区域巡检、探索等大规模的任务需要靠旋翼无人机群来完成。针对无人机群的控制问题,通常每一架无人机都需要一台上位机和一个遥控器对其进行控制,因此一个人难以完成旋翼无人机群的飞行控制。
3.针对无人机平台问题,现有以下几种主要的解决方案:
4.方案1:文献(于同阳,尹丽菊,胡浩东,许文强,寇廷栋.基于移动网络的多轴无人机远程控制系统[j].自动化与仪表,2019,34(08):51-54.)弥补了目前无人机控制距离太短的不足,采用4g移动网络以及tcp协议对其进行远程控制,实现无人机与上位机之间的通信交流。但整个控制系统完全是基于单片机控制的,存在运行速度过慢、编程困难、控制不稳定等缺点。且tcp协议较udp协议传输速度较慢,机制较为复杂。
[0005]
方案2:文献(段小虎.无人机集群远程控制系统研究[j].信息通信,2018(04):84-87.)对多机协同任务的远程控制系统进行了综合化设计,进行了人机界面的统一,控制人员可以集中对整个无人机群进行决策控制,其飞机控制计算单元与无人机一一配对,用于监控无人机的状态,获取无人机反馈的信息,并对无人机进行直接控制。但它的通信设备不再直接连接到计算单元,而是与计算单元一起统一连接到总线网络,这比较适用于大规模的集群控制,当无人机数量较少时,反而加大了硬件和通讯的负担。
技术实现要素:
[0006]
本发明的目的是克服现有技术的不足,提出一种基于有限状态机的无人机安全飞行方法,能够解决在远程控制设备及操控人员有限的情况下操控多无人机群的技术问题。
[0007]
本发明的技术解决方案是:
[0008]
一种基于有限状态机的无人机安全飞行方法,该方法的步骤包括:
[0009]
步骤1:构建状态机基本框架,具体方法为:以px4飞控为例,尽可能地列举出无人机在飞行过程中的各个“状态”(之后可以自行添加),然后根据实际需要确定引起状态变迁的“事件”,促使状态机从一种状态切换到另一种状态,然后根据所有状态和事件画出完整的状态图和状态表,最后根据状态图和状态表进行编程,完成状态机基本框架的构建;
[0010]
步骤2:建立上位机与各个无人机之间的通信,具体方法为:上位机作为客户端,各个无人机上的机载电脑作为服务端,分别设置对应的端口,采用多线程模式,上位机可同步或异步向各个机载电脑发送数据;
[0011]
步骤3:配置飞行控制环境,具体方法为:在上位机中打开本机的终端,并利用ssh协议分别远程访问各个机载电脑的终端,从而控制机载电脑的程序运行;
[0012]
步骤4:为飞行任务设定一个单独的状态,飞行任务即为该状态的“动作”,根据步骤1构建的状态机的基本框架,从初始状态开始,根据步骤2建立的上位机与各个无人机之间的通信发送指令使飞机起飞并悬停在一个设定的高度,此时可在上位机终端中控制飞机进入降落状态、飞行任务状态,并且根据步骤 3配置的飞行控制环境进入机载电脑终端时刻监测无人机的姿态,完成无人机的安全飞行。
[0013]
所述的上位机为计算机;
[0014]
该方法的详细步骤为:
[0015]
步骤s1:构建无人机的有限状态机的框架;
[0016]
步骤s2:基于udp协议建立上位机与所述无人机群中各无人机之间的通信连接;其中,所述上位机作为客户端,所述无人机上的机载电脑作为服务端;所述上位机采用多线程模式,能够以同步或异步的方式向所述无人机群中的各个无人机发送数据及指令;
[0017]
步骤s3:配置飞行控制环境,所述上位机通过ssh协议远程访问各个无人机的服务器,进而操控机载电脑运行相应的程序;
[0018]
步骤s4:在服务端中获取所述无人机群中各无人机的当前状态,基于任务目标,确定所述无人机群中待接受事件触发的无人机子群;根据所述无人机的有限状态机的框架,在所述上位机中向所述待接受事件触发的无人机子群发送控制指令;所述控制指令对应的报文,其报文头为事件编号;所述待接受事件触发的无人机子群中的每个无人机,基于接收到的控制指令中的所述事件编号,调用相应的程序,进行状态转换。
[0019]
所述步骤s1包括:
[0020]
为所述无人机对应的事件编号:将状态机设置初始编号设置为0、起飞设置为1、怠速设置为2、降落设置为4、刹停设置为5、接受飞行任务设置为7、悬停设置为9、以及结束所述上位机控制程序设置为99;并相对于机体坐标系,所述机体坐标系以无人机几何中心为原点,以机头朝向为x正方向,以重力方向为z正方向,再根据右手定则获得y正方向;x正方向飞行设置为10、x负方向飞行设置为20、y正方向飞行设置为30、y负方向飞行设置为40、z负方向飞行设置为50、z正方向飞行设置为60。
[0021]
确定所述无人机的状态,状态包括空闲、怠速、起飞、悬停、调整位姿、算法执行、异常、降落、以及刹停。
[0022]
构建所述无人机的有限状态机的状态转换机制:
[0023]
若所述无人机的当前状态为空闲,当发生编号为2的事件时,无人机的下一状态为怠速;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持空闲状态。
[0024]
若所述无人机的当前状态为怠速,当发生编号为1的事件时,无人机的下一状态为起飞;当发生编号为4的事件时,无人机的下一状态为刹停;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持怠速状态。
[0025]
若所述无人机的当前状态为起飞,当发生保持事件时,即保持当前状态,无人机的下一状态为悬停;当发生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为7的事件时,无人机的下一状态为自定义的算法执行;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应
的事件时,无人机保持起飞状态。
[0026]
若所述无人机的当前状态为悬停,当生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为7的事件时,无人机的下一状态为自定义的算法执行;当发生编号为10、 20、30、40、50、60中的一个或多个事件时,无人机的下一状态为调整位姿;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持悬停状态。
[0027]
若所述无人机的当前状态为调整位姿,当生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为7的事件时,无人机的下一状态为自定义的算法执行;当发生编号为 9的事件时,无人机的下一状态为悬停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持调整位姿状态。
[0028]
若所述无人机的当前状态为自定义的算法执行,当发生保持事件时,即保持当前状态,无人机的下一状态为悬停;当发生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持自定义的算法执行状态。
[0029]
若所述无人机的当前状态为异常,当发生保持事件时,即保持当前状态,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为9的事件时,无人机的下一状态为悬停;当发生编号为99 的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持异常状态。
[0030]
若所述无人机的当前状态为降落,当发生保持事件时,即保持当前状态,无人机的下一状态为刹停;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为9的事件时,无人机的下一状态为悬停;当发生编号为99 的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持降落状态。
[0031]
若所述无人机的当前状态为刹停,当发生编号为2的事件时,无人机的下一状态为怠速;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持刹停状态。
[0032]
进一步地,所述有限状态机的事件、状态及有限状态机的状态转换,均具有扩展接口,用于对事件、状态及有限状态机的状态转换进行扩展。
[0033]
以px4飞控为例,尽可能地列举出无人机在飞行过程中的各个状态,然后根据实际需要确定引起状态变迁的事件,促使状态机从一种状态切换到另一种状态,然后根据所有状态和事件画出完整的状态图和状态表,最后根据图标进行编程。
[0034]
以带px4飞控的无人机为例。在一次完整的飞行过程中,无人依次经历了静止、怠速、起飞、悬停、飞行任务、降落、刹停状态。
[0035]
刚开始飞机处于静止状态,“发送起飞指令”即为使状态机从静止状态变迁到怠速状态的“事件”,执行后无人机开始怠速。当安全性检测通过后,执行相应的起飞“事件”,飞机起飞,飞到设定的高度时,自动进入悬停状态(也可主动触发)。此时,可执行“飞行任务”事件,来执行相应的任务,任务结束后自动回到悬停状态,然后执行“降落”事件,飞机在该x、y坐标系下逐渐降落到一个很低的高度,再执行“刹停”事件,螺旋桨停止转动,飞机落地静止。若无飞行任务,仅用于测试之类的实验,也可在第一个悬停阶段直接降落、上锁。同
时,为了安全性考虑,为状态机设定了一个“异常”状态,即为飞行过程中的一些不利状态,例如电池电压过低、由于通信或操作问题引起的位姿跳变过大等等,对此,设置了一系列指标,对无人机的数据进行实时监测,不满足指标即会自动进入异常“状态”,状态机随后自动进入降落、上锁状态,使无人机安全降落。
[0036]
因此,事件中包括主动触发的事件,主动触发的有“怠速”事件、“起飞”事件、“悬停”事件、“飞行任务”事件、“降落”事件、“刹停”事件和“结束程序”事件,为每一个事件编号,同时,为了对无人机的位置进行简单调整,增加了x、y、 z正负方向上的位置“控制”事件,在悬停状态下执行后可使无人机在该方向上以设定速度移动,再执行“悬停”事件即可停止移动,也为这6个事件编号。
[0037]
然后将列出的事件在不同状态下触发的结果绘制成状态表。表中第一行为各个状态,第一列为各个事件,其他内容即为该状态下触发某事件后状态机到达的另一个状态,空白则表示触发后保持不变。根据这个状态表,有利于更有条理地执行飞行任务。
[0038]
所述步骤s2,本实施例中,将所述上位机与各个无人机连接到同一个局域网下,并为每个无人机、以及无人机上的机载电脑中设置网络为静态ip,目的在于方便飞行平台对应代码及ssh协议中的ip设置。用udp协议进行数据传输,采用多线程模式,上位机作为客户端,每一个无人机都是一个服务端。按照udp的格式分别在上位机和机载电脑中编写程序,从而建立连接,客户端只负责循环发送信息,服务端只负责循环接收信息。发送的信息为字符串,字符串中的第一个数据为事件的编号。把各个事件期待的数据分别打包放入客户端,并把每一个包根据编号,用switch语句选择编号,用case语句将数据放入字符串中,然后在服务端中将字符串的数据分别提取出来,带入相应的程序中执行命令。这样每次需要主动触发事件时,只需在客户端输入对应的编号,客户端便可将相应数据以字符串的形式发送到各个服务端,服务端即可执行命令,达到了远程控制的效果。
[0039]
所述步骤s3包括:
[0040]
步骤s3:配置飞行控制环境,在上位机中打开所述上位机的终端,并利用 ssh协议分别远程访问各个无人机的服务器,从而控制机载电脑的程序运行。
[0041]
在实际飞行过程中,所有操作是需要在一台上位机中来完成的,因此用到了ssh协议,即在上位机中分别远程访问各个无人机的服务器。把机载电脑作为主机,上位机作为所有机载电脑的从机,预先为上位机和各个机载电脑设置不同的静态ip,然后在所有ubuntu系统中的/etc/hosts文件中进行相应ip配置。这样,便可以在上位机中进入机载电脑终端启动相应的程序。
[0042]
所述步骤s4,其中:为飞行任务设定一个单独的状态,飞行任务即为该状态的“动作”。从初始状态开始,发送一系列指令使飞机起飞并悬停在一个设定的高度,此时可在上位机终端中控制飞机进入降落状态、飞行任务状态。
[0043]
将上位机和所有无人机启动,先在上位机中ping机载电脑进行网络检查,与每一台都通信正常后,将无人机放到指定位置。然后开启无人机的各自遥控,进行怠速测试,均无误后将刹停键关闭。
[0044]
以操控一架为人机为例。在上位机中开启自身的终端和各个机载电脑的终端,然后各自运行脚本启动程序,控制平台便初始化完成。对其做简单介绍:桌面上共显示两个终端,一个为上位机的终端,初始化后会显示事件控制编号表,只需在此终端中输入期待事件
的编号并回车,即可向机载电脑发布命令,且每执行一次事件后事件控制编号表再次显示到上位机终端,因此不需要操作员记忆编号表,同时也会显示连接的无人机名称,若操控多个飞机则出现多条。另一个则为机载电脑的终端,以20hz频率接收消息并同步显示,消息从左往右分别为事件编号和x、y、z的目标坐标,在飞机飞行过程中,目标坐标可以近似为当前坐标,从而可以进行实时监控,做到安全飞行。当机载电脑终端中循环显示接收的消息后,即表明udp传输正常。
[0045]
机载电脑的程序中有一个起飞前自动安全检查的功能,当机载电脑终端显示“waiting”,则表明安全检查还未通过,可能是其他相应程序还未初始化或出现了故障,需要加以等待或检查修复。当机载电脑显示“ready fly”,才说明安全检查完毕,即可根据状态表在客户端中输入事件的编号,开始飞行控制。
[0046]
首先,在客户端输入“2”,便会显示黄色条“arm publish”,提示飞行员发送成功,此时观察服务端,事件编号将由0变为2,说明记载电脑接收到了命令,飞机即将怠速。当看到飞机怠速正常后,便可在客户端继续输入“1”,提示“offboard publish”后,服务端事件编号也变为“1”,飞机逐渐上升至1m的高度后自动停。此时可以对飞机的位姿做一些简单的平移调整,通过输入10、20、 30、40、50、60来控制飞机向各个坐标轴方向以固定速度移动,实际实验证明具有很高的精度。想要暂停时便输入“9”,飞机便在当前位置悬停。经过测试, 20hz的频率已经能满足时间精度需求,不会出现肉眼可见的延迟,保证了飞行的安全性。若想进行一些自定义的高级飞行活动,可将自定义的算法放入“算法执行”事件中来完成,此处不做拓展。
[0047]
在飞机降落前,先用肉眼观察飞机的降落环境,确定安全后,输入“4”,终端出现“land publish”再次提示飞机开始降落,飞机便会以当前x、y坐标降落到0.3m的高度。待其稳定后,再输入“5”,飞机便刹停,自动掉落(0.3m的高度基本不会对飞机造成损坏),再按“99”,退出控制程序,整个飞行任务完成。
[0048]
当飞机出现一些异常时,在机载电脑终端中就会自动提示“emergency, land!”,此时为了使损坏达到最小,已经预设让其以当前x、y坐标自动降落。
[0049]
该方法在真实世界中得到了验证,包括用一个上位机同时操控两架无人机完成了起飞、悬停、位姿变换、降落的简单飞行任务;接入算法至“算法执行”事件,用上位机控制三架无人机完成分布式自主导航。通过实验验证,可以说明,使用这种基于px4有限状态机的无人机安全飞行方法,在保证安全性的同时,大大降低了操作的复杂性。实现了一人控制多机飞行的可能,且飞行过程中通信质量良好,没有出现多线程导致的超负荷。
[0050]
进一步地,所述上位机个人计算机,其计算能力、稳定性超过单片机。
[0051]
进一步地,本发明抛弃了繁琐的总线系统,采用udp一个客户端对多个服务端的模式,既能统一人机界面,又简化了环境配置。
[0052]
进一步地,本发明尽可能地将遥控器功能放到代码里实现,遥控器开机解锁后,操作人员在飞行过程中可以由上位机控制飞行,将飞行控制与控制器完全脱离。
[0053]
本发明采用位置控制来控制无人机的起飞、降落和简单位姿变化,轨迹跟踪误差小于0.1m。本发明加入了起飞前自我检查的部分,检查通过才能起飞,更好地保障了人、机安全。
[0054]
有益效果
[0055]
(1)本发明的方法操作简便,节省人力、物力,整个飞行任务的操作只需要在一台上位机中进行,并且不需要专门的人员来控制遥控器。
[0056]
(2)本方法安全性能较高,考虑了飞行过程中可能出现的一些异常情况,如有发生,现有状态立即转移为降落状态,保护人、机安全。
[0057]
(3)本方法根据用户需要很容易进行改进。为用户设定了飞行任务状态,相当于一个对外的接口,用户可将自己开发的算法通过该接口与状态机相连接,即可在飞行任务状态下运行相应的外部程序,控制飞机完成自定义的飞行任务。
[0058]
(4)本发明针对集群旋翼无人机的控制问题,提出了一种基于px4有限状态机的无人机安全飞行方法。整个系统是基于udp协议进行通信的,上位机同步或异步发送指令给各个机载电脑,以控制各架旋翼无人机完成对应的飞行任务。所有操作均在上位机中进行,各个遥控器在开机后便不需进行其他的操作,即一人可以操作实现多机的飞行任务。
[0059]
(5)本发明的方法为n(n≥2)个旋翼无人机组成的无人机系统设计一个控制平台,建立了统一的人机界面,在不操作遥控器的情况下,一名操作人员能够在一台上位机中操控多架飞机安全、稳定地完成预定飞行任务。
[0060]
(6)本发明涉及一种基于有限状态机的无人机安全飞行方法,属于无人机技术领域。采用udp一个客户端对多个服务端的模式,既能统一人机界面,又简化了环境配置。该方法适用于无人机较少的场景;本方法尽可能地将遥控器功能放到代码里实现,遥控器开机解锁后,操作人员在飞行过程中可以与其完全脱离。本方法采用位置控制来控制无人机的起飞、降落和简单位姿变化;本方法加入了起飞前自我检查的部分,检查通过才能起飞,更好地保障了人、机安全。
附图说明
[0061]
图1为状态机的状态图;
[0062]
图2为无人机的机体坐标示意图。
具体实施方式
[0063]
下面结合附图和实例对本发明做进一步说明:
[0064]
一种基于有限状态机的无人机安全飞行方法,该方法的步骤包括:
[0065]
步骤1:构建状态机基本框架
[0066]
以带px4飞控的无人机为例。在一次完整的飞行过程中,无人依次经历了静止、怠速、起飞、悬停、飞行任务、降落、刹停状态。我们在考虑操作方便性和安全性的基础上,根据px4飞控的飞行规则绘制了图1所示的状态图。对其简要分析:
[0067]
刚开始飞机处于静止状态,“发送起飞指令”即为使状态机从静止状态变迁到怠速状态的“事件”,执行后无人机开始怠速。当安全性检测通过后,执行相应的起飞“事件”,飞机起飞,飞到设定的高度时,自动进入悬停状态(也可主动触发)。此时,可执行“飞行任务”事件,来执行相应的任务,任务结束后自动回到悬停状态,然后执行“降落”事件,飞机在该x、y坐标系下逐渐降落到一个很低的高度,再执行“刹停”事件,螺旋桨停止转动,飞机落地静止。若无飞行任务,仅用于测试之类的实验,也可在第一个悬停阶段直接降落、上锁。同时,为了安全性考虑,我们为状态机设定了一个“异常”状态,即飞行过程中的一些不利状
态,例如电池电压过低、由于通信或操作问题引起的位姿跳变过大等等,对此,我们为其设置了一些指标,对无人机的数据进行实时监测,不满足指标即会自动进入异常“状态”,状态机随后自动进入降落、上锁状态,使无人机安全降落。
[0068]
主动触发的有“怠速”事件、“起飞”事件、“悬停”事件、“飞行任务”事件、“降落”事件、“刹停”事件和“结束程序”事件,为每一个事件编号,如表1所示。同时,为了对无人机的位置进行简单调整,我们增加了x、y、z正负方向上的位置“控制”事件,建立的坐标系如图2所示,以无人机重心为原点,机头朝向为 x轴正方向,重力方向为z轴正方向,再根据右手定则获得y轴正方向,据此在悬停状态下出发相应事件后可使无人机在该方向上以设定速度移动,再执行“悬停”事件即可停止移动,也为这6个事件编号;
[0069]
表1对事件进行编号
[0070]
编号事件0状态机初始编号1起飞2怠速4降落5刹停7飞行任务9悬停10x正方向飞行20x负方向飞行30y正方向飞行40y负方向飞行50z负方向飞行60z正方向飞行99结束程序
[0071]
然后我们将列出的事件在不同状态下触发的结果绘制成状态表,如表2所示。表中第一行为各个状态,第一列为各个事件,其他内容即为该状态下触发某事件后状态机到达的另一个状态,空白则表示触发后保持不变。根据这个状态表,我们将会更有条理地执行飞行任务。
[0072]
表2状态机的状态表
[0073][0074]
步骤2:建立上位机与各个无人机之间的通信
[0075]
将上位机与各个无人机连到同一个局域网下,并在在每一台计算机中手动设置网络为静态ip(方便代码及ssh协议中的ip设置)。用udp协议进行数据传输,采用多线程模式,上位机作为客户端,每一个无人机作为一个服务端。按照udp的格式分别在上位机和机载电脑中设置接口,从而建立连接,客户端只负责循环发送信息,服务端只负责循环接收信息。信息内容为字符串,设置字符串中的第一个数据为各个事件的编号。因此,我们只需把各个事件期待的数据分别打包放入客户端的程序中,并把每一个包的编号,用switch语句选择编号,用case语句将数据放入字符串中,然后在服务端中将字符串的数据分别提取出来,带入相应的程序中执行命令。这样每次我们想主动触发事件,只需在客户端输入对应的编号,客户端便可将相应数据以字符串的形式发送到各个服务端,服务端即可执行命令,达到了远程控制的效果。
[0076]
步骤3:配置飞行控制环境
[0077]
在实际飞行过程中,我们的所有操作是在一台上位机中来完成的,因此用到了ssh协议,即在上位机中进入各个机载电脑的终端。把机载电脑作为主机,上位机作为所有机载电脑的从机,预先为上位机和各个机载电脑设置不同的静态ip,然后在所有ubuntu系统中的/etc/hosts文件中进行相应ip配置。这样,我们便可以在上位机中进入机载电脑终端启动相应的程序。
[0078]
步骤4:实际飞行
[0079]
将上位机和所有无人机启动,先在上位机中ping机载电脑进行网络检查,与每一台都通信正常后,将无人机放到指定位置。然后开启无人机的各自遥控,进行怠速测试,无误后将遥控器刹停键拨到“off”端。
[0080]
以操控一架为人机为例。在上位机中开启自身的终端和各个机载电脑的终端,分别运行脚本从而启动各自的程序,控制平台便初始化完成。对其做简单介绍:桌面上共显示两个终端,一个为上位机的终端,初始化后会显示事件控制编号表,只需在此终端中输入期待事件的编号并回车,即可向机载电脑发布命令,且每执行一次事件后事件控制编号表再次显示到上位机终端,因此不需要操作员记忆编号表。同时也会显示连接的无人机名称(此处为1号机),若操控多个飞机则出现多条。另一个则为机载电脑的终端,以20hz频率接收消息并同步显示,消息从左往右分别为事件编号和x、y、z的目标坐标,在飞机飞行过程中,目标坐标可以近似为当前坐标,从而可以进行实时监控,做到安全飞行。当机载电脑终端中循环显示接收的消息后,即表明udp传输正常。
[0081]
机载电脑的程序中有一个起飞前自动安全检查的功能,当机载电脑终端循环显示“waiting”,则表明安全检查还未通过,可能是其他相应程序还未初始化或出现了故障,需要加以等待或检查修复。直到机载电脑循环显示“ready fly”,才说明安全检查完毕,即可根据状态表在客户端中输入事件的编号,开始飞行控制。
[0082]
首先,我们在客户端输入“2”,便会显示黄色条“arm publish”,提示飞行员发送成功,此时观察服务端,事件编号将由0变为2,说明机载电脑接收到了命令,飞机即将怠速。当我们看到飞机怠速正常,便可在客户端继续输入“1”,提示“offboard publish”后,服务端事件编号也变为“1”,可见飞机逐渐上升至约 1m的高度后自动悬停。此时我们可以对飞机的位姿做一些简单的平移调整,通过输入“10”、“20”、“30”、“40”、“50”、“60”来控制飞机以固定速度朝各个坐标轴方向移动,实际实验证明具有很高的精度。想要暂停时就输入“9”,飞机便在当前位置悬停。经过测试,20hz已经能满足时间精度需求,不会出现肉眼可见的延迟,保证了飞行的安全性。若想进行一些自定义的高级飞行活动,可将自己的算法放入“算法执行”事件中来完成,此处不做拓展。
[0083]
在飞机降落前,先肉眼观察飞机的降落环境,确认安全后,输入“4”,终端出现“land publish”再次提示你飞机开始降落,飞机便会以当前x、y坐标降落到0.3m的高度。待其稳定后,再输入“5”,飞机便刹停,自动着陆(0.3m的高度基本不会对飞机造成损坏)。最后输入“99”,退出控制程序,整个飞行任务完成。
[0084]
当飞机出现一些异常时,机载电脑终端就会自动提示“emergency,land!”,此时为了使损坏达到最小,我们预先进行了设置让其以当前x、y坐标自动降落。
[0085]
该方法在真实世界中得到了验证,我们已经用一个上位机同时操控两架无人机完成了起飞、悬停、位姿变换、降落的简单飞行任务;接入算法至“算法执行”事件,用上位机控
制三架无人机完成分布式自主导航。因此可以说明,使用这种基于有限状态机的无人机安全飞行方法,在保证安全性的同时,大大降低了操作的复杂性。实现了一人控制多机飞行的可能,且飞行过程中通信质量良好,没有出现多线程导致的超负荷。
[0086]
以上所述的仅为本发明的较佳实施例而已,本发明不仅仅局限于上述实施例,凡在本发明的精神和原则之内所做的局部改动、等同替换、改进等均应包含在本发明的保护范围之内。
技术特征:
1.一种基于有限状态机的无人机安全飞行方法,其特征在于该方法的步骤包括:步骤1,构建状态机基本框架;步骤2:建立上位机与各个无人机之间的通信;步骤3:配置飞行控制环境;步骤4:根据步骤1构建的状态机的基本框架,从当前状态开始,根据步骤2建立的上位机与各个无人机之间的通信发送指令使飞机起飞并且根据步骤3配置的飞行控制环境进入机载电脑终端时刻监测无人机的状态,完成无人机的安全飞行。2.根据权利要求1所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:所述的步骤1中,构建状态机基本框架的具体方法为:列举无人机在飞行过程中的各个“状态”,然后根据实际需要确定引起状态变迁的“事件”,促使状态机从一种状态切换到另一种状态,然后根据所有状态和事件画出完整的状态图和状态表,最后根据状态图和状态表进行编程,完成状态机基本框架的构建。3.根据权利要求1或2所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:所述的步骤2中,建立上位机与各个无人机之间的通信的具体方法为:上位机作为客户端,各个无人机上的机载电脑作为服务端,分别设置对应的端口,采用多线程模式,上位机同步或异步向各个机载电脑发送数据。4.根据权利要求3所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:所述的步骤3中,配置飞行控制环境的具体方法为:在上位机中打开本机的终端,并利用ssh协议分别远程访问各个机载电脑的终端,从而控制机载电脑的程序运行。5.根据权利要求4所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:所述的步骤4中,在服务端中获取各无人机的当前状态,基于任务目标,确定待接受事件触发的无人机,在上位机中向待接受事件触发的无人机发送控制指令;控制指令对应的报文头为事件编号;待接受事件触发的每个无人机基于接收到的控制指令中的事件编号,调用相应的程序,进行状态转换。6.根据权利要求4所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:设置无人机的事件编号方法为:将状态机的初始编号设置为0、起飞设置为1、怠速设置为2、降落设置为4、刹停设置为5、接受飞行任务设置为7、悬停设置为9、以及结束所述上位机控制程序设置为99;所述机体坐标系以无人机几何中心为原点,以机头朝向为x正方向,以重力方向为z正方向,再根据右手定则获得y正方向;x正方向飞行设置为10、x负方向飞行设置为20、y正方向飞行设置为30、y负方向飞行设置为40、z负方向飞行设置为50、z正方向飞行设置为60。7.根据权利要求6所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:所述无人机的状态包括空闲、怠速、起飞、悬停、调整位姿、算法执行、异常、降落、以及刹停。8.根据权利要求6或7所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:所述无人机的有限状态机的状态转换机制为:若所述无人机的当前状态为空闲,当发生编号为2的事件时,无人机的下一状态为怠
速;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持空闲状态;若所述无人机的当前状态为怠速,当发生编号为1的事件时,无人机的下一状态为起飞;当发生编号为4的事件时,无人机的下一状态为刹停;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持怠速状态。9.根据权利要求8所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:若所述无人机的当前状态为起飞,当发生保持事件时,即保持当前状态,无人机的下一状态为悬停;当发生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为7的事件时,无人机的下一状态为自定义的算法执行;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持起飞状态;若所述无人机的当前状态为悬停,当生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为7的事件时,无人机的下一状态为自定义的算法执行;当发生编号为10、20、30、40、50、60中的一个或多个事件时,无人机的下一状态为调整位姿;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持悬停状态;若所述无人机的当前状态为调整位姿,当生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为7的事件时,无人机的下一状态为自定义的算法执行;当发生编号为9的事件时,无人机的下一状态为悬停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持调整位姿状态;若所述无人机的当前状态为自定义的算法执行,当发生保持事件时,即保持当前状态,无人机的下一状态为悬停;当发生编号为4的事件时,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持自定义的算法执行状态。10.根据权利要求9所述的一种基于有限状态机的无人机安全飞行方法,其特征在于:若所述无人机的当前状态为异常,当发生保持事件时,即保持当前状态,无人机的下一状态为降落;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为9的事件时,无人机的下一状态为悬停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持异常状态;若所述无人机的当前状态为降落,当发生保持事件时,即保持当前状态,无人机的下一状态为刹停;当发生编号为5的事件时,无人机的下一状态为刹停;当发生编号为9的事件时,无人机的下一状态为悬停;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持降落状态;若所述无人机的当前状态为刹停,当发生编号为2的事件时,无人机的下一状态为怠速;当发生编号为99的事件时,无人机的下一状态为退出程序;当发生其他编号对应的事件时,无人机保持刹停状态。
技术总结
本发明涉及一种基于有限状态机的无人机安全飞行方法,属于无人机技术领域。采用UDP一个客户端对多个服务端的模式,既能统一人机界面,又简化了环境配置。该方法适用于无人机较少的场景;本方法尽可能地将遥控器功能放到代码里实现,遥控器开机解锁后,操作人员在飞行过程中可以与其完全脱离。本方法采用位置控制来控制无人机的起飞、降落和简单位姿变化;本方法加入了起飞前自我检查的部分,检查通过才能起飞,更好地保障了人、机安全。机安全。机安全。
技术研发人员:虞睿 辛斌 陈杰 吴德龙 魏韶谆 李若成
受保护的技术使用者:北京理工大学
技术研发日:2022.08.17
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:应用于警示灯的控制电路的制作方法 下一篇:一种可吸收悬吊板的制作方法
