站内搜索
发作品签到
标准版

【2023电赛】参数测量

工程标签

950
0
0
1

简介

2023电赛国赛E题【国产高性价比方案】 主控全部为国产芯片: ①红色激光:台湾星宸SSD202D,深圳宏晶STC32 ②绿色激光:上海乐鑫ESP32

简介:2023电赛国赛E题【国产高性价比方案】 主控全部为国产芯片: ①红色激光:台湾星宸SSD202D,深圳宏晶STC32 ②绿色激光:上海乐鑫ESP32
助力2023全国电赛

开源协议

GPL 3.0

创建时间:2023-05-14 16:00:56更新时间:2023-08-28 08:58:38

描述

运动目标控制与自动追踪系统

(E题)

摘要

本系统以国产STC32芯片和SSD202核心板为运动目标控制系统控制核心,以自制Esp32为自动追踪系统控制核心,由舵机信号控制模块、黑色方框检测模块、激光检测模块和自动追踪模块等构成。在SSD202中使用OpenCv库开发控制二维电动云台,能更准确和稳定地控制红色激光笔的运动。在自制Esp32中采用透视变换和PID算法,算力要求低,像素高,精确度高且稳定性强,达到较好的追踪效果。系统功能由按键控制,人机交互界面友好,且具有较好的性能指标。整套系统在实现基本要求和拓展要求的同时,做到了国产化和高性价比。

关键词:STC32 OpenCv 运动目标控制 自动追踪

  1. 系统方案设计与论证
    1. 基本方案

根据题目要求,本系统设计目标主要包括运动目标控制和自动追踪两大部分。系统设计框图如下。

在控制运动目标时,主要考虑三个问题:如何提高云台的转动精度,如何平稳地寻迹运动和如何精确地识别图像中的矩形。我们通过硬件升级和算法改进解决了云台的转动精度和平稳循迹的问题。而识别矩形则需要更多地考虑芯片的算力,来选取更优的解决方案。

方案一:使用树莓派4B搭配神经网络对矩形框进行精准定位。

方案二:使用OpenMv作为主控进行图像处理。

方案三:将OpenCV库移植到SSD202,使用图像处理的方法进行算法设计。

对比三个方案,方案一和二使用树莓派和OpenMv的成本太高,一块树莓派板卡需要800元左右,OpenMv也需要400元。虽然树莓派4B的算力足够强大,但是实时地使用神经网络进行图像处理将导致较高的功耗。而OpenMv只用来实现简单的矩形识别,是一种浪费。综合考虑低成本和低功耗这两点,我们否定了树莓派作为主控的方案。最后采取方案三,这样既能够减少算力的需求,保证算法的实时性,又能够保证低成本和低功耗。

在自动追踪系统中,主要考虑如何提高追踪精度和时间。我们在本次比赛中使用PID算法实现光斑的追踪过程。我们将红色光斑与绿色激光笔云台上的摄像头拍摄图像中心的位置偏差作为PID算法的输入,将PID算法的输出作为云台的转动角度,从而实现对光斑的追踪。这是一种常用的方法,也是最直观的选择,在算力低的芯片中也能很好地运行,所以直接选取该方案。

    1. 功能模块设计

1.2.1 舵机信号控制模块

二维电动云台由两个舵机构成,下面的舵机控制偏航角(X轴)旋转,上面地舵机控制俯仰角(Y轴)的旋转。通过程序由控制芯片STC32产生PWM发出驱动信号,输出2路PWM作为舵机的输入,来控制舵机沿着X轴和Y轴运动。

1.2.2 黑色方框检测模块

使用摄像头实时获取图片并逐帧进行分析,利用opencv图像处理库提取图片中的矩形方框并输出其角点的位置坐标信息。具体实现方法为,对图像采用灰度变换后,使用Otsu自适应二值化获得二值图,腐蚀细化图像边缘,计算轮廓角点信息,通过角点,计算四边形边长,判断四边形是否为矩形,然后进行黑白翻转等措施进一步提高图片质量,获得稳定的角点坐标,使摄像头能够稳定流畅地检测矩形黑色方框。

1.2.3 激光检测模块

激光具有高亮度的特点,拥有远高于周围环境光的亮度。因此,只需要检测提取出摄像头采集图像中最亮的部分,即可计算得到激光所在位置。首先利用红色激光和绿色激光在RGB的不同通道中强度不同的基本特性,可以分离出含红色激光点和含绿色激光点的图片,对图片取适当的阈值进行二值化,可以得到激光点所在位置处的连通域,将连通域填补为矩形,通过对比两个光斑之间的大小,可以分出红色光斑和绿色光斑,取矩形中点作为光点位置,可以进一步得到红色激光和绿色激光各自在图像中的位置。

1.2.4 自动追踪模块

PID控制算法是一种反馈控制算法,它的输入是当前的误差,输出是控制量,控制量的大小与误差的大小、变化率和积分成正比。通过调节PID控制算法中的比例系数、积分系数、微分系数,可以实现对系统的控制,完成我们的目标追踪的任务。测量目标光斑与图像中心的偏差,我们可以得到两者之间的误差,该误差的大小用于调控上述控制量的大小,实现负反馈,再控制云台的转动,从而实现对目标的追踪。该模块的创新点有:

  1. 算力要求低。普通的实时追踪需要连续高频率的读取图像来确定点的位置,但我们通过建模利用透视变换来确定点的位置,只需要读取一次图像,就可以通过线性变换确定点的坐标,对算力的要求较低。
  2. 高像素,精确度高。普通的实时追踪由于要获取大量的图像,在条件一定的情况下只能降低读取图像的像素值。而我们只需要一张图像,因此可以有更多的资源分配到图像的像素上,进而提高准确度。
  3. 稳定。由于只需要获取一次图像,记录四个点的坐标就能确定追踪位置,因此系统稳定性更强。
    1. 器件选择

本系统的设计采用了STC32芯片,SSD202核心板和Esp32模组,均为国产器件,且具有极高的性价比。

(1)STC32 G12K128芯片:STC32芯片是中国宏晶公司(STC)推出的超高速32位8051内核,同时支持2组高级PWM,可实现8通道(4组互补对称)带死区的控制的PWM,并支持外部异常检测功能。STC32国产芯片的售价低廉,在淘宝三块三即可包邮。STC32用于控制二维电动云台,进而控制红色激光笔的运动。

smUz7cSyuw3RvJPeTlXUpRhOCRMEWBe7kUwm8nzV.jpeg

图3 STC32芯片

(2)SSD202核心板:SSD202是中国SigmaStar公司的高度集成处理器,拥有Cortex-A7双核,1.2 GHz主频。SSD202的裸片价格为36元,其核心板售价为46.9元,性价比高。考虑到OpenMV价格昂贵且功能不全面,我们直接采用有全套OpenCV库进行开发,将其移植到SSD上,功能更加强大,拥有更高的速度,且价格便宜。

(3)Esp32模组:Esp32系列模组是中国乐鑫科技的产品,具备卓越的性能和丰富的外设,支持Wi-Fi 和蓝牙双模。相较于用单片机来连接控制它,将其作为外设,而我们直接将Esp32作为主控进行开发,实现对绿色激光笔的控制,更好地发挥它强大的运算能力。

该Esp32开发板是我们一年前在立创EDA上设计制作的,作为门禁系统的主控,能实现人脸识别推理功能。

CJXiBRCFqakgPKU8PjqOwX0KNbKxO4qFPwY7Daco.png

图4

  1. 系统理论分析与计算

2.1 系统模型分析

初始时,将红色激光笔放置在垂直于白色屏幕1m远的原点O处,射出来的光斑处于屏幕底线中点。随着激光笔的转动,光斑将处于不同位置(x, y),如图1.

图5

经过计算得到如下公式,

2.2 透视变换

图6

透视变换的通用变换公式为,

其中,参数ω和等于1,通过透视变换后得到图片坐标x, y,

由上述两个方程即可求出透视变换矩阵

利用透视变换矩阵,可以将A4纸图像的坐标体系变换至5050cm白色屏幕的坐标体系中。

  1. 电路与程序设计
    1. 电路设计

GsiMUEJ61JO1BC73YkKXodvcbsmqdXsJisqF9TZz.png

图 7 自制Esp32开发板原理图

    1. 程序设计
      1. 程序设计流程图

  1. 测试方案与测试结果

4.1 系统测试方法及测试数据

①按要求放置号实验器材,连接好各元件,上电,连接手机热点,进行校准,按下“归位”按键,观察红色激光笔是否能复位。重复5次。

②按要求放置号实验器材,连接好各元件,上电,连接手机热点,进行校准,按下“绕屏幕框线运动”按键,观察红色激光笔是否在30s内完成绕框运动。重复5次。

③按要求放置号实验器材,连接好各元件,上电,连接手机热点,进行校准,按下“绕A4纸运动”按键,观察红色激光笔是否能完全在电工胶带内运动。重复5次。

④按要求放置号实验器材,连接好各元件,上电,连接手机热点,进行校准,按下“绕A4纸运动”按键,观察红色激光笔是否能完全在电工胶带内运动。改变A4纸位置和角度,重复5次。

⑤按要求放置号实验器材,连接好各元件,上电,连接手机热点,用户按下“追踪”按键,观察绿色光斑是否能在 2 秒内追上红色光斑,两个光斑中心距离是否小于3cm,并发出连续声光提示。重复5次。

⑥按要求放置号实验器材,连接好各元件,上电,连接手机热点,进行校准,按下“绕A4纸运动”按键和“追踪”按键,观察绿色光斑是否能在 2 秒内追上红色光斑,两个光斑中心距离是否小于3cm,并发出连续声光提示。改变A4纸位置和角度,重复5次。

4.2 测试条件与仪器

秒表、米尺等。

4.3 系统性能概览

 

题目要求

测试情况

基本要求

(1)红色光斑能从屏幕任意位置回到原点。光斑中心距原点误差≤2cm。

完成

(2)红色光斑能在 30 秒内沿屏幕四周边线顺时针移动一周,移动时光斑中心距边线距离≤2cm。

完成

(3)红色光斑能在30 秒内沿胶带顺时针移动一周。

完成

(4)红色光斑能在30 秒内沿任意角度的胶带顺时针移动一周。

完成

发挥部分

(1)一键启动自动追踪系统,控制绿色光斑能在 2 秒内追踪红色光斑,追踪成功发出连续声光提示。此时两个光斑中心距离应≤3cm。

完成

(2)运动目标重复基本要求(3)~(4)的动作。绿色激光笔发射端可以放置在其放置线段的任意位置,同时启动运动目标及自动追踪系统,绿色光斑能自动追踪红色光斑。启动系统 2 秒后,应追踪成功,发出连续声光提示。

完成

(3)其他

4.3 误差分析

根据题目要求,本设计实现了所有基本功能,精度等要求均达标,并且在完成了发挥部分的所有功能,精度也较高。

总结误差来源,主要有以下几个方面:

①云台的转动精度;

②周围环境亮度的变化,地面反光等。

附录

附录一 元器件明细表

元器件

型号

件数

STC32

 

1

SSD202

 

1

Esp32

 

1

云台

二维电动舵机云台

2

舵机

S20系列180°

S20系列270°

激光笔

红色、绿色激光笔

2

摄像头

Jetson 系列摄像头

2

附录二 电路图图纸

gbHGd6I7ea75W7VTvCDFOh36Ht53BEUIOKHOA6VQ.png

附录三 重要程序清单

该程序由纯C语言开发,用于图像二值化,检测图像中的激光笔光斑。

  1. vector<area> getAreas(uint8_t* pic, uint16_t w, uint16_t h, uint8_t therh)//求解联通域(包含二值化),输入图像为二值化(0,255)后的图,图像长、宽,二值化阈值(超过阈值为前景色)
  2. {
  3.  struct area t_area;
  4.  uint32_t sum_x;
  5.  uint32_t sum_y;
  6.  queue<point> task;
  7.  vector<area> res;
  8.  point t_point;
  9.  int32_t t_x;//当前计算的坐标
  10.  int32_t t_y;
  11.  for (uint16_t i = 0; i < w; i++)
  12.  {
  13.   for (uint16_t j = 0; j < h; j++)
  14.   {
  15.    if (pic[j*w + i] >= therh)
  16.    {
  17.     t_area.s = 0;
  18.     sum_x = 0;
  19.     sum_y = 0;
  20.     t_x = i;
  21.     t_y = j;
  22.     t_point.x = i;
  23.     t_point.y = j;
  24.     task.push(t_point);
  25.     pic[t_y*w + t_x] = 0;
  26.     do {
  27.      t_point = task.front();
  28.      t_x = t_point.x;
  29.      t_y = t_point.y;
  30.      sum_x += t_x;
  31.      sum_y += t_y;
  32.      t_area.s++;
  33.      task.pop();
  34.      for (int k = 0; k < 8; k++)
  35.      {
  36.       if (t_x + dir[k][0]>=0 && t_y + dir[k][1]>=0 && t_x + dir[k][0] < w && t_y + dir[k][1] <h)
  37.       {
  38.        if (pic[(t_y + dir[k][1])*w + (t_x + dir[k][0])]>= therh)
  39.        {
  40.         t_point.x = t_x + dir[k][0];
  41.         t_point.y = t_y + dir[k][1];
  42.         pic[(t_y + dir[k][1])*w + (t_x + dir[k][0])] = 0;
  43.         task.push(t_point);
  44.        }
  45.       }
  46.      
  47.      }
  48.     } while (!task.empty());
  49.     t_area.p.x = sum_x / t_area.s;
  50.     t_area.p.y = sum_y / t_area.s;
  51.     res.push_back(t_area);
  52.    }
  53.   }
  54.  }
  55.  return res;
  56. }

附录四 作品及参赛队员照片

周期T=5000

计算值(rad)

测试值

k

k_aver

θ

φ

θ

φ

θ

φ

θ

φ

左上角

0.4398

-0.2450

7947

8754

-579.81

606.122

-579.81

595.918

左下角

0

-0.2450

8206

8758

-579.81

585.714

-579.81

595.918

右上角

0.4398

0.2450

7951

9051

-579.81

606.122

-579.81

595.918

右下角

0

0.2450

8206

9045

-579.81

585.714

-579.81

595.918

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
7ff2796b8cdf778e324067745369023.jpg
11
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航