简 介: 本文给出了在第十六届全国大学生智能车竞赛中,关于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 靶标位置以及比赛车模运行方向

如果安排决赛,那么决赛场地可以沿用单个预赛比赛场地,也可以将比赛场地有两个预赛场地连接而成。此时靶标的位置仍然只在其中一个场地进行部署。

▲ 图2.2 在决赛场地内靶标只在其中一个进行部署

§02 节能信标


节能信标组的比赛,除了需要按照统一的信标灯的位置和环境铺设比赛场地之外,对于比赛过程中亮灯的顺序需要进行统一。

为了避免参赛队伍利用记忆亮灯顺序来获益,在比赛过程中,准备了八条不同的亮灯顺序,它们具有相同的路径长度,比赛过程中,随机选择不同的亮灯顺序进行比赛。

一、信标场地部署

下图给出了信标比赛场地(5×5米)中四个信标所在的大体位置。比赛过程中,这四个信标灯的位置可以做相对的移动。只要维持整个组别比赛过程中对于所有参赛队伍是相同的即可。

▲ 图2.1 信标灯布置示意图以及编号

二、比赛亮灯顺序

1、预赛亮灯顺序

亮灯16次,八个陆军顺序为:

[0, 1, 0, 2, 1, 2, 3, 1, 0, 1, 0, 2, 1, 3, 2, 1, 2]
[0, 1, 0, 2, 1, 2, 3, 1, 0, 1, 0, 2, 1, 3, 2, 1, 2]
[0, 1, 0, 2, 1, 3, 2, 3, 0, 1, 0, 2, 3, 1, 2, 1, 2]
[0, 1, 0, 2, 1, 3, 2, 3, 0, 1, 0, 2, 3, 1, 2, 1, 2]
[0, 1, 0, 2, 1, 2, 3, 1, 0, 1, 0, 2, 3, 1, 2, 1, 2]
[0, 1, 0, 2, 3, 1, 2, 1, 0, 1, 0, 2, 1, 3, 2, 1, 2]
[0, 1, 0, 2, 3, 1, 2, 3, 0, 1, 2, 0, 1, 3, 2, 3, 2]
[0, 1, 0, 2, 3, 1, 2, 3, 0, 1, 2, 0, 3, 1, 2, 3, 2]

2、决赛亮灯顺序

亮灯25次:

[0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 2, 0, 1, 2, 0, 2, 0, 2, 0, 3, 0, 3, 2, 1]
[0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 2, 0, 1, 2, 0, 2, 0, 2, 0, 3, 0, 3, 2, 1]
[0, 1, 2, 1, 2, 1, 2, 3, 1, 3, 1, 2, 0, 1, 2, 0, 2, 0, 2, 0, 3, 0, 3, 2, 3]
[0, 1, 2, 1, 2, 1, 2, 3, 1, 3, 1, 2, 0, 1, 2, 0, 2, 0, 2, 0, 3, 0, 3, 2, 1]
[0, 1, 2, 1, 2, 1, 3, 1, 2, 1, 3, 2, 0, 1, 2, 0, 2, 0, 2, 1, 0, 1, 0, 2, 1]
[0, 1, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 0, 1, 2, 0, 2, 0, 2, 0, 3, 0, 3, 2, 1]
[0, 1, 2, 1, 2, 1, 3, 1, 3, 2, 1, 2, 0, 1, 2, 0, 2, 0, 2, 1, 0, 1, 0, 2, 1]
[0, 1, 2, 1, 2, 1, 3, 1, 3, 2, 1, 2, 0, 1, 2, 0, 2, 0, 2, 1, 0, 1, 0, 1, 2]

三、如何设置亮灯顺序?

在比赛系统的“设置界面”中,设置亮灯顺序。

首先,信标组应该选择“信标组比赛”的选项。

然后,在“信标组亮灯顺序” 依次输入前面给定的亮度顺序。注意不需要输入 方括号[]。 然后点击“添加”按钮,可以将亮灯顺序降价到下面的列表框中。

通过“清空”、“删除”可以将输入错的,或者旧的路径取消。

▲ 图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、长度中位数路径

根据前面进行路径搜索,可以看到路径长度在中位数的比例最多。

【表3-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. 第十六届智能车竞赛浙江赛区比赛胜利结束

      为了适应防疫要求,2021年第十六届智能车竞赛浙江赛区选拔赛经过一天的预赛和半天的决赛,共有来自36所高校的221支队伍参加了浙江赛区共八个组别的比赛.相比于往年比赛流程,现场比赛减少了一天的调试 ...

  2. 关于第十六届智能车竞赛全国总决赛比赛意见

    简 介: 第十六届全国大学生全国大学生智能车竞赛在进行完毕分赛区比赛之后,时间到了2021年8月份,现在全国疫情出现了反复使得全国总决赛的承办出现了困难.为此,参加比赛的队伍在TSINGHUAZHUO ...

  3. 第十六届智能车竞赛线上比赛赛道审核 - 东北赛区第二批次

    简 介: 参加第十六届全国大学生智能车线上全国总决赛赛道设计与审核内容. 关键词: 智能车竞赛,线上比赛,赛道审核 §01 赛道审核 一.北华大学-更新全向组 1.基础四轮 赛道情况: ⑴赛道长度:4 ...

  4. 第十六届智能车竞赛创意组比赛-筹划初稿

    ▌01 最初稿件收集 1.百度 (1) 所在的微信群 2021年智能车竞赛×百度(8) 2.迅飞 (1) 所在的微信群 3.航天三院 (1) 所在的微信群 余涛 ▌02 第一版本审议情况 1.三个赛题 ...

  5. 第十六届智能车竞赛全国总决赛究竟该怎么举办讨论中的“混沌”现象

    简 介: 汇总有对全国总决赛比赛意见推文之后,将在推文"三思而后行"之后的留言进行汇总分析.可以看到现在正值参赛同学等待总决赛名单公布百无聊赖之际,大家在利益攸关.意见远离平衡态下 ...

  6. 第十六届智能车竞赛安徽赛区成绩与奖项公示

    §01 成绩与奖项 一.基础四轮组 序号 学校名称 队伍名称 预赛成绩 决赛成绩 奖项 1 安徽中医药大学 狂躁呼吸 26.805 55.836 一等奖(第一名) 2 安徽中医药大学 汪汪 27.34 ...

  7. 第十六届智能车竞赛总决赛线上比赛赛道设计

    简 介: 根据2021年第十六届全国大学生智能汽车竞赛组委会商议确定使用线上比赛的方式完成比赛的后半程,全国总决赛.这种方式与以前的线上比赛相比具有相同性,也有其特殊性.需要在线上比赛的赛道设计以及比 ...

  8. 第十六届智能车竞赛广东省线上比赛第二波来袭

    简 介: 第十六届智能车竞赛广东赛区第二波比赛信息. 关键词: 智能车竞赛,第二波比赛 §01 如何观看? 第十六届智能车竞赛广东省参赛队伍将 分成四个高校组合比赛点 进行比赛.其中 五邑大学高校组合 ...

  9. 2021年第十六届智能车竞赛线上决赛之前大家的提问

    简 介: 本文收集了参加线上比赛的同学们所提出的问题. 关键词: 智能车竞赛,线上总决赛 §01 比赛过程 一.单车比赛 卓大大,单车慢赛道对路径上有要求吗? 1.假如铺设一个圆形,是只要绕赛道外侧重 ...

最新文章

  1. git push 操作代码回退
  2. [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker
  3. 【linux】学习6
  4. 下一代软件工程的思考与点滴实践
  5. mysql的索引缺点_「缺点有哪些」数据库索引是什么 有什么优缺点 - seo实验室
  6. Python Imaging Library: ImageEnhance Module(图像增强模块)
  7. Clipboard.js – 现代方式实现复制文本到剪贴板
  8. try{}catch(){}finally{}执行顺序和return结果顺序的理解03
  9. 数据库系统load飙高问题解决思路(转)
  10. 如何理解原码一位乘法的计算过程
  11. 阿里巴巴年度技术总结 - 人工智能在搜索的应用和实践
  12. php 生成指定长度字符串
  13. Selenium学习 - 简介
  14. 使用Selenium爬取网易云音乐的所有排行榜歌曲
  15. xp电脑自动锁定计算机,WinXP系统如何设置电脑自动关机?
  16. 毕业两年,一年工作经验,一个月拿下腾讯T4 offer
  17. 自己的神明——你只能成为自己
  18. 基于eNSP加防火墙的千人中型校园/企业网络规划与设计(一步一步走)
  19. 英文名字大全(女篇)
  20. 如何设计标签系统?如果构建用户画像

热门文章

  1. 高性能集群软件Keepalived的介绍以及安装与配置
  2. 梭子鱼推出Microsoft Office 365 邮件威胁扫描服务
  3. [转]《JAVA与模式》之责任链模式
  4. AIX如何查看文件系统分布在哪个物理磁盘上
  5. Linux下安装Tomcat启动报错
  6. 【转载】Linux常用命令1
  7. SQL--(MyBatis 实战)
  8. 【转载】解决refreshing gradle project 和Building gradle project info 一直卡住\速度慢
  9. Linux shell编程学习笔记-----第六章变量和引用
  10. Android资源文件