资料介绍
描述
介绍
“无人机”一词通常指任何无人驾驶飞机。这些飞行器有时被称为“无人机”(UAV),可以执行从军事行动到包裹递送等一系列令人印象深刻的任务。无人机可以像飞机一样大,也可以像手掌一样小。最初为军事和航空航天行业开发的无人机因其带来的安全性和效率的提高而成为主流。这些机器人无人机在没有飞行员的情况下运行并具有不同程度的自主性。无人机的自主性水平可以范围从远程驾驶(人类控制其运动)到高级自主,这意味着它依赖于传感器和探测器系统来计算其运动。
由于无人机可以远程控制,并且可以在不同的距离和高度飞行,因此它们是承担世界上一些最艰巨工作的理想人选。他们可以在飓风过后协助寻找幸存者,在恐怖局势期间让执法部门和军队密切关注天空,并在地球上一些最极端的气候条件下推进科学研究。无人机甚至进入了我们的家,成为业余爱好者的娱乐和摄影师的重要工具。
无人机有多种用途:
- 军队
- 送货
- 紧急救援
- 外太空
- 野生动物和历史保护
- 药物
- 摄影等
==================================================== ===================
动机
这个项目背后的主要动机是我对探索小型无人机的各种控制方案的好奇心。《微型无人机语音控制系统的设计与开发》一文讲述了无线电、GCS、手势、语音、操纵杆、PC、FPV和自主等各种无人机控制方法。在论文Design and Development of an Android Application for Voice Control of Micro Unmanned Aerial Vehicles中,观察到medium
无线电和手势无人机控制方法的态势感知处于一定水平,而语音控制方法的态势感知能力较高。在这个项目中,我们将致力于基于视觉的手势控制,稍后我们将进行语音控制以及其他高级控制。
该项目的动机还源于需要在低成本可移植和可扩展的嵌入式平台中实现这些不同的控制方法,该平台具有边缘计算,而不依赖于外部资源的工作。
==================================================== ===================
方法
==================================================== ===================
DJI Tello 无人机
DJI Tello是一款小型无人机,将DJI和Intel I的强大威廉希尔官方网站 结合到一个非常小的封装中。它是一款轻巧、有趣且易于使用的无人机,是在投资更昂贵的选择之前学习无人机驾驶技巧的完美工具。Tello 拥有来自英特尔的 14 核处理器,其中包括板载Movidius Myriad 2 VPU(视频处理单元)用于高级成像和视觉处理。它配备了高质量的图像处理器,用于拍摄照片和视频。该相机具有 5MP (2592x1936) 照片和 HD720 视频。无人机的最长飞行时间为 13 分钟。这款令人难以置信的小型无人机可放在您的手掌中,仅重约 80 克(包括螺旋桨和电池)。您可以通过 Tello 应用程序或连接到 Tello 应用程序的受支持蓝牙遥控器直接控制 Tello。该无人机可通过 Python、C++、Scratch 和 DroneBlocks 进行编程。
眼镜
- 重量:约 80 克(含螺旋桨和电池)
- 尺寸:98mm*92.5mm*41mm
- 螺旋桨:3英寸
- 内置功能:测距仪、气压计、LED、视觉系统、WIFI 802.11n 2.4G、720P 实时取景
- 端口:Micro USB 充电端口
- 最大飞行距离:100m
- 最大速度:8m/s
- 最长飞行时间:13 分钟
- 可拆卸电池:1.1Ah/3.8V
- 照片:5MP(2592×1936)
- 视场:82.6°
- 视频:HD720P30
- 格式:JPG(照片);MP4(视频)
- 电子防抖:是
为项目准备 Tello Drone
Tello 无人机 SDK提供了有关如何通过 Tello 命令对无人机进行编程以完成任务的大量信息,但在功能上有所限制。Tello SDK 通过 Wi-Fi UDP 端口连接飞行器,用户可以通过文本命令控制飞行器。我们使用 Wi-Fi 在 Tello 和 M5Stack 模块之间建立连接。开机后,Tello 充当软 AP Wi-Fi (192.168.10.1) 通过端口 8889 接受命令。
Tello SDK 包括三种基本命令类型。
控制命令 (xxx)
如果命令成功,则返回“ok”。
如果命令失败,则返回“错误”或信息性结果代码。
Set Command (xxx a) 设置新的子参数值
如果命令成功,则返回“ok”。
如果命令失败,则返回“错误”或信息性结果代码。
读取命令 (xxx?)
返回子参数的当前值。
尽管 Tello 非常灵活,我们可以通过许多不同的轴来控制无人机,但在这个项目中,我们将使用以下命令。
- 起飞:自动起飞。
- 土地:自动着陆。
- up x:上升到“x”厘米。
- down x :下降到“x”厘米。
- left x:向左飞行“x”厘米。
- right x :向右飞行“x”厘米。
- forward x:向前飞“x”厘米。
- back x :向后飞“x”厘米。
全套命令请参考SDK 。
作为一项安全功能,如果 15 秒内没有命令,Tello 将自动着陆。
Tello API
我们将使用自定义 C++ API ctello ,它允许我们通过 UDP 与 DJI Tello 无人机通信。
==================================================== ===================
基于视觉的手势控制方法
手势命令
为了使用视觉手势控制我们的 Tello 无人机,我们将使用手势检测。6 种基本手势被考虑用于控制(怠速、起飞/着陆、前进、后退、左、右)。
Takeoff
起飞命令是通过使用竖起大拇指的手势发出的。
Land
使用拇指向下的手势发出 Land 命令。
通过使用张开手掌手势发出前进命令。
通过使用闭合的拳头手势发出向后命令。
使用拇指向左手势发出向左命令。
使用拇指向右手势发出向右命令。
==================================================== ===================
使用边缘脉冲的基于视觉的手势识别
在Edge Impulse Studio的帮助下,我们将使用机器学习构建在微控制器上运行的手势识别系统。
为项目准备 Edge Impulse Studio
- 登录https://www.edgeimpulse.com/
- 单击创建项目。
- 提供项目名称并单击创建。
- 从左侧菜单转到“设备”选项卡,然后选择“连接新设备”。
- 您将看到各种设备选项。
- 扫描此二维码或通过您的智能手机设备打开链接。
- 通过智能手机打开链接后,智能手机将显示在“设备”部分。
==================================================== ===================
数据采集
为了为我们的机器学习模型收集数据,我们将使用智能手机上的摄像头传感器。为了让您的机器学习模型能够看到,捕获这些对象的大量示例图像非常重要。在训练模型时,这些示例图像用于让模型区分它们。
-
将智能手机连接到 Edge Impulse 后,转到“
Data Acquisition
”选项卡。 -
在手机中,选择
Collecting images
并授予对相机的访问权限。 -
在下一个屏幕上,给标签名称 Eg:
takeoff
,在相机前显示手势,然后单击Capture
开始采样。
- 一旦设备完成每个采样,它就会将文件上传回 Edge Impulse。采样后,数据将出现在数据采集中。
-
您会在工作室的“ ”下看到一个新行。
Collected data
- 当您单击它时,您现在会看到原始图像。
- 重复此过程以收集尽可能多的样本。
- 对其他标签重复起飞、着陆、前进、后退、左、右。
- 还包括一些噪声图像。
- 确保对手势进行变化调整。例如,稍微改变手势的方向。您永远不会知道您的用户将如何使用该设备。
- 收集到足够的数据后,它们将显示在同一选项卡下。
- 单击每个数据行以查看其原始图像。
-
现在我们有足够的数据,我们需要将数据拆分为a
training dataset
和atest dataset.
- 不用担心。Edge Impulse Studio 也为我们提供了便利。
-
前往“
Dashboard section
”并向下滚动至“Danger Zone
”。 -
点击“
Rebalance datasheet
”,自动将数据集拆分为训练和测试,比例为 80/20。
- 现在我们已经获取并设置了我们的训练数据以供进一步处理。
- 现在,我们的 Edge Impulse 项目中有一个平衡良好的数据集。
-
我们可以使用小部件上方的两个按钮在您的训练和测试数据之间切换
Data collected
。
==================================================== ===================
手势模型训练
由于我们已经获取了所有数据,是时候训练数据集以适应手势模型了,Edge Impulse 使我们无需编写任何代码就可以更轻松地生成模型。
有了训练集,我们就可以设计一个冲动。脉冲获取原始图像,使用预处理块来处理图像,然后使用学习块对新数据进行分类。预处理块总是为相同的输入返回相同的值,而学习块从过去的经验中学习。
-
转到“
Impulse Design
”选项卡。 -
我们已经
Image data
为我们填充了该部分。 -
选择一个
image width
of48x48
和 Resize 模式为Squash
。 -
现在单击
Add a processing block
并选择Image
。 - 该块接收彩色图像,可选地使图像灰度化,然后将数据转换为特征数组。
- 参数将为我们自动填充。
-
现在单击
Add a learning block
并选择Transfer Learning (Images)
。 - 参数将为我们自动填充。
- 该块采用这些特征数组并学习区分六个(空闲、起飞、前进、后退、左、右)类。
-
该
Output features
块将具有我们获得的所有标签。
-
现在单击
Save Impulse
以保存配置。 -
前往
Image
标签。 - 这将在屏幕顶部显示原始数据(您可以通过下拉菜单选择其他文件),并在右侧显示预处理步骤的结果。
- 您可以使用选项在“RGB”和“灰度”模式之间切换,但现在,将颜色深度保留为“RGB”。
-
单击
Save parameters
。这会将您发送到Transfer learning
屏幕。 - 在这里,我们将调整所有数据的大小,对所有这些数据应用处理块,并创建完整数据集的 3D 可视化。
-
单击
Generate features
。 -
将
Feature explorer
加载。这是我们数据集中所有数据的图。
- 因为图像有很多维度(这里:48x48x3=6912 个特征),我们在可视化之前在数据集上运行一个称为“降维”的过程。
- 在这里,6912 个特征被压缩到只有 3 个,然后根据相似度进行聚类。
- 即使我们的数据很少,您已经可以看到一些簇正在形成,并且可以单击这些点来查看哪个图像属于哪个点。
- 对于我们的数据集,特征数据或多或少是分开的,这是一个好兆头。如果您的功能重叠,最好获取更多数据。
- 该页面还显示了预期的设备性能以及用于计算特征的处理时间和峰值 RAM 使用率。
处理完所有数据后,就该开始训练神经网络了。神经网络是一组算法,松散地模仿人脑,旨在识别模式。我们在这里训练的网络将信号处理数据作为输入,并尝试将其映射到四个类之一。
那么神经网络如何知道要预测什么?神经网络由多层神经元组成,所有神经元相互连接,每个连接都有一个权重。输入层中的一个这样的神经元将是 X 轴的第一个峰值的高度(来自信号处理块),而输出层中的一个这样的神经元将是takeoff
(其中一个类)。在定义神经网络时,所有这些连接都是随机初始化的,因此神经网络将进行随机预测。在训练期间,我们然后获取所有原始数据,要求网络进行预测,然后根据结果对权重进行微小的更改(这就是标记原始数据很重要的原因)。
这样,经过多次迭代,神经网络就会学习;并且最终将在预测新数据方面变得更好。
-
前往
Transfer learning
标签。 -
设置
Number of training cycles
至20
、Learning rate
至0.0005
和Minimum confidence rating
至0.60
。您可以使用这些值来调整训练模型的准确性。
-
暂时将其他参数保留为默认值,然后单击
Start training
。 -
现在该
Training Output
部分被填充。
- 它显示了网络的准确性和混淆矩阵。该矩阵显示了网络何时做出正确和不正确的决定。
- 它还显示了此模型的预期设备性能。
- 现在我们已经生成了模型,我们需要对其进行测试。
==================================================== ===================
手势模型测试
-
前往
Model Testing
标签。 -
我们可以在这里看到我们的训练数据集。单击
Classify all
。
- 这将使用模型未知的训练数据生成模型验证结果。我们可以看到,我们的训练模型能够以 100% 的准确率进行分类,考虑到在训练部分提供给模型的少量训练数据,这非常好。
- 它还显示了错误预测的标签。
-
通过检查这些结果
Feature explorer
,我们可以了解是否有任何标签被错误分类,并使用更多的训练数据来重新训练我们的模型,以便更好地分类这些数据。 -
您还可以通过选项卡对来自智能手机的数据进行实时分类
Live classification
。您的设备应在 下显示为在线Classify new data
。将 Sensor 设置为Camera
,单击Start sampling
,开始采集样本。
- 之后,您将获得有关网络认为您所做的事情的完整报告。
- 现在我们已经训练和测试了我们的模型,让我们部署它。
==================================================== ===================
手势模型部署
通过设计、训练和验证的冲动,您可以将此模型部署回您的设备。这使得模型在没有互联网连接的情况下运行,最大限度地减少延迟,并以最低的功耗运行。Edge Impulse 可以将完整的脉冲(包括信号处理代码、神经网络权重和分类代码)打包到单个 C++ 库中,您可以将其包含在嵌入式软件中。
-
前往
Deployment
标签。 -
选择
C++ library
。 -
如果您需要构建特定 Edge Impulse 支持的硬件,请在
Build firmware
选择您的开发板下 -
单击
Build
。这将导出冲动,并构建一个将在开发板上一步运行的库。 - 我们将看到一个弹出窗口,其中包含有关如何将模型部署到我们的设备的文本和视频说明。
- 构建完成后,系统会提示您下载库 zip 文件。
- 将 zip 文件保存到我们的项目目录中。
==================================================== ===================
界面
现在我们已经准备好我们的无人机和手势模型,让我们在代码中将所有内容连接在一起。
在此处获取代码:https ://github.com/crisdeodates/Tello_EI_vision_gesture_control
运行以下命令:
$ git clone https://github.com/crisdeodates/Tello_EI_vision_gesture_control
$ cd Tello_EI_vision_gesture_control
$ APP_CAMERA=1 make -j4
现在将您的笔记本电脑连接到 Tello Wifi 并执行二进制文件以启动控件。
$ ./build/Tello_EI_vision_gesture_control 0
==================================================== ===================
测试
现在让我们测试一下手势控制,看看它的效果如何。
以下是起飞和降落视觉手势的快速测试。
==================================================== ===================
结论
尽管推理引擎无法准确分类某些手势,但总体性能令人满意。此外,在某些情况下,手势命令被错误分类。
我们相信这些问题可以通过添加更多的训练数据集并使模型更加灵活来得到更好的解决。
该模型已经针对低功耗、资源受限的模块(例如 ESP32-CAM)进行了优化。
==================================================== ===================
接下来是什么 !!
- 将模型移植到低功耗模块,例如 ESP32-CAM(正在进行中)。
- 使用更多测试数据训练模型以实现更准确的分类。
- 使用更多样化的手势。
==================================================== ===================
- 带有M5Stack和Edge Impulse的手势控制无人机
- 带有M5Stack的电报控制无人机
- 使用带有计算机视觉的手势控制伺服电机
- 无人机结构与系统 8次下载
- 基于空间曲线轨迹跟踪的无人机控制算法 30次下载
- 基于视觉/惯导的无人机组合导航算法综述 19次下载
- 基于深度强化学习的无人机控制律设计方法 46次下载
- 如何对无人机视觉导航中的图像处理的姿态进行解算 6次下载
- 如何使用云计算进行无人机云操作系统的详细资料说明 8次下载
- 无人机和无人机控制方法及无人机远程操控系统方法说明 69次下载
- 无人机中继模块和无人机图传控制系统介绍 60次下载
- 基于机载视觉引导的无人机自主循迹研究 18次下载
- 基于视觉的无人机定点飞行控制威廉希尔官方网站 研究 3次下载
- 无人机PID控制律设计方案pdf下载 11次下载
- 无人机环绕目标飞行控制 2次下载
- 无人机链路系统的组成 1.6w次阅读
- 如何自制一个自动驾驶无人机 7037次阅读
- Percepto Robotics宣布Sparrow无人机机器视觉算法 4635次阅读
- 关于无人机如何选择六款无人机的解析 1.4w次阅读
- 基于无人机的视觉传感网和图像识别中心的建设 2969次阅读
- 怎样使无人机安全飞行?无人机飞行需要掌握什么安全知识 1.5w次阅读
- 新疆为什么禁飞无人机_新疆无人机禁飞区域 5.7w次阅读
- 水下无人机的用途和优势有哪些 9214次阅读
- 水下无人机原理分析 1.3w次阅读
- nixie微型无人机的功能介绍_nixie微型无人机多少钱 1.3w次阅读
- 微型无人机发展前景_无人机发展趋势 8416次阅读
- 大疆做不做军用无人机 2w次阅读
- 中国有哪些军用无人机_国内军用无人机排名 11.2w次阅读
- 大疆无人机如何在禁飞区起飞 15.1w次阅读
- 电动无人机和油动无人机性能的对比 2710次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 2次下载 | 5 积分
- 3MATLAB绘图合集
- 27.12 MB | 2次下载 | 5 积分
- 4PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 5UCC38C42 30W同步降压转换器参考设计
- 428.07KB | 1次下载 | 免费
- 6DV2004S1/ES1/HS1快速充电开发系统
- 2.08MB | 1次下载 | 免费
- 7模态分解合集matlab代码
- 3.03 MB | 1次下载 | 2 积分
- 8美的电磁炉维修手册大全
- 1.56 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 5STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 6HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
- 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
- 0.74 MB | 6次下载 | 3 积分
- 8华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 5次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多