# 2023-NUEDC-Project **Repository Path**: zilin-wang/2023-nuedc-project ## Basic Information - **Project Name**: 2023-NUEDC-Project - **Description**: 本项目是2023年全国大学生电子设计竞赛E题的开源代码实现。它包含了基于OpenMV的视觉识别、STM32的运动控制。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-06-01 - **Last Updated**: 2025-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2023年全国大学生电子设计竞赛 E题 运动目标控制与自动追踪系统 ## 1. 简介 视觉和控制:王子林、陈璟文 硬件:钟雨欣 ## 2. 系统架构 本项目实现了视觉感知与运动控制的闭环系统。其核心在于将OpenMV作为前端视觉信息采集与预处理单元,通过Python进行数据处理与误差计算,最终由STM32 微控制器执行精准的运动控制。 整个系统的工作流程可以概括为以下阶段: 1. 视觉初步提取: OpenMV 负责实时的图像采集与初步目标识别。它利用图像处理算法,识别并提取关键视觉目标(例如,激光点、矩形框等)。 2. 解析与决策: OpenMV 将处理后的目标信息(如像素坐标等),对这些原始数据进行解析、坐标变换及误差计算,生成激光当前状态与期望状态之间的偏差信息。 3. 控制指令传输: 计算出的控制误差通过通信(UART 串口)传递至STM32 微控制器。 4. 运动执行与反馈: STM32 微控制器作为底层驱动与任务执行核心,接收到上位机指令后,基于增量 PID 控制算法驱动舵机执行相应的运动。同时,它也负责管理其他硬件接口和功能模块完成预设任务。 ### 2.1 视觉(Vision) - 平台: OpenMV - 核心职能: 执行实时图像采集、轮廓检测及激光点提取。其目标是高效识别并定位关键目标(如红色或绿色激光点)。 - 关键程序: - red_laser_find.py: 专用于红色激光点的检测与定位主程序。 - green_laser_track.py: 专用于绿色激光点的实时跟踪主程序。 ### 2.2 运动控制(Control) - 平台: STM32 - 核心职能: 执行激光点运动控制。 - 关键技术: - 增量 PID 控制: 实现对机器人底盘速度和位置的精确调节。 - 硬件抽象层: 管理电机驱动、编码器反馈及其他外设接口。 ## 3. 对代码的一些想法与展望 **比赛后的反思与不足** 回想起比赛,代码有几个地方值得深入反思: - 视觉鲁棒性不足: 比赛现场光照复杂多变,我们当时依赖的纯颜色阈值分割方法,在实际应用中其环境适应性非常有限,很容易受到外界光线、阴影或背景颜色的干扰。这导致了目标识别的不稳定,直接影响了决策和行动精度。 - 卡尔曼滤波器的误用: 事后复盘发现,当时对卡尔曼滤波器的应用并未达到预期效果,甚至在某些情况下起到了反作用。我们原希望它能在目标短暂丢失后预测其位置,但实际效果不佳,可能是因为模型与实际目标运动不符,或参数未能有效调优。 **潜在的改进方向与未来展望** 基于这些不足,我认为未来的改进可以从以下几个方面入手: 1. 提升目标检测鲁棒性: - 多特征融合: 探索结合颜色、形状等多种视觉特征,而非单一依赖颜色,以增强识别的抗干扰能力。 2. 目标追踪与状态预测优化: - 决策而非单纯预测: 当目标短暂丢失时,可以设计基于规则或状态机的决策策略,例如让其停下来,并以最后已知位置为中心进行局部检测,而不是盲目地使用预测算法。这种策略可能比不完善的预测更有效、更安全。 当然,如果目标检测自身就足够稳定和精准,几乎不存在丢失情况,那么上述的“丢失决策策略”就不再是首要考量。