基于二轴云台目标跟踪系统设计

Posted 平山村小明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于二轴云台目标跟踪系统设计相关的知识,希望对你有一定的参考价值。

文章目录

  • 前言
  • 机器学习之前的目标检测研究
  • 一、系统总览
    •  

      上位机及其功能

    • 下位机及其功能

  • 二、基本方案设计
    •  云台结构设计
    • 机器视觉运算需求分析
  • 三、目标识别算法与跟踪算法
    •  

      运用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校验是对一帧数据进行冗余校验的结果,检测数据传输的正确性。

以上是关于基于二轴云台目标跟踪系统设计的主要内容,如果未能解决你的问题,请参考以下文章

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

用YOLOv4打造无人机实时目标跟踪系统(代码已开源)

今日分享:FPGA的图像识别与目标跟踪系统设计

opencv目标跟踪怎么实现重新选择目标

基于 DSP+FPGA 的高清图像跟踪系统研制

实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)