STM32与OpenMV视觉云台小车追踪系统开发教程

版权申诉
5星 · 超过95%的资源 2 下载量 154 浏览量 更新于2024-10-15 6 收藏 9.42MB ZIP 举报
资源摘要信息:"基于stm32以及openmv的视觉云台追踪小车+源代码+文档说明" 一、实验原理及实验内容 物体识别 在本实验中,目的是使小车能够追踪目标物体。首先,需要确定跟踪目标。由于小车是自行搭建的,成本有限,无法选用价格高昂的摄像头,因此采用了较为简单的方法来识别目标物体。本实验的识别目标首先定为纯色物体,之后进一步选择跟踪AprilTag。 AprilTag是一种视觉基准系统,适用于多种任务,例如增强现实(AR)、机器人控制以及相机校准。它的标签可以使用打印机打印出来,而相应的检测程序可以计算出标签相对于相机的精确3D位置和方向。它包括以下三个步骤: 1. 如何根据梯度检测出图像中的边缘。 2. 如何在边缘图像中找到所需的四边形图案并进行筛选。AprilTag通过首先剔除非直线边缘,然后在直线边缘中寻找邻接边缘,如果形成闭环则判断检测到了一个四边形。接着对四边形进行解码,确定AprilTag标签。 3. 确定四边形中心点作为追踪的三维位置点。 OpenMV将以上步骤进行了函数封装,使用img.find_apriltags()函数来定位AprilTag标签,并可以通过该函数的返回值方法确定三维坐标和三维角度。利用tag.x_translation()、tag.y_translation()和tag.z_translation()方法分别获取x轴、y轴和z轴坐标。 云台追踪 OpenMV中的搜索目标函数可以返回目标物体中心的x、y坐标。由于原点设置在图片左下角,直接获得的坐标均为正值,但为了使目标始终出现在视野中心,就需要对坐标进行处理。OpenMV可以通过函数获得图片的宽和高。目标中心点的坐标为x、y,利用图片宽width、高height,通过以下相对比例公式计算目标点在相机内的相对位置: y1=y/height-0.5 x1=x/width-0.5 通过这种处理,我们得到的x1、y1值范围为[-0.5,0.5]。 为了实现云台始终追随目标的功能,需要将得到的坐标值转换为舵机旋转的角度。本实验中的云台为二自由度云台,包括一个负责偏航角的舵机和一个负责俯仰角的舵机。偏航角舵机的机械转角范围为[0,180],而俯仰角的机械转角范围为[90,180]。 二、项目备注 1. 项目代码经过测试,功能正常,可放心使用。 2. 适合计算机相关专业的学生、教师或企业员工下载学习,也适合初学者和用于教学项目。 3. 项目代码具有一定的修改空间,可以根据个人需求进行调整,实现其他功能。 三、STM32 STM32是一系列32位微控制器的产品系列,由意法半导体公司生产。STM32微控制器基于ARM Cortex-M内核,广泛应用于嵌入式系统和物联网设备。由于其高性能、低成本和低功耗的特点,STM32在工业控制、医疗设备、汽车电子等领域得到广泛应用。 在本项目中,STM32微控制器很可能是用作小车的控制核心,负责处理OpenMV检测到的目标信息,并将其转换为电机控制信号,从而驱动小车运动,实现追踪功能。同时,STM32还可能负责控制云台舵机的角度调整,以保持目标始终在相机视野的中心。 四、文件名称列表 - code: 包含了项目的源代码文件,用户可以通过这些代码文件来了解项目的程序结构、算法实现以及硬件控制逻辑。这些代码文件需要通过相应的编译环境进行编译,然后烧录到STM32微控制器中,以驱动小车和云台完成视觉追踪任务。