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多平台部署的长处在这就体现出来了,直接将算法复制到树莓派就可以执行调试。调试过程稍有点复杂,一開始的效果不好。耐心调,耐心改算法,效果也就慢慢出来了。

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

三、跟踪演示

室内跟踪效果视频链接http://www.tudou.com/programs/view/68JDFqex1yM/

跟踪效果截图:

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

转载请注明出处(本文更新链接):http://blog.csdn.net/iracer/article/details/54837636

DIY一个基于树莓派和Python的无人机视觉跟踪系统的更多相关文章

  1. 如何开发一个基于 Docker 的 Python 应用

    前言 Python 家族成员繁多,解决五花八门的业务需求.这里将通过 Python 明星项目 IPython Notebook,使其容器化,让大家掌握基础的 Docker 使用方法. IPython ...

  2. 分享一个基于web的满意度调查问卷源码系统

    问卷调查系统应用于各行各业,对于企业的数据回收统计分析战略决策起到至关作用.而现有的问卷调查系统大都是在线使用并将数据保存在第三方服务器上.这种模式每年都要缴纳费用并且数据安全性得不到保证.所以说每个 ...

  3. 一个基于Unix套接字的注册登录系统

    2016/5/5 今天,我参考<Unix网络编程-卷1>第5章的TCP回射客户/服务器程序写了一个简单的注册登录系统,其功能如下:(1)注册.客户端向服务器发送个人信息请求注册,服务器查询 ...

  4. 一个基于activiti审批流程示例,如何与系统整合

    前言 目前市场上有很多开源平台没有整合工作流,即使有,也是价格不菲的商业版,来看这篇文章的估计也了解了行情,肯定不便宜.我这个快速开发平台在系统基础功能(用户管理,部门管理-)上整合了工作流,你可以直 ...

  5. 理解DDoS防护本质:基于资源较量和规则过滤的智能化系统

    本文由  网易云发布. 随着互联网生态逐渐形成,DDoS防护已经成为互联网企业的刚需要求,网易云安全(易盾)工程师根据DDoS的方方面面,全面总结DDoS的攻防对抗. 1.什么是DDoS DDoS全称 ...

  6. 基于RestOn智能睡眠监测器的睡眠监测系统

    一.项目地址为: https://github.com/linqian123... 二.项目功能概述: 该项目实现的是一个基于RestOn智能睡眠监测器的睡眠监测系统.RestOn智能睡眠检测器通过W ...

  7. 2、基于wsgiref模块DIY一个web框架

    一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方 ...

  8. psutil一个基于python的跨平台系统信息跟踪模块

    受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在pytho ...

  9. 初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

随机推荐

  1. Node 多进程并发控制小模块 - lockman

    介绍 lockman 是一个用于多进程的并发控制锁, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程中断.它可以把一段代码定义为互斥段(critical ...

  2. Mysql5.7.9密码已过有效期的处理过程

    怎么知道系统默认的有效期是多久呢?使用一个普通用登陆[未过期]:默认系统的密码生命周期是360天就是一年这样了: test01@(none) 09:11:43>show variables li ...

  3. mysql 中 unix_timestamp和from_unixtime函数

    1.unix_timestamp 将时间转化为时间戳.(date 类型数据转换成 timestamp 形式整数) 没传时间参数则取当前时间的时间戳 mysql> select unix_time ...

  4. BigDecimal类型数据保留两位小数即百分比运算

    方法示例: DecimalFormat df = new DecimalFormat("0.00"); Object price = 2; Object price1 = 2.3; ...

  5. QT源码之Qt信号槽机制与事件机制的联系

    QT源码之Qt信号槽机制与事件机制的联系是本文要介绍的内容,通过解决一个问题,从中分析出的理论,先来看内容. 本文就是来解决一个问题,就是当signal和slot的连接为Qt::QueuedConne ...

  6. 如何更改postgresql的最大连接数

    改文件 postgresql.conf 里的 #max_connections=32 为 max_connections=1024 以及另外相应修改 share_buffer 参数.

  7. DNS named.conf文件详解

    配置文件: /etc/named.conf /在NAMED.CONF         配置文件中使用//和/* */来进行注释, options { /*OPTIONS选项用来定义一些影响整个DNS服 ...

  8. List、Set、Map、数组之间各种转换

    刚学Java不久的时候,接到一个电面,然后问了一些java的知识,比如说Java的编码,Unicode等,但是最让我蛋疼的是怎么吗map转为set,那个时候对集合用的很少,对集合不是特别了解,map还 ...

  9. html中块注释<!--[if IE]>….<![endif]--> (<!--[if !IE]>||<![endif]

    1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->2. <!--[if IE]> 所有的IE可识别 & ...

  10. 关于使用jquery时,ie8下提示对象不支持的属性或方法的解决办法

    转自:http://wapapp.baidu.com/auoong/item/538790fcbe87c834d7ff8cde 首先这个问题的前提是已经排除了常见的这个问题.下面说一种今天我碰到的一种 ...