基于OPENCV视觉处理的旋翼无人机识别规划的设计
2019-12-01赵旭
文/赵旭
随着科学技术发展,无人机硬件设备向高集成、高性能方向发展,特别是旋翼型无人机具有灵活性高、稳定性好、可以垂直起降场地适应性较强的优点,广泛应用于无人机测绘、无人机植保、无人机侦查识别等领域。硬件中集成了CMOS传感器和处理器可以进行跟踪和识别,这类无人机在各种领域都有较强的自主控制能力,适应不同的工作环境。然而旋翼无人机随着姿态控制的同时避免不了出现震动和干扰,图像容易模糊;识别过程中,被跟踪物体颜色如果和背景颜色相近容易出现识别失败导致跟踪失败现象;当被跟踪物体被遮挡后没有相应的算法去解决等。本文根据以上问题,提出一种基于Opencv视觉处理的旋翼无人机识别规划方案,能够实现自主跟踪控制。
1 多旋翼无人机飞行平台
多旋翼无人机飞行平台采用飞越TAROT公司680pro碳纤维机架(TL68P00),轴距695mm,可安装无刷电机数量为六个;无刷电机采用3510电机,kv值为350;电子调速器采用3~6S/40A,供电电压从11.1V~25.2V,最大持续电流40A;螺旋桨尺寸为13寸碳纤维螺旋桨;动力电池采用格瑞普公司的格氏16000mAh/15C电池。该平台无负载重量约为4.2公斤,悬停时间约为32分钟。本设计中采用的六旋翼无人机飞行平台具有高机动性,具备空间三轴六自由度的飞行能力,对场地要求较小,适合执行图像处理并跟踪任务。
2 图像处理及跟踪原理
首先通过六旋翼无人机飞行平台搭载的视觉采集设备对图像进行采集,将每秒24帧的视频 通过串行通信传送给图像处理器的高速存储器,先进行图像预处理,如降低图像噪点、图像曝光纠正等等,然后送入以图像处理器为核心的控制板运行移植的Opencv代码对视频图像进行处理。识别并跟踪必须要掌握被跟踪目标的信息,如何快速的从复杂多样的环境中识别目标信息是设计重点,需要论证目标信息匹配识别方法,选择最优的方法计算好路径送入飞行控制器实时控制六旋翼无人机飞行平台进行移动。
3 目标信息识别与跟踪方案
图像识别和跟踪是两个独立的步骤,首先需要从每秒24帧的视频中提取目标特征信息,如目标的轮廓、大小、颜色等,难点在于运动目标的识别。目前有较为流行的三种方法分别是帧差法、背景差分法和光流法。本设计主要采用改进的光流法,传统的光流法主要是利用空间运动目标被测表面的像素点运动产生的瞬时速度场,根据以上信息可以反映运动物体的运动趋势及表面结构,这种方法计算量较大,需要逐帧进行计算,处理时容易产生延迟,实时性较差。根据传统的光流法的缺点,改进的光流法基于Lucas-Kanade光流算法,并不是每帧都要重新分析像素点的变化,是一种由高斯迭代法解线性方程组进行迭代的方法,优点在于这种算法有较强的鲁棒性,但是对于边缘和同质区域微小的变化信息会被忽略。但是对于无人机这种在天空飞行的视觉识别平台而言,这种现象出现几率较小,所以适合在多旋翼无人机飞行平台上实现。
Opencv的另一个处理步骤是基于识别的信息进行跟踪控制,本设计中采用的Opencv的交互卡尔曼滤波方法,运行cvFindContours函数可以有效的提取目标特征,提高识别效率和准确性。其中常规的卡尔曼滤波算法是基于线性随机差分方程来描述离散时间过程的状态变量,本设计中应用系统并不是实时线性的,所以本设计采用交互卡尔曼滤波器,利用梯度下降法可以计算并融合一组姿态四元数(姿态参数包含三轴加速度、地磁传感器数据,本设计中不包含地理信息数据),不仅被跟踪目标匀速或有规律按圆周运动能够被跟踪,而且当被跟踪目标加速度移动也可以稳定跟踪。
4 Opencv的移植与应用
考虑到Opencv巨大的运算量,一些微控制器运行困难,并且存储器瓶颈较为明显,所以本设计采用三星S3C2440处理器,ARM920T架构的核心板进行图像处理和跟踪控制,配合SDRAM容量为64MB,256MB的Nand Flash和2MB Nor Flash。交叉编译器使用该ARM9开发工具和Linux和GCC4.4.3,编译工具采用Cmakeversion,版本2.8。移植过程较为繁琐,分为下载并构建Opencv、生成makefile、编译安装、解决warnning和error和移植运行。首先要在https://opencv.org/官网下载Opencv的源代码,构建生成目录;下载并安装几个必要的库文件,如zlib、jepg、libpng、ffmpeg等;然后运行Cmake工具并配置交叉编译环境,如在Cmake-guI选项卡的Target System下面的Operating System填写arm-linux;在compilers C项目点选交叉编译器的命令地址(bin文件夹的arm-linuxgcc);在compiles C++项目点选bin文件夹的arm-linux-g++命令地址。然后编译安装,此时会遇到各种报错,报错信息中可以能看出缺少链接参数的库文件,一般来讲包含pthread、dlfcn、parallel等库文件,解决方法在CMAKE_EXE_LINKER_FLAGS添加以上的库即可,修改部分源程序代码以适应该编译工具链,最后编译移植运行。
5 结论
本文所设计的视觉识别规划可以有效的识别静态和动态物体,测试飞行环境为吉林化工学院双吉校区实训综合楼410无人飞行器实验室试飞场及室外试飞。在室外路径规划测试也能顺利的进行,飞行测试平台飞行稳定。在测试过程中也发现一些问题,在动态跟踪测试时,飞行高度低于2米,容易出现飞行器“跟丢”现象,原因有两个,首先2.5mm镜头的视场FOV太小,仅能达到垂直75°、水平130°的水平;第二飞行高度过低会造成被跟踪物体移动过快后丢失目标。更换2.1mm广角镜头后又造成图像畸变严重使得直角循线过程中失败。后期可以在OPENCV代码中可以加入图像畸变校正处理代码继续测试。