2023年电赛E题详细讲解

前言

E题是运动目标控制与自动追踪系统,其实就是一个红色激光追踪绿色激光。本文主要授人以渔,讲解思路,不含代码,建议自己编写。本文旨在和大家探讨一下更好的方案,欢迎讨论。

读题

做题肯定是要读题的,本节主要是将一些主要的点,并反推出题人的出题意图。

题目要求

这里为防止以后做题同学产生疑惑,说明一下,有部分要求并没有直接在题目说出,而是在各学校指导老师收集学生对题目没有解释或者解释不清后产生的问题,提交组委会后给予的回复。

  1. 距离1m有白色屏幕:有效面积60cm*60cm,除规定的不超过1mm宽度的铅笔痕迹外,不能存在其他标识
  2. 不得对屏幕以外做额外要求,包括划线,挂深色布,放黑板等等。背景只能是为普通实验室背景。
  3. 屏幕与支架可以自带到比赛评审现场,有不少于10分钟时间恢复与调试时间,但不允许烧录代码及手机/电脑调试。
  4. 红色激光系统中,激光位置固定,摄像头位置不限制。
  5. 绿色激光系统中,激光与摄像头要放在一个板子或者什么上面,要求能被评委移动(与屏幕平行,位于红色激光笔两侧,距红色激光笔距离大于 0.4m、小于 1m),且完全独立(不能与红色激光系统存在无线/有线连接通讯),但不强制要求摄像头也在云台上面。
  6. 基本要求逻辑颇为简单,但可以得知对硬件(摄像头分辨率,电机)要求较高。

反推出题人想法

​ 这里写的是我根据对题目的理解,对出题人想法的猜测,不保证正确

  1. 不希望你识别白色屏幕本体

    论据:

    1.给出了屏幕的具体距离;(让算法有较大帮助,下面算法阶段有细说)

    2.要求的铅笔痕迹在1m外识别对摄像头要求较高;(较多的队伍使用的openmv,k210之类的摄像头较难做到)

    3.背景不能有要求;(如果背景同样是白色,则可能无法通过识别白色屏幕外部轮廓,则无法通过比例计算边框)

  2. 暂无

硬件方面

工欲善其事必先利其器。硬件决定了上限,软件决定下限。如果硬件不过关,那么的难度将会异常高,甚至导致最终的功亏一篑。

本题的硬件并不多,主要有五个:1.红色 / 绿色激光笔;2.二维云台;3.白色屏幕与支架;4.主控(选自己熟悉的就好);5.摄像头(OpenMV / K210 / M2DOCK 等)

要说的只有三个,下面主要说一下。

激光笔

基础要求1,2对激光笔的要求不高,但是基础要求3,4比较高,因为功率低的激光笔无法在照射到黑色电工胶带的时候让摄像头识别到,这对使用闭环控制造成了比较大的影响。但其实也不是不行,你可以设计成,当无法识别到激光落点时,认为其就在黑色电工胶带上,无需调节。

二维云台

本题的硬件最大难点其实在这里,普通的舵机无法保证高精度,这里简单算一个数学的解三角形问题。

在这里插入图片描述

(图为随手画的,比例/角度不对请忽略)

即当角度偏差 α = 1 ° 时,激光射到距离 b = 1m 远屏幕会有多少偏差?很显然,通过解三角形能得出a = 0.0175m = 1.7cm,距离基础要求1,2的2cm,基础要求3,4黑色电工胶带宽度 1.8 cm 已经非常接近了。因此可以很清楚得出电机的精度要求较高。另外为了能尽可能节约时间,应当选择自身带有编码器(最好带零点的),或者是内置控制芯片(即给指定角度就可以转到指定角度)的电机。

这里给几个解决方案:

  • 市面上可以直接买到的成品高精度舵机

    价格不低,学校可能没有存货,顺丰也要时间

  • 步进电机+减速齿轮

    大多学校都有步进电机

  • 普通舵机+减速齿轮

    其实这一题需要的转动角度范围不大,有90度足以,可以用180度舵机+2:1齿数比的减速齿轮,或者270度+3:1的,但实际效果未知,理论上确实可以有效提高精度的

摄像头

我们队伍使用的是 K210 ,尽管效果勉强过得去,但还是感觉很差。原因还是K210的分辨率(320x240)较低。在红色激光系统中,距离 1 m 左右,拍到的黑色电工胶带只有不到十个像素点的宽度 。至于为什么不拉近摄像头,主要是两个原因:1.遮挡了激光射在白色屏幕上;2.太近了识别不完整整个白色屏幕。

另外要注意摄像头镜头的畸变问题,还有摄像头位置导致的投影变换问题。

而在绿色激光上更差,拉到限制范围的最近位置,都只能拍出来四个像素点。原因也包含了激光功率太低,但也不重要了,因为发挥1,2由于各种场内场外因素,最终导致时间不够选择了放弃。

算法

这里主要是解决下面两个问题从而引出了算法问题:

  1. 云台角度与屏幕坐标的关系
  2. 摄像头图片坐标与屏幕的关系

下面详细说说,欢迎大家来一起讨论。

云台角度与屏幕坐标的关系

现在假设你能控制云台的角度(这就是为什么要带编码器的原因),然后我们就可以简单通过数学计算实现坐标的转换,下面是推导过程:
在这里插入图片描述

我们先简单地看水平面上的部分,求屏幕的坐标实际上就是a的值,现在我们已经知道了 b = 1m ,以及角度

α,很显然这就是一个解三角形问题。高中知识轻松知道:tan α = a / b = a。

竖直面也差不多,不在多说。

这里讲几个注意的点:

  1. 要确定坐标系,我是将屏幕中点确定为原点建立直角坐标系的,这样可以方便的表示坐标
  2. 要分清楚屏幕原点与激光原点(激光垂直于屏幕照射在屏幕的点)可能不一样(取决于你激光是否在硬件上架高到与屏幕原点相同高度),不一样的时候在写控制代码的时候,可以手动加上一个相对位置。
  3. 大多数语言的math库中的tan函数和atan函数之类的角度函数都是以弧度为单位,需要将度数手动转弧度。

摄像头图片坐标与屏幕的关系

先看已有条件

  1. 能通过角度转换精准控制激光到指定现实坐标

  2. 图像识别能够准确识别激光的落点,可以知道激光在摄像头图像的坐标

因此可以较为容易得想到了通过控制激光落在现实坐标,让图像识别获取图像坐标,重复多次得到多组数据,最终通过数学计算建立两个坐标系的映射关系。其原理与电阻触摸屏校准相同,公开的校准算法也存在很多。可以自行搜索查看,我便不再重复写了。

结束的话

本次参加了电赛,确实是难忘的经历,四天三夜,加起来的睡觉时间估计也就十个小时左右。但很不可思议的是,我依旧能精神饱满的投入做题目,而没有感觉到困。这几天常在想的一句话是:又是没有猝死的一天。

### 2023子设计竞相关信息 #### 概述 2023的全国大学生子设计竞涵盖了多个类别,其中包括仪器仪表类、放大器路相关以及运动目标控制与自动追踪系统的综合设计。这些旨在考察参者在理论知识、实践技能和创新能力方面的综合实力。 #### 时间安排 根据已有的信息,的时间已经明确公布[^1]。具体日期通常会在官方通知中给出,建议参队伍密切关注官方网站及相关公告渠道以获取最新动态。 #### 分析 以下是几个典型的具体内容及其要求: - **仪器仪表类** 对于此类,重点在于对测量原理的理解和技术实现的能力。文章提到参加的同学应特别注意新元素和融合类,并通过老师的讲解掌握比型、前准备及训练方法等内容。 - **19D——被测放大器路9013** 此部分涉及具体的路焊接操作。目明确了基于晶体管型号9013构建的放大器路作为核心测试对象。学生需要严格按照任务书中的各项指标完成焊接工作并验证其性能表现[^2]。 - **E:运动目标控制与自动追踪系统** 设计一个能够识别并跟踪移动物体的自动化控制系统是本度另一重要挑战项目之一。整个解决方案由以下几个方面组成: - 方案整体描述; - 主控单元的选择与配置(如单片机或ARM处理器)[^3]; - 执行机构的设计, 包括但不限于云台结构和驱动舵机参数设定; - 外设接口定义, 如舵机信号端口分配规则、按键功能绑定逻辑等细节说明; - 编程环境搭建(openMV平台下的图像处理算法开发); - 实物组装指导文档提供给选手参考学习. #### 规则要点 每道正式发布的试都会附带详细的评分标准与技术规范文件供各校组队查阅研究。务必仔细研读每一个环节的要求,确保作品完全符合评判准则才能取得理想成绩。 ```python # 示例代码片段展示如何初始化OpenMV摄像头用于检测颜色标记的目标位置 import sensor, image, time sensor.reset() # Reset and initialize the sensor. sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) clock = time.clock() while(True): clock.tick() img = sensor.snapshot() # Take a picture and return the image. blobs = img.find_blobs([(30, 100, -60, -10, -30, 30)], pixels_threshold=200, area_threshold=200) if blobs: largest_blob = max(blobs, key=lambda b:b.pixels()) print('Found blob at ({}, {})'.format(largest_blob.cx(), largest_blob.cy())) ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值