一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种飞行轨迹原路复演方法及飞行器与流程

2022-06-02 14:59:08 来源:中国专利 TAG:

一种飞行轨迹原路复演方法及飞行器
1.技术领域
2.本发明涉及飞行器控制技术领域,尤其涉及一种飞行轨迹原路复演方法及飞行器。


背景技术:

3.随着无人机技术的发展,多旋翼无人机越来越普及,被广泛应用于航拍领域,航拍技术可用于灾情评估、抢险救灾、现场侦察、军事演练等领域。目前,常用的小型无人机操作主要依赖于飞手的手持遥控器,迫使小型无人机的使用存在一定的入门门槛。飞手需要具备一定的飞行技术以及一定的理论知识才能够较好的使用小型无人机,从而限制了小型无人机的应用。在电影拍摄场景中,要求飞手尽可能多次沿着同一轨迹飞行取景,由于人为原因,即便是专业的飞手,也很难做到多次飞行都能沿着同一轨迹飞行。
4.在这种背景下,如何使得无人机自主飞行,且能够达到多次飞行的轨迹趋近一致是本领域的技术人员正在研究的技术问题。


技术实现要素:

5.有鉴于此,本发明实施例提供一种飞行轨迹原路复演方法及飞行器,得到的优化后的第一轨迹能够尽可能还原人为控制时的飞行的轨迹。
6.本发明实施例第一方面提供了一种飞行轨迹原路复演方法,该方法包括:
7.飞行器在多个飞行时刻拍摄第一图像和采集飞行状态数据,所述飞行状态数据包括位置信息、速度信息和加速度信息中至少一项,所述飞行器在所述多个飞行时刻飞行的轨迹是基于检测到的针对所述飞行器的打杆操作确定的;
8.所述飞行器根据在所述多个飞行时刻采集的飞行状态数据生成第一轨迹,所述第一轨迹的平滑程度高于所述飞行器在所述多个飞行时刻飞行的轨迹的平滑程度;
9.所述飞行器按照生成的所述第一轨迹飞行。
10.本发明实施例第二方面提供了一种飞行器,该飞行器包括处理器、存储器和摄像头,该存储器用于存储程序指令,该处理器用于调用该程序指令来执行如下操作:
11.按照在多个飞行时刻拍摄第一图像和采集飞行状态数据,所述飞行状态数据包括位置信息、速度信息和加速度信息中至少一项,所述飞行器在所述多个飞行时刻飞行的轨迹是基于检测到的针对所述飞行器的打杆操作确定的;
12.根据在所述多个飞行时刻采集的飞行状态数据生成第一轨迹,所述第一轨迹的平滑程度高于所述飞行器在所述多个飞行时刻飞行的轨迹的平滑程度;
13.所述飞行器按照生成的所述第一轨迹飞行。
附图说明
14.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图作简单地介绍。
15.图1是本发明实施例的一种飞行控制系统的结构示意图;
16.图2为本发明实施例的一种飞行轨迹原路复演方法的流程图;
17.图3为本发明实施例的又一种飞行轨迹原路复演方法的流程图;
18.图4为本发明实施例的一种飞行器的结构示意图;
19.图5为本发明实施例的又一种飞行器的结构示意图;
20.图6为本发明实施例的又一种飞行器的结构示意图;
21.图7为本发明实施例的又一种飞行器的结构示意图。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.请参见图1,图1为本发明实施例的一种飞行控制系统。该系统包括飞行器 101、搭载在该飞行器101上的云台102,以及用于飞行器进行控制或者同时对飞行器101和云台102进行控制的地面控制设备103。该飞行器通常可以是各类型的无人机(unmanned aerial vehicle,uav),例如四旋翼uav、六旋翼uav 等。搭载在飞行器上的云台102可以是三轴云台,即该云台102的姿态可以在俯仰pitch、横滚roll以及航向yaw三个轴上进行控制,以便于确定出云台102 的朝向,使得配置在云台102上的摄像头能够完成飞行过程中的航拍等任务。
24.该飞行器101可以与地面的控制设备103进行通信(例如,无线通信)。该地面控制设备103可以是带摇杆的控制器,通过杆量来对飞行器进行控制。该地面控制设备103也可以为智能手机、平板电脑等智能设备,可以通过在用户界面ui上配置飞行轨迹来控制无人机101自动飞行,或者通过体感等方式来控制无人机101自动飞行。
25.请参阅图2,图2是本发明实施例提供的一种飞行轨迹原路复演方法,该方法可以基于图1所示的飞行系统来实现,也可以基于其他架构来实现;该方法包括但不限于如下步骤:
26.步骤s201:飞行器在多个飞行时刻拍摄第一图像和采集飞行状态数据。
27.具体地,该飞行器在空中飞行会持续一段时间,该飞行器在该一段时间的飞行可以是人为遥控该飞行器飞行的,该多个飞行时刻可以为该一段时间上的部分时刻,该多个飞行时刻是通过什么策略从该一段时间上选择出来的此处不做限定,可选的,该飞行器在按照第一轨迹飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定该多个飞行时刻,下面进行举例说明:
28.第一种,该飞行器在飞行的过程中将每次检测到针对该飞行器的打杆操作的时刻均作为飞行时刻。可以理解的是,该飞行器通常是由控制终端(例如,遥控器、手机等终端)来控制的,该控制终端在控制该飞行器的过程中可能会接收到用户针对操作杆(虚拟的或
者实体的)的打杆操作,相应地,该飞行器会实时检测是否有针对该操作杆的打杆操作,如果有则将检测到用户打杆操作的时间作为一个飞行时刻,即每次检测到打杆操作的时刻均作为飞行时刻。可以理解的是,用户对操作杆执行打杆操作的时刻通常为该飞行器在飞行过程中的转折点(即飞行状态变化的关键节点),将这些特殊时刻记下来能够帮助后续更好地还原飞行轨迹。
29.第二种,该飞行器在每个该飞行时刻的飞行速度均不低于预设速度阈值(例如,该阈值可以设置为0.1m/s),也即是说,如果某个时刻该飞行器的飞行速度很小,那么飞行器不将该某个时刻作为飞行时刻,这样做能够避免将飞行器在某时间内位移变化很小的时刻确定飞行时刻,例如,刚开始对操作杆执行打杆操作时飞行器的速度很小。若飞行器在某段时间内位移变化很小,并将该某段时间内的时刻确定为飞行时刻,则会导致后续还原的飞行轨迹不平滑。
30.第三种,该飞行器在任意两个时间上相邻的该飞行时刻之间的距离不小于预设距离阈值。在具体实现上可以为,该飞行器实时检测自身的位置,在自身的距离每改变预设距离时将当前时刻记录为飞行时刻,例如,假设该飞行器按照时间顺序依次在第1时刻(起始时刻)、第2时刻、第3时刻、第4时刻、第5时刻、第6时刻、第7时刻、第8时刻、第9时刻上检测了自身的位置;那么,首先确定相对于第1时刻的距离不小于该预设距离阈值的时刻,然后将确定出的时刻作为飞行时刻,假设确定出的飞行时刻为第3时刻,那么就将第3时刻作为飞行时刻,然后进一步确定相对于该第3时刻的距离不小于该预设阈值的时刻,然后将将确定出的时刻作为飞行时刻,假设确定出的飞行时刻为第4时刻,那么就将第4时刻作为飞行时刻,其余依此类推。
31.该飞行器会在该多个飞行时刻中每个飞行时刻采集飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项,可选的,该飞行状态数据包括该位置信息,可选的,该飞行状态数据包括位置信息和加速度信息,可选的,该飞行状态数据包括位置信息、加速度信息和速度信息。例如,当该飞行状态数据包括位置时,该位置信息可以具体为该飞行器通过定位系统(例如,(全球定位系统globalpositioningsystem,gps),北斗卫星导航系统(beidounavigationsatellitesystem,bds),伽利略卫星导航系统(galileosatellitenavigationsystem,gnss)等)、视觉定位技术和惯性测量单元(inertialmeasurementunit,imu)中至少一项确定的,可选的,该飞行器记录自身的飞行的起始位置,然后通过imu实时检测飞行加速度和飞行方向,再根据飞行加速度求出飞行速度,进而根据已飞行的时间和飞行速度计算飞行的距离,最后结合飞行的距离、飞行方向以及飞行的起始位置确定出飞行器实时的位置。再如,当该飞行状态数据包括加速度信息时,该加速度信息可以为该飞行器通过加速度传感器检测得到的,也可以为该飞行器通过预先配置的算法基于速度的变化情况计算出来的。再如,当该飞行状态数据包括速度信息时,该速度信息可以为该飞行器使用预先配置的算法基于自身位置的变化情况计算出来的。
32.另外,该飞行器会在该多个飞行时刻中每个飞行时刻拍摄第一图像,该飞行器在不同位置拍摄的第一图像不相同,该飞行器在相同位置拍摄的第一图像相同,每个飞行时刻拍摄的第一图像均可以关联位置信息,以表明该图像是在什么位置拍摄的。可选的,该第一图像可以为灰度图、rgb图像等。
33.步骤s202:该飞行器根据在该多个飞行时刻采集的飞行状态数据生成第一轨迹。
34.可以理解的是,该飞行器首先根据在多个飞行时刻采集飞行状态数据生成第一轨迹,该第一轨迹与该飞行器在上述一段时间飞行的轨迹的走向大致相同。为了便于理解,下面提供生成该第一轨迹的一种可选方式:
35.该飞行状态数据包括位置信息p、速度信息v和加速度信息a,飞行器在所有的两个相邻飞行时刻之间的飞行子轨迹依次进行拼接得到的轨迹即为该第一轨迹,其中,飞行器在任意两个相邻飞行时刻之间飞行的子轨迹可以通过5 阶多项式来描述,假设该任意两个相邻飞行时刻的中的较早时刻为t0,较晚时刻为t1,t1与t0之间的时间间隔为dt,那么,该5阶多项式具体如下:
[0036][0037]
在公式1-1中,c
x0

……
,c
x5
是x轴向轨迹多项式的系数,c
y0

……
,c
y5
是y轴向轨迹多项式的系数,c
z0

……
,c
z5
是z轴向轨迹多项式的系数,t是飞行器在任意两个相邻飞行时刻之间飞行的时间,t在区间[0,dt]上取值。接下来需要求解x轴向轨迹多项式的系数、y轴向轨迹多项式的系数和z轴向轨迹多项式的系数,这三种轴向轨迹多项式的系数的求解原理相同,因此下面以x轴向轨迹多项式的系数的求解为例进行举例描述:
[0038]
在该任意两个飞行时刻之间以最小化jerk(加速度的一阶导数)变化量 (minimum jerk)为优化函数,根据x轴方向上的位置、速度、加速度信息,得到x轴向的轨迹系数的解析式,假设该任意两个相邻飞行时刻中较早飞行时刻的飞行状态数据s0={p0,v0,a0,t0},其中,p0为飞行器在任意两个相邻飞行时刻中较早时刻的位置,v0为飞行器在任意两个相邻飞行时刻中较早时刻的速度, a0为飞行器在任意两个相邻飞行时刻中较早时刻的加速度,t0为飞行器在任意两个相邻飞行时刻中较早时刻;该任意两个相邻飞行时刻中较晚飞行时刻的飞行状态数据s0={p1,v1,a1,t1},其中,p1为飞行器在任意两个相邻飞行时刻中较晚时刻的位置,v1为飞行器在任意两个相邻飞行时刻中较晚时刻的速度,a1为飞行器在任意两个相邻飞行时刻中较晚时刻的加速度,t1为飞行器在任意两个相邻飞行时刻中较晚时刻;那么,该任意两个相邻飞行时刻中较早飞行时刻的飞行状态数据s0={p0,v0,a0,t0}在x轴向的分量为s0
x
={p
x0
,v
x0
,a
x0
,t
x0
},其中, p
x0
表示x轴向的位置,v
x0
表示x轴向的速度,a
x0
表示x轴向的加速度,t
x0
表示时间;该任意两个相邻飞行时刻中较晚飞行时刻的飞行状态数据s1= {p1,v1,a1,t1}在x轴向的分量为s1
x
={p
x1
,v
x1
,a
x1
,t
x1
},其中,p
x1
表示x轴向的位置,v
x1
表示x轴向的速度,a
x1
表示x轴向的加速度,t
x0
表示时间;可得到公式1-2所示的中间变量:
[0039][0040]
基于公式1-2可以进一步得到公式1-3所示的中间变量:
[0041]
[0042]
基于公式1-3可以进一步得到x轴向轨迹多项式的系数,如公式1-4所示:
[0043][0044]
以上描述了根据x轴向上的位置、速度、加速度信息,得到x轴向的轨迹系数的解析式,根据同样的原理可以得到y轴向的轨迹系数的解析式和z轴向的轨迹系数的解析式。这样一来,就可以根据公式1-1确定飞行器在任意两个相邻飞行时刻之间飞行的子轨迹,然后将飞行器在所有的两个相邻飞行时刻之间的飞行子轨迹依次进行拼接即可得到上述第一轨迹。
[0045]
步骤s203:该飞行器在按照该第一轨迹飞行过程中拍摄第二图像。
[0046]
步骤s204:该飞行器将该第二图像与该第一图像进行比较以确定偏移量。
[0047]
具体地,例如,该飞行器将该第二图像中的纹理与该第一图像中的纹理进行比较以确定偏移量。更具体来说,该飞行器通过闭环检测方法(loop closure) 来确定该飞行器的偏移量,具体原理如下:根据预先配置的图像匹配算法(例如,基于词袋模型进行图像相似度比较算法)从以上拍摄的大量第一图像中选择出一张与当前拍摄的第二图像最接近的第一图像,再查找拍摄该最接近的第一图像时该飞行器的位置,最后确定该飞行器拍摄该当前的第二图像时在该第一轨迹上的位置,与拍摄该最接近的第一图像时该飞行器的位置之间的偏移量,确定出来的偏移量即为该飞行器的偏移。
[0048]
可以理解的是,根据该原理该飞行器可以确定在按照第一轨迹飞行过程中的各个时刻的偏移量,确定出的该飞行器的偏移量p
offset
(t)同样可以包含x 轴向的分量y轴向的分量和z轴向的分量即该偏移量p
offset
(t)可表示为步骤 s205:该飞行器根据该偏移量修正该第一轨迹。
[0049]
具体地,前一时刻确定的偏移量可以用于后一时刻做修正。由于该第一轨迹由该第一轨迹上所有的两个相邻飞行时刻之间的飞行子轨迹依次进行拼接得到,因此这里先描述使用该偏移量对其中任意两个相邻飞行时刻之间的飞行子轨迹进行修正的原理;可选的,修正的原理可以为将该偏移量修正的原理可以为将该偏移量代入到上述公式1-1中,以得到该任意两个相邻飞行时刻之间的飞行轨迹修正后的子轨迹,如公式2-1所示:
[0050]
[0051]
所有的两个相邻飞行时刻之间的飞行轨迹修正后的子轨迹拼接可得到修正后的第一轨迹。因此,可以认为该飞行器实际是按照修正后的第一轨迹飞行,该飞行器控制自身按照修正后的第一轨迹飞行的原理可以为以下方式:
[0052]
所述飞行器确定按照该修正后的第一轨迹飞行过程中每个控制时刻(可以理解的是,该飞行器需要不断地调整该飞行器的状态,这样才能使得最终飞行出的轨迹为该修正后的第一轨迹,每个调整状态的时刻可以称为该控制时刻) 的飞行状态数据,所述飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;然后,所述飞行器在所述每个控制时刻将自身的状态调整到所述每个控制时刻的飞行状态数据所指示的状态。也即是说,该飞行器会实时获知该飞行器当前需要达到什么位置,飞行速度达到多少,以及飞行加速度达到多少。然后将对自己当前实际的位置,实际的飞行速度,以及实际的飞行加速度进行调整,以使该飞行器达到需要达到的位置,达到需要达到的飞行速度,以及达到需要达到的飞行加速度。
[0053]
下面对获知该飞行器需要达到的位置,飞行速度,以及飞行加速度的方式进行举例描述:
[0054]
假设该修正后的第一轨迹由n个修正后的子轨迹拼接而成,该n个修正后的子轨迹中每个修正后的子轨迹均为一组两个相邻飞行时刻之间的飞行轨迹修正得到(以上已有描述),不同组的两个相邻飞行时刻之间的飞行轨迹修正后得到的修正后的子轨迹可以不同。由公式2-1可知,每个修正后的子轨迹都由5 阶多项式组成且包含6个系数,这些多项式的系数和起止时间存在以下数据结构中:
[0055][0056]
在公式3-1中,trajectory_x[n][6]存储了x轴向n个修正后的子轨迹的6个系数,总共6*n个系数,trajectory_y[n][6]存储了y轴向n个修正后的子轨迹的 6个系数,总共6*n个系数,trajectory_z[n][6]存储了z轴向n个修正后的子轨迹的6个系数,总共6*n个系数;trajectory_time[n 1]存储了n个修正后的子轨迹在整个时间轴上的结束时刻,例如修正后的第一轨迹由3个修正后的子轨迹组成,这3个修正后的子轨迹的经过时间分别为1秒,2秒和3秒,那么在时间轴上,该修正后的第一轨迹的起始时刻是第0秒,第一个修正后的子轨迹的结束时刻是第1秒,第二个修正后的子轨迹的结束时刻是第3秒,第三个修正后的子轨迹的结束时刻是第6秒,6s也是飞行完该修正后的第一轨迹所需的时间。
[0057]
然后,该飞行器根据3-1所示的数据结构来执行如下流程:
[0058]
1、设置一个全局的时钟,当开始按照修正后的第一轨迹飞行时把时钟的时间重置为0,这个0实际上就是修正后的第一轨迹在时间轴上的起始时刻。
[0059]
2、假设该飞行器对轨迹跟随过程中的控制频率为frequency,即一秒钟发送 frequency次控制指令,则控制指令计算周期为1/frequency,也就是每隔 1/frequency秒计算一次控制指令,所以全局时钟的时间增长间隔是1/frequency (时钟按照公式tick=tick 1/frequency不断更新自己的时间),时钟的每一个时间tick都在修正后的第一轨迹
上对应了一个期望的位置、速度和加速度,根据时钟当前的时间tick,遍历一遍trajectory_time[n 1],从而找到tick对应哪一段修正后的子轨迹,查找到的修正后的第m个子轨迹满足下式:
[0060]
trajectory_time[m]≤tick≤trajectory_time[m 1]3-2
[0061]
3、根据修正后的第m个子轨迹的参数计算当前需要达到的位置p
desired
,需要达到的速度v
desired
,以及需要达到的加速度a
desired

[0062]
由于子轨迹多项式是归一化的,所以这个地方的tick也要归一化,即
[0063][0064]
其中,trajectory_time[m 1]-trajectory_time[m]表示修正后的第m个子轨迹的总经过时间,tick-trajectory_time[m]表示tick时刻已经进入修正后的第 m个子轨迹的时间。然后根据公式2-1所示的轨迹多项式计算需要得到的位置 p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired
,各个量的计算公式如下(trajectory_x[n][6]简写为tx[n][6]):
[0065]
需要达到的位置p
desired
为:
[0066][0067]
公式4-1是线性方程组的矩阵形式,展开之后就是公式2-1中的方程组,以 x轴向为例,展开后可得到x轴向需要达到的位置p
desired_x
=tx[m][0] tx[m][1]*t
m1
tx[m][2]*t
m2
tx[m][3]*t
m3
tx[m][4]*t
m4
tx[m][5]* t
m5
,其中,tx[m][0]等于修正后的第m个子轨迹多项式的常数项另外,y轴向和z轴向需要达到的位置可以参照x轴向的描述。基于x轴向的位置、y轴向的位置和z轴向的位置即可得到需要达到的位置p
desired

[0068]
需要达到的速度v
desired
为:
[0069][0070]
公式4-2是线性方程组的矩阵形式,展开之后就是公式3-1中的方程组的一阶导数,以x轴向为例,展开后可得到x轴向需要达到的速度v
desired_x
= tx[m][1] 2*tx[m][2]*t
m1
3*tx[m][3]*t
m2
4*tx[m][4]*t
m3
5* tx[m][5]*t
m4
,其中,tx[m][1]等于第m个修正后的子轨迹的多项式中的一阶项;另外,y轴向和z轴向需要达到的速度可以参照x轴向的描述。基于x轴向的速度、y轴向的速度和z轴向的速度即可得到需要达到的速度v
desired

[0071]
需要达到的加速度a
desired
为:
[0072][0073]
公式4-3是线性方程组的矩阵形式,展开之后就是公式3-1中的方程组的二阶导数,以x轴向为例,展开后可得到x轴向需要达到的加速度a
desired_x
=2* tx[m][2] 6*tx[m][3]*t
m1
12*tx[m][4]*t
m2
20*tx[m][5]*t
m3
,其中, tx[m][2]等于第m个修正后的子轨迹多项式的二阶项;另外,y轴向和z轴向需要达到的加速度可以参照x轴向的描述。基于x轴向的加速度、y轴向的加速度和z轴向的加速度即可得到需要达到的加速度a
desired

[0074]
根据以上原理可以得到要在第m个修正后的子轨迹上飞行时,在各个时刻需要达到的位置p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired
,基于同样原理即可推出该飞行器在整个修正后的第一轨迹上飞行时,在各个时刻需要达到的位置p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired

[0075]
相应地,该飞行器在飞行的过程中将需要达到的位置p
desired
,需要达到的速度v
desirsd
,需要达到的加速度a
desired
代入到比例-积分-导数 (proportion-integral-derivative,pid)控制算法(或者其他算法)来计算控制命令,该控制命令用于指示该飞行器做相应调整以使该飞行器的位置需要达到的位置p
desired
,速度达到需要达到的速度v
desired
,以及加速度达到需要达到的加速度a
desired

[0076]
在图2所示的方法中,该飞行器在飞行的过程中采集飞行器的飞行状态数据,以及通过摄像头拍摄第一图像;然后通过该飞行状态数据生成第一轨迹,后续按照第一轨迹飞行的过程中实时拍摄第二图像,再将第二图像与第一图像对比以确定该飞行器按照第一轨迹飞行时的偏移量,接着使用该偏移量对该第一轨迹进行修正,并按照修正后的第一轨迹继续飞行。由于修正后的第一轨迹的生成考虑到了飞行器飞行时的偏移量,因此能够减少飞行过程中所产生的迭代误差,使得最终的产生的用于飞行器自主飞行的第一轨迹能够尽可能地还原人为控制的飞行轨迹。
[0077]
请参阅图3,图3是本发明实施例提供的一种飞行轨迹原路复演方法,该方法可以基于图1所示的飞行系统来实现,也可以基于其他架构来实现;该方法包括但不限于如下步骤:
[0078]
步骤s301:飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据。
[0079]
具体地,可选的,该飞行器在该一段时间的飞行可以是人为遥控该飞行器飞行的,该多个飞行时刻是通过什么策略从该一段时间上选择出来的此处不做限定,下面例举几种可能的实现方案:
[0080]
第一种,该飞行器在飞行的过程中将每次检测到针对该飞行器的打杆操作的时刻均作为飞行时刻。可以理解的是,该飞行器通常是由控制终端(例如,遥控器、手机等终端)来控制的,该控制终端在控制该飞行器的过程中可能会接收到用户针对操作杆(虚拟的或者实体的)的打杆操作,相应地,该飞行器会实时检测是否有针对该操作杆的打杆操作,如果有则将检测到用户打杆操作的时间作为一个飞行时刻,即每次检测到打杆操作的时刻均
作为飞行时刻。可以理解的是,用户对操作杆执行打杆操作的时刻通常为该飞行器在飞行过程中的转折点(即飞行状态变化的关键节点),将这些特殊时刻记下来能够帮助后续更好地还原飞行轨迹。
[0081]
第二种,该飞行器在每个该飞行时刻的飞行速度均不低于预设速度阈值(例如,该阈值可以设置为0.1m/s),也即是说,如果某个时刻该飞行器的飞行速度很小,那么飞行器不将该某个时刻作为飞行时刻,这样做能够避免将飞行器在某时间内位移变化很小的时刻确定飞行时刻,例如,刚开始对操作杆执行打杆操作时飞行器的速度很小。若飞行器在某段时间内位移变化很小,并将该某段时间内的时刻确定为飞行时刻,则会导致后续还原的飞行轨迹不平滑。
[0082]
第三种,该飞行器在任意两个时间上相邻的该飞行时刻之间的距离不小于预设距离阈值。在具体实现上可以为,该飞行器实时检测自身的位置,在自身的距离每改变预设距离时将当前时刻记录为飞行时刻,例如,假设该飞行器按照时间顺序依次在第1时刻(起始时刻)、第2时刻、第3时刻、第4时刻、第 5时刻、第6时刻、第7时刻、第8时刻、第9时刻上检测了自身的位置;那么,首先确定相对于第1时刻的距离不小于该预设距离阈值的时刻,然后将确定出的时刻作为飞行时刻,假设确定出的飞行时刻为第3时刻,那么就将第3时刻作为飞行时刻,然后进一步确定相对于该第3时刻的距离不小于该预设阈值的时刻,然后将将确定出的时刻作为飞行时刻,假设确定出的飞行时刻为第4时刻,那么就将第4时刻作为飞行时刻,其余依此类推。
[0083]
该飞行器在空中飞行会持续一段时间,该多个飞行时刻可以为该一段时间上的部分时刻,该无人机会在该多个飞行时刻中每个飞行时刻采集飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项,可选的,该飞行状态数据包括该位置信息,可选的,该飞行状态数据包括位置信息和加速度信息,可选的,该飞行状态数据包括位置信息、加速度信息和速度信息。例如,当该飞行状态数据包括位置时,该位置信息可以具体为该飞行器通过定位系统(例如,(全球定位系统global positioning system,gps),北斗卫星导航系统(beidou navigation satellite system,bds),伽利略卫星导航系统 (galileo satellite navigation system,gnss)等)、视觉定位技术和惯性测量单元 (inertial measurement unit,imu)中至少一项确定的。可选的,该飞行器记录自身的飞行的起始位置,然后通过imu实时检测飞行加速度和飞行方向,再根据飞行加速度求出飞行速度,进而根据已飞行的时间和飞行速度计算飞行的距离,最后结合飞行的距离、飞行方向以及飞行的起始位置确定出飞行器实时的位置。再如,当该飞行状态数据包括加速度信息时,该加速度信息可以为该飞行器通过加速度传感器检测得到的,也可以为该飞行器通过预先配置的算法基于速度的变化情况计算出来的。再如,当该飞行状态数据包括速度信息时,该速度信息可以为该飞行器使用预先配置的算法基于自身位置的变化情况计算出来的。
[0084]
步骤s302:该飞行器根据该飞行器在该多个飞行时刻采集的飞行状态数据生成第一轨迹。
[0085]
具体地,该飞行器首先根据在多个飞行时刻采集飞行状态数据生成第一轨迹,该第一轨迹与该飞行器在上述一段时间飞行的轨迹的走向大致相同,可选的,该第一轨迹比该飞行器在上述一段时间飞行的轨迹更平滑。为了便于理解,下面提供生成该第一轨迹的一种可选方式:
[0086]
该飞行状态数据包括位置信息p、速度信息v和加速度信息a,飞行器在所有的两个相邻飞行时刻之间的飞行子轨迹依次进行拼接得到的轨迹即为该第一轨迹,其中,飞行器在任意两个相邻飞行时刻之间飞行的子轨迹可以通过5 阶多项式来描述,假设该任意两个相邻飞行时刻的中的较早时刻为t0,较晚时刻为t1,t1与t0之间的时间间隔为dt,那么,该5阶多项式具体如下:
[0087][0088]
在公式1-1中,c
x0

……
,c
x5
是x轴向轨迹多项式的系数,c
y0

……
,c
y5
是y轴向轨迹多项式的系数,c
z0

……
,c
z5
是z轴向轨迹多项式的系数,t是飞行器在任意两个相邻飞行时刻之间飞行的时间,t在区间[0,dt]上取值。接下来需要求解x轴向轨迹多项式的系数、y轴向轨迹多项式的系数和z轴向轨迹多项式的系数,这三种轴向轨迹多项式的系数的求解原理相同,因此下面以x轴向轨迹多项式的系数的求解为例进行举例描述:
[0089]
在该任意两个飞行时刻之间以最小化jerk(加速度的一阶导数)变化量 (minimum jerk)为优化函数,根据x轴方向上的位置、速度、加速度信息,得到x轴向的轨迹系数的解析式,假设该任意两个相邻飞行时刻中较早飞行时刻的飞行状态数据s0={p0,v0,a0,t0},其中,p0为飞行器在任意两个相邻飞行时刻中较早时刻的位置,v0为飞行器在任意两个相邻飞行时刻中较早时刻的速度, a0为飞行器在任意两个相邻飞行时刻中较早时刻的加速度,t0为飞行器在任意两个相邻飞行时刻中较早时刻;该任意两个相邻飞行时刻中较晚飞行时刻的飞行状态数据s0={p1,v1,a1,t1},其中,p1为飞行器在任意两个相邻飞行时刻中较晚时刻的位置,v1为飞行器在任意两个相邻飞行时刻中较晚时刻的速度,a1为飞行器在任意两个相邻飞行时刻中较晚时刻的加速度,t1为飞行器在任意两个相邻飞行时刻中较晚时刻;那么,该任意两个相邻飞行时刻中较早飞行时刻的飞行状态数据s0={p0,v0,a0,t0}在x轴向的分量为s0
x
={p
x0
,v
x0
,a
x0
,t
x0
},其中, p
x0
表示x轴向的位置,v
x0
表示x轴向的速度,a
x0
表示x轴向的加速度,t
x0
表示时间;该任意两个相邻飞行时刻中较晚飞行时刻的飞行状态数据s1= {p1,v1,a1,t1}在x轴向的分量为s1
x
={p
x1
,v
x1
,a
x1
,t
x1
},其中,p
x1
表示x轴向的位置,v
x1
表示x轴向的速度,a
x1
表示x轴向的加速度,t
x0
表示时间;可得到公式1-2所示的中间变量:
[0090][0091]
基于公式1-2可以进一步得到公式1-3所示的中间变量:
[0092][0093]
基于公式1-3可以进一步得到x轴向轨迹多项式的系数,如公式1-4所示:
[0094][0095]
以上描述了根据x轴向上的位置、速度、加速度信息,得到x轴向的轨迹系数的解析式,根据同样的原理可以得到y轴向的轨迹系数的解析式和z轴向的轨迹系数的解析式。这样一来,就可以根据公式1-1确定飞行器在任意两个相邻飞行时刻之间飞行的子轨迹,然后将飞行器在所有的两个相邻飞行时刻之间的飞行子轨迹依次进行拼接即可得到上述第一轨迹。
[0096]
步骤s303:该飞行器按照生成的该第一轨迹飞行。
[0097]
在一种可选的方案中,该飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据,可以具体为:飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻,并在该多个飞行时刻拍摄第一图像和采集该飞行器的飞行状态数据,其中,该飞行器在不同位置拍摄的第一图像不相同,该飞行器在相同位置拍摄的第一图像相同,每个飞行时刻拍摄的第一图像均可以关联位置信息,以表明该图像是在什么位置拍摄的。可选的,该第一图像可以为灰度图、rgb图像等。
[0098]
另外,该飞行器按照生成的该第一轨迹飞行,可以为:所述飞行器在按照所述第一轨迹飞行过程中拍摄第二图像;所述飞行器将所述第二图像与所述第一图像进行比较以确定偏移量;所述飞行器根据所述偏移量修正所述第一轨迹以供所述飞行器继续飞行。
[0099]
其中,确定偏移量的具体原理可以如下:根据预先配置的图像匹配算法(例如,基于词袋模型进行图像相似度比较算法)从以上拍摄的大量第一图像中选择出一张与当前拍摄的第二图像最接近的第一图像,再查找拍摄该最接近的第一图像时该飞行器的位置,最后确定该飞行器拍摄该当前的第二图像时在该第一轨迹上的位置,与拍摄该最接近的第一图像时该飞行器的位置之间的偏移量,确定出来的偏移量即为该飞行器的偏移。可以理解的是,根据该原理该飞行器可以确定在按照第一轨迹飞行过程中的各个时刻的偏移量,确定出的该飞行器的偏移量p
offset
(t)同样可以包含x轴向的分量y轴向的分量和z轴向的分量即该偏移量p
offset
(t)可表示为可选的,前一时刻确定的偏移量可以用于后一时刻做修正。
[0100]
由于该第一轨迹由该第一轨迹上所有的两个相邻飞行时刻之间的飞行子轨迹依次进行拼接得到,因此这里先描述使用该偏移量对其中任意两个相邻飞行时刻之间的飞行子轨迹进行修正的原理;可选的,修正的原理可以为将该偏移量代入到上述公式1-1中,以得到该任
意两个相邻飞行时刻之间的飞行轨迹修正后的子轨迹,如公式2-1所示:
[0101][0102]
所有的两个相邻飞行时刻之间的飞行轨迹修正后的子轨迹拼接可得到修正后的第一轨迹。因此,可以认为该飞行器实际是按照修正后的第一轨迹飞行,该飞行器控制自身按照修正后的第一轨迹飞行可以具体包括如下操作:首先,该飞行器根据修正后的第一轨迹确定飞行过程中每个控制时刻的飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;然后,该飞行器在该每个控制时刻将自身的状态调整到该每个控制时刻的飞行状态数据所指示的状态。具体地,该飞行器实时获知该飞行器按照修正后的第一轨迹飞行过程中需要达到什么位置,飞行速度达到多少,以及飞行加速度达到多少。然后将对自己当前实际的位置,实际的飞行速度,以及实际的飞行加速度进行调整,以使该飞行器达到需要达到的位置,达到需要达到的飞行速度,以及达到需要达到的飞行加速度。下面对获知该飞行器当前需要达到的位置,飞行速度,以及飞行加速度的方式进行举例描述:
[0103]
假设该修正后的第一轨迹由n个修正后的子轨迹拼接而成,该n个修正后的子轨迹中每个修正后的子轨迹均为一组两个相邻飞行时刻之间的飞行轨迹修正得到(以上已有描述),不同组的两个相邻飞行时刻之间的飞行轨迹修正后得到的修正后的子轨迹可以不同。由公式2-1可知,每个修正后的子轨迹都由5 阶多项式组成且包含6个系数,这些多项式的系数和起止时间存在以下数据结构中:
[0104][0105]
在公式3-1中,trajectory_x[n][6]存储了x轴向n个修正后的子轨迹的6个系数,总共6*n个系数,trajectory_y[n][6]存储了y轴向n个修正后的子轨迹的 6个系数,总共6*n个系数,trajectory_z[n][6]存储了z轴向n个修正后的子轨迹的6个系数,总共6*n个系数;trajectory_time[n 1]存储了n个修正后的子轨迹在整个时间轴上的结束时刻,例如修正后的第一轨迹由3个修正后的子轨迹组成,这3个修正后的子轨迹的经过时间分别为1秒,2秒和3秒,那么在时间轴上,该修正后的第一轨迹的起始时刻是第0秒,第一个修正后的子轨迹的结束时刻是第1秒,第二个修正后的子轨迹的结束时刻是第3秒,第三个修正后的子轨迹的结束时刻是第6秒,6s也是飞行完该修正后的第一轨迹所需的时间。
[0106]
然后,该飞行器根据3-1所示的数据结构来执行如下流程:
[0107]
1、设置一个全局的时钟,当开始按照修正后的第一轨迹飞行时把时钟的时间重置为0,这个0实际上就修正后的第一轨迹在时间轴上的起始时刻。
[0108]
2、假设该飞行器对轨迹跟随过程中的控制频率为frequency,即一秒钟发送 frequency次控制指令,则控制指令计算周期为1/frequency,也就是每隔 1/frequency秒
计算一次控制指令,所以全局时钟的时间增长间隔是1/frequency (时钟按照公式tick=tick 1/frequency不断更新自己的时间),时钟的每一个时间tick都在修正后的第一轨迹上对应了一个期望的位置、速度和加速度,根据时钟当前的时间tick,遍历一遍trajectory_time[n 1],从而找到tick对应哪一段修正后的子轨迹,查找到的修正后的第m个子轨迹满足下式:
[0109]
trajectory_time[m]≤tick≤trajectory_time[m 1]
ꢀꢀꢀꢀ
3-2
[0110]
3、根据修正后的第m个子轨迹的参数计算当前需要达到的位置p
desired
,需要达到的速度v
desired
,以及需要达到的加速度a
desired

[0111]
由于子轨迹多项式是归一化的,所以这个地方的tick也要归一化,即
[0112][0113]
其中,trajectory_time[m 1]-trajectory_time[m]表示修正后的第m个子轨迹的总经过时间,tick-trajectory_time[m]表示tick时刻已经进入修正后的第m个子轨迹的时间。然后根据公式2-1所示的轨迹多项式计算需要得到的位置p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired
,各个量的计算公式如下(trajectory_x[n][6]简写为tx[n][6]):
[0114]
需要达到的位置p
desired
为:
[0115][0116]
公式4-1是线性方程组的矩阵形式,展开之后就是公式2-1中的方程组,以 x轴向为例,展开后可得到x轴向需要达到的位置p
desired_
=tx[m][0] tx[m][1]*t
m1
tx[m][2]*t
m2
tx[m][3]*t
m3
tx[m][4]*t
m4
tx[m][5]* t
m5
,其中,tx[m][0]等于修正后的第m个子轨迹多项式的常数项另外,y轴向和z轴向需要达到的位置可以参照x轴向的描述。基于x轴向的位置、y轴向的位置和z轴向的位置即可得到需要达到的位置p
desired

[0117]
需要达到的速度v
desired
为:
[0118][0119]
公式4-2是线性方程组的矩阵形式,展开之后就是公式3-1中的方程组的一阶导数,以x轴向为例,展开后可得到x轴向需要达到的速度v
desired_x
= tx[m][1] 2*tx[m][2]*t
m1
3*tx[m][3]*t
m2
4*tx[m][4]*t
m3
5* tx[m][5]*t
m4
,其中,tx[m][1]等于第m个修正后的子轨迹的多项式中的一阶项;另外,y轴向和z轴向需要达到的速度可以参照x轴向的描述。基于x轴向的速度、y轴向的速度和z轴向的速度即可得到需要达到的速度v
desired

[0120]
需要达到的加速度a
desired
为:
[0121][0122]
公式4-3是线性方程组的矩阵形式,展开之后就是公式3-1中的方程组的二阶导数,以x轴向为例,展开后可得到x轴向需要达到的加速度a
desired_x
=2* tx[m][2] 6*tx[m][3]*t
m1
12*tx[m][4]*t
m2
20*tx[m][5]*t
m3
,其中, tx[m][2]等于第m个修正后的子轨迹多项式的二阶项;另外,y轴向和z轴向需要达到的加速度可以参照x轴向的描述。基于x轴向的加速度、y轴向的加速度和z轴向的加速度即可得到需要达到的加速度a
desired

[0123]
根据以上原理可以得到要在第m个修正后的子轨迹上飞行时,在各个时刻需要达到的位置p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired
,基于同样原理即可推出该飞行器在整个修正后的第一轨迹上飞行时,在各个时刻需要达到的位置p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired

[0124]
相应地,该飞行器在飞行的过程中将需要达到的位置p
desired
,需要达到的速度v
desired
,需要达到的加速度a
desired
代入到比例-积分-导数 (proportion-integral-derivative,pid)控制算法(或者其他算法)来计算控制命令,该控制命令用于指示该飞行器做相应调整以使该飞行器的位置需要达到的位置p
desired
,速度达到需要达到的速度v
desired
,以及加速度达到需要达到的加速度a
desired

[0125]
在图3所示的方法中,该飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻,然后在确定的多个飞行时刻去采集飞行状态数据并根据飞行状态数据生成第一轨迹,最后按照该第一轨迹来飞行。由于飞行时刻是按照飞行速度、打杆操作和预设距离阈值中至少一项来确定,因此能够保证确定的飞行时刻大部分都是飞行器在飞行过程中比较关键的时刻,因此基于在这样的飞行时刻采集的飞行状态数据确定的第一轨迹,能够更准确地还原人为控制的飞行轨迹。
[0126]
下面对本发明实施例的云台随动控制装置和控制设备进行说明。
[0127]
请参见图4,图4是本发明实施例的一种飞行器40的结构示意图,该飞行器40包括采集模块401、生成模块402、第一拍摄模块403、第一确定模块404 和优化模块405,其中,各个模块的描述如下。
[0128]
采集模块401用于在多个飞行时刻拍摄第一图像和采集飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0129]
生成模块402用于根据在该多个飞行时刻采集的飞行状态数据生成第一轨迹;
[0130]
第一拍摄模块403用于在按照该第一轨迹飞行过程中拍摄第二图像;
[0131]
第一确定模块404用于将该第二图像与该第一图像进行比较以确定偏移量;
[0132]
优化模块405用于根据该偏移量修正该第一轨迹以供该飞行器继续飞行。
[0133]
在一种可选的方案中,所述第一确定单元404将所述第二图像与所述第一图像进行比较以确定偏移量,具体为:所述飞行器将所述第二图像中的纹理与所述第一图像中的纹理进行比较,以确定偏移量。
[0134]
在又一种可选的方案中,该飞行器还包括第二确定模块和调整模块:
[0135]
该第二确定模块用于在生成模块402根据在该多个飞行时刻采集的飞行状态数据生成第一轨迹之后,根据该第一轨迹确定飞行过程中每个控制时刻的飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0136]
调整模块用于在该每个控制时刻将自身的状态调整到该每个控制时刻的飞行状态数据所指示的状态。
[0137]
在又一种可选的方案中,该位置信息为基于gps技术、视角定位技术和惯性传感器定位技术中至少一项确定得到。
[0138]
在又一种可选的方案中,该飞行器还包括第三确定模块,该第三确定模块用于在该采集模块在飞行器在多个飞行时刻拍摄第一图像和采集飞行状态数据之前,在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定该多个飞行时刻。
[0139]
在又一种可选的方案中,该第三确定模块在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定该多个飞行时刻,具体为:
[0140]
在该飞行器飞行的过程中将每次检测到针对该飞行器的打杆操作的时刻均作为飞行时刻。
[0141]
在又一种可选的方案中,该飞行器在每个该飞行时刻的飞行速度均不低于预设速度阈值。
[0142]
在又一种可选的方案中,该飞行器在任意两个时间上相邻的该飞行时刻之间的距离不小于预设距离阈值。
[0143]
需要说明的是,各个模块的实现还可以对应参照图2所示的方法实施例的相应描述。
[0144]
在图4所描述的飞行器40中,该飞行器在飞行的过程中采集飞行器的飞行状态数据,以及通过摄像头拍摄第一图像;然后通过该飞行状态数据生成第一轨迹,后续按照第一轨迹飞行的过程中实时拍摄第二图像,再将第二图像与第一图像对比以确定该飞行器按照第一轨迹飞行时的偏移量,接着使用该偏移量对该第一轨迹进行修正,并按照修正后的第一轨迹继续飞行。由于修正后的第一轨迹的生成考虑到了飞行器飞行时的偏移量,因此能够减少飞行过程中所产生的迭代误差,使得最终的产生的用于飞行器自主飞行的第一轨迹能够尽可能地还原人为控制的飞行轨迹。
[0145]
请参见图5,图5是本发明实施例的一种飞行器50的结构示意图,该飞行器50包括确定模块501、生成模块502和飞行模块503,其中,各个模块的描述如下。
[0146]
确定模块501用于在飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0147]
生成模块502用于根据该飞行器在该多个飞行时刻采集的飞行状态数据生成第一轨迹;
[0148]
飞行模块503用于按照生成的该第一轨迹飞行。
[0149]
在一种可选的方案中,该第一确定模块501在飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据,具体为:
[0150]
在飞行器飞行的过程中将每次检测到针对该飞行器的打杆操作的时刻均作为该
飞行时刻,并采集该飞行器在该飞行时刻的飞行状态数据。
[0151]
在一种可选的方案中,该飞行器在每个该飞行时刻的飞行速度均不低于预设速度阈值。
[0152]
在又一种可选的方案中,该飞行器在任意两个时间上相邻的该飞行时刻之间的距离不小于预设距离阈值。
[0153]
在又一种可选的方案中,该位置信息为基于gps技术、视角定位技术和惯性传感器定位技术中至少一项确定。
[0154]
在又一种可选的方案中,确定模块501在飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据,具体为:
[0155]
在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻,并在该多个飞行时刻拍摄第一图像和采集该飞行器的飞行状态数据;
[0156]
该飞行模块503按照生成的该第一轨迹飞行,具体为:
[0157]
首先,在按照所述第一轨迹飞行过程中拍摄第二图像;
[0158]
然后,将所述第二图像与所述第一图像进行比较以确定偏移量;
[0159]
接着,根据所述偏移量修正所述第一轨迹以供所述飞行器继续飞行。
[0160]
在又一种可选的方案中,飞行模块503按照生成的该第一轨迹飞行,具体为:
[0161]
根据该第一轨迹确定飞行过程中每个控制时刻的飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0162]
在该每个控制时刻将飞行器的状态调整到该每个控制时刻的飞行状态数据所指示的状态。
[0163]
需要说明的是,各个模块的实现还可以对应参照图3所示的方法实施例的相应描述。
[0164]
在图5所描述的飞行器50中,该飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻,然后在确定的多个飞行时刻去采集飞行状态数据并根据飞行状态数据生成第一轨迹,最后按照该第一轨迹来飞行。由于飞行时刻是按照飞行速度、打杆操作和预设距离阈值中至少一项来确定,因此能够保证确定的飞行时刻大部分都是飞行器在飞行过程中比较关键的时刻,因此基于在这样的飞行时刻采集的飞行状态数据确定的第一轨迹,能够更准确地还原人为控制的飞行轨迹。
[0165]
请参见图6,图6是本发明实施例提供的一种飞行器60,该飞行器60包括处理器601、存储器602和摄像头603,该处理器601、存储器602和摄像头603通过总线相互连接。
[0166]
存储器602包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器602用于相关指令及数据。摄像头603用于在飞行器70飞行过程中拍摄。
[0167]
处理器601可以是一个或多个中央处理器(centralprocessingunit,cpu),在处理器601是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。
[0168]
该飞行器60中的处理器601用于读取该存储器602中存储的程序代码,执行以下操作:
[0169]
按照在多个飞行时刻拍摄第一图像和采集飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0170]
根据在该多个飞行时刻采集的飞行状态数据生成第一轨迹;
[0171]
在按照该第一轨迹飞行过程中拍摄第二图像;
[0172]
将该第二图像与该第一图像进行比较以确定偏移量;
[0173]
根据该偏移量修正该第一轨迹以供该飞行器继续飞行。
[0174]
在又一种可选的方案中,所述处理器将所述第二图像与所述第一图像进行比较以确定偏移量,具体为:将所述第二图像中的纹理与所述第一图像中的纹理进行比较,以确定偏移量。
[0175]
在又一种可选的方案中,该处理器根据在所述多个飞行时刻采集的飞行状态数据生成第一轨迹之后,还用于:
[0176]
根据该第一轨迹确定飞行过程中每个控制时刻的飞行信息,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0177]
在该每个控制时刻将该飞行器的状态调整到该每个控制时刻的飞行状态数据所指示的状态。
[0178]
在又一种可选的方案中,该位置信息为基于gps技术、视角定位技术和惯性传感器定位技术中至少一项确定得到。
[0179]
在又一种可选的方案中,该处理器在多个飞行时刻拍摄第一图像和采集飞行状态数据之前,还用于:
[0180]
在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定该多个飞行时刻。
[0181]
在又一种可选的方案中,该处理器在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定该多个飞行时刻,具体为:
[0182]
在飞行的过程中将每次检测到针对该飞行器的打杆操作的时刻均作为飞行时刻。
[0183]
在又一种可选的方案中,该飞行器在每个该飞行时刻的飞行速度均不低于预设速度阈值。
[0184]
在又一种可选的方案中,该飞行器在任意两个时间上相邻的该飞行时刻之间的距离不小于预设距离阈值。
[0185]
需要说明的是,各个操作的实现还可以对应参照图2所示的方法实施例的相应描述。
[0186]
在图6所描述的飞行器60中,该飞行器在飞行的过程中采集飞行器的飞行状态数据,以及通过摄像头拍摄第一图像;然后通过该飞行状态数据生成第一轨迹,后续按照第一轨迹飞行的过程中实时拍摄第二图像,再将第二图像与第一图像对比以确定该飞行器按照第一轨迹飞行时的偏移量,接着使用该偏移量对该第一轨迹进行修正,并按照修正后的第一轨迹继续飞行。由于修正后的第一轨迹的生成考虑到了飞行器飞行时的偏移量,因此能够减少飞行过程中所产生的迭代误差,使得最终的产生的用于飞行器自主飞行的第一轨迹能够尽可能地还原人为控制的飞行轨迹。
[0187]
请参见图7,图7是本发明实施例提供的一种飞行器70,该飞行器70包括处理器701和存储器702,该处理器701和存储器702可通过总线相互连接。另外,该飞行器还可以包括
摄像头703,用于在飞行器70飞行过程中拍摄。
[0188]
存储器702包括但不限于随机存储记忆体(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasableprogrammable read only memory,eprom)、或便携式只读存储器(compact discread-only memory,cd-rom),存储器702用于相关指令及数据。
[0189]
处理器701可以是一个或多个中央处理器(central processing unit,cpu),在处理器701是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核 cpu。
[0190]
该飞行器70中的处理器701用于读取该存储器702中存储的程序代码,执行以下操作:
[0191]
在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0192]
根据该飞行器在该多个飞行时刻采集的飞行状态数据生成第一轨迹;
[0193]
按照生成的该第一轨迹控制该飞行器飞行。
[0194]
在一种可选的方案中,该处理器在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在该多个飞行时刻的飞行状态数据,具体为:
[0195]
飞行的过程中将每次检测到针对该飞行器的打杆操作的时刻均作为飞行时刻,并采集该飞行器在该飞行时刻的飞行状态数据。
[0196]
在又一种可选的方案中,该飞行器在每个该飞行时刻的飞行速度均不低于预设速度阈值。
[0197]
在又一种可选的方案中,该飞行器在任意两个时间上相邻的该飞行时刻之间的距离不小于预设距离阈值。
[0198]
在又一种可选的方案中,该位置信息为基于gps技术、视角定位技术和惯性传感器定位技术中至少一项确定。
[0199]
在又一种可选的方案中,该处理器在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻并采集该飞行器在所述多个飞行时刻的飞行状态数据,具体为:
[0200]
在该飞行器飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻,并在该多个飞行时刻拍摄第一图像和采集该飞行器的飞行状态数据;
[0201]
该处理器按照生成的该第一轨迹飞行,具体为:
[0202]
在按照所述第一轨迹飞行过程中拍摄第二图像;
[0203]
将所述第二图像与所述第一图像进行比较以确定偏移量;
[0204]
根据所述偏移量修正所述第一轨迹以供所述飞行器继续飞行。
[0205]
在又一种可选的方案中,该处理器按照生成的所述第一轨迹飞行,具体为:
[0206]
根据该第一轨迹确定飞行过程中每个控制时刻的飞行状态数据,该飞行状态数据包括位置信息、速度信息和加速度信息中至少一项;
[0207]
在该每个控制时刻将该飞行器的状态调整到该每个控制时刻的飞行状态数据所指示的状态。
[0208]
需要说明的是,各个操作的实现还可以对应参照图3所示的方法实施例的相应描述。
[0209]
在图7所描述的飞行器70中,该飞行器在飞行的过程中根据飞行速度、打杆操作和预设距离阈值中至少一项确定多个飞行时刻,然后在确定的多个飞行时刻去采集飞行状态数据并根据飞行状态数据生成第一轨迹,最后按照该第一轨迹来飞行。由于飞行时刻是按照飞行速度、打杆操作和预设距离阈值中至少一项来确定,因此能够保证确定的飞行时刻大部分都是飞行器在飞行过程中比较关键的时刻,因此基于在这样的飞行时刻采集的飞行状态数据确定的第一轨迹,能够更准确地还原人为控制的飞行轨迹。
[0210]
本发明实施例还提供一种芯片系统,该芯片系统包括至少一个处理器,存储器和接口电路,该存储器、该收发器和该至少一个处理器通过线路互联,该至少一个存储器中存储有程序指令;该程序指令被该处理器执行时,实现图2 或图3所示的方法流程。
[0211]
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在网络设备上运行时,实现图2或图3所示的方法流程。
[0212]
本发明实施例还提供一种计算机程序产品,当该计算机程序产品在处理器上运行时,实现图2或图3所示的方法流程。
[0213]
综上,在本发明实施例中,该飞行器在飞行的过程中采集飞行器的飞行状态数据,以及通过摄像头拍摄第一图像;然后通过该飞行状态数据生成第一轨迹,后续按照第一轨迹飞行的过程中实时拍摄第二图像,再将第二图像与第一图像对比以确定该飞行器按照第一轨迹飞行时的偏移量,接着使用该偏移量对该第一轨迹进行修正,并按照修正后的第一轨迹继续飞行。由于修正后的第一轨迹的生成考虑到了飞行器飞行时的偏移量,因此能够减少飞行过程中所产生的迭代误差,使得最终的产生的用于飞行器自主飞行的第一轨迹能够尽可能地还原人为控制的飞行轨迹。
[0214]
可以理解,以上所揭露的仅为本发明实施例的部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献