当前位置: 首页 > news >正文

2023年电赛E题全国一等奖方案解析:基于步进电机云台与滤光视觉的运动目标追踪系统

2023年电赛E题全国一等奖方案解析:基于步进电机云台与滤光视觉的运动目标追踪系统

最近有不少同学在准备电赛,后台收到很多关于运动控制类题目的咨询。正好,去年我们团队(南京邮电大学“遇到困难睡大觉”队)在2023年全国大学生电子设计竞赛中,针对E题“运动目标控制与自动追踪系统”做了一套方案,最终拿到了全国一等奖。今天,我就把这个项目的核心思路、关键技术和我们踩过的“坑”掰开揉碎了讲给大家听,希望能给正在备赛的你一些启发。

这个题目的核心,简单说就是让一个红色激光点(模拟目标)在屏幕上按规则运动,同时让一个绿色激光点(追踪器)去自动追踪这个红点。听起来像是两个激光笔在屏幕上“捉迷藏”。要实现高精度、高稳定性的追踪,难点主要集中在控制精度视觉识别上。下面,我就从方案选择、硬件设计、算法实现到系统集成,一步步带大家复盘我们的实现过程。

1. 核心方案选择:为什么放弃舵机,选择步进电机?

拿到题目,第一个要决定的就是用什么来驱动激光笔转动。大部分队伍的第一反应可能是用舵机,因为它控制简单,PWM信号一给就能转。我们一开始也是这么想的,但仔细一算,发现舵机这条路走不通。

问题的核心是精度。题目要求激光笔距离屏幕1米,要实现光斑在屏幕上的毫米级移动。这意味着云台的转动角度必须非常非常小。我们来算一笔账:

假设要让光斑移动1毫米,在1米距离上,云台需要转动的角度大约是arctan(0.001) ≈ 0.0573度

市面上常见的舵机,精度一般在0.5度到1度左右,远远达不到0.057度的要求。用舵机的话,光斑一跳就是好几厘米,根本谈不上“精准追踪”。

提示:在涉及距离和角度的系统里,一定要动手算一算理论精度需求,这是硬件选型的根本依据,千万别想当然。

所以,我们果断放弃了舵机方案,选择了步进电机。步进电机的特点是可以通过脉冲精确控制转动的角度,其最小步距角(比如1.8度)可以通过驱动器进行细分来进一步提高分辨率。

我们选用的是带32细分驱动的步进电机。一个1.8度的步进电机,经过32细分后,每步的转动角度为1.8° / 32 = 0.05625°

看,这个数值0.05625°非常接近我们计算出的理论需求0.0573°。这意味着,我们每给电机驱动器一个脉冲,屏幕上的光斑理论上就能移动大约1毫米。毫米级控制的硬件基础就这样奠定了

为了承载这套精密的控制系统,我们用铝型材搭建了一个稳固的框架平台,把步进电机云台、控制器、树莓派等都牢牢固定在上面,最大限度减少了机械振动带来的误差。

2. “火眼金睛”的打造:滤光片视觉识别方案

硬件精度解决了,下一个难题是:如何让摄像头在红绿两个激光点完全重合时,也能准确分辨出谁是谁?

如果只用普通的摄像头,当红绿光斑重叠成一个黄点时,算法就很难区分了,这会直接导致追踪系统“失明”。我们的解决方案非常巧妙——给摄像头戴上“有色眼镜”,也就是滤光片

我们制作了一个简单的滤光片转轮装置,上面安装了两种滤光片:

  • 650nm带通滤光片:只允许红色激光(波长约650nm)通过,强烈滤除绿光。
  • 530nm带通滤光片:只允许绿色激光(波长约530nm)通过,强烈滤除红光。

这样,在程序控制下,摄像头可以轮流透过红色滤光片和绿色滤光片看屏幕:

  • 透过红色滤光片时,屏幕上只有红点是亮的,绿点几乎看不见。
  • 透过绿色滤光片时,屏幕上只有绿点是亮的,红点几乎看不见。

(示意图:左图为透过红色滤光片看到的画面,右图为透过绿色滤光片看到的画面)

这样一来,视觉处理的难度就大大降低了。我们只需要对获取到的图像进行简单的二值化边缘检测,就能非常鲁棒地提取出红色光斑和绿色光斑的像素坐标,完全不用担心颜色混淆的问题。

经验分享:这个滤光片方案是我们项目的关键创新点之一。它用很低的成本(滤光片很便宜)解决了复杂的颜色识别问题,体现了“用硬件简化软件”的嵌入式设计思想。

3. 大脑与四肢:树莓派+单片机的系统架构

整个系统的控制架构我们采用了“树莓派 + 单片机”的经典组合,让它们各司其职。

  • 树莓派(大脑):负责“看”和“想”。

    • :驱动摄像头,控制滤光片切换,完成图像采集、二值化、边缘检测,最终计算出红、绿两个光斑在屏幕上的像素坐标。
    • :将两个光斑的像素坐标差值,通过算法(后面会讲)转换成云台需要转动的角度指令,通过串口发送给单片机。
  • 单片机(四肢):负责“执行”。

    • 接收树莓派发来的角度指令。
    • 将角度转换成步进电机所需的脉冲数和方向信号。
    • 驱动步进电机驱动器,精确控制两个步进电机(X轴和Y轴)旋转。
    • 处理按键输入、蜂鸣器提示等人机交互功能。

这种架构的优势很明显:树莓派擅长复杂的图像处理和浮点运算,单片机则擅长实时、精准的电机控制。两者通过串口通信,分工协作,稳定性很高。

4. 从像素到角度:非线性坐标映射算法

这是整个项目的算法核心,也是一个容易踩坑的地方。很多人会想当然地认为,屏幕上的像素移动和云台的转动角度是线性关系,但事实上,它们之间是强烈的非线性关系

你可以把激光笔想象成固定在云台上的一个点,它照射在1米外的屏幕上。当云台转动时,光斑在屏幕上的移动轨迹近似一条双曲线,而不是直线。直接用简单的比例系数去换算,在屏幕边缘会产生巨大的误差。

我们必须建立正确的几何模型。假设:

  • 激光笔到屏幕的垂直距离为L(已知,约1米)。
  • 云台在水平方向(X轴)转动角度为θ_x,在垂直方向(Y轴)转动角度为θ_y
  • 光斑在屏幕上的坐标为(X, Y)

根据几何关系,可以推导出:

X = L * tan(θ_x) Y = L * tan(θ_y) / cos(θ_x) // 注意,Y坐标受X轴转角影响

反之,已知目标像素坐标(X, Y)和像素与实际尺寸的换算关系后,可以反解出需要转动的角度:

θ_x = arctan(X / L) θ_y = arctan( Y / sqrt(L^2 + X^2) ) // 或使用更精确的模型

我们在代码里实现了这个映射函数。树莓派计算出红绿光斑的像素坐标差(Δx, Δy)后,先转换成实际距离差,再通过上述反解公式,计算出需要补偿的角度(Δθ_x, Δθ_y),最后发送给单片机。

踩坑记录:我们最初用了线性模型,结果发现光斑在屏幕中心区域还能跟踪,一到角落就飞了。调试了很久才发现是几何模型不对。大家在做类似项目时,一定要先把坐标变换的数学关系搞透彻。

5. 稳定运行的基石:硬件电路设计

一个精密的系统离不开稳定可靠的电路。我们的电路核心主要包括电源管理和电机驱动。

电源管理:系统总电源是一块12V的锂电池。但树莓派、单片机、摄像头等模块需要5V供电。我们选用了SY8303这款DC-DC降压芯片。它效率高、开关频率高、体积小,能提供稳定干净的5V电压,是整个系统的“能量心脏”。

电机驱动与控制集成:为了提升稳定性和抗干扰能力,我们没有使用现成的开发板,而是自己设计制作了一块集成控制板。这块板上集成了:

  • STM32单片机:作为主控制器。
  • 步进电机驱动电路:用于产生脉冲和方向信号,驱动外置的步进电机驱动器。
  • 激光笔驱动电路:提供稳定的电流驱动激光笔。
  • 声光提示电路:蜂鸣器和LED,用于系统状态指示。
  • 按键输入电路:用于模式切换、校准等手动操作。

将核心控制电路集成在一块板上,大大减少了连线,降低了噪声干扰,提高了系统的整体可靠性。

6. 让系统“活”起来:PID控制与程序流程

对于绿色激光的追踪,我们采用了经典的增量式PID控制算法。为什么用增量式而不是位置式?因为我们的控制对象是步进电机,我们每次关心的是“需要再转多少角度(多少个脉冲)”,而不是“要转到哪个绝对位置”。增量式PID的输出正好是控制量的增量,非常契合。

控制流程如下

  1. 视觉反馈:树莓派通过滤光片方案,获取当前红色目标光斑和绿色追踪光斑的坐标(X_red, Y_red)(X_green, Y_green)
  2. 计算误差:计算两者在屏幕上的距离偏差E_x = X_red - X_green,E_y = Y_red - Y_green
  3. PID运算:将E_xE_y分别送入两个独立的PID控制器(一个控制X轴,一个控制Y轴)。PID控制器的输出不再是直接的角度,而是步进电机需要运动的脉冲数增量
    // 伪代码示例:增量式PID计算 float PID_Calc(PID_TypeDef *pid, float error) { float increment; pid->error = error; increment = pid->Kp * (pid->error - pid->last_error) // 比例项:误差变化量 + pid->Ki * pid->error // 积分项:当前误差 + pid->Kd * (pid->error - 2*pid->last_error + pid->prev_error); // 微分项:误差变化趋势的变化 pid->prev_error = pid->last_error; pid->last_error = pid->error; return increment; // 返回控制增量(脉冲数) }
  4. 电机执行:单片机将PID输出的脉冲增量,转换成实际的脉冲信号发送给步进电机驱动器,驱动电机转动,带动绿色激光向减小误差的方向移动。
  5. 闭环循环:上述过程以几十毫秒为周期不断循环,实现实时、精准的追踪。

对于红色激光的开环控制(如走矩形框),流程就更简单了:单片机根据预设的轨迹坐标,通过前面讲到的坐标反解模型,计算出每一步电机需要转动的角度序列,然后按顺序执行即可。

7. 调试心得与注意事项

最后,分享几点实战中总结的经验:

  1. 校准是关键:系统上电后,必须进行严格的校准。包括云台的机械零点校准、摄像头像素坐标与实际屏幕位置的映射关系校准(我们通过让激光点打中屏幕四个角的已知标记来完成)。我们专门设计了一个“校准模式”,通过按键操作来完成这些步骤,并将校准数据保存下来。
  2. 机械结构要稳固:铝型材框架的投入非常值得。任何微小的晃动在1米距离上都会被放大,导致光斑抖动。确保所有连接处紧固,电机安装牢靠。
  3. PID参数整定:PID的Kp,Ki,Kd参数需要耐心调试。可以先从纯P控制开始,让系统能基本跟上,然后加入I项消除静差,最后加入D项抑制超调和振荡。X轴和Y轴的参数可能不同。
  4. 抗干扰处理:步进电机是强干扰源。确保电机电源线与信号线、控制板电源线分开走线。在单片机电源入口处加磁珠和大电容滤波。我们的集成板设计很好地解决了这个问题。
  5. 功能模块化调试:不要试图一下子把整个系统调通。先调通步进电机基本转动,再调通摄像头识别单个光斑,然后调通串口通信,最后再联调PID追踪。分步走,问题更容易定位。

回过头看,这个项目获奖的关键在于对“精度”二字的深刻理解和不妥协:用步进电机细分满足角度精度,用滤光片方案保证识别精度,用非线性坐标映射保证算法精度,用集成电路和稳固结构保证系统精度。希望这套从硬件到软件的全栈解析,能帮助你理解如何攻克一个复杂的嵌入式控制项目。电赛之路不易,但把每个技术点钻透的过程,本身就是最大的收获。

http://www.cnnetsun.cn/news/1253794.html

相关文章:

  • Asian Beauty Z-Image Turbo 操作系统兼容性测试:Windows/Linux/macOS部署对比
  • AXI协议核心机制解析:从握手机制到突发传输
  • Zotero茉莉花插件:中文文献管理效率提升指南
  • SenseVoice-Small ONNX实战案例:企业会议录音转文字+标点恢复完整指南
  • 病理图像智能分割:基于深度学习的WSI组织区域精准提取与空白区域剔除
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI 操作系统概念学习助手:交互式解答与示例生成
  • M2LOrder模型在.NET生态中的集成方案
  • AI股票分析师与MySQL数据库联动实战
  • 【实战解析】TPA-LSTM在时间序列预测中的高效实现与调优技巧
  • GME多模态向量-Qwen2-VL-2B创新应用:航天器结构图→任务手册操作步骤匹配
  • Qwen2.5-72B大模型实战:JSON结构化输出、表格理解与代码生成案例
  • 字节开源Agent新作:UI-TARS Desktop如何重塑桌面自动化交互
  • 从方形到长条:Strip Pooling如何重塑CNN的上下文感知能力
  • VideoAgentTrek-ScreenFilter模型解释性(XAI)实践:可视化模型关注区域
  • 侧扫声呐成像算法:从回波信号到海底声图的构建之路
  • 【Linux系统编程】初识进程间通信 —— 管道与匿名管道,从原理到实战吃透经典 IPC
  • 使用Typora+Nunchaku-flux-1-dev创建技术文档:自动生成示意图工作流
  • UniAppX安卓保活实战:基于UTS与Ba-KeepAlive-U的多技术融合方案
  • 6.15 PowerBI DAX函数精讲:从CONCATENATEX实战看值、列、表合并的艺术
  • 基于CH334R的USB 2.0四端口有源集线器设计
  • cv_resnet101_face-detection_cvpr22papermogface 跨平台部署实践:从Windows到Linux的迁移指南
  • GD32VW553驱动夏普GP2Y0A02YK0F红外测距传感器:ADC采集与非线性校准实战
  • HeyGem数字人视频生成系统:提供单个和批量两种模式,满足不同需求
  • ESP32定时器中断实战:从零到一构建精准时间触发器
  • 【ICCV2023】Scale-Aware Modulation与Transformer的融合:多尺度视觉任务的新突破
  • ZadigUSB驱动神器 v2.8:一键解决Windows设备识别难题
  • 利用VS2017与Qt开发安捷伦信号源自动化控制工具
  • WarcraftHelper:革新性魔兽争霸III增强工具全攻略
  • 从零到一:在Windows上手动部署PySide2开发环境
  • yz-女生-角色扮演-造相Z-Turbo与Python爬虫结合:自动化角色数据采集实战