当前位置: 首页 > news >正文

python做视觉识别机械手_DIY一个基于树莓派和Python的无人机视觉跟踪系统(转)...

DIY一个基于树莓派和Python的无人机视觉跟踪系统

无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配。如果想来点高级的——在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其实视觉跟踪已经在一些高端的消费级无人机上有了应用,不过玩现成的永远没有自己动手来劲;)。前段时间DIY了一个无人机三轴云台的视觉跟踪系统,除去云台花了¥370,本文将设计思路与实验效果分享出来。

一、基本配置

1.1硬件

计算平台:树莓派3 (¥219.00)

摄像头:USB网络摄像头(¥108.00)

云台:参考上一篇博文FY650的组装

JoyStick摇杆:用于测试和干预云台(¥8.00)

Arduino

UNO开发板:用于JoyStick输出信号的采集与AD转换并与树莓派串口通信(¥35.00)

1.2软件

编程语言:Python

集成开发环境1:Eclipse,在windows平台上的视觉算法编程调试

集成开发环境2:Geany,在Linux平台上的算法与云台联调

1.3

准备知识

前面的几篇博文分别介绍了这个系统用到的基本知识:

二、设计步骤

2.1

云台调试

(1)

搭建一个用JoyStick控制云台转动的系统

因为树莓派GPIO没有模拟输入口,因此JoyStick接Arduino完成输入模拟信号的AD转换,并将转换后的信号通过串口发送给树莓派。通过这个系统结合示波器,搞清楚了所用云台转动控制的原理和控制信号特征。云台调试阶段系统连接图如下所示。最终通过树莓派的GPIO控制云台俯仰和水平转动。一开始想用Gopro作为视频采集设备,但查了很多资料也尝试了各种方法发现暂时没法实现(如果有的话请留言告诉我:),因此换了个便宜的网络摄像头。

Gopro可以通过wifi将图像实时传给手机或pad,就是不能传给树莓派。

(2) 编写云台控制算法

根据上一步得到的云台控制信号特征,编写云台控制算法。输入是目标中心与图像中心的偏移量△x,△y,输出为云台俯仰、水平的控制变量dx,dy。

是的,摄像头外壳是纸糊的-_-。

2.2 算法调试

(1)

在windows平台上写跟踪算法

USB摄像头接上电脑用Eclipse写跟踪算法,输出偏差量等参数调试。

(2)

拷贝算法到树莓派调试

因为树莓派有多个GPIO可连云台,因此云台跟踪控制必须要在树莓派上调试。Python多平台部署的优点在这就体现出来了,直接将算法拷贝到树莓派即可运行调试。调试过程稍有点复杂,一开始的效果不好,耐心调,耐心改算法,效果也就慢慢出来了。

动起来的效果我们来看看下面的内容。

三、跟踪演示

室内跟踪效果视频链接:

跟踪效果截图:

目前云台和摄像头已经装上650无人机,航拍时的效果还有待实验。欢迎留言或邮件iracer@163.com讨论:)

相关文章:

  • 网管之路在何方
  • 判断两个list集合里的对象某个属性值是否一样_BAT面试题——22个集合框架(完)...
  • 在Linux上使用Qt编译WebKit
  • python 进度条_Python 如何实时显示进度条?
  • Massive Customization
  • python 批量下载财务数据_Python+Wind 批量下载上市公司年报 - Part 1/2
  • 使用qmake 单独生成Qt程序
  • 检测同心圆_负氧离子检测仪的工作原理与选择
  • oracle wrost practics
  • 物联网专科专业必修课程_河南专升本专科专业热度统计
  • FreeXploiT 成立三年感言!
  • springboot如何保证几个insert语句在同一个事务里_dele锁te amp; insert 死
  • 出国申请PS注意事项
  • python分析彩票_重庆青少年编程Python
  • Windows Embedded CE 6.0开发初体验(六)平台定制
  • 【5+】跨webview多页面 触发事件(二)
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • ES6之路之模块详解
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript服务器推送技术之 WebSocket
  • JavaScript设计模式与开发实践系列之策略模式
  • Less 日常用法
  • Mybatis初体验
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React as a UI Runtime(五、列表)
  • Spark RDD学习: aggregate函数
  • SSH 免密登录
  • Vultr 教程目录
  • 编写高质量JavaScript代码之并发
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 服务器从安装到部署全过程(二)
  • 高程读书笔记 第六章 面向对象程序设计
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 记一次和乔布斯合作最难忘的经历
  • 讲清楚之javascript作用域
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • ​虚拟化系列介绍(十)
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #### go map 底层结构 ####
  • #Linux(make工具和makefile文件以及makefile语法)
  • (2)MFC+openGL单文档框架glFrame
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转载)利用webkit抓取动态网页和链接
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .Net - 类的介绍
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core 中插件式开发实现
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net开发引用程序集提示没有强名称的解决办法
  • :not(:first-child)和:not(:last-child)的用法
  • @WebService和@WebMethod注解的用法
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧