0.引言

机器人的研究已经有了长足的发展,所有的机械劳动理论上都可以被机器人代替,从现在日益成熟的工业机器人和移动机器人身上,我们似乎有看到了曾经发生在计算机系统的历史正在重演:从中央机过渡到工作站,再到现在的PC机和手持设备.在过去,机器人笨重且昂贵,而且用不易挪动的大型计算机来控制,二者之间的联系往往依靠电缆.而今天,我们可以借助众多执行器和传感器的选择,通过低廉、小巧的板载嵌入式计算机系统进行控制,来构建属于我们的小型机器人.

机器人是交叉学科融合的产物,其涉及知识面之广是前所未有的.学科遍及计算机科学、信息技术、自动控制、电气工程、材料、机械工程...机器人工程师既需要有扎实的理论基础,又需要有极强的动手实践能力,技术门槛高,是未来的发展方向.

2017年我刚考研那会儿,便开始这个专业特别感兴趣,当时在网站上各种搜索,但是收集到的都是零碎的信息.所以在这里我将结合北航研究生期间所学课程以及自己的理解,告诉你想成为一个机器人工程师,需要掌握的技能和知识.针对每一个细分领域(正文中的粗体部分),我都会写一篇对应的分析文章,分享自己的学习经验,给出自己的入门建议.是的,这时一个极具野心的计划,可能会花费三年到五年甚至更多的时间,希望我能坚持下去,在自己热爱的机器人领域深耕细作,同时给大家带来高质量的文章.

这篇文章会一直持续更新,很多东西我都会列出自己平时的学习参考资料,以便大家进行更深一步的学习.欢迎各位小伙伴一起查漏补缺,如有错误也敬请指正.文章大纲可查看《机器人知识体系结构脑图》.

1.数学工具

数学方法渗透并支配着一切自然科学的理论分支—— 冯纽曼

如果你一直保有“数学就是一堆公式与证明的奇怪理论,它们除了让你头大和应付考试之外没有任何用处”这样的观点,那么这两本书《什么是数学》《数学之美》或许会改变你的想法.前者被网友称为“传道书”,对整个数学领域中的基本概念与方法做了精深而生动的阐述.后者讲解了数学在IT的行业的应用,将晦涩的概念进行深入浅出的剖析,阅读这本书需要你有一些高等数学概率论的基础知识储备.

当然,在机器人领域,最重要的数学工具是线性代数.建立在此基础上的旋转表示法D-H建模李群李代数四元数机器人学数学基础的主要研究内容,它们最终目的都是用来描述刚体在三维空间的状态.

为了研究机器人的力与运动,你需要学习理论力学.为了分析材料的结构强度,防止机器人运行过程中的承力部件的损坏,你需要学习材料力学.如果使用液压、气动装置作为动力源,你需要了解一些流体力学的知识.

就像年度热词一样,机器人领域中关于数学最常见的热词有:最小二乘法卡尔曼滤波傅立叶变换,这些理论,理解起来都很有难度,同时它们也非常有用,值得你花费一些精力去研究.

最小二乘可以对传感器采集的数据进行曲线拟合,求得最大似然估计,在现代控制中被广泛应用.卡尔曼滤波器是一个最优化自回归数据处理算法(optimal recursive data processing algorithm),它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至军事方面的雷达系统以及导弹追踪等等.近年来更被应用于计算机图像处理,例如人脸识别,图像分割,边缘检测.傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式.它是连接时域空间和频域空间的通道,很多在时域难以处理的难题在频域变得如此简单.它是现代通讯的理论基石,没有它的出现,现在所有的通信设备都会成为一堆废铁,失去原有的作用.在数字图像处理方面,它又可以将空间域的像素点转换到频域里,通过简单的滤波技术,就可以收获意想不到的降噪、平滑、锐化等效果.

最后,推荐一个知乎数学回答合集:z.defying:我在知乎学数学.

2.机器人的骨骼:机械结构

一个可靠的机械结构是机器人运行的基础.最常见的机构有连杆齿轮凸轮带轮等等,如果你是机械工程专业的学生,那么对这些应该会很熟悉,如果是其他专业的学生,也应该去了解一下它们的特性和工作原理.机器人中出现频率很高的一个结构是滚珠丝杠,它可以将旋转运动转化成直线运动.倒立摆模型在机器人机械结构中有着举足轻重的作用,它被广泛运用于双足机器人(仿人机器人)、四足机器人(机器狗)等行走式机器人,了解其原理后,可以自己试着用Matlab进行仿真.

一个很容易忽视的点就是螺钉、螺栓、螺柱的使用.你应该熟悉各种螺钉的类别以及其特点.在构件打的孔哪些是有螺纹的,哪些是光孔,它们的尺寸是多少,都需要参考《机械设计手册》,这本书可以说是机械专业的“圣经”,囊括了几乎所有关于机械的知识.

你需要学习SolidWorks来建立三维模型,学习AutoCAD来绘制对应二维图纸,便于后期的制造.通过Adams对你设计的机构进行运动分析,以此来证明其可行性和合理性.利用有限元分析软件如Ansys或者Abaqus可以分析结构件的受力变形情况.

结构设计完成后,就进入了制造阶段.机械制造分为两种:减材制造和增材制造.传统的机械制造工艺车铣刨磨钳都是典型的减材制造.现在这些加工也越来越方便,你可以将图纸交给万能某宝商家加工,甚至可以购买一个桌面级的车床,大大减少制造周期.对于机器人初学者来说,设计的结构能用标准的就用标准的,能购买现成的就绝不自己制造,这可能会牺牲一些重量和体积指标,但是会增加机器运行的稳定性,避免不必要的麻烦.

最近几年新起的3D打印属于增材制造,相比于减材的方法,它能制造出多样复杂结构,特别适合个人定制.但是由于强度问题,使用范围比较受限.在机器人原理验证阶段,经常用来制作原型样机.

3.机器人的肌肉:执行器

电机气动系统是机器人中最常见的执行器.对于初学者,主要用到的是直流电机.它包括普通直流电机、舵机步进电机.有条件的可以尝试使用交流电机、直线电机.

直流电机中,需要了解的两个技术是H桥脉宽调制(PWM),前者用来控制电机的正反转,后者通过改变脉冲宽度达到控制电机转速的目的.简易的驱动器L298N就是基于H桥的原理来给电机提供高于信号(3.3v或者5v)的电压.

4.机器人的感觉:传感器

可用于机器人设计的传感器太多了,多到说几天都说不完,很多书籍资料介绍传感器的时候大都按照用途分类.但这样带来一个问题,就是你永远也不能把它介绍全面.所以我将从传感器的输出信号进行分类,侧重介绍传感器与控制器的接口,而非传感器本身的内部构造.这样你遇到一个新的传感器的时候,可以迅速定位其所属类别,从而在不那么了解其工作原理的情况也也能达到工程应用的目的.

常见传感器的输出信号:

  • 二进制信号(0或1):触觉传感器开关(是的,开关也是一种传感器,它在限位的时候非常有用)
  • 模拟信号:麦克风
  • 数字信号:姿态传感器
  • 脉冲信号:编码器
  • 串口连接(RS232或USB):大部分传感器
  • 并口连接:摄像头

5.机器人的大脑:嵌入式系统(硬件)

嵌入式系统最核心的部分是单片机,现在市面上比较流行的有STM32Arduino树莓派等等.初学者建议先从Arduino入手,它对各种函数作了封装,可以通过官网查看各种函数的定义和使用方法.STM32可以购买淘宝正点原子进行学习,会附赠学习资料,手动配置工程会比较麻烦,你可以用CubeMX生成一个工程模版,再用Keil来进行程序修改.树莓派安装Linux的Raspbian系统,更像是一个小型的pc,可以用来处理较大的数据量.

学习一下计算机的工作原理的知识,会让你对单片机理解更加透彻.这里推荐《编码》这本书,它不需要你多少基础知识,一般人都可以看懂.这么书从逻辑门(与或非异或)开始讲起,一步引导到寄存器存储器算数逻辑单元中央处理单元.理论上,你可以用这本书的知识,从零开始创造一个计算机.

在信息处理方面,你需要了解基本的通讯协议,如串口UARTSPII2CCAN总线RS232.为了实现无线传输,你要了解WiFi蓝牙Zigbee,还要学会配置网线,学习TCP/IP,可以看看《图解TCP/IP》这本书.

当单片机用的比较熟悉的时候,你可以学一下数字电路(逻辑电路触发器震荡电路数模转换)和一些基础的元器件(电阻及电位器三极管电容MEMES).有了这些知识,你就可以利用Altium Designer画电路图,制作自己的板子.

6.机器人的灵魂:控制算法

在传统的自动化领域,需要了解常见的控制算法,如PID控制开关控制位移控制速度控制力控制多电机直线行驶等等.对实际的物理模型进行抽象,便可以得到传递函数,利用伯德图根轨迹对传递函数进行分析是自动控制的主要研究内容.

机器人控制当中,目前运用的最广泛的编程语言是C++.推荐比较全面的入门书籍《C++ Prime Plus中文版》.这么书比较厚,如果你和我一样没有耐心,可以下载英文版,当做到具体项目的时候,直接查找关键词,看看对应章节,查漏补缺即可.C++基础学的差不多的时候,可以扩展一些STL(Standard Template Library)的知识,容器自带的一些函数可以让你大大简化你的代码.

在Widows环境下,编译一般用微软开发的IDE:Visual Studio.在Linux环境下,早期都是用Makefile直接make编译运行C和C++文件,现在使用CmakeLists通过使用简单的几行语句如add_executable(添加可执行文件)、add_library(添加库)、target_link_libraries(链接库)等指令cmake生成Makefile文件供后续的编译.

除了编程语言,对操作系统的了解也必不可少.推荐Operating System这本书,理解操作系统的三大特性:虚拟性、并发性、永久性.重点学习一下Linux终端的一些指令和Vim编辑器的使用方法(这两个链接为实验楼学习课程,后续我会对其中内容进行整理).Linux发行版本众多,但是对于机器人方向,毫无疑问应该选择Ubuntu,理由是机器人常用的ROS工具目前(2019/12)只在Ubuntu上搭载.

如果你对人工智能方向感兴趣,必看的两本书是周志华老师的《机器学习》和Ian,Goodfellow写的深度学习.如果你对图像处理感兴趣,可以先从学习OpeCV入手,了解其背后的原理.

7.综合应用

目前机器人领域成熟的应用主要集中在以下三个方面:机械臂移动机器人旋翼飞行器.这些机器人系统都可以用上面提到的知识进行分析,受限于篇幅,将专门编辑文章对它们进行讲解.

8更新日志

2019/12/10:完成大纲内容的编辑