1. 项目概述2023年全国大学生电子设计竞赛E题“运动目标控制与自动追踪系统”是一套高精度、强实时性的双闭环机电控制系统。该系统需在1米距离的白色屏幕上以≤1cm光斑直径实现红色激光点的可控轨迹运动并同步驱动绿色激光点完成对红点的亚厘米级动态追踪。其核心挑战在于在无绝对位置传感器、仅依赖视觉反馈的条件下实现±2cm复位精度、≤3cm追踪误差、2秒内快速收敛且全程支持暂停/恢复操作。本项目由华中科技大学人工智能与自动化学院STI_K06队完成最终获得全国一等奖。系统采用“视觉-运动”紧耦合架构摒弃传统开环路径规划转而构建基于仿射坐标变换的全视觉闭环控制回路将图像识别、坐标映射、误差计算、PID调节、电机驱动等环节压缩至毫秒级循环形成一套可工程化复现的嵌入式视觉伺服范式。1.1 系统功能边界定义题目要求划分为基本要求与发挥部分其技术内涵远超表面功能描述实为对控制系统鲁棒性、实时性与适应性的综合检验复位功能基本要求1本质是建立屏幕坐标系原点的绝对基准。由于铅笔标定线宽≤1mm无法直接用于亚像素级识别故需引入外部标定块建立初始仿射变换矩阵使视觉系统获得屏幕物理尺寸与图像像素坐标的精确映射关系。四边形轨迹运动基本要求2–4从固定边框→A4靶纸→任意旋转靶纸测试的是视觉系统对几何形变的鲁棒识别能力与路径生成器的在线重规划能力。系统不预存路径点而是每帧识别靶纸轮廓实时解算其顶点并插值生成连续目标序列。自动追踪发挥部分1–2核心是双光斑异色分离与动态误差矢量计算。绿色光斑位置非固定其放置线段距红光云台0.4–1m导致两套云台视场、焦距、畸变参数均不一致必须为绿光通道独立标定仿射变换矩阵。暂停机制贯穿全部要求要求硬件级即时制动而非软件延时响应。步进电机需在接收到暂停指令后一个脉冲周期内停止避免惯性滑移导致测量误差。这些约束共同指向一个设计原则所有控制决策必须基于当前帧视觉反馈拒绝任何开环假设。这决定了系统架构必须将视觉处理单元深度嵌入控制环路而非作为上位机辅助模块。2. 系统总体架构系统采用分层异构设计由视觉感知层、运动控制层、动力执行层及人机交互层构成各层通过确定性通信协议紧密协同。其拓扑结构如图2所示关键特征在于视觉模块与主控制器之间不存在中间缓冲UART传输的数据仅为经坐标变换后的二维误差矢量Δx, Δy而非原始图像或中间特征。2.1 视觉感知层Jetson Nano OpenCV视觉单元选用NVIDIA Jetson Nano其128核Maxwell GPU可实时运行轻量化OpenCV流水线。该层承担三项核心任务多目标识别在单帧图像中同步定位红色激光点、绿色激光点、屏幕四角标定块、A4靶纸黑胶带边缘仿射坐标变换基于标定块或靶纸顶点实时计算屏幕平面到图像平面的单应性矩阵H将像素坐标映射为物理坐标单位cm误差矢量生成对红光云台输出当前红点坐标与目标轨迹点的差值对绿光云台输出绿点与红点的相对位移矢量。所有视觉算法均针对嵌入式环境优化图像采集使用V4L2框架直通YUYV格式避免RGB转换开销激光点识别采用HSV色彩空间阈值分割形态学滤波质心计算处理单帧耗时15ms标定块识别使用模板匹配与角点检测融合策略确保在光照变化下仍能稳定提取四个绿色方块顶点。2.2 运动控制层STM32F407VET6主控制器采用ARM Cortex-M4内核的STM32F407VET6主频168MHz具备浮点运算单元FPU与丰富外设。其核心职责是接收视觉层发送的误差矢量执行PID控制算法生成步进电机驱动信号。该层设计严格遵循实时操作系统RTOS思想虽未移植FreeRTOS但通过SysTick中断状态机方式实现确定性调度控制周期视觉数据更新频率为50Hz20ms间隔主控以20ms为基准周期执行PID计算PID参数整定针对红光云台轨迹跟踪与绿光云台动态跟随分别整定。红光系统侧重稳态精度采用PI控制Kp0.8, Ki0.05绿光系统侧重响应速度采用PID控制Kp1.2, Ki0.02, Kd0.3脉冲生成使用TIM2/TIM3定时器的PWM模式输出STEP脉冲DIR信号由GPIO直接控制。脉冲频率范围1–5kHz对应电机转速0–120rpm满足题目要求的30秒绕行一周约0.05rad/s。2.3 动力执行层TMC2209 42HS步进电机执行机构采用两套完全相同的二维云台每套包含X/Y两个自由度均由42HS系列两相混合式步进电机驱动。电机选型依据如下扭矩需求云台总负载含摄像头、激光笔、结构件约350g经杠杆计算Y轴俯仰所需保持扭矩≥0.15N·mX轴偏航≥0.12N·m。42HS400.4N·m留有充足余量细分精度TMC2209驱动器支持256微步配合1.8°步距角电机理论最小转动角度为0.007°在1m距离处对应光斑位移约120μm远优于题目2cm精度要求静音与平滑性TMC2209内置spreadCycle™斩波算法显著降低电机高频啸叫避免振动干扰视觉成像。驱动电路设计要点VM端接入12V锂电池VDD端由AMS1117-3.3稳压供电STEP/DIR信号线串联22Ω电阻抑制反射电机绕组并联100nF陶瓷电容滤除高频噪声。2.4 人机交互层多模态界面为满足测评过程中的模式切换、参数调整与状态监控需求系统集成三类显示设备OLED屏128×64显示当前工作模式复位/轨迹/追踪、系统状态运行/暂停、误差实时值刷新率10Hz串口屏3.5英寸提供图形化操作界面支持触摸选择题目模式、调节PID参数、查看视觉处理中间结果如二值化图像、轮廓拟合效果TFT屏4.3英寸作为主视觉监视器实时显示Jetson Nano输出的原始图像及叠加的识别框、轨迹线、光斑坐标供调试与演示使用。所有交互设备通过USART2OLED、USART3串口屏、SPITFT与STM32连接通信协议采用自定义轻量级帧格式含起始符、长度、命令码、数据域、校验和。3. 硬件设计详解系统硬件采用模块化三层堆叠结构兼顾电气性能、机械刚性与装配便捷性。该设计源于电赛现场快速迭代需求三块PCB板电源底板、驱动中板、F407控制板通过长排针垂直互连消除飞线提升抗干扰能力。3.1 电源管理设计电源系统需同时为Jetson Nano5V/2A、STM323.3V/0.5A、TMC220912V/1.5A、OLED3.3V等多负载供电且要求纹波低、瞬态响应快。设计采用两级稳压方案模块输入输出芯片关键参数主电源12V锂电池5V/3ALM2596S DC-DC开关频率150kHz满载效率≥85%低压轨5V3.3V/1AAMS1117-3.3 LDO压差0.8VPSRR1kHz达60dBLM2596S模块焊接于电源底板其输入端并联470μF电解电容100nF陶瓷电容输出端串联22μH功率电感后接220μF电解电容100nF陶瓷电容有效抑制开关噪声。AMS1117输入端增加10μF钽电容输出端配置22μF钽电容确保3.3V轨在STM32高速ADC采样时电压波动10mV。3.2 步进电机驱动电路TMC2209驱动模块集成于驱动中板其外围电路设计严格遵循Trinamic官方推荐电流设定通过REF引脚外接精密电阻设定峰值电流。公式I_peak V_ref / (5 × R_sense)。选用R_sense 0.11ΩV_ref 1.2V得I_peak 2.18A匹配42HS40电机额定电流静音模式ENCA/ENCB引脚接地启用spreadCycle™相比传统恒流斩波电机运行噪音降低20dB(A)保护电路VM端并联TVS二极管SMAJ15A吸收电机反电动势每个OUTx引脚串联10Ω电阻抑制振铃逻辑电源VDD与VM地之间跨接100nF陶瓷电容。STEP/DIR信号线布线长度控制在8cm以内远离电机电源走线避免串扰。实际测试表明在5kHz脉冲频率下信号边沿抖动5ns满足TMC2209最小脉冲宽度要求1.9μs。3.3 多板堆叠互连结构三层板采用2.54mm间距排针/排母垂直互连信号完整性设计要点如下电源分配电源底板向驱动中板提供12V/6.3V/5V/3.3V/GND共5路其中12V与GND各用2根引脚并联降低阻抗驱动中板向F407板提供5V/3.3V/GNDF407板向下返回STEP/DIR/PWM/UART等控制信号信号隔离所有数字信号线除电源外在穿过板间接口时均在驱动中板侧就近添加100nF去耦电容机械加固四角M3螺丝孔安装8mm铜柱柱体中部加装M3螺母微调高度确保三层板平行度0.1mm避免排针受力弯曲。该结构经振动测试10–500Hz扫频2g加速度未出现接触不良或信号误触发证明其在电赛现场复杂电磁环境下的可靠性。4. 软件系统设计软件分为Jetson Nano视觉固件与STM32F407嵌入式固件两大部分二者通过UART2115200bps8N1进行确定性数据交换。通信协议设计为固定长度帧每帧12字节结构如下[0xAA][0x55][Mode][Err_X_H][Err_X_L][Err_Y_H][Err_Y_L][Status][CRC8] ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 帧头 帧头 模式码 X误差高字节 X误差低字节 Y误差高字节 Y误差低字节 状态位 校验和其中Mode字段标识数据来源0x01红光云台0x02绿光云台Status位指示视觉系统工作状态bit0标定完成bit1目标识别成功。CRC8采用查表法计算确保数据传输零误码。4.1 STM32F407固件架构固件基于HAL库开发采用中断驱动主循环架构关键任务调度如下SysTick中断1ms更新系统滴答计数器驱动软件定时器UART2接收中断DMA模式当一帧12字节数据接收完成触发回调函数解析误差值置位new_data_flag主循环20ms周期while(1) { if (new_data_flag) { // 1. 更新误差值 current_error_x (int16_t)((rx_buffer[3] 8) | rx_buffer[4]); current_error_y (int16_t)((rx_buffer[5] 8) | rx_buffer[6]); // 2. PID计算以红光云台PI为例 integral current_error_x; output_x (int32_t)(KP * current_error_x KI * integral); // 3. 脉冲输出限制 if (output_x MAX_PULSE) output_x MAX_PULSE; if (output_x -MAX_PULSE) output_x -MAX_PULSE; // 4. 生成STEP脉冲TIM2 PWM if (output_x 0) { HAL_GPIO_WritePin(DIR_X_GPIO_Port, DIR_X_Pin, GPIO_PIN_SET); __HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, output_x); } else { HAL_GPIO_WritePin(DIR_X_GPIO_Port, DIR_X_Pin, GPIO_PIN_RESET); __HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, -output_x); } new_data_flag 0; } HAL_Delay(20); // 保证20ms周期 }暂停功能通过独立按键KEY1实现按下时立即关闭TIM2/TIM3的PWM输出并锁存当前电机位置确保零滑移。4.2 Jetson Nano视觉固件流程视觉固件基于Python3 OpenCV4.5开发核心流程如图4所示初始化打开USB摄像头Logitech C920设置分辨率640×48030fps曝光模式为手动避免自动曝光导致光斑亮度突变标定阶段识别屏幕四角绿色标定块利用cv2.findHomography()计算单应性矩阵H_screen存储于内存主循环20ms采集一帧图像HSV阈值分割H:0-10 170-180, S:100-255, V:100-255提取红色光斑对红斑二值图像执行cv2.moments()计算质心坐标(x_r, y_r)应用H_screen将(x_r, y_r)映射为物理坐标(X_r, Y_r)若处于轨迹模式根据当前时间t生成目标点(X_t, Y_t)如正方形边框插值计算误差ΔX X_t - X_r, ΔY Y_t - Y_r打包发送至STM32。绿光通道流程相同但使用独立标定矩阵H_green因摄像头位置不同且目标点为红点坐标(X_r, Y_r)。5. 关键技术实现细节5.1 仿射坐标变换的工程实现题目要求光斑中心距原点误差≤2cm这意味着视觉系统必须将像素坐标精确映射为物理坐标。由于摄像头存在径向畸变直接使用cv2.getPerspectiveTransform()计算的单应性矩阵在图像边缘误差较大。本项目采用分步校准法粗标定在屏幕四角粘贴40mm×40mm绿色方块拍摄图像用cv2.cornerSubPix()精确定位角点计算初始H0畸变校正使用cv2.calibrateCamera()标定摄像头内参fx, fy, cx, cy及畸变系数k1,k2,p1,p2对原始图像进行cv2.undistort()精标定在无畸变图像上重新检测角点计算最终H_final。实测表明该方法将屏幕中心区域映射误差从±5mm降至±0.8mm边缘区域距中心25cm处误差±1.5mm完全满足题目要求。5.2 双光斑异色分离算法红、绿激光波长分别为650nm与520nm在RGB图像中R/G通道响应差异显著。但环境光干扰会导致单一通道阈值失效。本项目采用动态自适应分割# 读取图像 frame cv2.imread(image.jpg) hsv cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 计算R/G比值图 r_channel frame[:,:,2].astype(np.float32) g_channel frame[:,:,1].astype(np.float32) ratio np.divide(r_channel, g_channel, outnp.zeros_like(r_channel, dtypenp.float32), whereg_channel!0) # 动态阈值取ratio图的95%分位数作为红光阈值 red_thresh np.percentile(ratio, 95) red_mask (ratio red_thresh).astype(np.uint8) * 255 # 同理计算G/R比值图用于绿光 gr_ratio np.divide(g_channel, r_channel, outnp.zeros_like(g_channel), wherer_channel!0) green_thresh np.percentile(gr_ratio, 95) green_mask (gr_ratio green_thresh).astype(np.uint8) * 255该算法在实验室日光灯、窗外自然光等多种照明条件下均能稳定分离双光斑误检率0.1%。5.3 机械结构刚性设计云台机械结构直接影响控制精度。本项目采用环氧板厚度3mm与2020铝型材组合关键设计点重心优化将Jetson Nano置于顶层STM32三层板居中电机与激光笔位于最上层云台整体重心高度控制在结构总高1/3处降低俯仰轴转动惯量滚珠转盘应用在X轴偏航电机与Y轴俯仰云台间嵌入3英寸滚珠转盘其径向游隙0.02mm轴向窜动0.01mm使Y轴电机仅承受纯扭矩消除摩擦力矩非线性激光笔同轴校准激光笔通过3D打印夹具固定夹具中心孔与步进电机轴心重合偏差0.05mm避免因偏心导致的轨迹椭圆化。实测表明该结构在120°/s最大转速下云台振动幅度0.03°对应1m处光斑抖动50μm。6. BOM清单与器件选型依据系统BOM共67项核心器件选型逻辑如下表所示类别器件型号/规格选型依据数量主控微控制器STM32F407VET6168MHz主频、FPU、2MB Flash、丰富定时器资源满足多路PWM与UART并发1视觉AI计算单元Jetson Nano Developer Kit128核GPU、4GB LPDDR4、支持CUDA加速OpenCV推理延迟15ms1驱动步进驱动TMC2209-BOB静音驱动、256微步、SPI配置接口、过流/过温保护4电机步进电机42HS400.4N·m保持扭矩、1.8°步距角、0.4A相电流匹配TMC2209驱动能力4电源DC-DCLM2596S-ADJ宽输入4.5–40V、3A输出、成熟模块降低设计风险1LDO线性稳压AMS1117-3.3低压差1.1V、高PSRR为STM32提供纯净3.3V1光学摄像头Logitech C9201080p30fps、UVC免驱、自动对焦适配OpenCV1结构板材环氧板3mm高刚性、绝缘、易加工作为承重底板与云台支撑板若干所有器件均选用工业级温度范围-40℃~85℃或商业级中高可靠性型号避免使用消费级芯片确保电赛现场长时间运行稳定性。7. 系统调试与性能验证系统调试按“分层验证、逐级联调”原则进行底层驱动验证单独测试TMC2209电机组合在示波器上观测STEP脉冲与电机相电流波形确认脉冲频率、占空比、电流上升时间符合预期视觉闭环验证遮挡部分屏幕观察OLED上显示的误差值是否随红点移动实时变化验证坐标变换矩阵有效性全系统联调在1m距离白墙上投射光斑使用游标卡尺测量复位后光斑中心距原点距离10次测量平均值为1.3cm标准差0.4cm追踪性能测试启动追踪模式用高速摄像机1000fps记录绿点运动轨迹计算其与红点距离序列2秒收敛后95%时间误差≤2.1cm。最终系统在电赛测评中一次性通过全部基本要求与发挥部分其中复位误差1.7cm≤2cm四边形轨迹28.3秒完成光斑全程贴边距边线≤1.2cmA4靶纸追踪绿点在2.1秒内进入3cm窗口后续120秒追踪中最大偏差2.8cm无失败记录。该结果验证了全视觉闭环架构在高精度运动控制场景下的工程可行性。