如何成为一名机器人工程师(二)

来自《机器人工程师学习计划》,原文是大疆工程师YY硕对自己过去学习方式的一个总结。

上周,给大家介绍了想成为一个机器人工程师,大一、大二的学生该怎么做。本周继续为你介绍大三和大四该做什么准备…

【新春特辑】如何成为一名机器人工程师(二)

大三一定要培养出自己一个人独立造出一个完整机器人的能力,比如一个Robocon水平的机器人,或者一个RoboMasters的战车,或者一个四旋翼飞行器。

【新春特辑】如何成为一名机器人工程师(二)

还记不记得小瓦君上周的文章?里面大二应该掌握的知识在这里就一一体现了哦!

【新春特辑】如何成为一名机器人工程师(二)

四旋翼飞行器的机械部分最简单,但是算法比较复杂。对于大三学生来说,从零开始一步到位写一个稳定的飞控比较困难,因为飞控里面有很多细小的知识点要注意。

 

学习四旋翼飞行器
的几个步骤

 

1
自己调一个小四轴飞起来

 

从学习的角度来说,笔者比较推荐的是淘宝店:第七实验室卖的STM32F405飞控,买回来以后自己再随便买个机架(比如大疆F450)、接收机和遥控,就能按照飞控板附带的学习资料、调试软件飞起来。

 

2
看硬件图、读代码

chiplab7的飞控板附带一大堆学习资料,对加速度计、陀螺和磁感计都有很仔细的解释,硬件链路图也很详细。发现代码有bug和看不懂的地方,都可以直接找掌柜问哦~

 

看完代码以后,对一个飞控系统的基本模块:姿态解算、控制解算、混控输出、遥控器处理、嵌入式处理就很明白了。然而这里面有很多技术是需要另外学习的。

 

除了基本的嵌入式编程以外,还有要把大二大三学的信号处理方面的知识再捡起来看看。因为飞行器在空中有振动,会让加速度计产生噪声,为了把这些噪声去除掉,需要对加速度计给出的信号做低通滤波处理,如何选择滤波器的参数呢?如果滤波滤得太狠,延迟就会比较大,对控制的表现会有影响;如果滤波滤得不够,可能会有一些低频的噪声偶尔会出现,导致加速度计的观测不能用。

 

另外最重要的是要理解姿态解算控制解算这两块知识。chiplab7的飞控板的代码采用的是最简单的互补滤波算法做为姿态解算模块,然后控制解算是对欧拉角的三个角度做闭环PID控制,基本都是基础的基础了。

 

3
小修小改加深理解

chiplab7的飞控是靠气压计定高的,飞行效果非常奔放。这时候可以淘宝买个20块钱的超声波模块,然后自己写个高度环去稳定飞控的定高表现。

 

这个过程至关重要,因为高度控制相对来说是个比较直观理解PID控制的方式,而且chiplab7的飞控加高度控制非常好加。工作量不大,因为改善效果很显著,所以可以让人很有成就感,加深继续学习的乐趣!

 

4
理解核心的数学和控制知识

 

姿态解算和控制解算涉及的知识有:

 

  1. 刚体姿态的表示、运动学方程和动力学方程。

主要是对牛顿-欧拉方程的认识和理解、刚体姿态的欧拉角表示法、姿态与角速度的关系等等。可从维基百科入手

 

  2. 自动控制原理。讲PID的书和文章就有很多~

 

  3. 线性估计基本原理。其实就是互补滤波:Reading a IMU Without Kalman: The Complementary Filter 

 

5
重头开始造轮子

 

知乎著名网友vczh曾经说过,学习要抱着勇于造轮子的心态才能进步。所以在熟悉了别人飞控基础上,可以自己重头造一个飞控的轮子。

 

可以自己从芯片开始重新画一个飞控板,读读STM32的芯片手册、读读各种传感器的芯片手册,自己手画一个飞控的原理图、做PCB layout、制板自己焊元件,全套花不了1000块钱,能够加深很多对硬件的理解。

 

 

重视积累

制造整个机器人的过程中要特别重视文档的积累。
 

1

 

【新春特辑】如何成为一名机器人工程师(二)

 

2

【新春特辑】如何成为一名机器人工程师(二)

【新春特辑】如何成为一名机器人工程师(二)

如果你一直往里面积累自己工作中的记录,等你将来工作了,这个文件可能会值很多钱。

 

3

另外特别重要的一点是机器人系统里的嵌入式平台都有烧坏的可能性,有可能在某个嵌入式Linux平台上面辛辛苦苦写了一个多月代码,这个平台突然烧坏了,代码也就丢了。因此你的机器人如果有嵌入式Linux系统在里面,一定要尽早顶起路由器,代码定时提交SVN或者git。

笔者建议

有机会,一定要参加至少一届机器人比赛。那是一件磨练心性的事情。你可能体会到和胜利擦肩而过的痛苦,体会到没机会再来一年的遗憾。参加机器人比赛,很努力,然后失败了,是一件让人快速成长的事情。

 

大三的暑假要思考自己大四应该干什么。不管是出国还是保研,最重要的目的是给自己争取到未来2-3年能够在一个优秀的环境中安心提升自己,有比较好的学习资源,能够参与到一些不错的项目中去。

另外你还需要选定自己将来的细分研究方向,也就是在上周文章开始提到的感知、认知、行为几个方向,而且开始往这个方向深挖。

 

出国去学机器人学方面的知识你有很多不错的选择,比如

世界第一的机器人研究院卡耐基梅隆大学

麻省理工学院的CSAIL实验室

北美传统计算机四大名校(麻省理工学院,卡耐基梅隆大学,斯坦福大学,加州大学伯克利分校)

【新春特辑】如何成为一名机器人工程师(二)

大四可以开始读一些著名入门书籍,笔者建议没有必要全部去读,而且每本书先读前几章就够了,能读多少尽量读多少。

 

  1. 概率机器人学

  2. 凸优化

  3. 线性系统理论

  4. Multiple View Geometry in Computer Vision

  5. 线性估计

  6. 《机器学习》,周志华老师的书

  7. An Invitation to 3-D Vision

  8. Modern Control Systems

  9. Rigid Body Dynamics

  10. Feedback Systems: An Introduction for Scientists and Engineers

 

这些书,大部分特别贵,你可以找一些电子版或影印版的而来看~

 

在读上面这些书的时候,matlab,python都要放在手边,然后把书里面的知识尽量实践出来。很多教科书里都会在章节后面的习题里放一些写明是用matlab做的习题,要尽量多做一些这样的题。

 

ROS

你可能早就听说了ROS的大名,但是最好不要在大四之前去碰它。

 

ROS用了很多操作系统和网络的底层技术。它设计目标是把机器人的控制和传感器处理的软件和它的硬件隔离开,用上ROS以后,你可以方便地用到很多能直接跑的软件代码。但是ROS从入门到精通需要至少一年以上的时间,你必须不断地用,不断地尝试新的代码和硬件,才能对它熟悉起来。

重视实习和毕业设计

要把做毕业设计的过程看做一个正式的项目。这个项目除了做好技术方面的工作,也要做好展示方面的工作。

 

通过PPT介绍、展示自己的成果在工程师的职业生涯的任何一个阶段都非常重要,它甚至也一定程度上限制了机器人工程师能够达到的高度。只有能够把自己的成果清晰地表达给自己的团队,才能获得其他人的反馈、通过沟通提高团队的整体凝聚力和知识水平,这样自己在团队能够获得更多的认可,有助于团队整体工作效率的提高。

【新春特辑】如何成为一名机器人工程师(二)

为了写出美观的技术报告和毕业论文,你可以开始学习Latex

 

【新春特辑】如何成为一名机器人工程师(二)

写毕业论文有个问题是怎么做出精美的矢量图,我推荐Draw Freely | Inkscape,一个比Illustrator更轻量化、但是有些功能反而更强大的免费软件。

 

对于那些想申请出国留学的同学,你要做一个自己个人的成果展示,用网页的形式呈现比较好。把自己Github链接(如果你按照上周文章说的,大学第一天就申请Github账号,现在已经是一个三年的老油条了)、做过的机器人视频、写过的技术报告和文章(最好是英文的)放在上面。

大四到研究生之前的暑假,最好去一些比较不错的机器人公司实习一下,或者继续做机器人比赛。