使用STM32和mbed实现OpenMV的小车追踪

406 篇文章 ¥59.90 ¥99.00
本文介绍了如何使用STM32和mbed操作系统来实现OpenMV小车追踪功能,包括硬件(STM32开发板、OpenMV摄像头、电机驱动器和电源)和软件(mbed开发环境、STM32CubeMX)的配置,以及实现追踪的步骤,如串口通信、图像处理、电机控制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用STM32和mbed实现OpenMV的小车追踪

嵌入式系统在物联网和机器人技术中起着至关重要的作用。本文将介绍如何使用STM32和mbed操作系统来实现OpenMV的小车追踪功能。我们将详细解释所需的硬件和软件配置,并提供示例代码来帮助您开始。

硬件要求:

  1. STM32开发板:在本教程中,我们将使用STM32F4 Discovery开发板,但您也可以选择其他兼容的STM32开发板。
  2. OpenMV摄像头模块:OpenMV是一款基于ARM Cortex-M7的低功耗图像传感器模块,具有强大的图像处理功能。
  3. 电机驱动器:为了实现小车的移动,您需要选择适当的电机驱动器和电机。
  4. 电源:确保为所有组件提供适当的电源供应。

软件要求:

  1. mbed开发环境:mbed是一款易于使用的嵌入式开发平台,提供了许多库和工具,可简化开发过程。
  2. STM32CubeMX:这是STMicroelectronics提供的一款用于配置STM32微控制器的工具。

以下是实现OpenMV小车追踪的步骤:

步骤1:配置STM32开发板
首先,使用STM32CubeMX配置您的STM32开发板。选择适当的引脚用于连接电机驱动器和OpenMV摄像头模块。确保将串口配置为与OpenMV模块通信。

步骤2:设置mbed开发环境<

<项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 1.物体识别 本次实验目的是使得小车可以跟踪目标,故首先确定跟踪目标,由于小车整体框架从零开始搭建,并没有太多的金钱可以选择昂贵的摄像头,故本次实验的目标识别选择较为简单的方式以减少硬件压力。本次实验首先识别纯色物体,是完成对纯色物体识别之后更进一步选择跟踪AprilTag。 AprilTag是一个视觉基准系统,可用于各种任务,包括AR,机器人相机校准。这个tag可以直接用打印机打印出来,而AprilTag检测程序可以计算相对于相机的精确3D位置,方向id。 AprilTag内容主要包含三个步骤: 第一步是如何根据梯度检测出图像中的各种边缘。 第二步即如何在边缘图像中找出需要的四边形图案并进行筛选,AprilTag尽可能的对检测出的边缘检测,首先剔除非直线边缘,在直线边缘进行邻接边缘查找,最终若形成闭环则为检测到一个四边形。对四边形进行解码确定Apriltag标签。 第三步确定四边形的中心点作为要跟踪的三维左边点。 Openmv对以上步骤进行了函数封装,可以用img.find_apriltags()函数定位Apriltag标签,并且可以通过该函数的返回值的方法确定三维坐标三维角度:可以用获取x轴坐标tag.x_translation(), tag.y_translation()、tag.z_translation()是y、z轴坐标 。 2.云台追踪 openmv中搜索目标函数的返回值包括了目标物体中心的x、y坐标,原点是在图片的最左下角,就是说如果我们按照直接得到的坐标都是正的,但是我们要求云台追踪目标就是让目标始终出现在视野最中间,都是正的值我们无法判断图片到底是往哪边偏。为了解决这样的问题,我们只需要对得到的坐标进行简单的处理,openmv获得图片宽高都可以用函数获得,故已知图片宽width,高度height,目标中心点坐标x,y。按照相对比例来判断目标点在相机内的相对位置: $$ y1=y/height-0.5 $$ $$ x1=x/width-0.5 $$ 这样x1,y1就是我们最新获得的值,其取值范围均为[-0.5,0.5]。 为了实现云台始终追随目标,我们还需要将得到的坐标值转换为舵机旋转的角度,本实验云台为二自由度云台,如图1.1。下面的舵机控制偏航角与相机x轴相关,上面的舵机负责控制俯仰角与相机y轴相关,偏航角舵机的机械转角范围为[0,180],其中,当角度为0时,舵机朝向右侧,角度为180度时,舵机朝向左侧。俯仰角的机械转角范围为[90,180],其中,当角度为90度时,平台成水平,当角度为180度时,平台垂直水平面。 <img src="readme.imgs/1-16497681807631.jpg" style="zoom: 25%;" /> ​ **图1.1** 算法上的实现,算法上的实现可以使用pd控制,pd控制较为稳定更适合舵机。我们已知(x1,y1)为当前目标的坐标,目的是将其移动到镜头中央,那么目标点为(0,0),我们获得了x轴的偏差以及y轴的偏差error_x,error_y上一次x,y偏差为error_x_last,error_y_last。假设此时舵机角度为yaw_now,pitch_now,那么有简化版增量式pd算法为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值