基于二轴云台目标跟踪系统设计
文章目录
- 前言
- 机器学习之前的目标检测研究
- 一、系统总览
上位机及其功能
下位机及其功能
- 二、基本方案设计
- 云台结构设计
- 机器视觉运算需求分析
- 三、目标识别算法与跟踪算法
运用HOG特征结合SVM的目标识别和跟踪算法
改进的HOG+CamShift跟踪算法
YOLOv3目标检测
四、云台跟踪控制
PID算法及改进
串口通讯协议
前言
文本简述一个基于二轴云台的目标跟踪系统的设计思路,并在之后会实践记录。
机器学习之前的目标检测研究:
模板匹配:计算目标图像部分区域与模板图像的相似度,存在检测阈值。
全局特征:通过颜色、轮廓形状等方式识别
局部特征:图像ROI(兴趣区域)的部分特诊
图像帧差:对图像相邻帧做差分运算,来获得目标轮廓,适用于背景变化小的环境。
基于云台的目标识别算法的要求:
准确性
实时性
正确性
一、系统总览
整个系统分为硬件层、驱动层、操作系统层。
·上位机及其功能:
STM32F427控制电路作为移动平台的主要硬件控制电路,主要功能:
集成电压模块为系统提供电源
与底盘电机电调通信控制电机
与二轴云台通信控制云台
位姿解算和位姿信息显示
与上位机Jetson nano或PC串口通信
·下位机及其功能:
Jetson nano主控板或PC负责上层算法并进行信息传输,主要功能有:
将接受的平台控制信息串口传输到STM32控制电路。
驱动工业相机获取图像。
解算跟踪目标所需的控制信息,串口发送给STM32控制电路,控制云台的目标跟踪运动。
二、基本方案设计
云台结构设计:
采用二轴云台,控制偏航角(Yaw)和俯仰角(Pitch)两个自由度。同时还需要姿态控制,IMU采用MPU6050,云台电机采用RM6020,CAN通信。
机器视觉运算需求分析:
摄像头要满足像素高、色彩还原度高、帧率高。嵌入式系统由于需要大量的系统资源,需要GPU加速,可以采用Nvidia的Jetson TX2,拥有256颗CUDA核心(Jetson nano只有128颗CUDA核心)。但总体来说需要对工业相机的选择,算法的优化,GPU加速均有关系。
三、目标识别算法与跟踪算法
运用HOG特征结合SVM的目标识别和跟踪算法
HOG(Histogram of Oriented Gradient,方向梯度直方图)特征,算法思想是通过提取图像中局部目标及轮廓的梯度方向来区分目标和背景。过程如下:
灰度化,三通道转化为一通道
高斯滤波,平滑图片
γ矫正处理,图片过暗,可以拉高图像整体亮度,调整图像亮度平均
梯度运算,分别得到纵向和横向梯度,统计每个cell单元的梯度直方图。
将图像划分为多个Block,提取到的目标HOG特征数据统计,具有易于向量分类的特征。
SVM分类器(Support Vector Machine,支持向量机),属于有监督学习算法。
改进的HOG+CamShift跟踪算法
CamShift算法是一种视频图像序列算法,以颜色直方图为特征进行,对图像序列做MeanShift运算,选出初始目标的预测框尺寸和位置信息,作为后一帧图像搜索窗口的初始值,实现跟踪。
CamShift算法流程
颜色空间转换,RGB到HSV,只需要H分量。
计算反向投影,算出对应概率
计算搜索框质心
YOLOv3目标检测
优势:准确率高,帧率高,性能好。
推荐采用yolov3,在darknet框架下。
自制数据集
移植到linux系统或者ros系统
此方法详情可查看:
Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(二)——训练自己的权重文件
四、云台控制跟踪
PID算法及改进
比例控制:考虑当前误差
积分控制:消除稳态误差
微分控制:考虑将来的误差,预测变化
添加死区控制,即电机实际转速与目标转速在设定的死区范围,就无需PID控制,避免震荡情况。
增量式PID算法由于积分项的截断效应大,容易产生静态误差,同时避免超调现象,偏差对积分项进行分段处理。
串口通讯协议
包含:
帧头 8bit 模块 8bit 数据识别位 8bit 数据字节数 8bit 数据段 0-255bit 丢包检测 8bit 校验位 crc16 发包:上层将目标检测之后的预测框,以图像中心为原点,将X,Y坐标,宽度,高度封装成数据包发送给下位机,以发出的包数与收到的包数计算丢包率。
解包:先判断帧头,数据识别位, 数据字节数,然后取出高低位进行CRC校验,帧结尾的CRC校验是对一帧数据进行冗余校验的结果,检测数据传输的正确性。
基于二轴云台目标跟踪系统设计相关推荐
- 基于MeanShift的目标跟踪算法及实现
from: http://blog.csdn.net/jinshengtao/article/details/30258833 一.简介 首先扯扯无参密度估计理论,无参密度估计也叫做非参数估计,属于数 ...
- 基于MeanShift的目标跟踪算法及实现(转载)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/jinshengtao/article/details/30258833 这次将介绍基于MeanShi ...
- 笔记 基于OpenCV的目标跟踪软件与系统实现
1.目标检测理论包括光流法.帧间差分法和背景差分法, 目标分割理论包括全局阈值法和局部阈值法, 目标跟踪的均值漂移法和卡尔曼滤波法. 2.基于opencv的目标跟踪软件设计于实现 在vc环境下,按照单 ...
- ViSP学习笔记(十七):通用的基于模型的目标跟踪
开发环境:Ubuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1 文章内容主要参考ViSP官方教学文档:https://visp-doc.inria.fr/doxyge ...
- 基于特征点匹配的自适应目标跟踪算法
基于特征点匹配的自适应目标跟踪算法 2016-01-29 13:11 摘 要:由于实际场景复杂多变,目标在运动过程中往往会出现形变.遮挡等问题,增加了跟踪的难度.为了解决上述问题,提出一种基于特征点匹 ...
- opencv动态目标跟踪学习总结
用opencv实现对视频中动态目标的追踪 第一步,是要建立一个编程环境,然后加载opencv的库路径等等.具体步骤在 http://www.opencv.org.cn/ 的"安装" ...
- 视频目标跟踪算法综述
视频跟踪:基于对比度分析的目标跟踪.基于匹配的目标跟踪和基于运动检测的目标跟踪 基于对比度分析的目标跟踪:主要利用目标和背景的对比度差异实现目标的检测与跟踪.这类算法按照跟踪参考点的不同可 ...
- 深度学习在目标跟踪中的应用
from: http://www.dataguru.cn/article-9863-1.html 摘要: 人眼可以比较轻松的在一段时间内跟住某个特定目标.但是对机器而言,这一任务并不简单,尤其是跟踪过 ...
- (转) 深度学习在目标跟踪中的应用
深度学习在目标跟踪中的应用 原创 2016-09-05 徐霞清 深度学习大讲堂 点击上方"深度学习大讲堂"可订阅哦!深度学习大讲堂是高质量原创内容的平台,邀请学术界.工业界一线专家 ...
最新文章
- Google(谷歌)中国工程研究院 工程师 方坤 对学生朋友的一些建议
- opencv-python将.tif格式的图像转为png格式
- 在ExtJS的ComboBox组件中实现下拉树效果
- 怎样用计算机算出别人的出生日期,【怀孕出生日期计算器_怀孕出生日期计算器专题】- 天鹅到家...
- No module named 'Tkinter'
- php 购物车封装代码,PHP中封装Redis购物车功能
- MATLAB AppDesigner 设计UI界面中调用自定义函数
- angular6 中使用bootstrap
- Windows 下的文件被占用问题解决
- drupal7 smtp+mimemail+mailsystem 实现发送html邮件
- 怎么将linux的动态IP设置成静态IP
- POI导出Excel文件中文乱码
- 数据中心风侧直接自然冷却节能潜力分析
- java 学习资料 分享
- 仿站源码上传服务器,仿爱站站长查询工具网源码带后台完整版
- sqlserver去空格函数
- SSM框架整合(Spring+SpringMVC+MyBatis)附源码
- 百度网盘离线下载分析及实现
- ie登录显示登录到ftp服务器,ie浏览器登陆ftp服务器
- Redis的使用【Redis】
热门文章
- 亲测好用的数据恢复软件:Disk Drill Mac中文版
- 设置BottomSheetDialogFragment不可拖拽
- C4D模型工具—细分
- Linux入门学习日志(三)
- Java-对象相等判断
- 计算机并口被禁用,电脑并口被禁用怎么解决?
- 内存模块与计算机兼容,cpu和内存条不兼容怎么办cpu和内存条不兼容的解决方法...
- vue获取当前的月份_vue根据选择的月份动态展示当前月份的每一天并展示每一天所对应的星期几...
- Linux--md5sum的使用
- 三菱PLC分拣程序基于三菱FX系列的分拣程序,可用于学习