基于STM32与openmv目标跟踪系统的设计

目 录
1 绪论 1
1.1 选题背景和研究意义 1
1.1.1 选题背景 1
1.1.2 研究意义 2
1.2 国内外研究状况 4
1.3 研究的主要内容 5
2 硬件设计 6
2.1 目标跟踪系统 6
2.2 系统方案设计 7
2.3系统硬件设计 9
2.3 硬件开发平台 12
2.3.1 系统硬件组成 12
2.3.2 OpenMV摄像头 13
2.3.3 云台舵机介绍 14
2.3.4 系统硬件说明文档 14
3 软件开发平台系统设计 18
3.1 图像预处理 18
3.1.1 基于Haar的目标检测算法 18
3.1.2 OpenMV IDE 19
3.2 目标跟踪PID算法 20
3.2.1 系统算法分析 20
3.2.2 舵机位置型PID控制器实际控制效果测试及分析 22
3.3 系统软件设计 23
4系统测试 24
4.1 系统测试 24
4.2 应用实例 26
5 总结与创新 31
5.1总结 31
5.2系统关键设计与创新 31
5.2.1多传感器融合姿态解算 31
5.2.2灵活且低成本的控制/测量平台 31
5.2.3强大的扩展能力 31
致 谢 32
参考文献 33
香港中文大学项目组提出的基于有区别的高斯过程潜变量模型 GaussianFace,它是有原则、多任务学习方法,可以增强训练集的多样性。和那些已存在的方法相比,该方法利用那些源于多域的额外数据来改善在一个未知目标域内的脸部识别的泛化表现。更重要的是。该模型可以自适应复杂数据的分布,因此可以更好地捕捉到在多种目标源下复杂目标的变化。
1.3 研究的主要内容
本研究的主要内容是基于STM32F4平台构建了一个全向运动平台,并实现了与手机的交互功能。整个研究过程涵盖了平台设计、控制系统开发、视觉追踪算法实现以及板间通信等多个方面。
首先,我们针对STM32F4平台的强大性能与控制系统便利性进行了深入分析,设计了全向运动平台的硬件架构。该平台具备高度的灵活性和稳定性,能够实现全方位的运动控制,为后续的视觉追踪和控制逻辑生成提供了坚实的基础。
其次,我们研究了视觉追踪算法的实现。利用OpenMV摄像头模块,通过图像处理和模式识别技术,实现对目标的自动追踪。在算法设计上,我们注重实时性和准确性,确保平台能够迅速响应并准确跟踪目标。
此外,为了实现与手机的交互功能,我们采用了Android ADK框架进行板间通信。通过该框架,我们实现了手机与STM32F4平台之间的数据传输和控制指令的发送,使得用户可以通过手机应用程序对平台进行远程操控和监控。
在研究过程中,我们还对平台的兼容性和稳定性进行了测试和优化。通过在实际应用场景中的测试,我们验证了平台具有良好的兼容性和稳定性,能够适用于不同的工业和民用领域。
最后,我们总结了该项目的实用价值和应用前景。全向运动平台与手机交互功能的实现,为自然语言交互机器人、自主移动拍摄平台等领域提供了新的技术支撑。未来,我们可以进一步拓展该平台的应用范围,提升其在工业自动化、智能家居等领域的应用价值。

main.c
#include "stm32f4xx_it.h" 
#include "delay.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "timer.h"
#include "MT9M111.h"
#include "EasyTracer.h"
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

#define use_ov 1

extern u32 frame;
extern u32 gtimer;
extern char hue[5],sat[5],lum[5];
u16 xt1,yt1,wt1,ht1,xt2,yt2,wt2,ht2;
u16 fps;
u16 lock1,lock2;
u16 catchctl;

void SysTick_config(void)
{
	//NVIC_SetPriority(SysTick_IRQn, 0); 
	SysTick_Config(SystemCoreClock/1000);
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
}



void LCDupdate(void)
{
   char str[128];
	 unsigned short C16,lockcolor1,lockcolor2;

   //static uint32 counter=0;
   //IntervalTimems(100);
	

  if(lock1) lockcolor1=GREEN;
	else lockcolor1=WHITE;
	if(lock2) lockcolor2=RED;
	else lockcolor2=WHITE;
	
	sprintf(str,"FrameRate:%2dfps \n%dframes\nruntime:%ds",fps,frame,gtimer/1000);
	LCD_WriteString16(648, 0, WHITE ,BLACK , str );
	
 	sprintf(str,"Target1:\n%3d;%3d;%3d;%3d",xt1,yt1,wt1,ht1);
 	LCD_WriteString16(648, 80, lockcolor1 ,BLACK , str );
	sprintf(str,"Target2:\n%3d;%3d;%3d;%3d",xt2,yt2,wt2,ht2);
 	LCD_WriteString16(648, 112, lockcolor2 ,BLACK , str );
	
 	sprintf(str,"HSL:\nHue:%3d\nSat:%3d\nLum:%3d",hue[4],sat[4],lum[4]);
 	LCD_WriteString16(648, 176, LIGHTBLUE ,BLACK , str );
	C16 = LCD_ReadPoint(320,240);
	
 	LCD_WriteString16(648, 272, LIGHTBLUE ,BLACK , "Status:\nACT:" );
	
	if(catchctl) LCD_WriteString16(704, 272, GREEN ,BLACK , "TRACKING..." );
	else LCD_WriteString16(704, 272, GREEN ,BLACK , "           " );

	
//   sprintf(str,"0x%h",C16);
//   LCD_WriteString16(720, 176, GREEN ,BLACK , str );
	
  LCD_Fill(720,176,751,207,C16);
	LCD_Fill1(316,236,324,244,RED);
	

}


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值