发明内容
本公开的一个目的在于提高飞行器位置估计的准确性,从而提高飞行器导航的准确性。
根据本公开的一个方面,提出一种飞行器导航方法,包括:获取IMU探测数据和视觉采集数据;提取最接近视觉采集数据对应状态的发生时刻的IMU探测数据;根据相同发生时刻的IMU探测数据的分析结果和视觉采集数据的分析结果更新飞行器在发生时刻的下一时刻的状态;基于更新后的数据执行飞行器导航。
可选地,提取视觉采集数据对应的状态的发生时刻的IMU探测数据包括:根据预定时间差确定发生时刻,预定时间差为视觉采集数据的获取时延;提取最接近发生时刻的IMU探测数据。
可选地,更新飞行器在发生时刻的下一时刻的状态包括:将基于视觉采集数据的分析结果作为更新数据,将基于IMU探测数据的分析结果作为预测数据,根据EKF(ExtendedKalman Filter,扩展卡尔曼滤波)算法预测飞行器在发生时刻的下一时刻的状态;利用预测的飞行器在发生时刻的下一时刻的状态更新缓存的飞行器在发生时刻的下一时刻的状态。
可选地,飞行器导航方法还包括获取飞行器在发生时刻的下一时刻的状态协方差,以便基于更新后的数据和状态协方差预测飞行器在当前时刻的状态。
可选地,还包括:在飞行器能获取GPS数据的情况下,根据GPS数据和IMU探测数据进行导航;在飞行器不能获取GPS数据的情况下,执行获取视觉采集数据,根据视觉采集数据和IMU探测数据进行导航的操作。
可选地,视觉采集数据的更新频率低于IMU探测数据的更新频率。
可选地,IMU探测数据的分析结果包括飞行器的加速度和三轴角速度;视觉采集数据的分析结果包括飞行器的三维位置和姿态。
通过这样的方法,能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
根据本公开的另一个方面,提出一种飞行器导航装置,包括:数据获取单元,被配置为获取IMU探测数据和视觉采集数据;同步数据提取单元,被配置为提取最接近视觉采集数据对应状态的发生时刻的IMU探测数据;状态更新单元,被配置为根据相同发生时刻的IMU探测数据的分析结果和视觉采集数据的分析结果更新飞行器在发生时刻的下一时刻的状态;导航单元,被配置为基于更新后的数据执行飞行器导航。
可选地,同步数据提取单元被配置为:根据预定时间差确定发生时刻,预定时间差为视觉采集数据的获取时延;提取最接近发生时刻的IMU探测数据。
可选地,状态更新单元被配置为:将基于视觉采集数据的分析结果作为更新数据,将基于IMU探测数据的分析结果作为预测数据,根据EKF算法预测飞行器在发生时刻的下一时刻的状态;利用预测的飞行器在发生时刻的下一时刻的状态更新缓存的飞行器在发生时刻的下一时刻的状态。
可选地,飞行器导航装置还包括:协方差确定单元,被配置为获取飞行器在发生时刻的下一时刻的状态协方差;导航单元,被配置为基于更新后的数据和状态协方差预测飞行器在当前时刻的状态并进行导航。
可选地,还包括:信号判断单元,被配置为确定飞行器是否能够获取GPS数据;数据获取单元被配置为在飞行器不能获取GPS数据的情况下,执行获取视觉采集数据的操作;导航单元被配置为在飞行器能获取GPS数据的情况下,根据GPS数据和IMU探测数据进行导航;在飞行器不能获取GPS数据的情况下,根据状态更新单元更新后的数据进行导航。
可选地,视觉采集数据的更新频率低于IMU探测数据。
可选地,IMU探测数据的分析结果包括飞行器的加速度和三轴角速度;视觉采集数据的分析结果包括飞行器的三维位置和姿态。
根据本公开的又一个方面,提出一种飞行器导航装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器的指令执行上文中任意一种飞行器导航方法。
这样的装置能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
根据本公开的再一个方面,提出一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上文中任意一种飞行器导航方法的步骤。
通过执行这样的计算机可读存储介质上的指令,能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
另外,根据本公开的一个方面,提出一种飞行器导航系统,包括:上文中的任意一种飞行器导航装置;IMU测量设备,被配置为生成IMU探测数据;图像采集设备,被配置为采集视觉采集数据;和,飞行控制器,被配置为根据所述飞行器导航装置的输出结果对飞行器进行控制。
这样的飞行器导航系统能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
具体实施方式
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
本公开的飞行器导航方法的一个实施例的流程图如图1所示。
在步骤101中,获取IMU探测数据和视觉采集数据。在一个实施例中,可以根据IMU探测设备和视觉采集设备各自的频率接收数据并存储。
在步骤102中,提取最接近视觉采集数据对应状态的发生时刻的IMU探测数据。在一个实施例中,由于视觉采集数据的更新频率往往低于IMU探测数据的更新频率,同时获得或于相近时刻获得的IMU探测数据和视觉采集数据的实际发生时刻可能会相距较远。为提高IMU探测数据和视觉采集数据的时间匹配度,在得到视觉采集数据后,提取与视觉采集数据对应的状态的发生时刻相距最近的IMU探测数据。
在步骤103中,根据相同的发生时刻的IMU探测数据的分析结果和视觉采集数据的分析结果更新飞行器在发生时刻的下一时刻的状态。在一个实施例中,可以将IMU探测数据或其分析结果存储于缓存中以便调用运算。在一个实施例中,IMU探测数据的分析结果可以包括飞行器的加速度和三轴角速度;视觉采集数据的分析结果可以包括飞行器的三维位置和姿态。
在步骤104中,基于更新后的数据进行飞行器导航。在一个实施例中,可以根据更新后的数据更新估计的飞行器当前位置,再基于飞行器当前位置与预定路径上的相对位置进行导航,或者基于当前位置和预定目标位置进行路径规划、校正和/或导航。
通过这样的方法,能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
由于视觉里程计基于累积计算相机位姿的原理实现位姿预测,随着时间的推移容易产生空间漂移现象,而IMU存在时间漂移的问题,可以通过融合视觉方法和IMU来实现互补。相关技术中包括根据是否把图像特征信息加入状态向量中将状态预测算法分为松耦合(loosely-coupled)和紧耦合(tightly-coupled)两种。紧耦合中由于需要把图像特征加入特征向量,导致状态向量的维数提高,对设备的运算能力要求高,还可能会造成比较大的时延。松耦合方案中将图像作为一个黑盒子,通过视觉里程计计算之后再与IMU数据融合。
在一个实施例中,根据视觉采集数据可以采用稀疏直接法确定视觉数据的分析结果。分析结果主要包括深度估计和位姿估计两部分。
在深度估计中,通过求解帧间的相对位姿来获取整个相机的运动情况,由于随时间的推移误差会逐渐累积增大,初始位置的准确性显得尤为重要。初始位置估计的基本思路是根据稀疏光流法确定对应特征点,然后根据对应特征点计算两帧之间的本征矩阵(飞行器在初始位置是摄像头下视地面),分解本征矩阵,计算两帧间的旋转和平移。然后根据三角法计算特征点。为了使深度估计更加准确,对初始帧选择和帧间匹配作出如下约束:
(a)初始帧图像中检测到的特征数必须大于设定阈值;
(b)帧间的距离过近会影响3D点求解的准确度,因此对帧间匹配的条件进行阈值约束,保证帧间距离的下限。
在得到特征点的深度值之后,基于稀疏直接法求解位姿。这种方法只提取稀疏的特征点但并不计算描述子,然后用直按法计算特征点在下一时刻图像的位置,这种方法相较特征法来说去掉了计算描述子的时间,大大提高了计算速率,减少了时延。
本公开的飞行器导航方法的另一个实施例的流程图如图2所示。
在步骤201中,获取IMU探测数据和视觉采集数据。在一个实施例中,可以采用IMU探测芯片、设备得到IMU探测数据,通过摄像头获取视觉采集数据。在一个实施例中,摄像头可以以竖直向下的方向探测。
在步骤202中,根据预定时间差确定发生时刻,预定时间差为视觉采集数据的获取时延信息。在一个实施例中,预定时间差可以根据视觉采集设备的参数确定,也可以在测试过程中进行确定和修正。
在步骤203中,提取最接近发生时刻的IMU探测数据。在一个实施例中,虽然IMU探测数据的更新频率较高,但也可能会发生一定的时延,因此需要综合考虑视觉采集数据的预定时间差和IMU探测数据的预定时延情况,确定最接近发生时刻的IMU探测数据。
在步骤204中,将基于视觉采集数据的分析结果作为更新数据,将基于IMU探测数据的分析结果作为预测数据,将两者带入EKF算法公式,根据EKF算法预测飞行器在发生时刻的下一时刻的状态。由于在EKF运算过程中,对于更新数据会涉及矩阵矩阵求逆和乘运算,复杂度较高,因此只将基于视觉采集数据的分析结果作为更新数据,而不将IMU数据纳入更新数据的范围内能够提高运算效率,降低运算负担,也有助于在飞行器的嵌入式处理器上高效运行。
在步骤205中,利用预测的飞行器在发生时刻的下一时刻的状态更新缓存的飞行器在发生时刻的下一时刻的状态。例如,时间轴以t1至tn的顺序表示(n为不小于3的整数),当前时刻为t3,此时最新的视觉采集数据的发生时刻为t1,缓存中最新的IMU探测数据的发生时刻为t2,因此查找发生时刻最接近t1(发生时刻为t1为最优)的IMU测量数据,基于发生时刻为(或最接近)t1的IMU测量数据和视觉采集数据的分析结果校正t2时刻的飞行器状态;随着时间的推移不断校正视觉采集数据的发生时刻的下一时刻的飞行器状态,从而实现飞行器状态的不断预测校正。
在步骤206中,基于更新后的数据进行导航。
通过这样的方法,能够根据扩展卡尔曼滤波算法预测飞行器在发生时刻的下一时刻的状态,从而不断修正飞行器的位置,提高对当前位置估计的准确性,进一步提高导航的准确性。
在一个实施例中,可以缓存过去多个时刻的IMU探测数据或IMU探测数据的分析结果,当一个新的测量量(视觉采集数据)到达时,首先需要将发生时刻与缓存中的时间序列进行匹配(保证所有传感器的时间戳是在统一的时间内标注的),找到与该时刻最为接近的预测状态(IMU探测数据的分析结果)。
完成测量量在时间缓存序列的匹配后,可确保在准确的时间进行状态更新。因此测量量获取尽管存在延时,状态更新理论上仍是准确的。在执行完更新步骤后,在过去更新完的状态量可以采用如下方式被重新预测至当前时刻:
(a)给定的时间序列中,使用最近预测的状态作为参考;
(b)一个延迟的测量量到达,对缓存中过去相对应时间的状态进行更新;
(c)根据状态方程对更新的状态不断预测直到当前时刻,如此得到了当前时刻修正的状态。
通过这样的方法,在修正发生时刻的下一个时刻状态的前提下,完成对当前时刻飞行器状态的修正,提高基于当前时刻飞行器状态对飞行器进行导航的准确度。
在一个实施例中,还可以获取飞行器在发生时刻的下一时刻的状态协方差,进而在发生时刻的下一时刻的状态协方差和状态数据的基础上预测飞行器在当前时刻的状态,并根据预测的状态进行导航。
通过这样的方法,一方面能够通过协方差的加入提高对当前时刻的下一刻的状态预测准确度,另一方面由于状态协方差运算的复杂度比较高,只预测当前时刻的状态而不预测协方差能够降低运算量,由于在状态更新过程中会对当前时刻的状态的预测基础进行不断修正,因此当前时刻状态的不确定性意义不大,因此并不影响导航的准确性。
在一个实施例中,上述将IMU探测数据和视觉采集数据融合进行位置修正的方式可以只在飞行器无法进行GPS定位的情况下采用。在飞行器GPS信号状态良好的情况下,优先根据GPS定位来确定飞行器的位置。本公开的飞行器导航方法的又一个实施例的流程图如图3所示。
在步骤301中,判断飞行器当前能够获取GPS数据。若能够获取GPS数据,则执行步骤302;若不能够获取GPS数据,则执行步骤303。
在步骤302中,根据GPS数据和IMU探测数据确定飞行器位置。在一个实施例中,可以只将GPS数据确定的位置作为准确位置;在另一个实施例中,可以将GPS数据和IMU探测数据进行融合,例如可以以GPS数据进行导航,以IMU探测数据辅助修正,这样的方法一方面避免GPS偶然的不准确导致导航错误,提高准确度,另一方面也能够保持IMU探测数据持续的更新和缓存,以便在GPS数据获取突然失灵时能够具有基于IMU探测数据进行导航的数据基础。
在步骤303中,根据视觉采集数据和IMU探测数据确定飞行器位置。在一个实施例中可以采用如上文图1、2所示实施例中的方式将视觉采集数据和IMU探测数据进行融合,修正飞行器的位置。
在步骤304中,根据得到的飞行器的位置信息,结合预定路径进行飞行器导航。
通过这样的方法,能够在飞行器GPS信号良好的情况下根据GPS数据进行导航,在GPS信号不好的情况下迅速切换至根据视觉采集数据和IMU探测数据进行导航,提高了飞行器位置确定的准确性和飞行器的可靠性。在一个实施例中,可以实时监测GPS信号状态,当GPS恢复后,退出根据视觉采集数据和IMU探测数据确定飞行器位置的模式,一方面降低运算量,另一方面也能够提高飞行器导航的准确性。
本公开的飞行器导航装置的一个实施例的示意图如图4所示。数据获取单元401能够获取IMU探测数据和视觉采集数据。在一个实施例中,可以根据IMU探测设备和视觉采集设备各自的频率接收数据并存储。在一个实施例中,可以先存储于缓存中以便调用运算。同步数据提取单元402能够提取最接近视觉采集数据对应状态的发生时刻的IMU探测数据。在一个实施例中,由于视觉采集数据的更新频率往往低于IMU探测数据的更新频率,同时获得或于相近时刻获得的IMU探测数据和视觉采集数据的实际发生时刻可能会相距较远。为提高IMU探测数据和视觉采集数据的时间匹配度,在得到视觉采集数据后,提取与视觉采集数据对应的状态的发生时刻相距最近的IMU探测数据。状态更新单元403能够根据相同的发生时刻的IMU探测数据的分析结果和视觉采集数据的分析结果更新飞行器在发生时刻的下一时刻的状态。导航单元404能够基于更新后的数据进行飞行器导航。在一个实施例中,可以根据更新后的数据更新估计的飞行器当前位置,再基于飞行器当前位置与预定路径上的相对位置进行导航,或者基于当前位置和预定目标位置进行路径规划、校正和/或导航。
这样的装置能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
在一个实施例中,同步数据提取单元402能够根据预定时间差确定发生时刻,进而提取最接近发生时刻的IMU探测数据。预定时间差为视觉采集数据的获取时延信息。在一个实施例中,预定时间差可以根据视觉采集设备的参数确定,也可以在测试过程中进行确定和修正。在一个实施例中,虽然IMU探测数据的更新频率较高,但也可能会发生一定的时延,因此需要综合考虑视觉采集数据的预定时间差和IMU探测数据的预定时延情况,确定最接近发生时刻的IMU探测数据。
这样的装置能够提高IMU探测数据和视觉采集数据配对的准确性,从而提高位置预测的准确度,实现对预测的飞行器位置的修正,提高导航的准确度
在一个实施例中,状态更新单元403能够将基于视觉采集数据的分析结果作为更新数据,将基于IMU探测数据的分析结果作为预测数据,将两者带入EKF算法公式,根据EKF算法预测飞行器在发生时刻的下一时刻的状态,并利用预测的飞行器在发生时刻的下一时刻的状态更新缓存的飞行器在发生时刻的下一时刻的状态。
这样的装置能够根据扩展卡尔曼滤波算法预测飞行器在发生时刻的下一时刻的状态,从而不断修正飞行器的位置,提高对当前位置估计的准确性,进一步提高导航的准确性。
在一个实施例中,如图4所示,飞行器导航装置还可以包括协方差确定单元405,能够获取飞行器在发生时刻的下一时刻的状态协方差,导航单元405在协方差确定单元405确定的发生时刻的下一时刻的状态协方差和状态更新单元403更新的状态数据的基础上预测飞行器在当前时刻的状态,并根据预测的状态进行导航。
这样的装置一方面能够通过协方差的加入提高对当前时刻的下一刻的状态预测的准确度,另一方面由于状态协方差运算的复杂度比较高,只预测当前时刻的状态而不预测协方差能够降低运算量,由于在状态更新过程中会对当前时刻的状态的预测基础(即发生时刻的下一时刻的状态)进行不断修正,因此当前时刻状态的不确定性意义不大,因此不计算当前时刻的状态协方差并不影响导航的准确性。
在一个实施例中,如图4所示,飞行器导航装置还可以包括信号判断单元406,能够判断当前飞行器的GPS信号的获取状态。若GPS信号良好,则导航单元根据GPS数据和IMU探测数据确定飞行器装固态。在一个实施例中,可以只根据GPS数据进行位置确定;在另一个实施例中,可以将GPS数据和IMU探测数据进行融合,例如可以以GPS数据进行导航,以IMU探测数据辅助修正,这样的方法一方面避免GPS偶然的不准确导致导航错误,提高准确度,另一方面也能够保持IMU探测数据的更新缓存,以便在GPS数据获取突然失灵时能够具有基于IMU探测数据进行导航的数据基础。
若GPS信号不好,如不准确,或无法获得GPS信号数据,则可以激活数据获取单元401获取IMU探测数据和视觉采集数据,导航单元根据视觉采集数据和IMU探测数据确定的飞行器位置进行导航。
这样的装置能够保证飞行器GPS信号良好的情况下根据GPS数据进行导航,在GPS信号不好的情况下迅速切换至根据视觉采集数据和IMU探测数据进行导航,提高了飞行器位置确定的准确性和飞行器的可靠性。在一个实施例中,当GPS恢复后,退出根据视觉采集数据和IMU探测数据确定飞行器位置的模式,一方面降低运算量,另一方面也能够提高飞行器导航的准确性。
本公开飞行器导航装置的一个实施例的结构示意图如图5所示。飞行器导航装置包括存储器501和处理器502。其中:存储器501可以是磁盘、闪存或其它任何非易失性存储介质。存储器用于存储上文中飞行器导航方法的对应实施例中的指令。处理器502耦接至存储器501,可以作为一个或多个集成电路来实施,例如微处理器或微控制器。该处理器502用于执行存储器中存储的指令,能够减少误差,提高定位的准确度,进而优化飞行器导航效果。
在一个实施例中,还可以如图6所示,飞行器导航装置600包括存储器601和处理器602。处理器602通过BUS总线603耦合至存储器601。该飞行器导航装置600还可以通过存储接口604连接至外部存储装置605以便调用外部数据,还可以通过网络接口606连接至网络或者另外一台计算机系统(未标出)。此处不再进行详细介绍。
在该实施例中,通过存储器存储数据指令,再通过处理器处理上述指令,能够减少误差,提高定位的准确度,进而优化飞行器导航效果。
在另一个实施例中,一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现飞行器导航方法对应实施例中的方法的步骤。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开的飞行器导航系统的一个实施例的示意图如图7所示。飞行器导航装置71可以为上文中任意一种飞行器导航装置。IMU测量设备72可以包括加速度计、陀螺仪等,测量物体三轴姿态角(或角速率)以及加速度。图像采集设备73可以为摄像机,采集视觉采集数据。在一个实施例中,摄像机可以为鱼眼镜头,垂直向下,拍摄地面。飞行控制器74能够根据飞行器导航装置71的输出结果驱动飞行器的运动。
这样的飞行器导航系统能够充分考虑到IMU探测数据与视觉采集数据的更新频率不同的问题,结合相同发生时刻的IMU探测数据和视觉采集数据进行飞行器位置确定,从而减少误差,提高定位的准确度,进而优化飞行器导航效果。
在一个实施例中,飞行器导航系统还可以包括GPS测量设备75,能够实时获取GPS数据,确定飞行器的绝对位置(如经纬度信息)。当GPS测量设备75获取GPS数据的状态良好,或得到的数据准确时,飞行器根据GPS数据和IMU探测数据进行导航;当GPS测量设备75无法获得实时GPS数据,或获得的数据与IMU预测数据的差距较大、发生跳变或信号不稳定时,飞行器根据视觉采集数据和IMU探测数据进行导航,从而提高飞行器位置确定的准确性和飞行器的可靠性。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本公开的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
最后应当说明的是:以上实施例仅用以说明本公开的技术方案而非对其限制;尽管参照较佳实施例对本公开进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本公开的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本公开技术方案的精神,其均应涵盖在本公开请求保护的技术方案范围当中。