本帖最后由 yuan——1 于 2023-10-9 18:42 编辑
2023电赛E题国二作品开源(文末附核心代码) 大家好,这里是西安建筑科技大学参赛队,在本届电赛中选择E题并获得国二,很荣幸这次能在STC官方论坛讲述我们的参赛经验。当然我们的作品中还有很多不足之处,请大家多多包涵。 本作品为两架二维电动云台,完成运动目标控制和自动追踪系统的实现。云台通过 K210 图像处理模块识别运动轨迹和捕捉目标,通过步进电机控制云台运动进行控制目标的 沿轨迹运动及目标追踪。 控制系统使用 STC32G12K128为主控制器,K210 图像处理模块作为轨迹识别和目标检测 的视觉模块,A4988 模块作为步进电机驱动模块。轨迹识别算法使用 K210 和中位极值滤波进行目标检测,脉冲控制算法进行云台运动控制。机械结构采用双轴步进电机云台结构,两 个步进电机形成双轴联动控制,辅以三脚架式结构作为装置支撑。测试表明,在题目所给环 境中,二维电动云台可以控制目标按题目要求移动,并在规定时间内完成目标追踪,且用时 较短,运动精确,符合题目要求。
机械结构设计与搭建 对于机械结构的设计,采取了三脚架式支撑结构,三脚架式支撑结构具有较高稳定性,在云 台运动时不易发生位移或颤动,可以提高控制的准确率。两台驱动电机通过同步带间接控制云台 转动,具有更高的精确度。整体结构设计有效可靠,符合本次任务需要。 运动控制云台将 K210 图像识别模块架于激光发射器后方,使摄像头能覆盖整块屏幕的同时, 也与激光的射线具有相似的轨道,更加便于激光光斑的控制。 运动控制云台的总体机械结构模型如图 2 所示。 目标追踪云台将 K210 图像识别模块架于激光发射器上方,并与激光发射器共同运动,使得该 云台的激光光斑能够一直处于 K210 图像的中间位置,有利于云台进行目标追踪。 目标追踪云台的总体机械结构模型如图 3 所示。 图像识别模块 本次设计要求云台控制激光光斑沿着任意位置的 A4 靶纸进行移动,并使绿色激光光斑追踪红 色激光光斑,因此需要用到图像处理模块。在本次设计中,选择了 K210 视觉模块作为图像处理的 平台,通过 K210 视觉模块的摄像头捕捉屏幕画面,并对画面进行矩形和光斑的搜索,将搜索到的 结果以坐标形式输送给主控制器,以此完成 A4 靶纸和激光光斑的识别功能,如图 4 所示。 运动目标控制原理 控制激光在屏幕上移动,需要将移动的信息换算成控制电机旋转的脉冲和方向信号。将屏幕 位置以二维坐标系表示,并以屏幕的中心为原点,向上为 Y 轴正方向,向右为 X 轴正方向,则激光在屏幕上的任意一个位置都可以以一个数对(x,y)表示,如图 5 所示。 通过公式 1 将位置数对转换为脉冲数对。 𝐴𝑁𝐺𝑥 = atan ( 𝑥 1000) ∗ 1528 (1) 其中𝑥为位置参数,𝐴𝑁𝐺𝑥为转换后的脉冲参数。对得到的脉冲参数进行进一步处理,通过公 式 2 与公式 3 分别计算出 X 轴电机与 Y 轴电机的脉冲比例。 𝑆𝐹𝑥 = { 1, |𝐴𝑁𝐺𝑥 − 𝑂𝐴𝑁𝐺𝑥 | ≥ |𝐴𝑁𝐺𝑦 − 𝑂𝐴𝑁𝐺𝑦| |𝐴𝑁𝐺𝑥−𝑂𝐴𝑁𝐺𝑥| |𝐴𝑁𝐺𝑦−𝑂𝐴𝑁𝐺𝑦| , |𝐴𝑁𝐺𝑥 − 𝑂𝐴𝑁𝐺𝑥 | < |𝐴𝑁𝐺𝑦 − 𝑂𝐴𝑁𝐺𝑦| (2) 𝑆𝐹𝑦 = { |𝐴𝑁𝐺𝑦−𝑂𝐴𝑁𝐺𝑦| |𝐴𝑁𝐺𝑥−𝑂𝐴𝑁𝐺𝑥| , |𝐴𝑁𝐺𝑥 − 𝑂𝐴𝑁𝐺𝑥 | ≥ |𝐴𝑁𝐺𝑦 − 𝑂𝐴𝑁𝐺𝑦| 1, |𝐴𝑁𝐺𝑥 − 𝑂𝐴𝑁𝐺𝑥 | < |𝐴𝑁𝐺𝑦 − 𝑂𝐴𝑁𝐺𝑦| (3) 其中𝑆𝐹𝑛为 n 轴电机的脉冲比例,𝐴𝑁𝐺𝑛为根据目标坐标转换的脉冲参数,𝑂𝐴𝑁𝐺𝑛激光当前坐 标的脉冲参数(𝑛取𝑥, 𝑦)。将转换后的脉冲数对与当前位置的脉冲数对进行比较,确定旋转量较 大的轴为主旋转轴,并将其对应的电机脉冲比例设置为 1,而对于旋转量较小的电机,根据脉冲 数对计算出相应的脉冲比例。 追踪性能分析 对于 A4 靶纸的黑色矩形轨道的追踪,由 K210 矩形识别和中位数极值滤波法共同完成。先通 过 K210 矩形识别函数识别出 A4 靶纸的黑色矩形轨道,并将矩形四个角的坐标传回主控制器。由 于矩形识别存在不稳定性,因此需要多次测量数据,并通过极值滤波去除极端值,也就是识别失 败数据带来的影响。中位数不受极值影响,具有良好的稳定性,具有一组相似数据的代表性,且 计算方便,因此采用中位数极值滤波法处理数据。 使 K210 传回十组数据,每组数据由四个二元数对,即四个角的坐标值组成,每组共八个数据, 对十组数据的八类数据分别进行排序,并求出每类数据的中位数,得到一组中位数数据,如公式 4 所示。 𝑃𝐶[𝑚][𝑛] = 𝑃𝐷[ 𝑘 2 ][𝑚][𝑛]+𝑃𝐷[ 𝑘 2 +1][𝑚][𝑛] 2 (4) 其中𝑃𝐶为处理后的中位数数据,𝑚为四个角下标(取值为 0—3),𝑛为 X,Y 轴,𝑘为数据数量, 此处为 10,PD 为测量数据。经过处理后的数据,可以有效排除由识别错误带来的误差,使之成为 稳定且可靠的矩形数据。 经过中位数极值滤波的数据,通过公式 5 进行 K210 与屏幕的坐标换算,以方便后续电机进行 控制。 𝑛 = (𝑃𝐶 − 𝑙 2 ) ∗ ℎ𝑛 + 𝑓𝑛 (5) 其中𝑛为取值 X,Y 的坐标值,PC 为经过极值滤波处理的中位数数据,𝑙为 K210 相应轴的长度, ℎ𝑛为对应坐标轴的放大系数,𝑓𝑛为对应坐标轴的偏差值。 电路设计 本次设计采用的主控芯片为 STC32G12K128,具有 32 个可用 I/O 口。步进电机驱动模块采用 具有过温,过压保护功能的 A4988 步进电机驱动器,其输出电流可通过可变电阻调节。电源采用 12V 航模电池供电,使用 TPS5450 为核心的稳压模块,降压为 5V,为单片机及其他模块供电。 OLED 模块,蜂鸣器模块,旋转编码器模块共同组成人机交互部分,以便于进行程序的调试和现象 第 5 页 的展示。由于单片机 I/O 口驱动能力有限,因此设计三极管开关电路驱动激光笔。K210 通过串口 与主控芯片相连,将识别到的目标坐标返回给主控芯片,总体电路图见图 6。 程序设计 本次系统软件设计采取了顺序控制的设计方法,根据每个任务的需要完成的步骤,按步设计 相应函数,完成控制任务。首先对各个外设进行初始化,保证其能够完成相应任务,之后图像处 理模块采集和处理,运动控制云台根据任务的不同执行不同的运动指令,完成控制任务,程序流 程图如图 7 所示 代码链接
代码.rar
(1.1 KB, 下载次数: 250)
|