笔者来自18级机械系机器人工程专业。大学四年期间,对机器人专业的学习路线逐步形成了自己的见解。笔者曾受知乎大V yy硕 所著的机器人工程师学习计划启发。参考这篇文章,笔者也在此分享个人成长心得,或许于更贴近南科大机械系同学的实际情况。笔者自认为没有什么数理和工程天赋,上大学前也未曾接触机器人及相关领域,但在这四年的探索中也找到了机器人方面的兴趣和热爱。希望能给有类似背景的同学参考。个人刍议,如有不当之处,敬请批评指正。
大一刚入校,我们对专业的选择还并不明朗。刚尝完开学季的新鲜,我们就会投入到紧张的高数、线代、大物的学习中。高数、线代对大家的理解深入程度、解题熟练程度、灵活运用能力要求很高,给分相对严格(不同届情况可能不一样),一定要多投入时间。我们刚开始可能对高数、线代,包括大二所学的概统的作用不清楚,但不可置否的是,这些课程对今后的专业课学习十分重要。这些课程中,有的知识点相对抽象(尤其线代),对刚上大一的我们会造成不小挑战。这里建议多刷题,反复、深度地练习。要强调的一点是,我们不要以敌对的态度去对待高数、线代这些课程,可以在刷题之余也观看一些更加生动的视频资料。这里推荐油管上3B1B的微积分和线性代数入门。在课程之余,我们可以借机会玩机器人。我们可以选一些面向大一同学的机器人导论课,可以参加机器人相关的社团。如果课余时间充足,我们可以参加机器人比赛。对于本科毕业想要升学的同学而言,大一阶段保持一个较高的GPA是很重要的。今后无论境内保研还是境外升学,无论是申请博士还是申请硕士,高的GPA都是强有力的筹码。
大一的寒暑假将是我们能够在课程之余自由安排的好机会。如果我们想要提早感受专业学习,可以参加一些学校的活动,例如“素研”夏令营、“达·芬奇”夏令营等。个人非常不推荐两件事:1)大一进入实验室。机器人横跨了机械、电子、计算机三大领域,其中每个领域又可以延伸出多个不同的主题:例如,机械包含了机械设计,包含了动力学分析,包含了材料力学。电子包含了电子电路领域,也包含了控制领域。而机器人领域的绝大多数工作都是交叉的,要领会其中的真正的内容,往往需要有高屋建瓴的认知。大一时我们在机器人方面的知识还远未成体系,此时贸然进入实验室,很多东西可能不能领会,挫败感就不言而喻了。2)只学不做。工程的学习永远是问题导向式的,我们之所以深入探索一个技术点及其背后的相关知识,其根本出发点是想要解决相关问题。如果我们只学不做,只有输入而没有输出,学过的知识很快就石沉大海,束之高阁。边学习理论、边进行实践,可以说是机器人学习的不二法门。
大二时大家开始进入专业课的学习。个人觉得,专业课的相比于大一的数理基础课,要取得一个较高的成绩是更加容易的。这时候如果能空出更多的时间,就一定要参加一些机器人的课外活动。如果只跟着板上钉钉的培养方案修读相应的课程,四年下来的收获是非常有限。这时候如果我们在工程制图、机器人电控方面有所涉猎,可以尝试联系实验室。对于低年级进实验室的同学而言,可以做一些实现方案相对明确的工作,可以帮着师兄师姐一起完成测试工作(对一项工作的认知的建立往往是从参与测试工作开始的)。
对于进入实验室参加科研的心得,我想分享五点:1)对问题要有“死磕”的精神。机器人方面的工作,遇到问题是家常便饭,大大小小的Bug将会处处潜藏。此时就要多方面观察,多通过画曲线、自己写测试代码、迁移到另一个环境交叉验证等方法进行debug,并及时记下观察到的现象和结论。另外建议多请教有经验的人。在请教时,一定将问题的前提、配置等描述清楚,并用尽可能形象的方式展示自己debug中遇到的现象和问题,最好能做一个简单明了的PPT。2)重视测试。我们很多同学,往往习惯用心设计、制作机器人,却忽视了完成制作过程后的测试。很多时候,我们会抱有“能用就行”的侥幸心态。殊不知,如果没有完整、全面的测试,很有可能会为未来的研发工作制造拦路虎。而在对他人展示的层面而言,也是没有太多说服力的。3)定下研究目标时,不要贪多,先把一个做好再做下一个。这是我在付老师实验室从事本科生科研期间得到的重要启发。机器人专业同学往往有追求和推崇工程系统的复杂性的习惯。但对于科研而言,做好一个环节,把模糊的东西清点清楚,再进行下一个环节,步步为营,才是不二法门。工程系统(尤其是带硬件的系统)本身是容易出现错误的。盲目搭建复杂的系统,错误组合爆炸,最终很可能在硬件上就心力交瘁,还没法借助所搭建的平台探究自己想要的问题。4)学会讲故事。先有大背景,再有小问题。要明确自己解决的问题所在,以及相比前人工作的创新所在。5)找好队友:单打独斗是很难做出成绩的。最好能找到一个,自己负责的任务能在自己规定的期限内完成,即使遇到问题无法完成也能及时沟通,甚至可以主动帮助他人解决问题的队友。
关于实验室的选择,大家可以多约教授和组里的师兄师姐聊天。笔者大学前三年主要在付成龙老师实验室。付老师实验室的全称为“广东省普通高校人体增强与康复机器人实验室”。从事人体增强机器人领域的研究,所研究方向包括假肢、外骨骼、外肢体、弹性背包等等。这些机器人主要用于军事辅助领域、医疗康复领域。笔者认为,医疗康复机器人有很大的应用前景。随着人口老龄化问题的愈发严重,康复医疗市场也在风生水起,而机器人能够在其中扮演重要的作用。目前,医疗康复机器人还存在成本过高、技术门槛过高等不足,未来,随着机器人研究院和医院合作的愈发紧密,医疗康复机器人愈将成为新的风口。付老师实验室的研究项目内容,主要偏重机械设计、嵌入式算法实现、控制算法实现(need to explain in plain text),另外有少量的信号处理、视觉识别等工作。如果同学们对玩机器人硬件(机械设计、加工拼装、搭电路、实现电路程序、测试电路)等工作有兴趣,欢迎加入付老师实验室。目前笔者也开始逐步关注足式机器人领域的研究。自从ETH的Anymal足式机器人在部署强化学习算法后取得了对复杂地形的空前的适应性来(试想一台机械狗,能够在无人为辅助的情况下,零摔倒翻过一座布满杂草、丛林、溪涧的山),强化学习是足式机器人领域,甚至整个机器人领域异常火热的研究话题,呈现出百家争鸣之态。强化学习的另一个重要的应用场景是机械手的抓取。同学们如果对强化学习有兴趣,可以考虑加入张巍老师、宋超阳老师实验室(有新老师入职可以更新)。当然,强化学习需要花不少功夫理解其中的逻辑,对低年级的同学而言入门难度稍大。
有不少同学会存有这样的疑惑:既然现在是“全员转软”、“全员向码”的时代,我们要不要从一开始就选择一个纯粹编程的方向呢?这里先要解释的是,机器人的同学并不是就是所谓的“做机械”、“不编程”的同学。编程也将是我们的学习生涯中至关重要(甚至最重要)的一环。按我的理解,计算机科学同学的编程,可能更偏重实现数理层面上复杂的算法逻辑,而我们的编程则更偏重如何将算法部署到硬件上、让硬件按期望的方式动起来。这其中主要涉及了:让机器人读取和处理外部环境的数据(感知)、让机器人按期望的方式动起来(这其中可能包含规划轨迹/路径,包含底层硬件的驱动,例如让电机转起来,包含通过强化学习的方法让机器人能够自主适应式地在不同环境中都达到期望的表现)。因此,鼓励同学在大学四年“狂编程”,多坐下来静下心写代码。另外,请不要抗拒机器人硬件。对机器人硬件的深入理解,是我们专业同学相比计算机科学、软件工程等专业的重要能力加持。