2023年电赛E题详细讲解

2023-11-19

前言

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. 图像识别能够准确识别激光的落点,可以知道激光在摄像头图像的坐标

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

结束的话

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

一些另外的话:

今天才发现一个平时关注的分享技术的视频主,在封箱前就放出了完整代码+视频讲解。这确实挺让人气愤的,但凡是他在卡在封箱后发布,我都对他蹭热度没有任何意见。因为自媒体确实很辛苦,要抓住每一个热点,但终究是破坏了比赛的公平性。下面是我的一些看法:

人做一件事情,是有可能会不止一个动机的。是为了帮助没有资源的学生,还是为了蹭热度之类的,谁知道呢?就算二者都存在,占比又是几几开?是一开始就这么想,还是被人痛骂后想出了借口,说着说着自己都信了,谁又知道呢?或许自己心中也说不出准确的答案。

但我所知道的,造成的结果并不是好的。首先一个问题是,电赛本身就时间紧任务难,究竟是努力拼搏的人会刷视频还是划水摸鱼混日子的会刷视频?这个我不必多言,各位心中自有答案。另一个问题是说,电赛本身就环境差,靠的是比学校比老师比资源,但问题就是因为环境差,所以你就打算让他更差一些?以毒攻毒是吧?

比赛已经结束,多说已成废话
(完)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023年电赛E题详细讲解 的相关文章

  • [rk3588]多种wifi模组兼容

    硬件部分 M 2接口 使用的wifi模组是PCIE接口的RTL8852BE和SDIO接口的AP6256 软件部分 M 2接口介绍 M 2接口是一种用于连接各种扩展设备的接口标准 它最初设计用于连接固态硬盘 SSD 但也广泛用于连接其他设备
  • spark hadoop环境及运行

    hadoop配置 在Ubuntu20 04里安装Hadoop详细步骤 图文 亲测成功 ubuntu20 04安装hadoop 菜鸡的学习之路的博客 CSDN博客 启动hadoop root ubuntu usr local hadoop s
  • 服务器处理发生异常:java.text.ParseException: Unparseable date

    测试上传报文的时候遇见报错 服务器处理发生异常 java text ParseException Unparseable date 2023 03 03 错误报文 实际需要的报文 错误原因 上传时间字段 与Date字段数据位数不匹配 Jav
  • python贝叶斯网络预测模型_高效灵活的概率建模方法基于Python

    前言 在今天给大家介绍一个研究工具 pomegranate 它比其他软件包更加灵活 更快 直观易用 并且可以在多线程中并行完成 The API 主要模型介绍一般混合模型 隐马尔可夫模型 贝叶斯网络 贝叶斯分类器 所有模型使用做多的方法 mo

随机推荐

  • 迪杰斯特拉(Dijkstra)算法求最短路径

    文章目录 一 最短路径 二 基本思想 三 步骤图解 步骤 S中存放的是已经求得的最短路径的终点的集合 v s集合包含其他点 i代表第i条最短路径 及可能路径走法 邻接矩阵表示弧 一 最短路径 从某顶点 源点 出发到另一顶点 目的地 的路径中
  • 【数据挖掘】数据挖掘比赛项目-kaggle泰坦尼克号

    数据挖掘实战项目 kaggle泰坦尼克号生还者预测 ing kaggle泰坦尼克号生还者预测 泰坦尼克号 从灾难中学习机器 kaggle网站连接 链接 https www kaggle com c titanic 一 实战项目描述 1 项目
  • uniapp判断h5运行环境(微信、pc、移动端)

    isOpenMode 平台 设备和操作系统 var system win false mac false xll false ipad false 检测平台 var p navigator platform system win p ind
  • 文件内存映射mmap解决大文件快速读写问题

    转自 http blog csdn net gulaizi article details 6325726 mmap函数主要用途有三个 1 将一个普通文件映射到内存中 通常在需要对文件进行频繁读写时使用 这样用内存读写取代I O读写 以获得
  • 5、Ubuntu20常用操作_进程管理&重定向和管道&常用命令&网络管理&构建web静态服务器nginx

    进程管理 进程的概念 大家比较熟悉 Windows 下的可执行文件 就是那些扩展名为exe的文件 大家知道 只需要鼠标双击这些程序 就可以运行了 程序运行起来后 我们把这个程序正在运行的 实例 称之为 进程 操作系统对每个进程都分配一个数字
  • 小程序添加本地图片

    写背景图片的时候用了本地的图片 报错说是不能直接使用本地图片 只能使用
  • 为什么振荡电路晶体旁要放22pF电容?

    振荡电路用于实时时钟RTC 对于这种振荡电路只能用32 768KHZ 的晶体 晶体被连接在OSC3 与OSC4 之间而且为了获得稳定的频率必须外加两个带外部电阻的电容以构成振荡电路 32 768KHZ的时钟晶振产生的振荡信号经过石英钟内部分
  • (ps2019)Photoshop 2019 最新破解版下载

    Photoshop CC 2019新增功能 下载地址点我 新功能介绍 https helpx adobe com cn photoshop using whats new html 经过改良设计的内容识别填充 借助 Adobe Sensei
  • 设计简单算数表达式语法分析器算法(LR来实现)

    include
  • 高通平台中gpio简单操作和调试

    做底层驱动免不了gpio打交道 所以对其操作和调试进行了一下简单的梳理 一 gpio的调试方法 在Linux下 通过sysfs 获取gpio状态 也可以操作gpio 1 获取gpio状态 cd sys kernel debug cat gp
  • R语言聚类分析

    本文首发于公众号 医学和生信笔记 完美观看体验请至公众号查看本文 文章目录 系统聚类 层次聚类 Hierarchical clustering 快速聚类 划分聚类 partitioning clustering K means聚类 围绕中心
  • kettle开发-Day40-AI分流之case/switch

    前言 前面我们讲到了很多关于数据流的AI方面的介绍 包括自定义组件和算力提升这块的 今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch Case 当我们的数据来源于类似日志 csv文件等半结构化数据时 我们需要在数据流
  • Node.js安装与配置(详细步骤)

    前言 本篇博文记录了Node js安装与环境变量配置的详细步骤 旨在为将来再次配置Node js时提供指导方法 另外 Node js版本请根据自身系统选择 安装位置 全局模块存放位置和环境变量应根据自身实际情况进行更改 Node js安装与
  • Wordle是优秀的信息可视化吗?如何真正使用Wordle?

    数据可视化之美 Beautiful Visualization Wordle是优秀的信息可视化吗 如果你认为Wordle 是严格意义上的信息可视化工具 它在设计的某些方面存在误导或者干扰用户的潜在可能 有必要指出并加以批判 以下是我认为Wo
  • 迷宫问题-DFS-BFS

    迷宫问题 迷宫问题简介 BFS解决迷宫最短路径问题 DFS记录迷宫路径 DFS解决迷宫所有路径问题 迷宫问题简介 学习过算法程序设计的应该都学习过迷宫这个问题 迷宫问题主要设计的算法就是DFS 深度优先遍历和BFS 广度优先遍历 在一个二维
  • python读取含有多个sheet的xlsx文件,并将解析各个sheet页的数据进行融合

    import pandas as pd from xlrd import open workbook if name main table open workbook 文件名称 xlsx 打开文件 data pd read excel 文件
  • 复制对象时勿忘其每一个成分——条款12

    设计良好之面向对象系统 OO systems 会将对象的内部封装起来 只留两个函数负责对象拷贝 复制 那便是带着适切名称的copy构造函数和copy assignment操作符 我称它们为copying函数 条款5观察到编译器会在必要的时候
  • 杭州端点网络java开发实习生笔试题自我反省

    1 Spring Bean的默认范围是 A Prototype B Singleton C Abstract D Session 2 下列关于一个类的的静态成员的描述中 不正确的是 A 静态成员变量可被该类的所有方法访问 B 该类的静态方法
  • 二叉树的实现及其遍历(Python)

    树是一种基本的 非线性 数据结构 数据结构树分为 根 枝和叶三个部分 节点Node 是组成树的基本部分 每个节点具有名称或 键值 边Edge 边是组成树的另一个基本部分 根Root 树中唯一一个没有入边的节点 路径Path 由边依次连接在一
  • 2023年电赛E题详细讲解

    前言 E题是运动目标控制与自动追踪系统 其实就是一个红色激光追踪绿色激光 本文主要授人以渔 讲解思路 不含代码 建议自己编写 本文旨在和大家探讨一下更好的方案 欢迎讨论 读题 做题肯定是要读题的 本节主要是将一些主要的点 并反推出题人的出题