无人机实验笔记(多机协作思路)

在玩无人机的这段时间,有遇到过这样一个问题:高空飞行的无人机控制低飞无人机至目的地。

我们花了挺长一段时间去一一解决中间所存在的很多问题。最后编程出来了,但由于一些原因并没有实际的操作飞行过。

写个笔记,希望能够帮助到有需要的朋友吧。

 

         

       我们将红色的卡纸放至1m高,垂直于地面上同样大小的蓝色卡纸上方。将无人机放至2m处拍摄了这张照片。由于视差,图像中看到的两张卡纸并没有重合。所以,如果只是单纯的将看到的低飞无人机控制到目的地,它并不是垂直的。

 

那么做如下变换:

        如图,“从机在图像的投影点”就是上图中看到的红色卡纸,卡纸边框的光线沿直线传播投影到地面上,所以看到的红色卡纸大小比蓝色卡纸大。也就是说“从机在图像的投影点”是直接从图像得到的,变相的代表了从机的位置。

        我们的目的是将从机控制到“实际目的地”的上方。这时候主机看到的从机位置应在“虚拟目的地”处。那么问题就简化成了:将“从机在图像中的投影点”与“虚拟目的地”重合(可以先控制x轴重合,再控制y轴重合)。

      接下来就是计算问题了:“从机在图像中的投影点”坐标、“实际目的地”坐标、两台无人机的飞行高度都是已知的,只需要根据上图的相似性原理计算出“虚拟目的地”坐标即可。

     在编程过程中,刚开始觉得需要“虚拟目的地”与“实际目的地”的角度来判断加减。但后来发现不用,直接上代码吧。就是简单的相似性原理。

#Real_POINTx, Real_POINTy为实际目的地坐标
#80、60为图像中点(图像大小为 160*120)
#返回虚拟目的地坐标

def virtual_point(Real_POINTx, Real_POINTy):
    # 定义比值 = 主机高度 / 从机高度
    k = 2

    deltax = (Real_POINTx - 80) // (k - 1)
    deltay = (Real_POINTy - 60) // (k - 1)
    virtual_POINTx = deltax + Real_POINTx
    virtual_POINTy = deltay + Real_POINTy

    return virtual_POINTx, virtual_POINTy

       现在万事具备了,那么如何得到从机坐标与实际目的地坐标呢?得到坐标的主机又如何把信息传递给从机呢?从机得到坐标又如何控制呢?哈。哈。哈。

对应链接:

得到从机坐标

主机与从机通信

控制从机至目的地(待更新。。。)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pixhawk源码笔记一:APM代码基本结构 ................................ ......... 4 基础知识 ................................ ................................ . 4 第一部分:介绍 ................................ ....................... 4 第二部分: 学习sketch例程代码 ................................ ...... 5 Pixhawk源码笔记二:APM线程 ................................ ................. 8 第三部分 APM线程 ................................ ................... 8 Pixhawk源码笔记三:串行接口UART和Console ................................ . 14 第四部分 串行接口UART和Console ................................ ... 14 Pixhawk源码笔记四:学习RC Input and Output ................................ ... 18 第五部分 学习RC Input and Output ................................ ... 18 Pixhawk源码笔记五:存储与EEPROM管理 ................................ ...... 23 第六部分 存储与EEPROM管理 ................................ ......... 23 Pixhawk源码笔记六:源码预览与APM:Copter程序库 ............................. 31 第七部分 源代码预览与APM:Copter程序库 ............................. 31 APM:Copter程序库 ................................ ................... 31 1 核心库 ................................ ............................ 32 2 传感器相关库 ................................ ...................... 32 3 其他库 ................................ ............................ 32 Pixhawk源码笔记七:姿态控制预览 ................................ ............ 34 第八部分 姿态控制预览 ................................ .............. 34 Pixhawk源码笔记八:添加新的参数 ................................ ............ 37 第九部分 添加新的参数 ................................ .............. 37 1 在主执行代码中添加参数 ................................ ............ 37 2 向库中添加参数 ................................ .................... 41 Pixhawk源码笔记九:添加新的飞行模式 ................................ ........ 45 第十部分 添加新的飞行模式 ................................ ........... 45 Pixhawk源码笔记十:代码调度,使之定时运行 ................................ .. 51 第十一部分 调用代码,使之定时运行 ................................ ... 51 1、用代码调度器(scheduler)运行你的代码 ............................ 51 2、作为循环的一部分运行你的代码 ................................ ..... 52 Pixhawk源码笔记十一:增加新的MAVLi

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值