线上比赛中关于视觉AI组与信标组补充说明
简 介: 本文给出了在第十六届全国大学生智能车竞赛中,线上比赛地区(广东省、山东省)AI视觉组以及信标组中补充的信息。
关键词
: 智能车竞赛,AI视觉组,信标组
§01 AI视觉组
根据 第十六届全国大学生智能车竞赛竞速组-室内视觉组补充说明 中对于室内智慧视觉AI组的要求,需要在比赛赛道旁边部署以下用于视觉识别判断的标靶:
- 视觉标靶:包括数字、动物、水果;
- AprilTag:用在动物、水果标靶区域;
一、比赛图标
下面是Apriltag以及相应的图表示例:
▲ 图1.1 Apriltag图片
▲ 图1.2 水果图片
▲ 图1.3 动物图片
▲ 图1.4 数字图表
数字图表用在三岔路口,竞赛车模根据识别数字确定第一次行进是左行还是右行。
- 偶数: (0,2,4,6,8) 第一次入三岔路口选择左侧路口;
- 奇数:(1,3,5,7,9) 第一次入三岔路口选择右侧路口;
二、靶标位置与比赛方向
下图给出了比赛中数字、动物、水果靶标部署的位置。请注意,安装公布的规则,靶标部署在Apriltag的左侧和右侧是根据Apriltag的数字对应的是偶数还是奇数来确定的。
- 偶数:在Apriltag左侧放置靶标;
- 奇数:在Apriltag右侧防止靶标;
因此根据下图所示的车模运行方向以及动物和水果靶标的位置部署,在水果靶标出放置奇数Apriltag,在动物靶标出放置偶数Apriltag。
▲ 图2.1 靶标位置以及比赛车模运行方向
如果安排决赛,那么决赛场地可以沿用单个预赛比赛场地,也可以将比赛场地有两个预赛场地连接而成。此时靶标的位置仍然只在其中一个场地进行部署。
§02 节能信标
节能信标组的比赛,除了需要按照统一的信标灯的位置和环境铺设比赛场地之外,对于比赛过程中亮灯的顺序需要进行统一。
为了避免参赛队伍利用记忆亮灯顺序来获益,在比赛过程中,准备了八条不同的亮灯顺序,它们具有相同的路径长度,比赛过程中,随机选择不同的亮灯顺序进行比赛。
一、信标场地部署
下图给出了信标比赛场地(5×5米)中四个信标所在的大体位置。比赛过程中,这四个信标灯的位置可以做相对的移动。只要维持整个组别比赛过程中对于所有参赛队伍是相同的即可。
▲ 图2.1 信标灯布置示意图以及编号
二、比赛亮灯顺序
1、预赛亮灯顺序
亮灯20次,八个亮灯顺序为:
[1, 2, 1, 2, 3, 2, 4, 2, 3, 2, 3, 1, 2, 1, 3, 2, 4, 3, 2, 3]
[1, 2, 1, 2, 3, 2, 4, 2, 3, 4, 3, 1, 2, 1, 3, 2, 4, 3, 2, 3]
[1, 2, 1, 2, 3, 2, 4, 3, 2, 4, 3, 1, 2, 1, 3, 2, 4, 3, 2, 3]
[1, 2, 1, 2, 3, 2, 4, 2, 3, 2, 3, 1, 2, 1, 3, 4, 2, 3, 2, 3]
[1, 2, 1, 2, 3, 4, 2, 3, 2, 4, 3, 1, 2, 1, 3, 2, 4, 3, 2, 3]
[1, 2, 1, 2, 3, 4, 2, 3, 2, 4, 3, 1, 2, 3, 1, 2, 4, 3, 4, 3]
[1, 2, 1, 2, 3, 2, 4, 2, 3, 4, 3, 1, 2, 1, 3, 4, 2, 3, 4, 3]
[1, 2, 1, 2, 3, 2, 4, 2, 3, 4, 3, 1, 2, 1, 3, 2, 4, 3, 2, 3]
三、如何设置亮灯顺序?
在比赛系统的“设置界面”中,设置亮灯顺序。
首先,信标组应该选择“信标组比赛”的选项。
然后,在“信标组亮灯顺序” 依次输入前面给定的亮度顺序。注意不需要输入 方括号[]。 然后点击“添加”按钮,可以将亮灯顺序降价到下面的列表框中。
通过“清空”、“删除”可以将输入错的,或者旧的路径取消。
▲ 图2.2 设置信标灯亮灯顺序的界面
在比赛的时候, 可以通过以下三个方法来选择一条路径:
- 直接使用鼠标双击路径列表中的路径;
- 使用鼠标选中某一路径,然后点击“选择”按钮;
- 点击 “随机选择”可以由计算机随机选择一条路径。
最后点击“应用”,返回前面比赛界面,可以进行信标组的比赛了。
§03 亮灯顺序
对于第二个问题,如何确定一组亮灯顺序,使得它们对应的车模行进距离这一指标都是相同的呢?
一、搜索方法
由于现在场内只有四个信标灯,所以可以通过穷举方法来对于所有满足亮灯个数的要求下的路径计算对应的距离,然后进行排序,找到其中的距离相同的路径。
1、亮灯个数与路径个数
加入,所有的路径都从1号灯开始,然后后面亮 N 个灯,由于不允许一个等连续点亮,所以每一次都有 3个选择,所以总共的路径个数为:3N3^N3N 个。
- 亮灯个数对应路径种类:
-
N=2
:9
N=5
:243
N=10
:59049
N=15
:14348907
N=20
:3486784401
对于亮灯个数超过10以上的路径,对应的种类就非常多了。可以采用分段进行组合的方式来设计亮灯路径。
2、计算所有10之内的路径
将所有亮灯个数10以内的路径进行穷举并进行排序,其它亮灯个数的路径则有这些10之内的路径进行串联组合。为了能够进行串联组合,因此,需要规定每一组路径起始与结束灯的位置。下面假设每个路径的起始与结束的信号灯都是1号等。
▲ 图3.1 亮灯数量为5对应的路径长度分布
▲ 图3.2 亮灯数量为10对应的路径长度分布
▲ 图3.3 亮灯数量为12对应的路径长度分布
3、搜索程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2021-07-13
#
# Note:
#============================================================from headm import *lightpos = [(2.5, 0.65), (0.65, 2.5), (2.5, 3.75), (4.35, 2.5)]#------------------------------------------------------------
def path2len(pathid):length = 0path = [lightpos[i] for i in pathid if i >= 0 and i < 4]for x1,x2 in zip(path[0:-1], path[1:]):length += sum((array(x1) - array(x2))**2)**0.5return length#------------------------------------------------------------
allpath = []
allpathlen = []
def searchpath(N, pathid):if len(pathid) == 0:pathid.append(0)lastid = pathid[-1]for id in range(4):if id != lastid:pathcopy = pathid.copy()pathcopy.append(id)if N == 1:pathcopy.append(0)allpath.append(pathcopy)allpathlen.append(path2len(pathcopy))else: searchpath(N-1, pathcopy)#------------------------------------------------------------
N = 12
searchpath(N,[])
resultpath = list(zip(allpathlen, allpath))
resultpath.sort()sortlen = [s[0] for s in resultpath]
sortpath = [s[1] for s in resultpath]tspsave('path%d'%N, length=sortlen, path=sortpath)#printf(sortlen)#plt.hist(allpathlen, 20)
#plt.xlabel("Length")
#plt.ylabel("Frequency")
#plt.grid(True)
#plt.tight_layout()
#plt.show()printf('\a')#------------------------------------------------------------#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
二、路径组合
1、长度中位数路径
根据前面进行路径搜索,可以看到路径长度在中位数的比例最多。
亮灯个数 | 中位数长度 | 路径个数 |
---|---|---|
5 | 13.1516 | 15 |
6 | 15.898 | 8 |
7 | 18.63 | 10 |
8 | 21.347 | 120 |
9 | 24.063 | 88 |
10 | 26.796 | 230 |
11 | 29.512 | 500 |
12 | 32.445 | 416 |
13 | 35.280 | 170 |
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2021-07-13
#
# Note:
#============================================================from headm import *length0, path0 = tspload('path4', 'length', 'path')
length1, path1 = tspload('path5', 'length', 'path')
length2, path2 = tspload('path6', 'length', 'path')
length3, path3 = tspload('path7', 'length', 'path')
length4, path4 = tspload('path8', 'length', 'path')
length5, path5 = tspload('path9', 'length', 'path')
length6, path6 = tspload('path10', 'length', 'path')
length7, path7 = tspload('path11', 'length', 'path')
length8, path8 = tspload('path12', 'length', 'path')def midpath(l, p):midlength = l[len(l) // 2]midpath = p[l==midlength]return midpath, midlengthmp,ml = midpath(length8, path8)printf(ml, len(mp))#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
2、不同路径组合
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2021-07-13
#
# Note:
#============================================================from headm import *
import randomlength0, path0 = tspload('path4', 'length', 'path')
length1, path1 = tspload('path5', 'length', 'path')
length2, path2 = tspload('path6', 'length', 'path')
length3, path3 = tspload('path7', 'length', 'path')
length4, path4 = tspload('path8', 'length', 'path')
length5, path5 = tspload('path9', 'length', 'path')
length6, path6 = tspload('path10', 'length', 'path')
length7, path7 = tspload('path11', 'length', 'path')
length8, path8 = tspload('path12', 'length', 'path')def midpath(l, p):midlength = l[len(l) // 2]midpath = p[l==midlength]return midpath, midlength#------------------------------------------------------------
lightpos = [(2.5, 0.65), (0.65, 2.5), (2.5, 3.75), (4.35, 2.5)]#------------------------------------------------------------
def path2len(pathid):length = 0path = [lightpos[i] for i in pathid if i >= 0 and i < 4]for x1,x2 in zip(path[0:-1], path[1:]):length += sum((array(x1) - array(x2))**2)**0.5return length#------------------------------------------------------------
def pathserial(pathid):path1s = []path2s = []path3s = []path4s = []path5s = []path6s = []path7s = []path8s = []lpdim = ((length0, path0), (length1, path1),(length2, path2), (length3, path3),(length4, path4), (length5, path5),(length6, path6), (length7, path7),(length8, path8))for id in pathid:mp, ml = midpath(lpdim[id][0], lpdim[id][1])random.shuffle(mp)path1s.extend(mp[0][:-1])path2s.extend(mp[1][:-1])path3s.extend(mp[2][:-1])path4s.extend(mp[3][:-1])path5s.extend(mp[4][:-1])path6s.extend(mp[5][:-1])path7s.extend(mp[6][:-1])path8s.extend(mp[7][:-1])return (path1s, path2s, path3s, path4s,path5s, path6s, path7s, path8s)path = pathserial((7, 8))
pathlen = [path2len(p) for p in path]printf(shape(path))
for p in path:printf(p)#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
■ 相关文献链接:
- 第十六届全国大学生智能车竞赛竞速组-室内视觉组补充说明
● 相关图表链接:
- 图1.1 Apriltag图片
- 图1.2 水果图片
- 图1.3 动物图片
- 图1.4 数字图表
- 图2.1 靶标位置以及比赛车模运行方向
- 图2.1 信标灯布置示意图以及编号
- 图2.2 设置信标灯亮灯顺序的界面
- 图3.1 亮灯数量为5对应的路径长度分布
- 图3.2 亮灯数量为10对应的路径长度分布
- 图3.3 亮灯数量为12对应的路径长度分布
- 表3-1 不同亮灯数量对应的中位数路径长度和路径个数
线上比赛中关于视觉AI组与信标组补充说明相关推荐
- 第十六届全国大学生广东赛区线上比赛流程规范
简 介: 本文给出了广东赛区线上比赛的流程规范. 关键词: 智能车竞赛,线上比赛 §01 背景介绍 在2021年举办的第十六届全国大学生智能车竞赛 暑期线下比赛,根据新冠疫情防控形势,对 广东省赛 ...
- 第十七届全国大学生智能车竞赛线上比赛赛道设计
简 介: 本文给出了第十七届全国大学生智能车竞赛线上比赛赛道部署草案.正式文档将会在竞赛网站进行公布. 关键词: 线上比赛,赛道设计,第十七届 #mermaid-svg-O2kO7tZ5dSyEz65 ...
- 线上比赛投诉:同一赛点两支队伍比赛车模是否相同?
简 介: 本文对于关于第十六届全国大学生智能车竞赛线上比赛中投诉车模问题进行分析,给出了分析的初步结论. 关键词: 智能车竞赛,线上比赛,举报问题 #mermaid-svg-ESb9LlYzGB3Ar ...
- 线上比赛无线充电组仲裁申请以及检查结果
简 介: 本文收录了第十七届全国大学智能车竞赛线上比赛之后,参赛队员对于线上比赛无线充电组队伍的仲裁申请以及线上组委会进行的回复.看文资料之后,可以理解这似乎是"疑邻盗斧.一场闹剧" ...
- 第十五届全国大学生智能汽车竞赛ROS组车模线上比赛
作者:卓晴博士,清华大学自动化系 更新时间:2020-08-04 Tuesday ROS车模线上比赛 1.成功的示例 (1) 示例1:浙江工业大学参赛队伍 ![](https://img-blog.c ...
- 第十六届全国大学生智能车东北赛区线上比赛时间与直播信息
简 介: 可惜了,沈阳航空航天大学组委会精心准备了漂亮的线下比赛场地,结果被疫情无情的阻碍了,大部分参加2021年第十六届智能车竞赛东北赛区比赛的队伍都无缘进入这壮观的比赛场地.在这里我们也只能祝愿这 ...
- 第十六届智能车竞赛线上比赛赛道审核 - 东北赛区第二批次
简 介: 参加第十六届全国大学生智能车线上全国总决赛赛道设计与审核内容. 关键词: 智能车竞赛,线上比赛,赛道审核 §01 赛道审核 一.北华大学-更新全向组 1.基础四轮 赛道情况: ⑴赛道长度:4 ...
- 第十六届智能车竞赛总决赛线上比赛赛道设计
简 介: 根据2021年第十六届全国大学生智能汽车竞赛组委会商议确定使用线上比赛的方式完成比赛的后半程,全国总决赛.这种方式与以前的线上比赛相比具有相同性,也有其特殊性.需要在线上比赛的赛道设计以及比 ...
- 第十六届全国大学生智能车竞赛线上比赛(广东+西南科技大学)成绩排名与获奖信息
§01 成绩与奖项 下面是第十六届全国大学生智能车竞赛线上比赛成绩与奖项设置.线上比赛的队伍包括有 广东省参赛队 与 西南科技大学 . 线上比赛奖项设置比例如下: 一等奖:参赛队伍20% 二等 ...
最新文章
- 谷歌、OpenAI 做了一个“魔性AI显微镜”,打算撬开人工智能黑箱
- python【力扣LeetCode算法题库】169-多数元素
- 牛客IOI周赛19-普及组 B.小y的序列
- 关于mysql的error-based injection payload
- 数据结构——二叉树的最长路径问题
- C# devexpress gridcontrol 分页 控件制作
- android uri跳转导航,android:scheme 通过uri跳转到APP应用指定Activity
- ***git自动化部署总结
- sort 升序还是降序?priority_queue 大根堆还是小根堆?
- MATLAB最简单教程
- 原生JS实现上传图片预览效果
- Zigbee物联网应用
- python运算符重载、并且编写复数类的加减乘除_编程基础篇:定义一个复数类Complex,重载运算符“+,-,*,/”,使之能用于复数的加减乘除.....出现的问题及代码...
- (转)格拉布斯准则(Grubbs Criterion)处理数据异常
- unity剩余高度自适应实现办法
- 拿来即用的网页倒计时组件
- Oracle 中ORA-28000: the account is locked解决办法
- Fatal message conversion error; message rejected; it will be dropped or routed to
- Win10 使用ShareMouse与Mac共享鼠标键盘
- 浅谈显 ipqq 发展历程