✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。
我是Srlua小谢,在这里我会分享我的知识和经验。🎥
希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮
记得先点赞👍后阅读哦~ 👏👏
📘📚 所属专栏:传知代码论文复现
欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙
目录
无人机投放任务程序说明
概述
规定
主要功能
代码逻辑
核心思路
硬件逻辑
控制逻辑
核心代码
无人机投放演示
本文所有资源均可在该地址处获取。
无人机投放任务程序说明
如果你已经精通无人机操作,本项目提供的程序可以帮助你快速部署并进行一次无人机自动化投放,从而避免再次开发
如果你是无人机小白,本项目中的程序可以帮你快速入门多旋翼无人机自动化控制,并且学习无人机自动投放中PID程序是如何运行的。
概述
该项目主要讨论控制一架无人机进行投放任务,主要包括目标搜索、对准投放及返回降落的操作。
规定
- 地理东向为 x 轴,北向为 y 轴,上为 z 轴,满足右手定则。
- 无人机以当前点为原点,建立全局坐标系。
- 无人机搜索桶:
- 飞行至 (5, 0, 3),若有目标,则选择最大目标;若没有,继续向上飞行扩大视野。
- 20 秒内未完成搜索,则放弃搜索,直接投放。
- 投放桶:
- 锁定目标后,尝试以最小误差对准桶并开始投放。
- 若成功锁定目标,继续投放;若 20 秒内未完成对准,则放弃对准直接投放。
- 无人机返回:
- 先返回至 (5, 0, 3),防止飘出场地。
- 返回至 (0, 0, 3)。
- 对准着陆标并降落。
以上参数为我们根据测试设定的,用户可以根据自己的情况另外更改。
主要功能
- 投放操作:在锁定目标后,调整无人机位置进行投放。
- 返回降落:确保无人机安全返回并降落。
代码逻辑
- 初始化 YOLO 和无人机控制。
- 启动线程并行处理目标检测。
- 调用
search_and_throw
函数执行投放任务。 - 无人机飞行中通过 PID 控制调整位置,确保投放的准确性。
核心思路
硬件逻辑
无人机上连接图传,图传将图片发回到本地电脑,本地电脑对图片进行检测,然后依据图片内容发布速度指令,再通过数传远程发给无人机,以此循环直到结束。
因此在这个项目中,除了无人机和电脑外,我们还需要有以下设备:
- 图传,最后需要转成usb线接入到计算机,作为远程摄像头
- 数传,一端接无人机,一端接电脑,负责电脑和无人机通信
控制逻辑
- 无人机传回的图像传回到地面电脑
- 地面使用yolo检测目标,得到目标在图像的位置,也就是x、y坐标,以及直径d
- 因为摄像头安装在无人机中心正下方,因此,只需要让检测到的目标处于中位即可
- 地面根据检测到的x、y、d计算靠近目标的速度值,然后发布给无人机
- 重复以上过程,直到x、y、d三个值和中心以及期望直径小于给定误差
- 无人机投掷载荷,并保持目标
核心代码
下面是这个程序的伪代码,我们的一切工作围绕此展开。
def focus_and_throw():flyto(target_position)while error(x, y, d) > 0.1:x, y, d = detect()vx, vy, vz = pid_calcu(x, y, d)send_vel(vx, vy, vz)flyto(start_position)land()
无人机投放演示
下面的图片为无人机执行投放时,无人机和电脑界面的效果:
下面是无人机执行投放时,无人机的运动效果:
下面是无人机在出现多个目标时,防止其他目标干扰依然锁定以前目标进行投放的效果图:
下面是无人机在锁定单一目标且投放时,地面电脑的实时显示以及检测画面:
更详细的内容请参考视频演示效果,以及代码样例。
希望对你有帮助!加油!
若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!