玄学的胜利–记Botball中国区域赛(第一天)




开学初学校老师通知我们有这样一个比赛,当时我们的社团刚组建了一个学期多一点,一直苦于没有好的项目去做,都是处于自娱自乐做些小东西的情况(之前想过做探空气球,全自动四轴飞行器之类的,不过这样的项目一方面需要耗费大把的时间和精力,另一方面也需要学校的支持,但问题是我们那时已经高二了没有那么多的时间,而且在我们学校学生社团一向不受待见…..)现在终于有机会能和小伙伴们一起完成一个完整的工程。

虽然这样的比赛对于我们的知识储备来说并不成问题,但实际操作起来还是困难得多….从拿到规则和任务起历经近三个月时间,我们逃了各种午自习体育课合唱比赛来准备,终于把这两个机器人给做出来了。而且由于全自主机器人的特性,整个比赛过程更是一波三折,充满了各种各样的冷门及灵异事件(这也就是为什么我们把它叫做玄学比赛)。

P.S.这个比赛今年第一次引入中国,似乎还不是很普及,如果想要了解请访问:

国际组委会:botball.org

中国组委会:botball.itccc.org.cn

图为我们的两台机器人,虽然比赛规则规定每个机器人要有一个名字但一直没起….

2014年任务介绍:

https://v.youku.com/v_show/id_XNjgzNjU0OTcy.html

当天早上,到了海(淀)外(国语实验学校),第一次见识到这个传说中的巨大的校园。

车只能停在校门外边,我们扛着两个装机器人的大整理箱和两大盒子的备用零件还有工具,从海外东门口走到S4楼。顺便一提,前一天晚上收拾东西的时候我们几乎快把整个教室里的工具都给装上了,包括电钻和榔头。我不知道他们想要干什么。

因为当天早上刚下过雨,地上全都是一群一群的小蛤蟆在跳,躲都躲不开……之前听@lyphix 说过海外里有动物园里有山羊什么的,没想到还有黑天鹅…

psb (1)

开幕

开幕式9点开始,我们本来想抢在开幕式之前到赛场调试一下。我们刚把机器人搬到楼上赛场,就有志愿者和裁判告诉我们要清场去参加开幕式,并且电脑和整理箱不能带进赛场,只能带整机……于是我们只好又把设备都搬到楼下去。但实际上比赛规则里根本就没有一个字提到不让带电脑…….

开幕式依然是那种套路化的开幕式,不过唯一有点意思的是一个忘了哪个大学的什么教授讲的创客运动与工程思维提到了什么极限学习,大概意思就是让一群对这一领域一无所知的大学生在84小时内现学现卖做出一整套完整的系统以实现某个功能(比如全自动的食品运输系统)。

开幕式最后一个环节是由ITCCC的主任来宣布比赛开始,她一上台我们都吓尿了,因为早上我们在校园里碰见这人,她问我们说做机器人好玩吗….我们就随口说了句说好玩因为可以逃午自习什么的…….结果没想到竟然是ITCCC的主任。

调试

开幕式结束到午餐之间有一个小时的开放调试时间,我们勤劳的的队友翘掉合影扛着设备直奔二楼,抢到了一个场地。机器人辅助康复任务一共只有两个赛台,但是有10个队伍,每个队伍至少也有6-8个人,这么多人挤在一间普通教室里去抢两个赛台上的四个场地,房间里一度混乱得完全没法专心调试。

对于抓取橙色方块的任务,我们的方案是在启动位置使用ASUS Xtion Pro传感器探测方块与传感器视界边界的距离,并与我们预设的数字进行匹配,从而探测方块在架子上的位置。因此我们需要通过精确的测量得出预设的数值。到了新场地最重要的当然是把数值校准好。大致流程是我把方块在架子上摆好,喊方块的位置,另一位队友在控制器上运行一遍校准程序,告诉我得到的数值,我把数值记下来,在源代码中修改掉原来的数值然后重新编译。

得到一组数之后我正打算改数值重新编译的时候,仔细一看感觉有点不对:因为其中三个数值是类似94,104,108这样的(正常情况下应该得到一串近似于等差数列的数,但我们得到的结果显然误差太大了。)。果断重来一遍,结果这回更崩溃,因为得到的数值和上次的相差不止一点,1号位置第一次校准的数值是84,第二次就变成76了…..

机智的队长提议不改数值直接按照原来的程序执行测试几遍,如果都识别对了就不改动了。我也不敢再改数值了,就照原程序执行了几遍(橙色方块依次放在1-5号位置,因为7个位置上必定有两个橙色方块且位置不相邻,所以6,7号位直接忽略)。除了有两次用来摆正机身的按钮(*)没触发以外其余一切正常,第一次成功夹起橙色方块放进橙色收集器的时候全场都看呆了。(从之后的比赛中能够看出,能完成这一项的队伍并不多。将橙色方块放进橙色回收器中的任务虽然分数很高,但是难度相当大。因此更多的队伍选择专注于小球和Botguy)。

*:如图所示,机身后部的两个数字按钮在倒退时碰到场地边缘时被触发,如果一个按钮被触发则进行相应的姿态调整,两个按钮同时被触发或超时则跳出循环继续执行。(可以看后面的视频)

button

完成之后我们回到准备区开始研究怎么改这个按钮。商讨一番之后我们决定在按钮上套的乐高件A下边再装上一个乐高件B顶住(如图),以使按钮更容易被触发。但事实证明这是这是整场比赛中最错误的决定之一。

002

与此同时抽签的结果出来了,我们淘汰赛初赛将对阵深圳园岭小学,看到这个我们就喜大普奔了。我们本觉得对一群小学生不是分分钟虐菜的节奏,但仔细一想又感觉不对,小学生参加这种面向中学生的比赛,鬼才会相信都是他们自己做出来的。

到了午饭时间志愿者又过来清场,我觉得组委会真是太机智了,因为如果不清场的话大概就不会有人去吃午饭了。因为准备区没人管,外卖又送不过来,加上实在没什么心情吃饭了于是听了一中午的歌。

下午一点又是开放调试,我们占了个场地接着调试,基本每一次都是稳定的175分(衣架x3+橙色方块x1)。其实大机器人已经没什么可调的了,主要目的则是为小机器人的测试占场地,顺便再看看有没有什么严重错误。老师一直跟我们说调好了就回去吧之类的。确实,越到比赛前发现问题越影响心情,甚至会盲目改动以至于越改越残。而且一直占着场地很容易招人反感,而且被人发现结构有违规就惨了(虽然确实没有)。

种子赛

第一场

第一场出师不利,在转第一个弯之后执行校准的时候按钮就没有触发(很诡异,因为处理超时的子程序没有被执行,很可能两个按钮都没有触发。这种算是测试中从来没有遇到过的极端情况),以至于机身一直在后退,直至骑到了边界PVC管上,还好没有掉下台子……0分。

QQ截图20140531011053

回到维修区研究了一下视频,发现问题就出在上午新加的乐高件B上, 乐高件B的底部会顶到台面,有一定几率导致按钮不能触发(如图)。这个隐患在下午近一个小时的调试中都没有被发现,到了正式比赛却在第一场就出现了。

002

更遗憾的是,虽然经过长时间的调试,小机器人的表现仍然不佳,甚至连走直线也无法完成,(*)并且很容易干扰大机器人。我们决定后面的比赛小机器人不上场。如果大机器人的175分的水平能够完全地发挥出来,已经是很高的分数了。我觉得王和吴也挺惨的,辛辛苦苦调试那么长时间,正式比赛却只上了一场。

*:小机器人通常的设计是将轮子直接固定在360度舵机上。虽然会有偏差但是并不大。我们为了追求速度(因为小机器人的主要任务是抢Botguy,并且Botguy往往是双方争夺的重点)使用了大约1.3的加速齿轮。事实证明这个决定是十分错误的,因为这会导致小机器人的行走极其不稳定。也就直接导致两个队员在实现走直线上浪费了大量时间。

然后在楼上录像的队友下来了,告诉我们除了小学生得了100分,另外两个队伍得到几十分以外,其他队伍全是0分。

原来我们也不是一个人。

第二场

第二场也很惨,虽然前面一切正常,但是在挂衣架的时候夹子竟然没!打!开!!!也就导致后面没法夹起橙色方块,又是一个0分。

QQ截图20140531011123

原因在于,在前一天改装夹子的时候由于把夹子加长了,(这相当于增加了对于方块位置识别的容错能力)以至于夹子无法直接夹住衣架,所以用了一根横杆来挂住衣架(如图)。

rbclaw

问题就出在这里,我为了防止在机器人移动过程中横杆滑落,在横杆两头上装了两个塑胶套。另外我在打开夹子的子程序里用了for循环,使控制夹子的舵机慢慢打开而不是直接转到指定的数值(防止损坏夹子的机械结构)。正是由于横杆两端的塑胶套卡住了夹子,加上夹子本身的打开速度太慢,使夹子无法正常打开。

其实这种问题我们之前已经考虑到了,但是在测试中一直没有出现过。

两场0分下来全队都快崩溃了……我们虽然坚信比赛前做改动只会越改越坏,但这回实在坐不住了。我改小了控制打开夹子的子程序的for循环中的延时,使夹子打开的速度更快,然后把横杆两端的塑胶套去掉了。把程序编译进控制器,没有报错。

第三场

才过了十几分钟志愿者就过来叫我们去比赛了(说好的40分钟准备时间呢?)。到了场上把机器人摆好开始计时90秒准备,等我运行程序的时候,点击RUN按钮,但是控制器压根就没反应….

我整个人是懵逼的。因为我在之前调试过程中遇到过这样的情况,解决方法只有重新编译程序,但是电脑是不让带进赛场的。这种情况本应该有机会补救,因为规则里规定每个队伍在整个比赛期间可以使用暂停卡获得一次额外的3分钟准备时间,这三分钟可以花在维修区或赛场。但问题是,

国内区域赛压根就没有暂停卡。

队长倒是很淡定,让我重启控制器,还提醒我开机的时候拔掉Xtion 传感器的USB线….等待控制器重启的过程中已经超过了90秒的准备时间,我们被判犯规,计时重置。于是我们又get了90秒的准备时间。

重启完成,不出所料,仍然没法运行。还好前一天晚上测试的时候有一个备用的程序,于是我运行了备用程序。

挂衣架正常,75分到手。橙色方块虽然识别对了位置,但吊臂竟然偏右了,没夹到。虽然夹子加长了,但是仍然没法应付这么大的误差。

QQ截图20140531010849


用备用程序得到75分,本来已经很不错了,但下场来一检查发现,橙色方块之所以识别对了却夹到,是因为在前一场比赛里吊臂被撞的向右歪了一些,但是我们都在挖空心思去解决夹子的故障,于是吊臂的问题就被完美的忽略掉了…….

总之,三场种子赛失利的原因归结起来就是三个字:手太贱。面对在场上出现的小概率问题,正确的处理方法是无视它,因为它们出现的概率极小以至于不太可能复现。而我们却在挖空心思改改改,结果越改越坏。

一连三场发挥失常,回到维修区所有队员的脸色都跟吃了翔似的。我吃了刚才的教训,打死也不敢再改程序了。我试着优化了赛前准备工作的流程,把离手前的检查单上不必要的步骤全删掉了,把所有准备工作(调整吊臂高度,舵机数值,检查传感器等等)都放在准备区完成,上场后直接把机身摆正→挂衣架→启动→离手。我把机器人调整到最佳状态,保持控制器和Create开机并插上电源线,然后带上耳机听歌,坐等一会去虐小学生。

双败淘汰赛

第一场

到了4:30志愿者准时来叫我们去比赛了,整个赛场乌泱乌泱的全是小学生和家长。第一场比赛很顺利,程序完美运行得到了175分,还给对方送了3分…..

QQ截图20140531011821

终于正常发挥了一次,整个人都喜大普奔了。我下来之后看了回放,发现小学生之所以能够在整个比赛中碾压全国的高中队伍,就是在于稳定。我们在调试过程中,王和吴他们纠结了很久怎么让小机器人把botguy放在蓝色方块上并且保证不掉下来,所处的位置还需要保证不影响另一台机器人的运行。事实上在测试过程中我们从来没有能够达到这样的程度。在测试中成功率都很低的方案,到了赛场上多半会一塌糊涂。(比如我们的小机器人一直没有解决走直线的问题)小学生的实现则简单很多:

灯亮,小机器人离开启动区,直走,找黑线,转弯,一边的结构框住蓝色方块同时另一边的夹子夹住botguy,把蓝色方块推到精细恢复区,夹子转不到180度,把botguy放在方块上,并保持不动。这时候另一台机器人(使用Create的那台)离开启动区,把三个衣架挂在下层。正常情况下可以稳拿115分

然而就是这样弱智至极的方案和设计,虐菜了所有的高中队伍。

QQ截图20140531011523


这样的方案其实在淘汰赛中也是有些漏洞的。因为他们在夹botguy的时候太过求稳,速度很慢,而botguy则是比赛双方竞争的关键。只要另一方抢先一步拿到了botguy,甚至没有拿到只是将它推倒或者撞离原本的位置,那么小学生就歇菜了。因此,我们只需要一个能够走直线的小机器人,我们就可以让他拿不到botguy。这样一来我们这半场只需要挂上三个衣架,那么我们就赢了。但遗憾的是,由于终于刚才的胜利,大家都太过兴奋以至于谁也没有发现这一点。

第二场

我们成功地挂上了衣架(75),但是在夹橙色方块的时候玄学问题又出现了….深度传感器识别错了方块的位置,识别到了靠右边的方块,在机械结构也没有问题的情况下,理论上来说应该是可以正常夹住的,但它就是没有夹到。我只能把它归结于我们对于太靠右的方块的数值测定得不够准确。小学生的表现依然完美,拿到了100多分。

QQ截图20140531011351

下场来大家都慌了,因为下一场就是决定胜负的一场了。

这时候不知道谁提出来了使用小机器人去干扰他们拿botguy。于是我们把我们学校初中组当天比完赛的小机器人拆到只剩两个轮子和一个万向轮。王用10分钟的时间赶出了一个走直线的程序(包括启动灯和计时停机)。方案则是将小机器人对准Botguy,在灯亮之后直接冲向Botguy并撞倒它。可恶的是正当我们改装小机器人忙的手忙脚乱的时候志愿者就叫我们去比赛了。然后邢老师告诉我们说他们去和裁判说点废话拖住时间,让我们赶紧改……

灯亮,最担心的事还是发生了。小机器人的轮子前面没有挡板,轮子被蓝色方块卡住,而且正好挡在了大机器人的路径上。于是两台机器人和蓝色方块卡成一团,衣架也没有挂上。小学生看到这状况高兴地不得了,一个劲地鼓掌喝倒彩,更可恶的是小学生不懂事也就算了,家长还都跟着一起喝倒彩,裁判一直在喊安静试图维持秩序,但是根本维持不住。

QQ截图20140531011226

但是玄学问题又出现了,不过这回是出现在对方身上。大概因为botguy的摆放并不是完全平衡的,他们的小机器人把botguy碰倒了,没有拿到,还给我们送了5分。但是他们仍然成功挂上了衣架,以15:5(大约)获胜。

第一天比赛各种点背,而且每个人都犯了些或大或小的错误,其中有很多都是很低级,完全可以避免的错误。还因为各种破事吵了几架。还好大家最后谁都没埋怨谁,一致地把失败的原因都归结到了小学生身上……….

因为在双败淘汰赛中被淘汰的队伍第二天可以参加联队赛,按照总分冠亚季,种子、淘汰、联队冠军的晋级规则来看,只要我们在联队赛中发挥好,仍然有出线的可能。
第二天已更新:https://nyan.im/posts/749.html
团队中的小伙伴们
队长:齐宇
程序猿:我、王子凯、 @想咬人的吐槽星人XANA @Lambdalex
搭建:齐宇、谭天皓
文档记录:刘子恒、于涵




Posted

in

by

Comments

3 responses to “玄学的胜利–记Botball中国区域赛(第一天)”

  1. Kagami Avatar

    这东西感觉比我玩的单片机高端多了。。

    1. Frank Avatar

      哈哈,其实设备没什么高级的,主要是比赛本身比较有意思。我们队伍里的人基本也都是从arduino或者树莓派之类的入的坑….

      1. Kagami Avatar

        原来是这样(‘-‘*)

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.