从金陵中学机器人社团,到 VEX 世锦赛的赛场,再到南京大学计算机专业的博士实验室研究 AI Infra,沈思的成长轨迹始终围绕着同一个关键词:程序。对他而言,VEX 不只是一场比赛,更是一个让代码真正“活起来”的地方——程序不再是电脑里抽象的字符,而是决定机器人如何运动、如何对抗、如何完成任务的灵魂。他的 VEX 经历有着哪些遗憾与愉悦,AI Infra 的研究又如何与当年的机器人比赛一脉相承?以下是他的讲述。
问:请简单介绍一下自己,以及你和 VEX 的开始
我叫沈思,南京本地人,高中就读于金陵中学,也是在金陵中学的机器人社团第一次接触 VEX。现在我是南京大学计算机专业的博士生。我和机器人的缘分开始得很早,大概小学六年级的时候,老师在班上问学校新开了一个机器人社团,有没有同学想参加,我当时特别想去,就去了,那是我第一次参加机器人活动。
最开始玩的都是比较基础的机器人,用图形化编程。那时候对编程还没有很清晰的概念,只知道把东西拽过来,机器人就会按照我的想法去做,很好玩。明明只是一些小部件,通过自己的搭建和程序,它就能动起来,按照我的方式去做想做的事。这种感觉对我来说吸引力非常大,毕竟做一个能动的机器人,是每个男孩特别喜欢的事情。
我正式学编程是从初中开始。那时看到别人编程都是敲代码,而我们只是像小学生一样拖拽,于是我就去二手书店淘了一本 C++ 基础的书,自己看,自己学。那是我第一次接触编程语言,不过真正将编程用起来,是在高中接触 VEX 之后。

问:VEX赛队由很多角色组成,包括工程设计、搭建、策略、程序、团队管理、外联等。你为什么选择编程?后来大学选择了计算机科学专业,现在博士也是这个方向。你是什么时候发现自己对编程有独特兴趣和热爱的?
最开始选择编程,其实比较实际。进 VEX 赛队时,基本上只有我接触过编程。但真正做起来之后,我发现 VEX 团队里的角色并没有那么泾渭分明。名义上我是程序员,但程序必须建立在结构已经做好的基础上,机器人没搭好,程序员什么都做不好。
而且做程序需要非常深入地了解结构,包括这个结构在这个阶段会出现什么问题,结构的形式误差是多少,你需要花多少精力去处理这个误差,这个误差是从结构上解决更方便,还是从程序上解决更方便,这些都是程序员要考虑的事情。所以程序员和结构师并没有很大的界限。

一开始我对机械结构和编程也没什么概念,只是对轴承、齿轮传动稍微了解一点。2017 年比赛时,学长做了一个平行四边形的机械臂,我们发现原来机械臂还能这样动。后面我就一边做程序,一边学着搭机器人。到了高二时,结构、操作、程序基本都有参与。
我一直觉得程序更像是机器人的灵魂,结构决定机器人能不能做一个动作,而程序决定它怎么做。尤其比赛的时候,程序不仅要让机器人动起来,还要根据规则去设计它的行为。2018 年赛季,最后需要抢高台,包括后面还有赛季需要机器人用爪子将机器人悬空,这些都是需要程序发挥功效的。
后来再到大学就选择了计算机专业。可能有些人是觉得这个专业前景好,但我当时就是单纯觉得编程比较有意思,所以我并没有觉得编程比较痛苦,这也是能够持续支持我读博,或者后面做相关方面研究的原因。
问:你觉得 VEX 的经历对你选择计算机专业有影响吗? 具体体现在哪些方面?
其实影响还是比较直接的,小时候接触图形化编程,后来自己找 C++ 的书看,这些都是比较早的积累,但 VEX 是我成功让自己之前的积累能够运用到实际环境中的一个实战机会。比赛阶段有自动阶段、手动操控阶段,涉及 PID 算法,程序需要考虑很多,它不只是代码本身,而是会直接反映到机器人表现上。
而这些体验对我自己影响非常大,因为它让我很早意识到,学习编程不是为了装酷,而是为了去解决一些东西。有时候调程序需要很久,程序也会因为机器结构发生了一些变化而不断调整,但这些对我来说不是特别无聊,相反,我会因为调通了程序而觉得很有意思。
这就是我喜欢 VEX 的一个理由,它最大的影响不仅仅是教会我写代码,而是让我意识到编程很有意思,能够去解决具体问题。
问:2018年是你第一次参加世锦赛,能聊一聊那次比赛给你留下的印象吗?
冲击力还是挺大的。比赛之前我们准备并不是很充分,当年世锦赛是4月份,寒假是2到3月份,相当于我们从寒假回来只有一个月时间准备。因为时间非常紧迫,所以寒假时我就直接把学校机器人搬回家,重新搭了一台。那是我第一次自己完全设计一台机器人。那段时间基本上就是不停地搭机器人、调程序,晚自习请假不上,去搭结构、调程序、写算法。很累但不痛苦,毕竟做的是喜欢的事情,很愿意把时间投入进去。
到了世锦赛以后,最大的冲击是,能看到同一套比赛规则,每个人设计想法是不一样的。当时我们是有12个V4马达,一般来说底盘会分4个,大机械臂分4个,小机械臂分2个,夹子分1个,底下还有一个夹子分1个。我们的机器人比较重的,机器人底盘其实分6个比较好,它会跑得更快。但我们工艺还没有那么精妙,所以还得用4个马达。

但实际上有的队伍直接把小臂马达省下来,底盘6个马达,机械臂4个马达,然后把小臂跟夹子完全省下来。他们怎么做呢?他们做的单侧夹具,用了一个很巧妙的塑料片结构,就可以把夹子的马达弄起来,这样夹一下,相当于自动卡进去了,然后放上去,哗一下下来,这样的话夹子就完全不需要马达,分下来的马达就可以让机器驱动得更快。
包括有些队伍,用了8个马达去做底盘,主要思路就是去进攻,不断冲撞干扰对手,让对方机器不要去合理拿分。虽然在比赛伦理不太受认可,裁判不鼓励这种行为,最后好像从各个赛区厮杀进了总决赛。

这些策略,可能现在听起来只是一些非常具体的机械方案,但当时对我来说冲击很大。因为我们正常在学校做题,那肯定有一个标准答案,我们要去拟合这些标准答案。但在VEX的这个大舞台上,并不是同一个问题会有一个标准答案,它有很多很出色的解决方案,每个队伍都可以去根据自己的理解去重新设计整个机器人,而且这些方案非常有创造力。这也是工程设计真正有意思的地方,它不是要找到一个最佳的答案,而是对于同一个接触条件,每个人都会给出不同的解法,这种不同的解法会在不同的场景下有不同的适应性。
问:能分享一段在VEX项目中让你印象最深的经历吗?
开心的回忆其实很多。比如给机器人涂上自己喜欢的装饰,我们当时为机器人做了一个血轮眼放上去,一展开它的血轮眼就会露出来,虽然没什么用,但是真的很有意思。

比如在世锦赛,需要给每个机器人起名字,我们当时的机器人叫小仙女,但是国外评审完全听不懂,我们就给他就音译了一下,他们就给我们的机器人起名叫 Shozen New。后来我们会给每个机器人起名字,小仙女、小可爱,但实际上它们比赛起来还是会很猛的。

但印象最深刻的其实是参加省赛。因为对我们这种有升学压力的人来说,不能说这个有意思,你就能去做。家长跟老师不看这些,他们需要你有一个明确的目标,考虑做这个是否真的对你有用。所以相较于世锦赛,省赛和国赛对我们更重要。当时我们已经参加过世锦赛,不管是机器人本身,还是对比赛的理解,已经经过很多轮调整和磨合,我们非常自信,毫不夸张地说,当时省赛我们一打三都没有问题。
那次省赛我们准备很充分,到了关键淘汰赛,联队选配我们作为第一名选的是第二名——苏州一支很厉害的赛队做队友。两组配合基本是砍瓜切菜,顺利拿到2v2冠军。但当时江苏省赛与国赛的名额只有1个,所以我们两支队还要再打一场,决出最终冠军。为了让比赛更精彩,赛制改成了一场定胜负。我们也针对这场比赛做了些策略,尤其是自动阶段策略。

第二天1v1对抗开始,前期很顺利,自动阶段跑完,操作手很稳地把道具放进得分区,看起来胜券在握,结果刚放进去机器人断联了。这是我们完全没想到的,我们想过它可能摔倒,毕竟伸展很长,也想过马达过载,还做了许多措施,但唯独没想到会和遥控器断联。等重连回来,我们已经失去了大量比赛时间。
问:时至今日,你再去回首那一次锻炼,你觉得还是一次遗憾吗?
其实输了就是很正常,胜败乃兵家常事。你永远不可能想到会有什么方式输,就算再做万全的准备,总会有准备不到的地方。这种意外其实也是比赛的一部分,我们没有办法去预料下一个一定会发生什么,它是一个很复杂的事情,不管准备多充分,都可能出现计划之外的情况。所以我们要做的就是尽力去准备,然后享受比赛,享受机器人本身,而不是把最终的输赢看成比赛最重要的部分。比赛中最重要的部分,是认真打比赛的过程中,我们收获到了什么,比如和同学在一起愉快的经历,比如想到很好的解决方案,这些都是实实在在存在于我们经历当中的。

问:你认为 VEX 培养了你哪些能力,让你至今在学业或科研仍然受益?
因为我现在科研方向更多是与 AI Infra 相关,就是让大模型跑得更快,偏工科,跟 VEX 非常像。我们在学校里学的是写题、算题、做题,但在工科里完全不一样。工科最需要的是快速迭代的能力(先做出一个最小可完成的系统,先跑起来,再快速迭代)。我们要有整体视角,不能纠结于代码写得好不好、对不对,这些都是次要的。
科研里会遇到很多复杂问题,我们可能在局部花了很多时间,到最后连整个方案可不可行都不知道。我们最需要的是先做一个基本版本,让整个流程跑通,然后才能看到真正的问题在哪,再进行针对性优化,而机器人比赛就是把思路从一个“要拿最高分”,变成“要完成一个最小可完成的系统”。

另一个是团队协作。机器人比赛不是一个人能完成的,工作量非常大:负责结构的人做结构,负责程序的人做程序,负责结构的人还要跟负责程序的人沟通,负责程序的人还要考虑操作手的习惯,操作手也要跟程序员反馈这个机器人运动起来是否符合手感。做策略的时候也需要大家一起判断,这个比赛怎么打。所以很多方案不是理论上最好,而是看它能否适配整个团队。
最后一点是心态。我们之前也说过,VEX 比赛完全不可预料会发生什么,做科研也一样。很多时候我们并不知道这个东西能不能做出来,做不出来是很正常的。科研本身就是曲折的、螺旋上升的过程。我们能做的就是不断拆解,不断做可行性验证,再逐步迭代。这些都跟 VEX 的经历相连。

问:对正在准备 VEX 项目或者想走计算机方向的学弟学妹,有没有什么建议给到他们?
最主要的建议还是不要太在意输赢,更多去享受这个过程。参加比赛肯定想赢,想赢也是对的,但不能把输赢看得那么重,不能觉得没拿奖,之前的工作就全废了,这是完全错误的。
虽然当时可能会非常难受,但回头再看,我们记住的并不是比赛输了,而是那些一起做机器人的队友,比如每天放学后大家一起调机器、调程序;比如在世锦赛上看到别人做出很精妙的结构,看到机器人竟然能做到那么出色的动作。如果真心觉得机器人有意思,那就去享受做它的过程,认真准备,能赢当然最好,但不能让输赢变成唯一目标。在这个过程中学到的东西、认识的人,以及自己对很多事情的重新理解,可能比一开始想象的那个结果更重要。
