阿凡达的进击之路
跨过一道45°倾斜的大门,再穿过乳白色的拱形门,仿佛进入时空穿梭的隧道,随着人头涌动的人群,一同进入Geek的世界。
Geek是《黑客帝国》中身披黑色长袍、脚穿黑皮长靴,戴着幽黑冷酷墨镜的网络黑客?
还是穿着蓝色短袖和牛仔短裤,戴着眼镜的他们?
电影终归是电影,而现实远比电影更精彩。
图片正中的三位极客,分别是来自绿盟科技格物实验室的陈杰、潘雨晨和马良,由他们所组成的战队阿凡达战队也是本次极客大赛“机器特工挑战赛”中的亚军。
马良,阿凡达战队灵魂人物,团队召集者,绿盟科技资深安全研究员,看雪学院讲师。具有十年嵌入式开发经验,精通软硬件,通信、工控、物联网领域经验丰富。
潘雨晨,90后,绿盟科技安全研究员。大学专业化工与软件工程,毕业后进入培训班学习Web漏洞挖掘,一个月后顺利进入绿盟科技。一位勇气与细致,天赋与努力并存的特别的女孩。
陈杰,95后,绿盟科技安全研究员。大学专业信息对抗技术(军事用途),校招中经过两轮面试顺利拿到绿盟offer,擅长二进制和逆向。
本次机器人特工挑战赛,共有来自中国、美国、印度的八支队伍参与挑战,机器特工需要在20分钟内完成ABC三区任务要求;
A区:潜入(钻出包裹/通过窗户/通过通风管);
B区:避障(躲避激光束/关闭激光束);
C区:入侵(干扰摄像头/放置窃听器/打开密码保险箱获取卡片信息/打开书本获取卡片信息/插入USB攻击设备/放置键盘记录器);
三区任务挑战成功,方可视为挑战成功。极为有限的时间对每个战队来说,都是一个巨大的挑战,不仅需要战术过硬,更考验每个战队的战略布局。
赛前经过一番讨论过后,阿凡达战队决定,首先由两个有机械臂的车——履带车和三轮车(重型车),先从箱子里冲出来因为有机械臂的车力气更大,可以更好地开路,并打开激光门、关闭激光。气球车则跟在最后,因为气球车的气球在出箱和移动的过程中需要得到保护。
上场后执行任务的原则是:每个人做自己最擅长的事情。马良负责三个机器人的硬件电路设计和软件编码;陈杰负责赛前测试和给电池充电;潘雨晨设计比赛时候的快递箱子、机械臂车的购物篮、物品摆放。除了掌握自己负责部分的操作技巧,每个队员还需要掌握操作机器人的技巧。这样,团队每个人的长处都得到了发挥。
战略布局虽已完成,但挑战才只是刚刚开始。
9月30日的深夜,马良双眼紧盯着GeekPwn的官网报名页,寂静的空气中,只听见点击着鼠标哒哒哒的响声。在这嘈杂声中,马良的思绪早已飘向2016年GeekPwn挑战赛的现场。那一场比赛,马良落寞离场,“输了,而且输的很惨。”失败的色彩染灰了那段时光,每每想起,他的心中仍然满是遗憾。
对于这次报名,他更谨慎小心,考虑的东西也更多:一旦参赛,不但所有休息时间都要搭上,连正常的睡眠也是奢望,只有努力、努力再努力。还要看设计方案是否具有真正的实用价值的创意,可能即使很努力,灵感也不一定会出现。要知道, 挑战极棒(GeekPwn)的机器特工可没有那么简单! 没有两个以上的新创意,他是不会贸然报名的。
此时,他的心中其实早已有了两个创意的雏形:一是干扰摄像头部分用放气球的方式来做,但不确定是否可以成功;二是操控方式用阿凡达电影中士兵控制机甲的方式来控制,这样的好处是远程控制起来更加直观和简单,能提高现场的操作效率。
但是,这两个有创意的方案没有经过实践验证,是否能够成功控制远程机器人? 操纵的机器人会不会抖舵?操控的稳定性和精度如何?这一切都是未知数。
当机会再次将临,是否要再次挑战自己?如果挑战再次失败怎么办?这些问题在马良的脑中循环播放。
报名的页面刷新一遍又一遍,鼠标点击了一次又一次。他回顾了电脑里2016年参加比赛的旧照片,当年备战的往事又涌上心头。指针已悄然划过23:30,此时距离报名的截止时限只剩半小时......
最后,马良还是决定参赛。他提交了极棒的报名申请。
10月8日,十一假期结束后,马良向公司领导说明了参加极棒机器特工的想法,得到公司领导的大力支持。
10月11日,阿凡达战队正式组建成功。潘雨晨、陈杰应召入队。此时,距离开赛只剩13天,而他们连比赛用的机器人还没有到货。
10月13日,所有零件购置完货后,正式开始组装机器人。对于从来没有组装过机器人的他们,由于缺乏经验,在组装履带车和机械臂的过程中,困难重重。组装完成后,才发现舵机没有调零,于是又拆了重新组,好不容易组装成功。却又出现了另一个更大的问题——陀螺仪小板的485通信故障!这意味着“阿凡达”的一个创意,可能无法实现。
北方十月冷清秋,这里的氛围却十分火热。他们一直保持足够的警惕,因为任何一个很小的问题,都可能随时成为最大的隐患。要制作三个功能和外形都不同的机器人,他们面临着一大堆软件和硬件问题,在经过队员们废寝忘食的查找资料、排查各种疑难bug后,才攻关解决遇到的各种奇葩问题。
一天已经过去,机器人却还没有装好。他们不得不加快脚步。陈杰和潘多拉(潘雨晨)继续组装履带车和三轮车,同时,开始考虑各项比赛任务如何完成。其中一项是摄像头干扰,首先要考虑的问题就是身高不到60cm的机器人,如何能够接触到距离地面2m高的摄像头呢?
他们想到了一个方案:使用强光干扰。但是想要弄“瞎”摄像头,需要光源。选择哪种光源?如何打光?又如何定位光照角度?思路陷入僵局。
马良在报名参赛前就有用气球遮挡摄像头的想法。10月15日上班坐电梯时,看到电梯里一位小朋友拿着能飞的气球。此时他立刻眼前一亮,正是一个天赐良机的试验机会。他向小朋友借来了气球,拉了拉气球的绳子,发现气球的浮力很好,升力足够大,理论上可以用电机绕线和放线的方式控制气球的升降。
他立刻在“阿凡达”的微信群里告诉了队友这个发现,陈杰和潘多拉都激动不已。
下了电梯后,马良感觉大脑又开始飞速运转:如何来让机器人来控制气球的升降呢?这又成了下一个需要攻克的技术难题。
时间过的很快,此时已经是18号晚上,第2天他们就将要前往上海测试设备,但是通过气球干扰摄像头还只是一个理论。收放气球的装置连影子都没有。
这天晚上,马良彻夜未眠,他前半晚夜把另外两名队员组装好的三轮车拿回家进行了改造,实现了对小车行走的灵活和精确的遥控控制。然后,开始制作控制气球升降的装置。他将一个矿泉水瓶、一个廉价的车轮和电机,制作成一个特殊装置来控制气球的升降。制作完成,已是19号凌晨。
在气球遮挡的准备阶段中,还有一个难题:怎么样把气球准确的升到两米高的摄像头前?不仅需要准确地让机器人走到特定的地点,在放气球时还需要控制好气球的上升的速度和方向,才能正好挡住摄像头。
潘多拉是队伍里唯一的女性,也是队员公认的细节大师,在经过她的认真考量后发现,控制气球的线成了关键。这根线,不能太粗,不能太细,不能太软,也不能太硬。
在测试过程中,他们发现由于鱼线太硬,在放线的过程中会绞在一起,鱼线淘汰。此时距离比赛开始,已经时间不多,时间就这样一分一秒的过去。
马良猛然想到:酒店不是有供客人用的逢衣针和线吗?他马上跑去前台,向前台的小哥哥要了一卷逢衣线。经过测试发现,逢衣线是一款非常合适的线。他们最终确定用缝衣线来绕在自制装置的轮子上放气球。
阿凡达团队对细节的追求在整个赛前准备期间,发挥到淋漓尽致。
抵达上海前,本以为东西都备全了,就没什么问题了,到了之后才发现控制气球升降并没有那么简单。
因为上升和下降时给电机的电源是完全相反的,仅仅是控制升降气球的硬件部分,他们就一连换了四个方案:
首先继电器方案:通过两个继电器,一个来完成一个轮子的正反转控制,另一个则转接继电器实现轮子的停止和转动的控制。但正好周日电子市场关闭,无法购买缺少的硬件,此方案卒。
方案二:增加一个驱动板,来专门用来控制气球轮子的升降。但相应的遥控器也需要多一套,一是为了一个气球升降功能放两块驱动板上去, 太浪费。二是在这里多浪费一套电路板, 就没有备份电路板了,于是方案二卒。
方案三:使用TB6612驱动模块。在备用器件中多买了一个TB6612的驱动模块,但焊接上去后, 却发现实际驱动能力不达标。电机转动极慢, 甚至不转。方案三卒。
红色方框内就是方案三新增的驱动模块
连换三个方案,都不可行,阿凡达团队备受打击。放气球的车轮和电机只有一套, 万一不慎烧毁电机, 整个放气球的创意就泡汤了。他们如履薄冰。接下来应该怎么办?
终于,马良想到了下一个几乎完美的方案:用控制车轮的信号去控制气球的升降,通过继电器来切换是控制车轮还是气球升降。因为升气球的时候,车轮是静止的。该方案不但实现了气球的升降,还可以通过PWM控制气球升降的速度,完美。
此外,气球车也是一个可以远程控制的机器人,只是它的“手”比较特别,考虑到现场观众的安全,氦气比氢气更安全,这只“手”还特意采用了氦气充气。这只“手”利用了物理学中氦气比空气轻的原理,伸的比较长,可以实现遮挡摄像头的任务。
气球车的全图,表面看起来波澜不惊,电路板背面却饱经风霜
由于放气球的也是一个车轮,所以通过继电器切换车轮信号,但是由于放气球的电机和车轮的电机有所不同。这时,就需要注意放气球轮子的电机是否能承受车轮的电压。通过将编程控制的PWM调参后,原来控制的电压正好用来驱动控制气球的轮子。方案四,通过!
10月16日、17日,擅长二进制和逆向的陈杰正在紧张的忙碌着。虽然是第一次接触机器人,但他学习很快,在操作机器人的过程中,他提出一个建议:“遥控器的键盘应该按下动作,当放开键盘的时候,小车的动作应该立即停止”。
这个建议解决了远程车遥控失灵的问题,虽然实现的时候稍微复杂一些,但可以提高现场的操作效率。建议当即被采用,并应用在参赛三辆机器车的操控。
阿凡达战队完成了控制机械臂编码的关键部分,可以向机器人发送命令来控制机械臂的关节角度,通过遥控面板上的旋钮也能对舵机进行操控,不过问题也随之暴露。
通过控制每个舵机的角度来使机械臂整体达到一种力学上合理的形态,这是极为困难的。因为机器人硬邦邦的钢铁手臂并不像人的手臂,灵活、协调,由6个舵机组成的机械臂只能按照收到的指令,机械的调整舵机角度。
由于旋钮的精度低,单片机通过AD转换读到的电压在不断跳动,使得机械臂的抖动非常严重;另外6个轴的机械臂用旋钮来远程操控非常困难,如果通过摄像头去操控更是难上加难。
“好用、易用、优雅”的人机界面,在三个机器人业余爱好者组成的队伍面前,成为一道看似不可逾越的障碍。
10月15日,创意的灵感在马良的脑海里奔腾而过。电影《阿凡达》中,下身瘫痪的前海军战士杰克·萨利利用意念操控人造阿凡达的场景出现在他的脑海中。于是他想到了用镜像的方法来控制机械臂,让一个机械臂充当遥控装置,另一个机械臂和它同步动作,这样就让事情简单多了。
只需要用单片机每隔几毫秒读取一次遥控端每个机械臂的轴的角度,然后立即通过无线信号把读取到的每个轴的角度发送到远程机械臂。目前工控领域和机器人领域尚没有这种方法,这是一种新的控制思路、一次新的尝试、也是一次控制方法上的创新。
这个灵感,也是“阿凡达”名称的来由。另一个原因是女生潘雨辰,与电影的潘多拉不谋而合,于是潘雨辰多了一个外号,为“潘多拉”。
但此时,遥控装置和机械臂的硬件还没有完全焊接好,等待硬件齐备后。18日凌晨,马良才终于实现了两个舵机的同步。机械臂程序的编写可以说是进展神速。到18日下午,机械臂的镜像控制功能基本完成。虽然如此,但机械臂抖舵的问题却是三人心里的顾虑。
就这样带着忐忑的心情,三人于19日抵达上海。
20号,阿凡达战队抵达测试场地,马良和陈杰分别操控两个机器人,潘多拉则负责跟踪摄像、发现问题,对现场状况进行记录和确认,复盘整理以便及时发现问题。
首次测试,状况百出,一项任务都没能完成。可是,他们却非常乐观,因为他们发现了问题,这可以帮助他们改进方向。
模拟测试回去后,整个过程像放电影一样在潘多拉脑海中播放,而她在这场电影里检索着每一个需要完成和注意的事项。比如准备比赛时所用的包裹,就需要考虑三个机器人在包裹中如何排位?纸箱尺寸如何设计?如何用两个纸箱拼接出一个合适尺寸的纸箱?
又比如,比赛时需要放置窃听器到椅子指定的位置,阿凡达的窃听装置是马良从家里带过来的三个小磁铁,那么如何对它进行改造,能够做到既不影响吸附到椅子底部,又能避免被机械爪子抓住打滑的问题。对窃听器进行改造之后,需要让机器人随身携带,那么机器人身上的载物篮该如何做才既不影响机器人的行动,又方便取物呢?
类似这样的问题,随着“电影”在潘多拉的脑海里一个一个蹦出来,一个个被细心的潘多拉攻克了。
比赛前一天,阿凡达战队三人在现场进行最后测试,当基本一切确定没问题时,履带车的履带掉得让他们猝不及防,主轮当场跑飞,履带瘫了一地,机械手关键部位居然还掉下来一颗螺丝……
三人当即决定对所有机械部分进行彻底的检查,对螺丝进行了紧固;为了预防比赛中的出现意外或变故,他们决定启用替补机器人。于是接下来整个晚上都在对替补机器人进行软件和硬件改造,和时间赛跑。此外,为了达到最好的效果,他们还在现场额外充了三个气球。
最终,24号临上场的前20分钟,机器人完成改造。带着忐忑的心情,他们上场了。
第一个出场的履带车,在它的机械手上有一个摄像头,负责拉开激光门把手、关闭激光、和在椅子下面的特殊位置放置窃听器,对操作机械臂的准确度要求高,由擅长空间想象力的马良负责操纵。
紧随其后的三轮机械车(重型车)有两个摄像头,充当第三只眼,负责观察全局,由潘多拉操纵。
最后出场的是由陈杰操作的气球车,在马良操纵的履带车拉开门把激光控制器的电源关闭后,就能顺利通过有激光的地方了。
但是陈杰在操作机器人完成出箱挑战时,气球车却被气球,卡住了。场面瞬间进入尴尬的境地。机器人出不去,那任务就没办法完成。可若将气球放开,则没办法完成干扰摄像头的项目。
陈杰急的直冒冷汗,这是他第一次接触机器人项目,也是第一次参加Geekpwn的比赛,现场的摄像头、围观的观众、不断响起又落下的音乐、主持人幽默的主持,周围的一切都在他周围环绕。
虽然是95后,但他却有超出这个年纪的沉稳。他迅速调整心态,在和队友不断的继续尝试后,气球车不断地尝试移动,终于成功出箱!
带着气球的机器人,稳稳停到摄像头底下的位置。然后,只见气球缓缓升起,成功挡住了摄像头,挑战成功!这也让阿凡达成为了八支队伍里唯一成功挑战摄像头的队伍。
最后由马良来操作机器人放置窃听器。第一次放置窃听器的时候, 窃听器掉到了地上。此时距离比赛结束,只剩几分钟。随着一声欢呼,窃听器成功被装在制定的位置,阿凡达战队挑战成功!
在第一场比赛后,印度队的一位成员来借摄像头,阿凡达队毫不犹豫的拆下一套图传摄像头和两套图传一体机借给印度队,让他们得以继续参赛。虽然场上是对手,但场下他们早已成为同样热爱技术的朋友。
10月25日11:45,潘多拉在比赛现场捡到钱包,并迅速告知主办方。在由主持人广播寻人启事后,阿凡达团队集体等待失主。潘多拉双手紧握钱包,生怕它飞走了,恭敬地站着,等待钱包的主人归来取走。因为钱包内有失主的身份证,他们很快就问到了失主电话,也等到了失主,钱包交到失主手里后,才安心离开。
潘多拉拾金不昧,等候归还中……
比赛结束后,潘多拉又开始在手机上记录。除了比赛过程中的点点滴滴,往前翻看,还可以看到准备期间不同时期的进程、发现的问题以及问题的解决方案。
比赛虽已结束,但比赛结果却未在当场宣布。悬着的心一直在收到比赛结果时,才落在地上。比赛结束当晚,比赛结果最终出炉,虽夜已深,但马良还是忍不住在第一时间告诉了妻子。
梦想还是要有的,万一实现了呢?这不是一句空话,是真真切切、有实际意义的话。最怕被岁月磨平了棱角,被生活的琐碎抹掉了锋芒。
在这个欲望降低、消费降级,看似颓靡的世界,有人不堪压力,选择自杀离开世界。有人看不到未来,一脚踏入深渊。有人迷茫犹疑,在原地徘徊不定。
马良选择继续前进,陈杰、潘多拉与他同行。这次胜利,或许是他们漫长人生岁月中,一个不起眼的亮点。回头看来,却可能是最关键的转折点。
因为它让我们又开始重新相信,有梦想,就要去追。愿你出走半生,归来仍是少年。
- End -
你可能还喜欢:
好书推荐:
戳
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com