知乎问题:RoboMasters2015夏令营是怎样的?答案作者:杨硕,DJI研发工程师,RoboMasters2015机器人夏令营规则设计者今年大疆创新的RoboMasters夏令营结束了一段时间了,特别想给所有参加这次活动的营员写点什么。正好10月校招季就要开始,我希望通过这篇文章,让所有对大疆创新有兴趣的工程师了解一下我们的想法和我们的团队。
由DJI主办的RoboMasters2015机器人夏令营的主题任务是用四轴飞机抓高尔夫球,然后投篮。飞机需要从1区(2米见方的区域)自动起飞,然后把球投到2区或者4区。3区的盒子里有额外的高分球可以用来得到更高的分数,飞机需要自动降落下去去拿。2区和4区的篮筐每个格都有不同的分数,1区和3区各有不少高尔夫球,投球越多,得分越高。
场地示意图大致如下:
对机器人比较熟悉的同学可能会说看起来好眼熟啊。是的,机器人比赛中最常用的元素:色块、白线、二维码都在里面。
营员需要使用大疆新出的经纬100( Matrice 100)飞行器搭配一块小电脑在三个星期内实现这个任务。
这个比赛题目完全是我设计的,考虑的技术点有以下几个:1. 设计能够抓取高尔夫球的机械
2. 能够在8米乘8米的场地中全自主定位
3. 能够识别目标篮筐
4. 能够精确控制飞机的位置和高度、自主起飞和降落
规则做好以后,RoboMasters工作组的同学问我,同学们三个星期做不做得出来。我说我估计会有2-3个组做出来(夏令营一共分了12个组)。后来结果是有接近一半的组能够完成投篮的任务,虽然只有2个组做得很稳定拿到了比较高的分数,但是大家的成果是非常令人惊奇的。最优秀的几个组,可以让飞机稳定地在场地内全自主飞行、自主起飞、降落、识别篮筐投篮。
目前世界上最高水平的飞行器比赛是IARC空中机器人大赛(International Aerial Robotics Competition),这个强调全自主飞行的比赛从上世纪九十年代开始举办,一直是以直升机为主,2008年开始切换成室内场景,2009年MIT解决了IARC第五代任务,2013年清华解决了IARC第六代任务,目前的第七代任务还没有人能够解决。这几年中能够让飞机稳定自主完成任务的学校和组织并没有几个,更别说短时间做出稳定的系统了。然而我们RoboMasters夏令营的同学只用了三个星期,就能做出好多套可以稳定执行任务的空中机器人系统,事实上这些飞机改造改造,就可以直接去参加空中机器人大赛或者其他类似的飞行机器人比赛了。负责任地说,我从来没有见过这么多稳定的自主空中机器人在这么短时间里被造出来。
大家把Matrice 100改造成各种神奇的样子,下面是本来的样子:
虽然我挺满意的,然而好多营员其实不是特别满意,因为这三个星期的生活实在是太辛苦了。夏令营一开始,我就扔出了这个猛一看非常吓人的比赛题目,然后公司刷刷刷给他们提供了一堆硬件让大家学习。算法和视觉方面的同学学习如何上手我们的Matrice 100和guidance传感器就用了快一周的时间。机械的同学做了很多设计图,然而活动时间太短,没法加工太多机械件,只好自己用激光切割亚克力和碳板,然后使用机器人三大宝(胶条束带热熔胶)构造自己的机械结构。更坑的是,Matrice 100这个飞机没有为自动飞行优化得很好(这完全是我的错),新出的Guidance SDK还有一些设计不完善的地方,营员们用起来非常迷惑。大家应该在三个星期里把这个飞机的设计者(对,就是我)骂了千百遍了。
所以夏令营结束的时候,大部分营员基本都连续熬了好几个通宵,在路上看起来都是一副一碰就要倒在地上睡着不起来的样子。
对此我也有点惭愧,系统确实设计的不好,给大家添了很多麻烦。然而目前世界上没有一款商用的飞行器可以在完全没有人工干预的室内环境中自动起飞降落、执行任务,我在设计这套系统的过程中完全没有可以借鉴参考的其他系统,不小心设计出一些坑真的是没法避免。借助夏令营同学的努力,9月24日Matrice 100新的固件更新极高地提升了自动飞行的性能,还增加了若干实用的控制接口,希望大家不要对它失去信心……
作为对这次夏令营的总结,我想点出几个营员们可能并没有意识到的问题,一方面是为了解释我们为什么要把大家逼得精疲力竭去做这件事,另一方面是想希望大家看了这些问题以后,回想自己的三星期时间,获得更多的思考和启发:
1.Think big, start small是最稳妥扎实的做法。
今年的比赛规则里,篮筐有两种,一种是由内到外缩小的同心圆,另一种是一个九宫格,两个篮筐一共有14个可以投进去球的格子。
我在比赛规则里故意写了一条:如果有队伍能把这14个格子每个里面投一个球进去,就可以获得巨额的加分。我还在夏令营的过程中设定了一个环节,就是让每组推举一个人出来,和我讨论这个巨额的加分分值有多少。大家讨论得异常热烈, @吳易易 同学最后掏出了面积计算大法,做了一黑板的计算,最后算出来这个加分是3400分,然后12个人投票通过。
这条规则让大家在前期都非常心痒痒,很多组都在讨论抓球取球的策略,飞去2区或者4区的策略,我确定他们在这些讨论上花了很多时间。
然而这条规则是毫无意义的。因为我确定没有任何一个队伍能够在三个星期的时间里做出一架可以精确地往每一个格里投一个球的飞行机器人系统。然而我还是故意显得我很重视这条规则的样子,让复杂的比赛规则迷惑参赛的同学。
按照我的估计,得高分的办法就是,飞机只需要把1区的白球拿起来,直接扔到平均得分最高的2区就可以了。完成这样一个系统之后,再去考虑到3区的抓取和到4区投篮。最后如果还有一个月的时间的话,再考虑巨额加分的规则。事实上最后比赛得分最高的组,正是只用了这种最简单朴素的策略。
在夏令营结束的报告上,好多人就后悔,说哎呀一开始思维太发散了,想了好多方案,最后都不太靠谱。
有一本书叫做《信号与噪声》,讲的是现实生活中事物传递的信息总是包含噪声的,这也是电子工程论里面的主要观点之一。我觉得优秀的工程师,能够善于从给定的信息里面过滤掉无用的噪声,留下真知灼见。在这个比赛的场景里,其他花哨的规则就是我专门给出的噪声。这些噪声一方面会让同学们分散精力,一方面会他们难以估计项目的进度,如果能够把噪声分辨出来,那么大家能够很专注地实现一个稳妥的方案,这个项目可以不做得那么累。
并不是所有人能够分辨这些噪声,然而对于还没离开大学的同学们来说,能通过类似RoboMasters夏令营这样的项目获得一些分辨噪声的体会,我觉得会对大家未来的职业发展很有帮助。
RoboMasters夏令营报名之后我筛选报名表,就把“软件”、“视觉”、“算法”这三个报名方向统一筛选,很多营员进来以后不满意,觉得自己报名的是“算法”,但是被强迫去学视觉。
在设计比赛规则的时候,我把这个比赛过程中每一部分的技术难度都降得很低,使得任何一个会编程的人都能够给飞机写程序,任何一个会用Solidworks的人都能参与机械的设计。我也会希望每一个参与这个活动的营员都能完整地描述出自己组飞机的系统架构。
对于飞行器来说,飞机的视觉系统和控制系统是耦合的,因为控制不稳定会影响视觉系统的观测效果;控制系统和机械也是耦合的,因为机械的重心和振动会影响飞行控制器的表现。对于这样一个紧耦合的系统,在设计的过程中要有很强的整体意识。对于真的飞机、火箭这些项目来说,人们对这类系统的结构和耦合程度已经理解得很深,所以有总体部门和模块部门的划分,模块部门主要需要专才。然而对于小小的空中机器人来说,人们对这种系统的耦合程度认识其实很不足,以现在的技术水平和发展程度,我偏向于认为飞行机器人的工程师必须人人都是通才:对飞行器的机械、硬件软件都有相当深的理解之后再深入某个方向。
所以楼上有朋友说参加了RoboMasters夏令营,机械没有学到太多东西,对此我想我已经做出了解释。
我说调程序调到凌晨两三点调通时让机器动起来的喜悦不用往简历上写我都看得出来。
我招聘人的时候,看重的是热情。这种热情不是“啊我对你们公司很感兴趣”“啊你看我有个Phantom”,而是经年累月都坚信自己能够创造令人惊奇的事物,并且为此极度专注、坚持自己的想法。我本科的时候参加了三届Robocon比赛,熬夜调程序做机械这都是小事了,夏令营三个星期这样的生活我坚持了三年,每年我都经历过bug找不出来的沮丧,deadline迫近时的绝望,然而每年做完我都很期望下一年自己能设计出更好的机器,这些感受美好得无与伦比。
老板很赞同我的看法,还补充说,如果有更牛逼的人提出更好的想法,这个人要能够积极地接受并且一起努力。
我想,作为大疆创新的老板,DJI飞控的首席程序员,DJI多款优秀产品的主要设计者,他这样说是很有说服力的。
因此RoboMasters夏令营就是这样一个地方,我们提供bug找不出来的沮丧,deadline迫近时的绝望,提供想法碰撞的舞台,提供牛人惺惺相惜的竞技场。
点击“阅读原文”,进入知乎看看大家眼中的RM2015夏令营吧!