绿盟科技格物实验室的“阿凡达”团队,通过远程操纵机器人进入目标区域,成功关闭了激光控制电源,更是巧妙的利用氢气球遮挡了监控摄像头并完成安装窃听器任务,以 95 的总分获得亚军。他们“复活”了自己制作的机器人,用生动的文字记录下备战的点滴。现在,让我们一起来走进“机器人之心”。
一阵电流经过,我睁开了眼睛恢复了意识,发现此时已经和两个伙伴身处一个大纸箱中,纸箱的角落里亮着的手电能让我们看到彼此。重铠马紧挨在我左边,他身强体壮,履带车底座上载有一只机械臂,紧随身后的是魅影,他是个矮小但灵巧的家伙,他的右手滚轮上还牵着3只气球。等等,看到这样的外表描述,你们大概也对我们的身份有所怀疑了吧,是的,我们仨是机器人,而且是即将要执行秘密任务的机器特工。秘密任务即将揭晓,我们也蓄势待发,箱外刚传来比赛开始的口令,几乎同时,我们都各自收到了行动指令,前进前进。。。奇怪,怎么没能移动半步,是控制信号被干扰?还是电量不足?种种疑虑瞬间升起心中猛然一怔,突然惊醒。原来刚才是场梦,梦中竟然又回到了我们比赛时的场景。此时环顾四周,是堆满了工具的小工作台,重铠马和魅影在桌边静静休息,我顿时长舒一口气,也只有在这顺利完成比赛后安心的夜晚,才有这样宁静的时刻啊。惬意的趴在工作台上,接着刚才的比赛梦境,我的思绪飘到了备赛的那段时光。
那是2018年9月30日,我之所以到现在还清楚的记得这个日期,是因为那天夜里,我见到了我机器之父马良少有的焦虑紧张。他眉头深锁一边反复刷新着GeekPwn官网的一个报名页面,一边时不时向我这边投来目光,表情复杂,焦虑中有时却又流露出些许希望。别人或许看不懂,但目睹过他2016极棒机器人挑战失败的我却非常能够理解他心中的矛盾。他焦虑,因为此时的我还只有一个不完整的车体,虽然2016年12月他为我重新设计了车体控制板以及遥控器电路板,但是功能离完成今年机器特工挑战任务还相差甚远。他又有希望,因为今年新一轮比赛的开启又给了他圆梦的机会,这是他的一个梦想,一个如果不再去尝试恐怕会要终身遗憾的梦想。不知道这些矛盾在他脑中经历了怎样的一场大战,突然他眉头一展,那时离报名截止日期还有30 分钟,他做出了一个重大的决定,参赛!一旦决定远行,便只顾风雨兼程。
Robot马这次下定了决心,if公司支持,就和同事组队参赛;else就自费参赛(对了,“robot马”是他在2016年比赛失利后获得的一个尴尬绰号)。10月8号,他和领导沟通参赛想法,领导认为公司今后要在机器人方面开展更多的业务,非常支持搞机器特工项目。于是,在10月9日他便开始在淘宝下单购买器材,首先是三套图传,吸取上次参赛信号被干扰的经验,这次购买的是大功率图传一体接收机,一旦在现场遇到干扰,能快速修改频段,而且这次我好像还会有其他机器兄弟,满心期待。10月11号,robot马在公司召集到其他两位志同道合者,分别是陈杰和潘雨晨。这仨人集结后,阿凡达队正式成立。传说集齐龙珠能够召唤神龙,在离比赛还有不到两周时间才集齐的这三人是否能够召唤奇迹,那时谁都不知道,不过这三人满满的干劲倒也让希望逐渐显现。
这三人说干就干,设备来之前组装教程、图传教程先看起来,比赛规程大家也在一起反反复复琢磨了好几遍。10月13号三只机械臂来了,马上组装,不过组装完成后才突然发现大家遗漏了一个极其重要的细节,机械臂中的舵机都没有事先调中,原地石化10秒钟。不过返工是必须的,毕竟机械结构的精确性相当重要,初期发现的任何问题都要马上解决。当天机械重组圆满完成,可是另一个更大的问题却摆在三人面前,陀螺仪小板的485通信出现了问题!说到陀螺仪小板,就不得不提一下阿凡达队队名的来历,最初的设想是将多个陀螺仪穿戴在身上,获取手臂动作位置来控制我的机械臂,就像阿凡达中士兵控制机甲一样。可是这套方案中最重要的陀螺仪小板出现了问题,而且发现这套方案实施起来将会很耗时,甚至不确定是否可以在赛前完成,如此必须有另一套控制方案才行,可是灵感并不会随时出现,至少在当晚没有。
第二天14号,陈杰和潘多拉继续进行履带车和三轮车的组装。同时,三人都还在探索着完成各项任务的方法,比如摄像头干扰。摄像头离地2米,让我们这样身高不到60厘米的机器人去直接接触肯定不现实,那么就需要借物,借何物,有几个方案备选。一是气球遮挡,不过是否可以实现气球的任意收放?二是强光干扰,那又选择何种光源,如何定位光照角度,这些都还未知。不过生活随处有惊喜,15号早晨,robot马居然碰巧在电梯中遇到一个拿气球的小孩,没错,就是下图中这个气球给了阿凡达队巨大的希望,
robot马特意将气球拿过来上下拉拉,试了下气球提升的力气,虽然被小朋友当成了怪叔叔,但是他心中已经有了谱,气球遮挡方案可行!接下来就要想办法去实现了。同日,遥控面板的批量焊接基本完成。
16、17号,编码关键部分完成,可以发送命令控制机械臂每个关节的角度,遥控面板上的旋钮也能对舵机进行操控,不过问题也暴露出来,就是旋钮精度低操控困难,并且机械臂抖动严重。而且此时,通过控制每个舵机的角度来使机械臂整体达到一种力学上合理的形态,对操作者来说是极大的挑战。我们的机械臂好比人类的手臂,当人想拉开一扇门时,或许想都不用想就知道那个部位该用力、需要弯曲成哪种形态可以轻松开门,可是对于我们来说,由6个舵机组成的机械臂可没有那么协调,我们只会按照收到的指令机械的调整舵机角度,这也就难为了我们的人类队友。不过问题总比办法多,或许创意就在不经意间出现。
18号,果然出现了转机,robot马琢磨着阿凡达中意念控制的方法,目光不经意间瞥到我那两个一模一样的机械臂兄弟,如果遥控装置不限于遥控器,那么是否可以让一个机械臂也充当遥控装置呢?另一个机械臂和它同步动作,这样的话只用将遥控端的机械臂手动摆放到合适位置,那么被控端的镜像机械臂不也就跟着做相同的动作了吗,之前舵机角度协调控制的问题不也这么迎刃而解了吗?这真的是舵机同步一小步,镜像控制一大步!当天下午机械臂的镜像控制便基本完成,在镜像操控实现的激动之余,机械臂抖舵问题却是三人心中放不下的大石头。
据说主办方在赛前特意搭建了测试场地,并特意说明赛前测试对比赛帮助很大,阿凡达队三人便决定提早去上海测试,19号早上便要带着我们出发了。但是考虑到去上海后,购买顺手的材料和工具不方便,robot马决定在19号出发之前,用废弃物完成收放气球装置的设计。19号凌晨,经过一晚上无休的奋战,三轮车上放线滚轮初步完成,三轮车也实现了精准的遥控控制,走路很稳定。有图有真相,
那个矿泉水瓶底可不是乱入,小半截瓶身+电机+塑料轮 便是整个放线装置了,瓶身上有一个放线孔,能够理顺绕线, 还能正传和反转实现气球的收放。
19日出发,除了阿凡达成员三人,还有我们三机器人,真容上图,依次重铠马、魅影、我。
在我被封包前,看见阿凡达队三人准备了行李大大小小总共10件,好吧。我还是默默待在箱子里。经过一路颠簸,开箱后还没得及好好感受下大上海的气息,我们便被三人带去了水果店,What?
原来是给要给我们称重,虚惊一场。还好最壮的重铠马也不过2kg,放心。
20号,是约定去主办方场地模拟测试的日子,在测试场,robot马和陈杰分别操控重铠马和魅影,潘多拉负责跟踪摄像和发现问题,方便回去复盘,不过首次测试过程真是一言难尽,简单来说,以当时的状况,一项任务都完成不了,可是阿凡达团队的那三人却很反常,情绪大概达到组队以来的最高点。不过想想,他们的激动倒也可以理解,毕竟从测试中发现的问题为他们指明了改进的方向。偷偷看了下他们的复盘笔记,大概有这些:
- 操作走位,谁是C位不重要,掩护配合最重要。
- 机械臂抖舵是当前技术问题的1。
- 力学常识要谨记,会发力更要会放手。
- 电池能量是根本,赛前一定要充好。
- 比赛项目理性选,有舍才有得。
接下来的几天,主要是重铠马和魅影在被翻来覆去的改造,于是我在旁边默默记录下他们遇 bug解bug 的全过程。
Bug list No.1:抖舵。
这个终极问题的原因终于在22号被找到,原来是动作执行速度的参数设置不够合理,导致前一次动作还没执行完就做下一个动作。最终通过反复尝试找到了一个最优参数。
Bug list No.2:偶现机械臂扭曲(ps:这属于一个不宜复现的bug)
镜像操作中偶尔出现操控机器舵机角度变成01,导致被控机械臂扭曲。原因是控制端舵机角度有时没有马上正确获取到,解决办法,增加逻辑判断,判断返回的舵机角度是否正确的,错误分支的数据丢弃。
Bug list No.3: 履带车突然无法被控制
原来是在履带车的控制板上,一处和电机的接线出现故障,之前多次测试,居有虚焊没有发现,于是检查所有机械的PCB焊点,对有疑问的焊点进行补焊。他们给自己立下的原则就是,发现一例,整改一批!
这期间,其他细节工作也在进展中,拼接比赛时所用的包装箱、控制台底座改造、安置载物蓝、制作窃听器、螺丝加固、根据精确尺寸气球滚轮重新绕线、电池充电(这是个持续性工作)。
到了23号,下午有去现场测试的好机会,这次主要有针对性的训练操作,魅影肩负着利用气球干扰摄像头的重任,所以他在摄像头下的停车定位是个关键。
经过对现场的一番观察,摄像头所在墙面上的装饰字成功引起了三人的注意,那些字简直就是完美的参照物,当墙面上一条公式A出现在图传画面的右上角某个位置时,气球垂直上升的位置刚好能够挡住摄像头,气球的定位就这样解决了,不过上升的高度如何更精准把握,除了控制气球线的长度外,暂时还没有更好的方案,现场估计还要随机应变了。其他任务操作也都演练得差不多,开箱门关闭激光、放置窃听器,看起来基本一切就绪,就等明天上场了,可是事情发展总带点转折,履带车的履带掉的可真让那三人猝不及防,没错,主动轮当场跑飞,履带瘫了一地,场面一度很尴尬。回去整改发现这次可不是紧紧螺丝那么简单啦,主动轮和电机连接部的一处内螺纹滑丝,光更换螺丝是不起作用滴,螺丝内槽滑丝严重. 螺丝上”紧”后, 用手也能拉出来. 最后,没办法的办法,对螺丝再作加工,先缠绕一圈细棉线,再用502固定上紧,只能算是基本固定住。可是比赛时是否能避免重蹈覆辙,谁也不敢打包票。
23号,下午两车进行了几轮测试后,效果还可以。到了晚上7点,电池基本用完,他们返回充电,人也出去吃饭。他们两车又去了赛场,打算做最后一次排练。赛场的灯光已经暗下来了!在印度友人的目光注视下,听到重铠甲下叮当一声,是一个螺丝掉下的声音。队员心里一沉,这下明天我们仨可能出不成场了。一名队员拿着手机灯光,小心翼翼的检查重铠甲上的每一个螺丝,检查到最后,发现原来是机械手臂靠近顶端的固定爪子的两颗螺丝之一掉了。这可是一个关键位置,掉了螺丝,整个爪子直接瘫痪,他们面临失败。
他们回去立即进行机械改造,把原来的螺丝装上后,发现螺丝基本无法紧固。好在他们有很多备用螺丝。把两个机械臂爪子的螺丝换成长一点的螺丝,增加了垫片,紧固到合理程度后,再涂上一层胶水,确保比赛中不出螺丝松动甚至掉螺丝的机械问题。
此时,因为重铠马有掉链子的和机械臂的问题,大家的注意力都转移到了我这候补选手身上,因为我有机械臂,用三个轮子行动,机械手也能抓东西。万一之前的尴尬画面重现,我这个替补队员或许还能派上用场。
于是接下来他们整个晚上,对我这个候补队员的一番软件和硬件改造,机械臂镜像同步,双摄像头画面切换。。。准确的讲,我的最终改造完成时间是在 24 号临上场的前20分钟,惊险刺激。还出现了一个插曲,24号一早, 整改完成后进行试验的时候, 我的手臂烧了一个舵机, 弄的他们也很紧张. 还好他们立马又进行了整改. 不但对我的手臂控制部分进行了降压处理, 还调整了我爪子的抓力到合适的范围,怕我在现场卡住手烧舵机。
就这样,我们一队人马上了赛场,也就有了故事最开头的画面,在赛场上的经历不比赛前的经历曲折,甚至可以说是出乎意料的顺利,即便稍有卡壳,阿凡达队员也迅速做了响应一一化解。最终冲出包裹、拉开激光灯箱门、关闭激光、气球遮挡摄像头、放置窃听器,这些被操练执行了N多遍的动作终于一气呵成。
时间慢慢划过,心中对目标燃烧的渴望让我们忘记了一路来的辛酸与泪水。
“技术上一争高下,战术上友谊第一、比赛第二”的原则,我们铭记于心。
在第一场比赛后印度队来借摄像头。为了让他们的中国之行不留下遗憾,我们拆下一套图传摄像头和两套图传一体机借给印度队,让他们得以继续参赛;同时借电池和热熔枪给烧鸡队使用。
25日11点45左右潘多拉在现场捡到钱包,恭恭敬敬地站着在那里,双手紧握,生怕它飞走了,默默的等待钱包的主人归来取走。主持人也拿话筒一边广播一边回头等待失主来领取。
昨天所有的荣誉已变成遥远的回忆,心若在、梦就在,再苦再难也要坚强;看成败,人生豪迈,以终为始,从头再来。
文章首发在GeekPwn