本文为2023年第十八届中国研究生电子设计竞赛安谋科技企业命题二等奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!
基于手势自然交互技术的无人机远程控制
参赛单位:江汉大学
队伍名称: 万有引力号
参赛队员:秦志雨、李泽红、阮行
视频展示
https://www.youku.com/video/XNjAwODYwMDA0NA==
作品简介
无人机如今已广泛应用在摄影、农业、物流、安全等多个领域。其性能随着通信技术与控制技术的优化也逐渐得到提升,越来越多的新兴技术开始出现在无人机上。但是目前大多数控制无人机的方式依旧停留在遥控器、手机等设备上,其中遥控器是目前无人机最为常用的控制方式。基于遥控设计的无人机操控方式存在着交互复杂、学习难度高等缺点,而无人机操控方式的便捷化、智能化是无人机领域发展的重要趋势。通过将手势自然交互技术应用于无人机的远程控制,本设计使无人机操作更加便捷。通过在EAIDK-610开发板中部署手部骨骼点检测模型,得到视频流中的手部骨骼点坐标信息,以此计算手指曲率,实现对飞行指令手势的识别,以符合自然交互的手势操纵无人机飞行。为实现上述功能,本文的设计主要如下:
(1) EAIDK610与多传感器的软硬件适配
本文采用APM2.8作为四旋翼无人机飞行控制器。通过飞行控制器内部的陀螺仪、气压计、GPS等多个传感器,实时获取和处理包括无人机的姿态、角速度、加速度等信息。陀螺仪提供了姿态变化的测量,气压计则用于测量高度变化。同时,以EAIDK610搭载摄像头捕捉和传输实时图像,利用这些图像进行用户的手部检测和手势识别,实现更准确的手势分类和识别效果。这些设计可以对无人机飞行过程中的手势进行实时识别,并根据识别结果实现无人机的位置和姿态改变,从而实现对无人机的精准操控。
(2) 基于深度学习的手骨骼点检测算法
本文采用了基于深度学习的手骨骼点检测算法,结合了谷歌开源代码和mediapipe框架,实现了高效、精确的手部姿态估计。首先,通过谷歌开源的训练代码,练了自己的手部骨骼点检测模型。这个模型经过了大规模的训练和优化,在多样化的手部图像数据集上表现出色。它融合了卷积神经网络和关键点回归技术,能够准确地预测手部各个关键点的位置。最后,将训练好的模型与Mediapipe框架相结合,使得手势检测算法具备了实时性和高效性。
(3) 基于手骨骼点的手势识别算法
本算法首先利用传感器设备或摄像头捕获手部骨骼点信息,并使用图像处理和骨骼追踪技术将其转换为数字化的骨骼点坐标数据。由于EAIDK计算能力有限,便放弃了基于深度学习的识别算法网络,而是通过观察骨骼点与控制手势之间的特征联系,采用数学几何学进行特征提取,并计算手指骨骼的弯曲度来区分不同手势姿态的控制含义。虽然这种方法可能限制了对复杂手势的分类能力,但对于简单到中等复杂度的手势识别任务是简单而高效的选择。通过计算手骨骼的几何特征,可以实现实时性,并且满足多应用场景中手势分类的需求。
(4) APM2.8飞控与ESP8266无线模块结合设计
通过在无人机上添加ESP8266模块并改进飞控代码,本文实现了APM2.8飞控与ESP8266无线模块结合设计手。该设计的关键在于将ESP8266模块与现有的无人机飞控系统连接起来。ESP8266模块是一种低成本、高性能的Wi-Fi模块,可实现无线通信。集成ESP8266模块到无人机上,能够实现与地面设备(如手机、电脑或边缘计算设备)的无线连接。同时,在飞控代码方面,对原有的飞控程序进行了改进,新增了手势识别和通信协议解析功能。
总体设计
设计思路
随着无人机技术的快速发展,无人机已广泛应用在生活中的各个领域。如今无人机的远程操控大都依赖于传统的遥控器和硬件设备,具有很大的应用局限性,这对无人机的普及和推广带来了巨大阻碍。为了提高无人机远程操控的智能化以及用户的沉浸感。越来越多的研究人员开始探索自然交互技术在无人机远程交互中的应用。
针对上述的发展趋势,本团队设计了一套基于手势操作无人机的方案与设计。手势识别一直是自然交互技术领域的一个重要研究方向,传统的手势识别算法鲁棒性差、精度低,成熟的手势识别又依赖于一些昂贵的设备,比如数据手套。随着目标检测算法取得了巨大成功,手势识别领域开启了新的研究方向。基于深度学习的手势识别算法应用越来与受到青睐,然而在EAIDK610等嵌入式移动设备上,需要针对其有限的计算能力设计满足实时性的目标检测模型。为达到预期设计目标,本团队采用如下设计思路:
(1) 选取合适的手部骨骼点检测算法进行部署
由于设备的计算能力有限,本文选取谷歌开源的手势骨骼点检测算法作为本项目的骨骼点检测模块。该算法与mediapipe框架相结合可以实现较低的计算复杂度和内存占用,同时保证算法的准确性和稳定性。该算法能够准确地检测手部骨骼点,而且对于不同的手势和手型都能够有良好的适应性。在部署过程中,本文会对所选算法进行模型压缩和优化,以适应设备的资源限制。这可能包括移除冗余参数、量化模型权重以减少内存占用,并采用轻量级的神经网络架构来提高运行速度。
(2) 设计满足实时行的手势识别算法
本文设计了一种基于计算手骨骼二维坐标点的弯曲度等几何特征来进行手势分类的方法。通过捕获手部动作,本文提取手掌和手指的关键节点,在每个时间步上记录它们的坐标点。接下来,本文计算手指关节点之间的距离、角度以及手指之间连接线的弧长等几何特征,并结合这些特征来描述手势形状。为了实现实时性,本文选择不使用深度学习技术。相较于深度学习需要大量的数据和复杂的计算过程,本文的方法更加轻量级和高效。通过仅依赖于手骨骼坐标点的几何特征,本文能够快速地进行实时的手势分类。
(3) 对四旋翼无人机进行硬件适配
通过在无人机上加装ESP8266模块,并改进飞控代码以适配手势远程控制。该方案的关键是将ESP8266模块与现有的无人机飞控系统进行连接。ESP8266模块是一种低成本、高性能的Wi-Fi模块,可以实现无线通信。通过在无人机上集成ESP8266模块,本文可以实现与地面设备(如手机、电脑或边缘计算设备)的无线连接。同时在飞控代码方面,本文对原有的飞控程序进行了改进,添加了手势识别和通信协议解析的功能。
通过上面的设计思路可以实现将EAIDK610边缘计算设备连接至无人机wifi热点,利用socket和UDP协议进行通信,一旦识别到特定手势,将对应的指令发送给无人机。这些指令可以是飞行方向、高度、速度以及其他飞行参数的控制命令。
设计框图
本文的作品设计框架基于EAIDK610设备,结合了开源的骨骼点检测算法和手势识别算法。通过这些算法,本文可以实时检测人体的手部动作,并准确地识别特定的手势。在实际应用中,本文将该框架部署在EAIDK610设备上,然后,本文通过连接esp8266控制arduino开发板,利用其PWM输出功能来控制无人机的输入通道。
当EAIDK610检测到特定的手势时,它会发送控制指令给esp8266模块,这些指令包含了特定手势所对应的操作。接着esp8266将解析这些指令并将其传递给连接的arduino开发板。Arduino开发板根据接收到的指令进行解析,并通过适当的PWM波信号控制无人机的输入通道,从而实现对无人机的控制。整个过程实现了人体手势与无人机控制之间的有效交互。系统总体设计框架如下图所示:
算法原理
实时手势识别算法
在相关工作的基础上,为实现手掌骨骼的实时采集,本文采用了一种基于深度学习的手骨骼点检测算法,该算法结合了谷歌开源代码和Mediapipe框架,Mediapip框架可以提取每只手上的21个关键点,并支持多手检测,根据两者集合实现了高效、精确的手部姿态估计。
下图是Mediapipe模型的架构。该模型有三个输出,共享一个特征提取器。每个头部都由标记为相同颜色的相应数据集进行训练。
该模型经过大规模的训练和优化,在多样化的手部图像数据集上取得了出色的性能。通过融合卷积神经网络和关键点回归技术,该模型能够准确地预测手部各个关键点的位置。
最后将本文的训练模型与Mediapipe框架相结合,从而使得手势检测算法具备实时性和高效性。
(1)基于深度学习的手骨骼点检测算法
MediaPipe由手掌检测模型和手部关键部位模型组成。基于BlazePalm算法的手掌检测模型生成裁剪良好的手掌图像,然后将其传递给手部模型。其具体流程如下:
1) 当第一次输入视频流或手掌第一次出现在输入视频流中时,BlazePalm检测器模型被调用以确定手掌在视频帧中的位置。
2) BlazePalm检测器将切割的手掌图像传输到HandLandmark的手部关键部位模型,确定手掌在3D坐标中的21个关键点。通过该方法获得手掌的必要关键点信息。
3) 从关键点坐标中提取手势的相关特征,以实现手势的识别和分类。
训练过程中使用了预处理数据,使用镜头检测器方法检测手的运动图像,将手的形状检测为完整的手势。在手骨骼点移动中,进行评估,以显示在开始执行时设置的数据集中出现的骨骼点值的适用性。如果从评估结果来看不合适,则将执行调整。在调整过程中,参数执行迭代,直至模型中输出手上的21个骨骼点,并将数据点保存在一个包含64个组件的文件中(21个点 X 3个参数+1个标签)。在数据预处理阶段,图像、类名和手部Landmark数据将被存储为NumPy(.npy)文件。
通过谷歌开源的训练代码,本文训练出自己的手部骨骼点检测模型,这个模型经过大规模的训练和优化,在多样化的手部图像数据集上取得了出色的性能。通过融合卷积神经网络和关键点回归技术,该模型能够准确地预测手部各个关键点的位置。
(2)基于坐标的手指开合状态算法
通过基于深度学习的手骨骼点检测算法进行手部检测后,手部地标模型通过回归确定了检测到的手部区域中21个骨骼点的坐标,如图所示。
根据手部骨骼点的坐标计算每根手指的角度,自定义手势,加快了计算和识别速度。通过骨骼点的坐标信息,可得到不同骨骼点形成的向量,以大拇指为例,选取图3-5中0号骨骼点与2号骨骼点形成的向量,以及3号骨骼点与4号骨骼点形成的向量,计算两向量间形成的角度,其他手指计算方式均相同。其公式如下所示:
再将每个手指骨骼点所形成的向量的角度,用数组保存,与所设定的各手指阈值进行比较。大拇指闭合设定的阈值为53°,大于该阈值,大拇指则视为闭合,否则视为张开。其余四指张开的阈值设为49°,小于该阈值,视为手指张开;闭合的阈值设为65°,大于该阈值,视为手指闭合。
自定义无人机飞行手势
本文将左右手手指的开合状态组合成为一系列符合人机自然交互标准的无人机飞行指令,该指令的设计基于自然交互标准的动作语言,能极大程度地减少使用遥感器操控无人机的时间成本,快速掌握无人机飞行。
基本手势
飞行指令依赖于手势的识别,所以,将详细描述基础手势的手指开合状态,飞行指令中的基础手势如表所示。
飞行指令
通过左右手基础手势的组合,本文将得到一组符合自然交互的动作语言,以操控无人机飞行,其手势组合飞行指令如表所示。
作品创新
硬件电路设计创新
(1) APM2.8飞控与ESP8266无线模块结合设计
通过将ESP8266嵌入无人机APM2.8飞行控制器中,这一设计的优势在于其创新性和简便性。通过将ESP8266模块与飞控代码改进相结合,本文能够实现无需复杂遥控器和繁琐设置的手势远程控制无人机。用户可以使用手势远程控制无人机的行为。只需简单的手势动作即可实现无人机的起飞、降落、悬停、调整飞行方向和速度等操作。通过无线通信,实现了更加直观且灵活的无人机控制。这种设计不仅提升了用户体验,还拓宽了无人机使用的场景,并为未来的无人机技术发展带来了更大的潜力。
(2) 多传感器环境感知设计
本文采用APM2.8作为四旋翼无人机飞行控制器。通过飞行控制器内部的陀螺仪、气压计、GPS等多个传感器,实时获取和处理包括无人机的姿态、角速度、加速度等信息。陀螺仪提供了姿态变化的测量,气压计则用于测量高度变化。同时,以EAIDK610搭载摄像头捕捉和传输实时图像,利用这些图像进行用户的手部检测和手势识别,实现更准确的手势分类和识别效果。这些设计可以对无人机飞行过程中的手势进行实时识别,并根据识别结果实现无人机的位置和姿态改变,从而实现对无人机的精准操控。
算法设计与应用创新
算法设计与应用创新主要分为四个方面,分别是基于深度学习的手骨骼点检测算法、基于手骨骼点的手势实时识别算法、基于计算机视觉的图像白平衡智能矫正和用户态手势交互逻辑设计。下文对此做具体阐述。
(1) 基于深度学习的手骨骼点检测算法
本文采用了一种基于深度学习的手骨骼点检测算法,该算法结合了谷歌开源代码和Mediapipe框架,实现了高效、精确的手部姿态估计。通过谷歌开源的训练代码,本文训练出自己的手部骨骼点检测模型,这个模型经过大规模的训练和优化,在多样化的手部图像数据集上取得了出色的性能。通过融合卷积神经网络和关键点回归技术,该模型能够准确地预测手部各个关键点的位置。最后将本文的训练模型与Mediapipe框架相结合,从而使得手势检测算法具备实时性和高效性。
(2) 基于手骨骼点的手势实时识别算法
本算法首先借助传感器设备或摄像头捕获手部的骨骼点信息,并采用图像处理和骨骼追踪的技术将这些信息转化为数字化的骨骼点坐标数据表示。,由于EAIDK610开发板的计算能力有限。为了实现实时性,本文摒弃基于深度学习的识别算法网络,通过观察骨骼点与本文控制手势的手势之间的特征联系,采用数学几何学进行特征提取,通过坐标点计算手指骨骼的弯曲度,根据弯曲度区分不同手部姿态的手势控制含义。尽管不使用深度学习技术可能会限制本文对复杂手势的分类能力,但对于简单到中等复杂度的手势识别任务,本文的设计方案是一种简单而高效的选择。通过计算手骨骼的几何特征,本文能够实现实时性,并且在许多应用场景下都能满足手势分类的需求。
(3) 基于计算机视觉的图像白平衡智能矫正
基于应用场景,考虑输入视频流图像信息会因角度因素和真实世界中亮光源等原因导致输入数据存在差异化,致使计算机视觉算法检测效率不佳等问题。在不同的场景或光线条件下,图像可能会受到白平衡的干扰,从而使图像的颜色失真。本文通过图像识别技术自动检测图像的环境光源的颜色温度,并根据特定的算法智能地调整色彩平衡,以达到更加真实的色彩还原效果。本文实现的基于计算机视觉的智能矫正可大大提高白平衡矫正的精确性和速度,同时自动适应各种光线条件下的图像,并且开放API也让其他软件可以调用接口来使用该智能矫正工具。
(4) 用户态手势交互逻辑设计
自然交互设计要从无人机操控方式的用户需求与生活习惯出发。无人机主要的飞行姿态由的偏航角、俯仰角、滚动角、油门来控制。因此,无人机常见的飞行控制需求包括:航向的左转和右转、前进和后退、横滚的左平移和右平移。无人机还需要解锁、下降定高、上锁等控制命令。针对这些需求,本团队结合人们日常的手势操作习惯。设计出了令人容易理解且易于执行的手势。在设计无人机控制手势时、确保了每种手势均与特定的控制指令相关联。
程序设计
主程序是本作品实现手势远程控制无人机的核心,其主要设计思路如下:
(1) 设计手部骨骼点检测算法本作品选择谷歌开源的mediapipe框架结合本文训练的深度学习模型实现其手部骨骼点检测算法。这个算法可以提供准确的手部骨骼点坐标,并且相对较轻量化,适合资源受限的设备使用。
(2) 设计实时的手势识别算法:本文设计了一个基于手骨骼坐标点的弯曲度和几何特征来进行手势分类的算法。使用手部骨骼点坐标计算手指关节点之间的距离、角度等几何特征,并结合这些特征描述手势形状。确保算法具有实时性,避免过度依赖深度学习技术以提高运行速度。
(3) 根据识别到的特定手势,编写代码将其映射为相应的指令。针对选定的无人机平台和API,发送适当的指令,例如起飞、降落、悬停、前进等。将指令打包成UDP数据包,并通过ESP8266模块的网络连接发送给无人机。
(4) 无人机安全飞行的设计,本文在程序中正对无人机信号丢失、炸鸡等情况加入了安全性保障设计。使得无人机在出现上述情况时,实现自主降落与自主紧急制动。
主程序流程图如图所示:
总结与展望
总结
无人机如今已广泛应用在摄影、农业、物流、安全等多个领域。无人机的性能随着通信技术与控制技术的优化也逐渐得到提升,越来越多的新兴技术开始出现在无人机上。但是目前大多数控制无人机的方式依旧停留在遥控器、手机等设备上,其中遥控器是目前无人机最为常用的控制方式。基于遥控设计的无人机操控方式存在着交互复杂、学习难度高等缺点。
随着微小型无人机等产业的快速崛起与发展,越来越多的普通民众开始接触到无人机,对无人机的操控性的便捷化、智能化提出了要求。用户希望花费更少的精力在无人机操控的学习上,而更多专注于无人机的飞行体验。
本文的作品是一个基于手势识别和远程控制的系统,能够通过检测手部骨骼点并计算手指弯曲度来实现特定手势的识别,并通过与无人机的通信控制无人机的飞行。本文选择了谷歌开源的mediapipe框架和ESP8266模块进行实现,确保了算法的准确性和稳定性,并且适应了设备的资源限制。通过这个系统,用户可以轻松地使用手势来控制无人机,提高了操作的灵活性和舒适度。
展望
虽然本文的作品已经初步实现了手势识别和远程控制的功能,但仍有一些潜力和改进空间:
- 增加更多手势支持:当前的系统可以识别特定手势,但可以考虑增加更多手势的支持,让用户能够实现更多种类的飞行动作或指令。
- 优化实时性和准确性:继续优化手势识别算法,以提高实时性和准确性。可以尝试使用更先进的深度学习技术,如深度神经网络,来提高手势识别的精度和速度。
- 增加交互性:可以在系统中添加反馈机制,如声音或振动,使用户能够更直观地了解手势识别的状态和控制结果,增加交互性体验。
- 扩展到其他应用领域:除了无人机控制,本文的系统也可以应用于其他领域,如虚拟现实、智能家居等。进一步研究和拓展这些应用场景,将手势识别技术与更多的物体、设备进行交互。
参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!