首页 / 专利库 / 显示技术 / 双目视觉 / 基于GPU加速的无人机视觉SLAM方法

基于GPU加速的无人机视觉SLAM方法

阅读:421发布:2020-05-12

专利汇可以提供基于GPU加速的无人机视觉SLAM方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于GPU 加速 的无人机视觉SLAM方法,首先进行相机图像信息的读取和预处理;执行前端任务:采用特征点法估计 位姿 ;包括:相机图像的特征提取和特征匹配,采用ICP 算法 估算位姿;进行后端优化:基于图优化的后端优化进而优化位姿;进行词袋回环检测,构建和优化位姿图;其中步骤相机图像的特征提取和特征匹配在GUP上进行,相机图像的特征提取和特征匹配之后的步骤使用OpenCV实现CUDA并行化。本发明方法在现有的嵌入式小型GPU的 基础 上完成视觉SLAM前端部分的特征提取和特征匹配任务, SLAM算法 的其它部分集中在CPU进行并行计算,在不降低 定位 精度 的前提下,提高算法计算速度,减少无人机的体积与重量。,下面是基于GPU加速的无人机视觉SLAM方法专利的具体信息内容。

1.基于GPU加速的无人机视觉SLAM方法,其特征在于,包括以下步骤:
S1.相机图像信息的读取和预处理;所述相机为双目摄像头;
S2.前端任务:采用特征点法估计位姿;包括:相机图像的特征提取和特征匹配,采用ICP算法估算位姿;
S3.后端优化:基于图优化的后端优化进而优化位姿;
S4.进行词袋回环检测,构建和优化位姿图;
其中步骤S2中相机图像的特征提取和特征匹配在GUP上进行,所述步骤S2中相机图像的特征提取和特征匹配之后的步骤使用OpenCV实现CUDA并行化。
2.根据权利要求1所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述预处理为对读取得到的相机图像进行灰度化处理。
3.根据权利要求2所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述步骤S2中相机图像的特征提取和特征匹配具体包括以下步骤:
S21.对处理后的灰度图构建图像金字塔,并为每层金字塔图像分配应提取的特征点数量;
S22.进行各层金字塔图像的特征提取:首先对每层金字塔图像进行边界处理,在金字塔图像上划分网格后对每一网格进行特征点提取:选定在所述网格中的任一像素为待检测像素,以待检测像素为圆心,r为半径作一个圆,与该圆相交的共有n个像素,若所述n个像素中有连续N个像素与待检测像素灰度值的差大于预设阈值T,则认为该待检测像素为特征点;然后循环检测每一个像素得到所有特征点;
S23.对步骤S22提取得到的特征点进行剔除与均匀分布的优化;
S24.对于步骤S23得到的任一特征点,定义邻域像素的矩为:
其中I(x,y)为点x,y处的灰度值;
得到金字塔图像的质心为:
连接金字塔图像的几何中心O与质心C,得到一个方向向量 则特征点的方向定义为:
θ=arctan(m01/m10)
S25.利用rBRIEF算法计算每个特征点的描述子,实现所述金字塔图像中当前与参考帧的特征点匹配。
4.根据权利要求3所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述步骤S2中采用ICP算法估算位姿的具体步骤包括:
通过ICP算法,利用非线性方法估算出帧间位姿变换(R,T),基于特征点的深度信息构建最小二乘问题:
把当前位姿作为优化变量,采用Bundle Adjustment为核心的图优化方法进行优化,通过不断迭代的方法估算当前位姿。
5.根据权利要求4所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述步骤S3的具体步骤包括:
对于SLAM过程的观测方程,其整体的代价函数为:
其中zij为在位姿ξi处观察路标pj产生的观测数据,eij为观测值与测量值的误差;
对上式的最小二乘进行求解,其中以位姿和路标是优化变量,采用Bundle Adjustment非线性优化方法,不断寻找下降方向Δx以求得上式的最优解,即给优化变量一个增量,并对上式进行一次泰勒展开后简化为:
其中Fij表示整体代价函数在当前状态下对相机姿态的偏导,Eij表示整体代价函数对路标点位置的偏导;
将位姿变量放到一起:
将空间点的变量放到一起:
简化为:
其中Δxc和Δxp分别为所有位姿变量整合到一起的整体增量、空间点的变量整合到一起的整体增量;雅克比矩阵F和E是整体代价函数对所述整体增量的导数;
展开得到增量线性方程:
HΔx=g
使用LM方法求解则:H=JTJ+λI,而J=[F E],g=-J(x)Tf(x);
其中I为单位阵,λ为正实数。
6.根据权利要求5所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述步骤S4具体包括以下步骤:
S41.利用词袋模型计算图像间的相似度加速回环发生的识别,通过动态计算回环帧筛选阈值,确定回环关键帧;对当前关键帧与回环关键帧计算Sim3变换得到回环检测结果;
S42.根据步骤S41的回环检测结果进行运行轨迹的纠正,构建得到轨迹符合回环检测结果的位姿图。
7.根据权利要求6所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述步骤S41中图像间相似度的计算步骤为:
基于所述词袋模型并使用TF-IDF算法进行计算:
设训练词典时所有特征数量为n,图像中单词wi数量为ni,则单词的IDF为:
设图像中单词wi出现了ni次,一共出现的单词数为n,则TF为:
得到单词wi的权重为:
ni=TFi×IDFi
对于每一幅图像具有多个特征点,每个特征点分别对应上词典中的某个单词并赋予权重,组成属于该图像的Bag-of-words,其中N为所述词典中的单词数,表示如下:
设另一幅图像的Bag-of-words为υB,则两幅图像的相似度为:
其中N为所述词典中的单词数,υA为一幅图像的Bag-of-words,υB为另一幅图像的Bag-of-words。
8.根据权利要求7所述的基于GPU加速的无人机视觉SLAM方法,其特征在于,所述步骤S41中确定回环关键帧的具体步骤包括:
将与当前帧相连的局部关键帧剔除后遍历所有关键帧;
找出与当前关键帧具有相同单词的关键帧,并统计所有闭环候选帧中与当前关键帧具有共同单词最多的单词数,将最多单词的80%设置为第一阈值;
找出所有单词数超过所述第一阈值,且相似度检测大于相邻关键帧最低分数的关键帧;将其与自己相邻最紧密的前10个关键帧设定为一组;即所述组以每一个关键帧为中心,加上与中心的关键帧相邻的关键帧所形成,一个关键帧出现在一个或多个组内;
计算分组后每组的总得分以及每组得分最高的关键帧,以组得分最高的0.75作为第二阈值,找出高于所述第二阈值的所有组里面得分最高的帧,作为回环关键帧。

说明书全文

基于GPU加速的无人机视觉SLAM方法

技术领域

[0001] 本发明涉及无人机技术领域,尤其涉及基于GPU加速的无人机视觉SLAM方法。

背景技术

[0002] SLAM(Simultaneous localization and mapping)是即时定位与地图构建技术,利用摄像机和计算机视觉算法机器人系统提供状态估计,在小型移动机器人、自动驾驶汽车和无人机中变得越来越流行。
[0003] 在室外运行的无人机需要与执行SLAM计算的系统进行实时通信,脱机处理可以减小无人机的尺寸,从而增加飞行时间,但由于无人机需要工作在SLAM处理系统的无线通信范围内,该限制会对飞行范围产生严重影响。为了消除对飞行范围的影响,SLAM处理放在无人机上进行。然而,基于视觉图像处理的前端和后端的位姿优化相对来说计算量大,资源受限,很难在嵌入式控制器中实现实时运行。但是通过增加处理硬件,由于载重量和大小会对无人机的飞行时间和机动性造成影响。因此减小机载处理系统的体积、功耗和计算时间,对移动机器人,特别是无人机具有重要意义。

发明内容

[0004] 本发明为解决现有应用于无人机的视觉SLAM方法存在需减小机载处理系统的体积、功耗和计算时间等问题,提供了一种基于GPU加速的无人机视觉SLAM方法。
[0005] 为实现以上发明目的,而采用的技术手段是:
[0006] 基于GPU加速的无人机视觉SLAM方法,包括以下步骤:
[0007] S1.相机图像信息的读取和预处理;所述相机为双目摄像头;
[0008] S2.前端任务:采用特征点法估计位姿;包括:相机图像的特征提取和特征匹配,采用ICP算法估算位姿;
[0009] S3.后端优化:基于图优化的后端优化进而优化位姿;
[0010] S4.进行词袋回环检测,构建和优化位姿图;
[0011] 其中步骤S2中相机图像的特征提取和特征匹配在GUP上进行,所述步骤S2中相机图像的特征提取和特征匹配之后的步骤使用OpenCV实现CUDA并行化。
[0012] 优选的,所述预处理为对读取得到的相机图像进行灰度化处理。
[0013] 优选的,所述步骤S2中相机图像的特征提取和特征匹配具体包括以下步骤:
[0014] S21.对处理后的灰度图构建图像金字塔,并为每层金字塔图像分配应提取的特征点数量;
[0015] S22.进行各层金字塔图像的特征提取:首先对每层金字塔图像进行边界处理,在金字塔图像上划分网格后对每一网格进行特征点提取:选定在所述网格中的任一像素为待检测像素,以待检测像素为圆心,r为半径作一个圆,与该圆相交的共有n个像素,若所述n个像素中有连续N个像素与待检测像素灰度值的差大于预设阈值T,则认为该待检测像素为特征点;然后循环检测每一个像素得到所有特征点;其中一般N取11或9;
[0016] S23.对步骤S22提取得到的特征点进行剔除与均匀分布的优化;
[0017] S24.对于步骤S23得到的任一特征点,定义邻域像素的矩为:
[0018]
[0019] 其中I(x,y)为点x,y处的灰度值;
[0020] 得到金字塔图像的质心为:
[0021]
[0022] 连接金字塔图像的几何中心O与质心C,得到一个方向向量 则特征点的方向定义为:
[0023] θ=arctan(m01/m10)
[0024] S25.利用rBRIEF算法计算每个特征点的描述子,实现所述金字塔图像中当前与参考帧的特征点匹配。
[0025] 优选的,所述步骤S2中采用ICP算法估算位姿的具体步骤包括:
[0026] 通过ICP算法,利用非线性方法估算出帧间位姿变换(R,T),基于特征点的深度信息构建最小二乘问题:
[0027]
[0028] 把当前位姿作为优化变量,采用Bundle Adjustment为核心的图优化方法进行优化,通过不断迭代的方法估算当前位姿。
[0029] 优选的,所述步骤S3的具体步骤包括:
[0030] 对于SLAM过程的观测方程,其整体的代价函数为:
[0031]
[0032] 其中zij为在位姿ξi处观察路标pj产生的观测数据,eij为观测值与测量值的误差;
[0033] 对上式的最小二乘进行求解,其中以位姿和路标是优化变量,采用Bundle Adjustment非线性优化方法,不断寻找下降方向Δx以求得上式的最优解,即给优化变量一个增量,并对上式进行一次泰勒展开后简化为:
[0034]
[0035] 其中Fij表示整体代价函数在当前状态下对相机姿态的偏导,Eij表示整体代价函数对路标点位置的偏导;
[0036] 将位姿变量放到一起:
[0037]
[0038] 将空间点的变量放到一起:
[0039]
[0040] 简化为:
[0041]
[0042] 其中Δxc和Δxp分别为所有位姿变量整合到一起的整体增量、空间点的变量整合到一起的整体增量;雅克比矩阵F和E是整体代价函数对所述整体增量的导数;
[0043] 展开得到增量线性方程:
[0044] HΔx=g
[0045] 使用LM方法求解则:H=JTJ+λI,而J=[FE],g=-J(x)Tf(x);
[0046] 其中I为单位阵,λ为正实数;当参数λ较小时,H占主导地位,LM方法更接近高斯顿法,当λ较大时,λI占主导,LM方法更接近于最速下降法。
[0047] 优选的,所述步骤S4具体包括以下步骤:
[0048] S41.利用词袋模型计算图像间的相似度加速回环发生的识别,通过动态计算回环帧筛选阈值,确定回环关键帧;对当前关键帧与回环关键帧计算Sim3变换得到回环检测结果;
[0049] S42.根据步骤S41的回环检测结果进行运行轨迹的纠正,构建得到轨迹符合回环检测结果的位姿图。
[0050] 优选的,所述步骤S41中图像间相似度的计算步骤为:
[0051] 基于所述词袋模型并使用TF-IDF算法进行计算:
[0052] 设训练词典时所有特征数量为n,图像中单词wi数量为ni,则单词的IDF为:
[0053]
[0054] 设图像中单词wi出现了ni次,一共出现的单词数为n,则TF为:
[0055]
[0056] 得到单词wi的权重为:
[0057] ni=TFi×IDFi
[0058] 对于每一幅图像具有多个特征点,每个特征点分别对应上词典中的某个单词并赋予权重,组成属于该图像的Bag-of-words,其中N为所述词典中的单词数,表示如下:
[0059]
[0060] 设另一幅图像的Bag-of-words为υB,则两幅图像的相似度为:
[0061]
[0062] 其中N为所述词典中的单词数,υA为一幅图像的Bag-of-words,υB为另一幅图像的Bag-of-words。
[0063] 优选的,所述步骤S41中确定回环关键帧的具体步骤包括:
[0064] 将与当前帧相连的局部关键帧剔除后遍历所有关键帧;
[0065] 找出与当前关键帧具有相同单词的关键帧,并统计所有闭环候选帧中与当前关键帧具有共同单词最多的单词数,将最多单词的80%设置为第一阈值;
[0066] 找出所有单词数超过所述第一阈值,且相似度检测大于相邻关键帧最低分数的关键帧;将其与自己相邻最紧密的前10个关键帧设定为一组;即所述组以每一个关键帧为中心,加上与中心的关键帧相邻的关键帧所形成,一个关键帧出现在一个或多个组内;
[0067] 计算分组后每组的总得分以及每组得分最高的关键帧,以组得分最高的0.75作为第二阈值,找出高于所述第二阈值的所有组里面得分最高的帧,作为回环关键帧。
[0068] 与现有技术相比,本发明技术方案的有益效果是:
[0069] 本发明中采用了基于OBR特征提取以及结合词袋模型进行特征匹配判断的方法,减少了视觉SLAM前端处理的运算量,以及计算所需的硬件资源;另外将视觉SLAM前端图像处理的特征提取和特征匹配部分进行了CUDA并行化并调用GPU进行加速,减轻CPU的计算负担,提升处理速度,减小机载处理系统的体积、功耗和计算时间,实现无人机的实时视觉SLAM。附图说明
[0070] 图1为本发明方法的整体流程图

具体实施方式

[0071] 附图仅用于示例性说明,不能理解为对本专利的限制;
[0072] 为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0073] 对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0074] 下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0075] 实施例1
[0076] 在本实施例中,为减少无人机的体积和载重,选择Nvidia Jetson TX2作为视觉SLAM算法执行机载处理器进行运算和图像处理;Nvidia Jetson TX2核心模块加上载板重量不到300g,大大降低了无人机的载重负荷;同时Nvidia Jetson TX2内含ARM Cortex-A57(四核)和Nvidia Denver2(双核)处理核心、256个CUDA核心Pascal TM架构设计,可以满足本发明的GPU加速的要求。
[0077] 下面对本实施例提供的基于GPU加速的无人机视觉SLAM方法进行说明,如图1所示,包括以下步骤:
[0078] S1.相机图像信息的读取和预处理;所述相机为双目摄像头;其中的预处理为对读取得到的相机图像进行灰度化处理。本实施例选用的双目摄像头的分辨率为752*480,并可以达到60fps的采集频率,基线长度为120mm;
[0079] S2.前端任务:采用特征点法估计位姿;包括:相机图像的特征提取和特征匹配,采用ICP算法估算位姿;其中步骤S2中相机图像的特征提取和特征匹配在GUP上进行,所述步骤S2中相机图像的特征提取和特征匹配之后的步骤使用OpenCV实现CUDA并行化;
[0080] 其中相机图像的特征提取和特征匹配具体包括以下步骤:
[0081] S21.对处理后的灰度图构建图像金字塔,并为每层金字塔图像分配应提取的特征点数量;CUDA并行化后,该处使用OpenCV CUDAGpuMat方法对尺度金字塔进行预计算;
[0082] S22.进行各层金字塔图像的特征提取:首先对每层金字塔图像进行边界处理,在金字塔图像上划分网格后对每一网格进行特征点提取:选定在所述网格中的任一像素为待检测像素,以待检测像素为圆心,r为半径作一个圆,与该圆相交的共有16个像素,若所述16个像素中有连续12个像素与待检测像素灰度值的差大于预设阈值T,则认为该待检测像素为特征点;其中T设为原点像素灰度值的20%;然后循环检测每一个像素得到所有特征点;CUDA并行化后,对于每层金字塔,都会启动一个CUDA异步内核,以便在块上快速运行;
[0083] S23.对步骤S22提取得到的特征点进行剔除与均匀分布的优化;
[0084] S24.对于步骤S23得到的任一特征点,定义邻域像素的矩为:
[0085]
[0086] 其中I(x,y)为点x,y处的灰度值;
[0087] 得到金字塔图像的质心为:
[0088]
[0089] 连接金字塔图像块的几何中心O与质心C,得到一个方向向量 则特征点的方向定义为:
[0090] θ=arctan(m01/m10)
[0091] S25.利用rBRIEF算法计算每个特征点的描述子,实现所述金字塔图像中当前帧与参考帧的特征点匹配;CUDA并行化后,对于每层金字塔,都会启动一个CUDA异步内核来计算关键点的描述子。
[0092] 其中采用ICP算法估算位姿的具体步骤包括:
[0093] 通过ICP算法,利用非线性方法估算出帧间位姿变换(R,T),基于特征点的深度信息构建最小二乘问题:
[0094]
[0095] 把当前位姿作为优化变量,采用Bundle Adjustment为核心的图优化方法进行优化,通过不断迭代的方法估算当前位姿。
[0096] S3.后端优化:本实施例采用了基于图优化的后端优化,由于视觉SLAM的前端视觉里程计仅给出一个短时间内的轨迹和地图,不可避免的会存在着误差,这样随着时间的延长会导致地图不够精确,因此在后端优化中考虑一段更长时间内的状态估计问题,在SLAM中的运动方程和观测方程都是非线性函数,因此在本实施例中采用非线性方法表述此类问题,具体步骤包括:
[0097] 对于SLAM过程的观测方程,其整体的代价函数为:
[0098]
[0099] 其中zij为在位姿ξi处观察路标pj产生的观测数据,eij为观测值与测量值的误差;
[0100] 对上式的最小二乘进行求解,其中以位姿和路标是优化变量,即通过迭代的方法不断的对位姿和路标进行调整,采用Bundle Adjustment非线性优化方法,不断寻找下降方向Δx以求得上式的最优解,即给优化变量一个增量,并对上式进行一次泰勒展开后简化为:
[0101]
[0102] 其中Fij表示整体代价函数在当前状态下对相机姿态的偏导,Eij表示整体代价函数对路标点位置的偏导;
[0103] 将位姿变量放到一起:
[0104]
[0105] 将空间点的变量放到一起:
[0106]
[0107] 简化为:
[0108]
[0109] 其中Δxc和Δxp分别为所有位姿变量整合到一起的整体增量、空间点的变量整合到一起的整体增量;雅克比矩阵F和E是整体代价函数对所述整体增量的导数;因为后端优化考虑一个更长时间的状态估计,这是一个非常大的矩阵,其中中由每个误差项的导数拼凑起来的;
[0110] 展开得到增量线性方程:
[0111] HΔx=g
[0112] 使用LM方法求解则:H=JTJ+λI,而J=[FE],g=-J(x)Tf(x);其中I为单位阵,λ为正实数;
[0113] 此处的H矩阵是一个很大的矩阵,直接求逆非常消耗计算资源,但是该矩阵稀疏矩阵有一定的特殊结构,利用这个矩阵的稀疏性进行边缘化可以加速求解过程。
[0114] S4.进行词袋回环检测,构建和优化位姿图;具体包括:
[0115] S41.所述步骤S41中图像间相似度的计算步骤为:
[0116] 基于所述词袋模型并使用TF-IDF算法进行计算:
[0117] 设训练词典时所有特征数量为n,图像中单词wi数量为ni,则单词的IDF为:
[0118]
[0119] 设图像中单词wi出现了ni次,一共出现的单词数为n,则TF为:
[0120]
[0121] 得到单词wi的权重为:
[0122] ni=TFi×IDFi
[0123] 对于每一幅图像具有多个特征点,每个特征点分别对应上词典中的某个单词并赋予权重,组成属于该图像的Bag-of-words,其中N为所述词典中的单词数,表示如下:
[0124]
[0125] 设另一幅图像的Bag-of-words为υB,则两幅图像的相似度为:
[0126]
[0127] 其中N为所述词典中的单词数,υA为一幅图像的Bag-of-words,υB为另一幅图像的Bag-of-words。
[0128] 其中确定回环关键帧的具体步骤包括:
[0129] 将与当前帧相连的局部关键帧剔除后遍历所有关键帧;
[0130] 找出与当前关键帧具有相同单词的关键帧,并统计所有闭环候选帧中与当前关键帧具有共同单词最多的单词数,将最多单词的80%设置为第一阈值;
[0131] 找出所有单词数超过所述第一阈值,且相似度检测大于相邻关键帧最低分数的关键帧;将其与自己相邻最紧密的前10个关键帧设定为一组;即所述组以每一个关键帧为中心,加上与中心的关键帧相邻的关键帧所形成,一个关键帧出现在一个或多个组内;
[0132] 计算分组后每组的总得分以及每组得分最高的关键帧,以组得分最高的0.75作为第二阈值,找出高于所述第二阈值的所有组里面得分最高的帧,作为回环关键帧;
[0133] S42.根据步骤S41的回环检测结果进行运行轨迹的纠正,构建得到轨迹符合回环检测结果的位姿图。由于位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便在这个递推过程中一帧一帧地传递下去,从而造成累计误差。为了消除或减少这里的累积误差,进行运行轨迹的纠正,构建位姿图对位姿进行优化。
[0134] 其中在本实施例中使用OpenCV实现CUDA并行化,并行化须为CUDA追踪块ID和线程ID。CUDA在同一个代码块中有许多线程,与同一块中的其他线程相比每个线程都有它ID,它们具有唯一标识符,每个代码块都有它拥有唯一的ID,以便每个代码块中的线程不会被意外地视为线程另一个代码块。对于每个块的大小,它可以显示每个块中有多少线程。线程被放置到块中以存储线程跟踪信息,而不需要使用大量内存。
[0135] 附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
[0136] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈