基于Kinect 的四旋翼无人机体感控制
2015-03-30芦利斌金国栋
李 辉,芦利斌,金国栋
(第二炮兵工程大学907 教研室,陕西 西安710025)
0 引 言
目前,无人机(UAV)的远程控制主要还是以基站和遥控器为主。操作者通过地面站或遥控设备控制无人机飞行,操作方式比较复杂,操作人员需要专业学习和培训才能掌握无人机的基本操作技巧。对于普通用户来说,需要一种简单的控制方式,操作者只需通过直观感觉和简单学习就能够操作无人机。随着信息化的不断发展,人机交互[1](human-computer interaction,HCI)已经成为研究的重点,人机交互的中心已由计算机转移到人的身上,人通过手势、姿态、语音等方式来实现人机交互[2]。人体姿态和手势与Kinect 相结合进行开发,在教育界、商务界、医疗界、计算机应用和机器人视觉控制等方面都有很多的成果[3]。
体势控制包括手势和姿态,具备自然、直观、容易学习和操作等特点。本文选择体势作为无人机控制端人机交互的方式,Kinect 传感器作为人机交互的中介,将自然用户界面(natural user interface,NUI)应用到无人机的控制中来,设计了与四旋翼无人机的控制指令对应的人体体势动作和相关识别算法,使得无人机的控制比传统方式更为简单直观。基于Kinect 传感器和自主组装的四旋翼无人机平台进行了实验,验证了体势控制无人机飞行的可行性。
1 硬件平台
1.1 Kinect 传感器简介
Kinect 传感器由Microsoft 公司于2010 年推出,其组成如图1 所示。
图1 Kinect 结构图Fig 1 Structure chart of Kinect
Kinect 传感器可以同时获取彩色图像数据和深度图像数据,支持实时的全身骨骼跟踪,获取人体骨架的20个关节点[4],如图2 所示。同时,Kinect SDK 允许开发者借助Visual Studio 2010 进行相关开发,通过相关算法设计实现人体的动作识别。
1.2 四旋翼无人机平台
无人机主要分为旋翼和固定翼两种。研究表明,旋翼飞机在结构复杂度、机动性和灵活性方面均具有更强的优势[5]。本文选用当前研究较多的四旋翼飞机作为无人机平台。如图3,四旋翼无人机通过调节四个电机转速,控制起降、速度、三姿态(俯仰角φ,偏航角ψ,横滚角θ),实现飞行控制[6]。本文设计实现四旋翼向六个方向的飞行,即为垂直起降、前后平飞、左右平飞。
图2 人体骨架节点图Fig 2 Joints of human skeletal
图3 四旋翼无人机Fig 3 Quadrotor UAV
2 系统设计
2.1 系统结构
本文的无人机体感控制系统如图4,主要包括操控部分和无人机部分。操控部分包括Kinect 传感器和计算机,实现人对无人机非接触的控制。Kinect 获取操作者的体势动作,通过计算机端的软件识别人体动作并生成为对应的无人机控制指令,通过数传模块,发送给无人机。无人机接收指令后,送入机载的控制模块处理并做出相应的动作。
2.2 体势识别
2.2.1 骨骼数据获取
Kinect 水平放置,建立骨骼空间坐标系O—XYZ 如图5所示,原点O 为Kinect 红外摄像头中心,X 轴与水平面平行,向右为正;Y 轴和水平面垂直,向上为正;Z 轴为红外摄像头的光轴,景深方向为正。当操作者位于Kinect 前方,Kinect 获取人体20 个骨骼节点的三维坐标[7]。本文主要利用上肢的左右手、肘、肩共6 个节点。
图4 系统结构示意图Fig 4 Diagram of system structure
图5 骨骼空间坐标系Fig 5 Skeleton space coordinate system
2.2.2 体势设计与识别
当人体做出特定动作,全身的骨骼节点位置坐标满足一定条件,即被识别为一种控制指令。对人体的体势识别主要是对骨骼节点之间的角度与欧氏距离进行判别,当达到一定的角度与距离时就被系统识别并处理[8~10]。
具体体势设计如表1,无人机起飞后,除了这六种控制动作,无人机都保持空中悬停状态。体势动作设计思想:两臂同时举起,飞机起飞;两臂同时放下,飞机降落;仅左臂举起,利用左肘关节的夹角控制飞机左右平飞;仅右臂举起,利用右肘关节的角度控制飞机前后平飞。
表1 无人机指令与对应的体势动作设计Tab 1 Instructions of UAV and corresponding design of body posture
人体姿态识别算法流程图见图6。
图6 姿态识别算法流程图Fig 6 Flowchart of gesture recognition algorithm
下面以控制飞机左右平飞体势动作为例分析体势识别算法。如图7,左手节点A1、左肘节点B1、左肩节点C1,形成三维坐标系的三角形。边长和角度为
图7 上肢骨骼节点坐标图Fig 7 Coordinates figure of upper limb joints
操作者给出左飞指令:左臂举起,左肩节点C1,左肘节点B1,左手节点A1的Y 坐标值依次增大;同时右臂放下,右肩节点C2,右肘节点B2,右手节点A2的Y 坐标值依次减小;左肘关节的夹角∠A1B1C1大于90°(夹角∠A1B1C1小于90°,则飞机右飞)。骨骼节点满足以下条件
当骨骼节点坐标满足公式(5)时,计算机端软件将该体势动作识别为飞机向左平飞指令,进而生成无人机左飞控制指令,即为调整航向角并前进,发送给无人机平台,控制无人机向左飞行。
3 实验验证系统设计
3.1 验证系统
本文采用自主搭建的微型四旋翼无人机,该四旋翼机可以通过数传模块,接收控制指令并进行相应的飞行。实验系统结构如图8 所示,Kinect 传感器捕捉操作者体势动作,传给计算机,通过姿态识别生成相应的控制指令并发给四旋翼无人机。无人机控制指令通信采用2.4 GHz 无线电传输,使用数传模块nRF24LE1(室内传输距离30 ~40 m),将飞控指令包发送给机载设备。
图8 实验系统框图Fig 8 Block diagram of experimental system
3.2 软件设计
软件系统是在VS2010 环境下开发的,使用C#编程实现。通过调用Kinect SDK,访问连接到计算机的Kinect 传感器,获取彩色图像、深度数据、骨骼节点坐标并进行骨骼跟踪。通过上文设计的动作识别算法,识别人体体势动作,生成无人机控制指令并发送给无人机。算法流程如图9。
图9 软件流程图Fig 9 Flowchart of software
4 实验结果与分析
本文针对上述无人机控制系统,在室内搭建了基于Kinect 传感器和四旋翼飞机的实验平台,进行了室内飞行实验。实验结果表明:人体体势动作能够实时地控制四旋翼进行垂直起降、前后平飞以及左右平飞。
如图10 所示,软件界面的左侧、右中、右下显示控件分别显示的是Kinect 获取的骨骼节点识别模型、深度数据、彩色图像数据。操作者给出起飞动作指令,四旋翼收到指令后,垂直起飞。
为了验证体感控制的准确性,本实验还选取了20 名不同身高体型的操作者,分别进行以上6 个动作的测试,测试结果如表2 所示。测试结果表明:该方法对不同操作者的控制姿态都具有较高的识别率。
图10 起飞体势指令与显示Fig 10 Posture instruction of taking off and display
实验操作者体势动作识别属于静态体势识别,操作者给出一个控制动作,需持续0.5 s 以上,当上肢节点位置变化过快,操作的流畅性下降。同时,Kinect 精度有限,人到传感器的理想距离为1.5 ~3.0 m,对操作者活动有一定限制;有遮挡的情况下,操纵准确性也会受到影响。操作者的身高和体型对体势识别的影响不大,平台通用性较好。
表2 不同操作者的测试结果Tab 2 Test results of different operators
5 结束语
本文提出了一种基于Kinect 传感器的无人机体感控制方案。利用Kinect 对操作者进行骨骼跟踪和骨骼数据提取,设计了一组体势动作和识别算法,进而生成对应的无人机控制指令,远程控制无人机飞行。利用自主搭建的四旋翼无人机平台对本文的方法进行了验证。结果表明:操作者通过Kinect 传感器和本文设计的体势动作和识别算法,可以自然、直观、准确地对无人机进行体势操控,降低了无人机控制的复杂性、专业性。
[1] Cheng Liying,Sun Qi,Su Han.Design and implementation of human-robot interactive demonstration system based on kinect[C]∥Chinese Control and Decision Conference,2012:971-975.
[2] 黄国范,李 亚.人体动作姿态识别综述[J].电脑知识与技术,2013(1):133-135.
[3] 朱 涛,金国栋,芦利斌.基于Kinect 应用概述及发展前景[J].现代计算机,2013(2):8-11.
[4] 余 涛.Kinect 应用开发实战:用最自然的方式与机器对话[M].北京:机械工业出版社,2013:26-40.
[5] Bouabdallah S,Becker M,Siegwart R.Autonomous miniature flying robots coming soon[J].IEEE Robotics&Automation Magazine,2007,14:88-98.
[6] 于雅莉,孙 枫,王元昔.基于多传感器的四旋翼飞行器硬件电路设计[J].传感器与微系统,2011,30(8):113-115.
[7] 谢 亮,廖宏建,杨玉宝.基于Kinect 的姿态识别与应用研究[J].计算机技术与发展,2013,23(5):258-260.
[8] 符秀辉,杜一鸣.基于Kinect 传感器的姿态识别及应用研究[J].电子技术,2013,23(5):157-158.
[9] 战荫伟,于芝枝,蔡 俊.基于Kinect 角度测量的姿势识别算法[J].传感器与微系统,2014,33(7):129-132.
[10]Asiimwe R,Anvar A.Automation of the maritime UAV command,control,navigation operations,simulated in real-time using Kinect sensor:A feasibility study[J].World Academy of Science,Engineering and Technology,2012,72:408-412.