基于Kinect传感器的四旋翼无人机控制方法与流程

文档序号:12361387阅读:373来源:国知局
基于Kinect传感器的四旋翼无人机控制方法与流程
本发明涉及一种四旋翼无人机控制方法,特别涉及一种基于Kinect传感器的四旋翼无人机控制方法。
背景技术
:四旋翼无人机的控制方式均以小型通信地面站和遥控手柄为主。四旋翼无人机的操作者一般通过遥杆控制无人机飞行,在操作遥控手柄的同时,还需不停地盯住无人机的飞行。在一些特殊场合,比如四旋翼无人机特技表演中,需要无人机短时间感应出操作者发出的操作信号,摇杆操作在此种场合下经常出现信号延时,无法做到响应快速变化的操作指令而导致无人机坠毁或炸机。文献“基于Kinect的四旋翼无人机体感控制,传感器与微系统,2015年第34卷第8期,p99-p102”公开了一种基于Kinect传感器的四旋翼无人机控制方法。其针对Kinect控制无人机方案,在室内搭建了基于Kinect传感器和四旋翼飞行器的实验平台。在提取到一个站立操作者姿势后,通过调用体势识别算法进行无人机飞行控制。该方法分析了使用Kinect传感器来进行无人机飞行控制的部分理论原理及系统设计,其采用的体势动作识别方法属于静态体势识别,操作者给出一个控制动作,需持续0.5s以上,当上肢节点位置变化过快,则操作的流畅性会明显下降。对于文献提及的实验中使用的是何种体势识别算法,文献中没有详细说明。此外,其没有对Kinect传感器进行改进,直接使用现成的传感器进行体势识别,实验中的操作者至传感器的距离必须限制在1.5-3.0m,这对操作者活动有一定的限制,实用性不强。技术实现要素:为了克服现有四旋翼无人机控制方法实用性差的不足,本发明提供一种基于Kinect传感器的四旋翼无人机控制方法。该方法利用Kinect传感器提取操作者身体关节部位的移动数据,开发操作者体势移动识别算法,进而编码生成对应的四旋翼飞行控制指令,通过NRF2401传输四旋翼无人机飞行控制指令,从而实现对无人机进行远程精确飞行控制。本方法采用矩阵的复合变换来处理每一帧传感器获取的骨骼数据,可大幅减小体势识别待处理的数据量。通过实现最小二乘法对有运动目标背景下操作者的形心定位,输出操作者的位置信息,获得操作者的运动轨迹。操作者目标跟踪采用改进的Mean-shift算法,从而实现对于出现操作者平移、形变或部分遮挡情况下的准确跟踪识别,实用性强。本发明解决其技术问题所采用的技术方案:一种基于Kinect传感器的四旋翼无人机控制方法,其特点是包括以下步骤:步骤一、获取人体关节点的数据:通过处理景深数据及骨骼数据来建立人体各个关节的坐标,这些关节点的位置定义了一个姿势。采用矩阵复合变换处理人体关节点的数据,相对于任意点C=[Cx,Cy]通过三个步骤进行比例变换。首先进行平移,即将变换物移动到坐标系的原点;然后进行比例变换,即按比例进行放大或缩小;最后再进行平移,即将变换物移回原位。比例变换将平面上任意一点的横坐标放大或缩小s11倍,纵坐标放大或缩小s22倍,即x1=s11×x、y1=s22×y,用矩阵表示为整个过程的复合变换表示为:T=T1·T2·T3=110010-CX-CY1·s11000s220001·110010CxCy1s11000s220Cx(1-s11)Cy(1-s22)1]]>步骤二、从步骤一处理得到的像素矩阵中重新划分像素区域,某个像素点的坐标为(xi,yi),共有n个像素点。用公式(x0,y0)=Σi=1n(xi,yi)/n]]>计算运动区域的几何中心作为操作者的特征点。使用Canny算子进行平滑再求导进行边缘检测,将从步骤一得到的边缘轮廓点集表示为(X,Y)={(xi,yi)|i=1,2,3…},选用高斯平滑函数平滑图像f(x,y),平滑后图像g(x,y)=h(x,y,σ)*f(x,y)。使用一阶有限差分计算偏导数阵列P和Q,已平滑的图像g(x,y)的梯度使用一个2×2一阶有限差分近似式计算x与y偏导数的两个阵列f′x(x,y)≈Gx=[f(x+1,y)-f(x,y)+f(x+1,y+1)-f(x,y+1)]/2f′y(x,y)≈Gy=[f(x,y+1)-f(x,y)+f(x+1,y+1)-f(x+1,y)]/2,幅值和方位角通过直角坐标转化到极坐标公式计算得到。步骤三、使用最小二乘法对步骤二得到的圆形区域的边缘轮廓点集拟合以减小误差,点(xi,yi)处的误差为δi,圆的标准方程(x-a)2+(y-b)2=r2,(a,b)为圆心坐标,r为半径。整理圆的标准方程得到x2+y2-2ax-2by+a2+b2-r2=0,此方程中令-2a=D,-2b=E,a2+b2-r2=F,得到x2+y2+Dx+Ey+F=0。误差满足对误差求平方和,得到:J(D,E,F)=Σi=1i=nδi2=Σi=1i=n(xi2+yi2+Dx+Ey+F)2]]>最小二乘拟合通过函数求极值来解J(D,E,F)最小时的各参数值∂J(D,E,F)∂D=Σi=1i=n2·(xi2+yi2+Dx+Ey+F)·xi=0]]>∂J(D,E,F)∂E=Σi=1i=n2·(xi2+yi2+Dx+Ey+F)·yi=0]]>∂J(D,E,F)∂F=Σi=1i=n2(xi2+yi2+Dx+Ey+F)=0]]>当D、E、F同时满足上述三式,取到J(D,E,F)最小值。把得到的边缘轮廓点集带入上述三式,求得圆的半径及圆心坐标值,该坐标值代表操作者位置。步骤四、将步骤一、步骤二获取到的骨骼数据绘制到UI界面上:采用基于事件的方式访问骨骼数据、彩色影像数据和景深数据。获取的每一帧数据都是一个骨骼对象集合,每一个骨骼对象包含有描述骨骼位置以及骨骼关节的数,定义的每一个关节拥有一个唯一标识符。在整个应用程序中一次性的为获取的每一帧骨骼数据分配内存,并在程序中定义一个能够追踪到骨骼最大个数的常量,使其方便的对获取的每一帧数组初始化。之后在UI界面通过关节点将骨骼连接起来,用一条直线代表一根骨骼,这样便在应用程序界面上输出了骨骼图像。步骤五、确定操作者的逻辑实现,定义不同的姿势动作:提取UI界面上的骨骼连线数据,同时移动手,能够看到手部骨骼节点会跟着移动。接着取三个节点构成一个三角形,使用余弦定理对各个节点之间的角度进行计算。设定一个阈值角度,循环遍历检测并判断该阈值角度,若超过该阈值角度初始阈值则视为操作者进行了一次动作。根据两个关节点绘制一个三角形,第三个点由这两个关节点来决定。根据每个节点的坐标计算每个边长的值。由余弦定理公式:c2=a2+b2-2abcosC以及计算出角度。步骤六、对步骤四捕获确定的不同姿势编码,对应不同的四旋翼无人机飞行控制控制指令:选取五种不同的姿势对应不同的飞控指令,握拳对应四旋翼无人机起飞,飞行控制指令编码为0000;松拳对应四旋翼无人机降落,飞行控制指令编码为0001;左摇头,利用头部与肩部夹角信息控制四旋翼无人机向左平飞,飞行控制指令编码为0010;右摇头,利用头部与肩部夹角信息控制四旋翼无人机右平飞,飞行控制指令编码为0011。双臂平举胸前,利用手臂关节与腰部的夹角信息控制四旋翼无人机向前平飞,飞行控制指令编码为0100;单臂平举胸前,利用手臂关节与腰部的夹角信息控制四旋翼无人机向后平飞,飞行控制指令编码为0101。步骤七、通过NRF2401使Kinect识别端与四旋翼无人机建立无线连接:NRF2401是单片射频收发芯片,工作于2.4~2.5GHzISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器。使用NRF2401进行无线通信,最远通信距离为一千米,输出功率和通信频道通过所编写的程序进行配置。NRF2401配置参数为16位CRC,主发送从接收模式。允许接收地址只有频道0,频道0自动ACK应答允许,设置信道工作为2.4GHz。设置接收数据长度为4字节,发射速率为1MHz,发射功率为最大值0dB。步骤八、四旋翼无人机接收体感姿势识别指令编码,执行相应的飞行动作:四旋翼无人机接收到操作者的姿势识别指令后,进行相应的解码。解码后将得到步骤四所述对应的无人机飞行控制指令,四旋翼接收飞行控制指令后将执行自动飞行状态、自动起飞到达预定高度,前、后、左、右四个方向自动平飞五米距离、自动降落动作。本发明的有益效果是:该方法利用Kinect传感器提取操作者身体关节部位的移动数据,开发操作者体势移动识别算法,进而编码生成对应的四旋翼飞行控制指令,通过NRF2401传输四旋翼无人机飞行控制指令,从而实现对无人机进行远程精确飞行控制。本方法采用矩阵的复合变换来处理每一帧传感器获取的骨骼数据,可大幅减小体势识别待处理的数据量。通过实现最小二乘法对有运动目标背景下操作者的形心定位,输出操作者的位置信息,获得操作者的运动轨迹。操作者目标跟踪采用改进的Mean-shift算法,从而实现对于出现操作者平移、形变或部分遮挡情况下的准确跟踪识别,实用性强。由于采用了矩阵的复合变换处理传感器输出的数据,使得计算机处理的数据量大幅缩小,相比于
背景技术
,数据运算量降低38%,程序反应时间提高200ms。相比于静态体势识别,本发明使用形心法确定操作者的位置,有效识别距离为0.5-3.0m。当操作者出现平移、形变或部分遮挡的情况下,识别准确率仍可以达到84.98%,操作者保持不移动的正常环境中识别率达到99.67%。下面结合附图和具体实施方式对本发明作详细说明。附图说明图1是本发明基于Kinect传感器的四旋翼无人机控制方法的流程图。图2是本发明方法获取图像数据后使用复合变换压缩处理图像数据的原理图。图3是本发明方法在定义操作者姿势动作时使用的角度阈值判定方法示意图。具体实施方式参照图1-3。本发明基于Kinect传感器的四旋翼无人机控制方法具体步骤如下:步骤一、首先系统初始化,确认系统正常启动。接下来Kinect开启红外摄像头、深景摄像头,捕获站在Kinect摄像头前0.5m距离外的操作者骨骼数据。使用矩阵的复合变换压缩处理人体关节点的数据,需要创建一个wpf工程文件,并添加Microsoft.Kinect.dll脚本文件。开始启动传感器之前,初始化SkeletonStream数据流,从SkeletonStream数据流产生的每一帧数据都是一个骨骼对象集合,一次性为数据流数组分配内存。采用矩阵复合变换处理人体关节点的数据,相对于任意点C=[Cx,Cy]通过三个步骤进行比例变换。首先进行平移,可看成是将变换物移动到坐标系的原点;然后进行比例变换,按一定比例进行放大或缩小;最后再进行平移,可看成将变换物移回原位。比例变换将平面上任意一点的横坐标放大或缩小s11倍,纵坐标放大或缩小s22倍,即x1=s11×x、y1=s22×y,这可用矩阵表示为整个过程的复合变换表示为T=T1·T2·T3=110010-CX-CY1·s11000s220001·110010CxCy1s11000s220Cx(1-s11)Cy(1-s22)1---(1)]]>即可将图像中冗余的信息剔除,得到经过矩阵复合变换压缩之后的新的图像信息。步骤二、压缩得到的新的图像数据将覆盖原始数据的内存空间,接下来需要使用Canny算子进行平滑再求导进行边缘检测。从步骤一处理得到的像素矩阵中重新划分像素区域,某个像素点的坐标为(xi,yi),共有n个像素点。用公式(x0,y0)=Σi=1n(xi,yi)/n---(2)]]>计算运动区域的圆形几何中心作为操作者的特征点。边缘轮廓点集仍可表示为(X,Y)={(xi,yi)|i=1,2,3…}(3)选用高斯平滑函数平滑图像f(x,y),平滑后图像g(x,y)=h(x,y,σ)*f(x,y)。使用一阶有限差分计算偏导数阵列P和Q,已平滑的图像g(x,y)的梯度使用一个2×2一阶有限差分近似式来计算x与y偏导数的两个阵列:f′x(x,y)≈Gx=[f(x+1,y)-f(x,y)+f(x+1,y+1)-f(x,y+1)]/2(4)f′y(x,y)≈Gy=[f(x,y+1)-f(x,y)+f(x+1,y+1)-f(x+1,y)]/2(5)最后幅值和方位角通过直角坐标转化到极坐标公式计算得到。步骤三、使用最小二乘法对步骤二得到的圆形区域的边缘轮廓点集进行拟合,圆的标准方程为x2+y2-2ax-2by+a2+b2-r2=0,此方程中令-2a=D,-2b=E,a2+b2-r2=F,得到x2+y2+Dx+Ey+F=0。误差满足对误差求平方和,得到:J(D,E,F)=Σi=1i=nδi2=Σi=1i=n(xi2+yi2+Dx+Ey+F)2---(6)]]>最小二乘拟合通过函数求极值来解J(D,E,F)最小时的各参数值:∂J(D,E,F)∂D=Σi=1i=n2·(xi2+yi2+Dx+Ey+F)·xi=0---(7)]]>∂J(D,E,F)∂E=Σi=1i=n2·(xi2+yi2+Dx+Ey+F)·yi=0---(8)]]>∂J(D,E,F)∂F=Σi=1i=n2(xi2+yi2+Dx+Ey+F)=0---(9)]]>当D、E、F同时满足上述三式,取到J(D,E,F)最小值。把得到的边缘轮廓点集带入上述三式,求得圆的半径及圆心坐标值,该坐标值代表操作者位置。步骤四、绘制骨骼图像,当某几个骨骼关节点位置较为接近时,识别率又将显著降低。因此,需要寻找一种高效识别动作的算法。常用的算法为计算两个点的长度,测试长度是否在一个阈值范围内。考虑到前述算法运算量大,实时性低的缺点,可以利用节点之间构造三角形的方法来定义操作者的姿势动作。算法中需要取三个节点构成一个三角形,使用余弦定理将各个节点之间的角度计算出来。设定一个阈值角度,循环遍历检测并判断该角度,若超过该角度初始阈值则视为操作者进行了一次动作。由余弦定理公式:c2=a2+b2-2abcosC以及计算出角度,其中a、b、c随机取到的三个节点之间的距离,此距离可以从UI界面上直接读取,C为a、b之间的夹角。步骤五、对捕获确定的不同姿势编码,对应到不同的四旋翼无人机飞行控制控制指令:选取五种不同的姿势对应不同的飞控指令,握拳对应四旋翼无人机起飞,飞行控制指令编码为0000;松拳对应四旋翼无人机降落,飞行控制指令编码为0001;左摇头,利用头部与肩部夹角信息控制四旋翼无人机向左平飞,飞行控制指令编码为0010;右摇头,利用头部与肩部夹角信息控制四旋翼无人机右平飞,飞行控制指令编码为0011。双臂平举胸前,利用手臂关节与腰部的夹角信息控制四旋翼无人机向前平飞,飞行控制指令编码为0100;单臂平举胸前,利用手臂关节与腰部的夹角信息控制四旋翼无人机向后平飞,飞行控制指令编码为0101。步骤六、通过NRF2401使Kinect识别端与四旋翼无人机建立无线连接,最远通信距离为一千米,输出功率和通信频道通过所编写的程序进行配置。给NRF2401配置的参数为16位CRC,主发送从接收模式。允许接收地址只有频道0,频道0自动ACK应答允许,设置信道工作为2.4GHz。设置接收数据长度为4字节,发射速率为1MHz,发射功率为最大值0dB。步骤七:四旋翼无人机接收到操作者的姿势识别指令后,进行相应的解码。解码后将得到步骤四所述对应的无人机飞行控制指令,四旋翼接收飞行控制指令后将执行自动飞行状态,自动起飞到达预定高度,前、后、左、右四个方向自动平飞五米距离,自动降落等动作。其中的自动平飞距离可在飞行控制程序中设定。至此,系统完成预设定功能。本发明针对四旋翼无人机控制中操作复杂、专业性高的问题,提出了一种基于Kinect传感器无人机体感控制方案,并完成系统总体设计及相关算法实现。本发明阐述的复杂背景下的体势识别方法更加实用,使用形心法确定操作者的位置,有效识别距离为0.5-3.0m。当操作者出现平移、形变或部分遮挡的情况下,识别准确率仍可以达到84.98%,操作者保持不移动的正常环境中识别率达到99.67%。本发明操作包括如下步骤:(1)系统连接,确认无误后上电;(2)进入系统SDK开发界面,系统初始化;(3)捕获操作者骨骼数据,程序对数据进行处理,将骨骼图像绘制到UI界面上;(4)调用姿势识别算法,提取获取的三个节点构成一个三角形,使用余弦定理将各个节点之间的角度计算出来。设定一个阈值角度,循环遍历检测并判断该角度,若超过该角度初始阈值则视为操作者进行了一次动作。(5)对识别到的姿势动作进行编码,对应不同的飞行控制指令,通过NRF2401将编码数据发送给无人机;(6)无人机接收数据并解码,解码得到的控制指令将使无人机执行预定义飞行动作,至此,整个系统完成一次飞行。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1