专业与产业
我开篇先不谈“专业”而要谈“产业”,“专业”和“产业”一字之差,它们有什么关系呢?
产业能极大地促进一个专业的发展:
● 1886年奔驰发明了第一辆以汽油为动力的汽车,随后汽车市场快速成长并形成了一个庞大的产业。为迎合汽车产业对人才的需求,大学开始设置相关的专业——车辆工程专业;
● 1903年莱特兄弟发明的飞机催生了航空工业,大学为此开设了飞行器设计与工程等专业;
● 1946年诞生了第一台电子计算机,其快速发展也使大学开设了计算机和软件等专业;
● 1954年第一个数字可编程的机器人出现了,但受到技术的限制,其发展速度相比其它产业较为落后。在高校中,机器人研究一般在机械学院的机械电子专业或者自动化学院的模式识别与智能系统专业下展开,直到最近(2015年)中国才有高校开设机器人专业的院系(东北大学机器人科学与工程学院)。
机器人专业
机器人学是一门交叉学科,为了设计制造机器人需要多个传统学科的知识,例如:
1. 机器人的自由度是多少?关节减速器如何设计或选择?(机械设计与制造专业)
2. 机器人的关节如何驱动?驱动电路如何设计?(电子工程专业)
3. 如何规划机器人的运动?如何对机器人的运动进行仿真?(计算机及软件专业)
4. 如何让机器人跟踪我们规划好的运动轨迹?(自动控制专业)
5. 如何建立机器人的运动或受力模型?(力学专业)
6. 如何判断机器人所受约束的类型?(数学专业)
正是由于机器人学依赖如此众多的基础学科,其人才培养更加困难。
基础知识:数学
数学可能是一些人最头疼的,但是没办法,从事现代机器人研究可能会用到多种数学工具。以移动机器人中的 SLAM 问题为例,其中用到了概率论、图论、线性代数、数学优化、微积分、高等几何等多个数学学科的知识。以我个人的经验,我就时不时地翻翻高等数学和线性代数。这两们基础课程可能是机器人中使用最多的,有志于从事机器人研究的同学可以稍微用点心。为了能看懂期刊论文,我还需要自学了解一些现代数学分支,比如微分几何、群论、拓扑、图论、偏微分方程、数学优化、动力系统。但也别太担心哟,机器人学虽然用到一些高级数学但用的不会太深,浅尝辄止即可(有些学科简单了解一下基本概念即可,不必深究,否则你会在这上面浪费大量时间)。
以机器人学家李泽湘为例,我们发现他在美国加州大学拿到电子工程和计算机专业博士学位之前,还顺便拿了数学硕士学位(MA degree in Mathematics),见下图。他解释说是因为机器人要用到较多的数学知识,所以他选修了很多数学专业的课程,多到把数学学位都拿下了。
知识来源:书籍
下面以我自身的经历介绍机器人学的专业书籍。作为一名机器人方向的研究生,由于兴趣和专业需要,我阅读过的部分书籍如下(提到的书籍均可点击此处下载),提取码:1lv4
《Introduction to Robotics: Mechanics and Control》是本老教材了,也是介绍机械臂类型机器人的经典入门读物。里面的知识都比较基础,可以用来扫盲(这里的“基础”不是指简单,如果你没有更基础的知识储备,比如理论力学、控制理论,可能还是不懂)。如果英文不好可以看中文版:《机器人学导论》。
《Robotics, Vision and Control — Fundamental Algorithms in MATLAB》书中前几章以机器人为主题,理论和实用兼顾,既包含机械臂也涉及移动机器人,比较易懂。该书最大的特点是读者可以通过编程验证理论的正确性,因为它附带了一个软件包:Robotics Toolbox,它是用 Matlab 编写的。
《A Mathematical Introduction to Robotic Manipulation》的作者之一是李泽湘,他在机器人圈子中几乎无人不知,学术和商业上做的都比较成功。他有一个学生比较有名,就是大疆的创始人汪涛,李同时也是固高自动化的老板。该书在微分几何的基础上展开,对初学者可能有些难。我是一边看微分几何入门一边看这本书,用了一年多才慢慢理解了,虽然还算经典但不适合入门。如果你英文不好可以看中文版:《机器人操作的数学导论》。随书也附带了一个旋量软件包 Screws,可以用来建立机器人运动学模型,不过这个软件包是用 Mathematica 软件编写的。
《Robotics — Modelling, Planning and Control》主要介绍机械臂,含部分移动机器人,内容还算基础。就是读着有点生硬,过于照本宣科,形成定理和方法的堆砌。
《Principles of Robot Motion Theory, Algorithms, and Implementations》主要讲移动机器人的运动规划,也有一部分机械臂最优轨迹规划,比较基础。该书的特点是包含一些简单的例子,有助于读者理解,我比较推荐。
《Introduction to Autonomous Mobile Robotics》介绍移动机器人面对的问题,比如导航、运动规划。
《Planning Algorithms》 详细介绍了机器人(运动)规划中的问题,也包含其它一些领域的基础性介绍。作者旁征博引,但是我个人感觉写作风格不好,缺少注释,读起来比较费劲。该书有中文版:《规划算法》,但是翻译地同样生硬拗口。
《Robotics and Automation Handbook》主要针对机械臂类型的机器人,介绍了一些新的控制方法,用到了较高级的数学知识,初学者可以跳过这些只读读文字。
《Geometric Fundamentals of Robotics》通篇几乎都在介绍旋量、微分几何和李群,如果你数学不太好还是别看了。作者显然功力深厚,但是太注重理论推导了。搞并联机器人的倒是不可错过,该书也有中文版:《机器人学的几何基础》。
《Probabilistic Robotics》主要针对移动机器人的定位导航,介绍了机器人面对的不确定性问题,搞SLAM的应该看看。
《Springer Handbook of Robotics》是部百科全书似的大部头,各章都是杰出人才写的自己拿手研究领域的基础内容。
《Theory of Applied Robotics - Kinematics, Dynamics, and Control》介绍机械臂类型的机器人,语言朴实,比较基础。
上面这些书都有中文版,如果经常用,最好从图书馆借或从淘宝上买纸质版,不贵,最重要的是保护眼睛。没办法,你要看的资料可能很多,所以眼睛很重要。该读中文版还是英文版呢?最好读英文版,因为中文的翻译普遍生硬、晦涩。我没有推荐咱们国家自己的中文读物(比如蔡自兴的《机器人学》),因为老外写书更偏向读者的角度,把为什么要研究讲的比较透彻。而我们国家(尤其是早期)的书只学到国外的形而没学到魂,只会一板一眼地照猫画虎,表述方法不考虑读者的感受,读起来像教科书,枯燥乏味。
虽然现在介绍机器人的专业书籍很多,但遗憾的是,它们基本上都不适合初学者(这些书更像是给那些经验和知识丰富的人复习用的)。大言不惭的说一句,即使像我这样受过专业训练、有一定知识储备的人,要完全看懂这些书也并不容易——要么过于抽象不知所云、要么就是不知道从何而来。
在面向小学生的低级机器人科普读物和面向专业学者的严肃教科书中间有片空白区域。我想写一本给那些没有经过太多高等数学训练、也缺少实际应用经验的读者的书。机器人学是一门应用性很强的学科,一切理论和概念的提出都有它的出发点,都要告诉读者来龙去脉,它的特点有哪些,与其它类似理论概念的关系又是什么,同时最好借助身边的例子,而不是突兀地展示给读者一个不知从何而来的定理或者方法,毕竟人脑不是电脑。不要像高斯这样的老狐狸,把自己犯的错误悄悄掩盖起来,只展示给读者正确的结论以显示自己的智慧超群。其实,那些学者也是走了无数的弯路,绞尽脑汁才得到一点点智慧的结晶。我们的教科书只把精华拿出来,却忽视了读者本身也是人,也会因为迷茫犯很多错误。授人以鱼不如授人以渔,不仅要告诉读者是什么,还要告诉读者为什么是这样,大师是怎么思考的。有时知识本身并不重要,思想和方法才重要。
知识来源:论文
书籍一般介绍基础知识,要想知道最新的前沿知识就得看期刊论文了。有的论文可以免费下载,但是大部分需要付费下载,当然你们学校会购买一些常用的 数 据 库,最常用的有IEEE,Springer,Elsevier,CNKI知网,你可以通过学校网络下载。但是如果你搜到的论文不在购买的数据库内怎么办,这时可以求助于免费的盗版论文数据库Sci-Hub。我看的资料主要来自于 google 和维基百科。可以说 google 对我的帮助比我的导师还大,我曾想在毕业论文的致谢部分感谢一下google的创始人。Baidu用的也不少,不过无论是搜索结果的相关性还是重要性,Baidu比google都差很多,而且最新的和最有创意的思想几乎都在国外,所以最好用google。不得不说,维基百科和Sci-Hub确实不错,它们减少了信息传递的阻力,以后我挣钱了就给它们捐一笔钱。
虽然机器人学的研究对象是机器人,但是本质上面对的是数学问题;而撰写论文和基金需要你的逻辑表达、语言组织能力;参加国际会议演讲、撰写英文论文需要你的英文表达能力。高考三大科目——语数外凑齐了。
机器人的困境
现在,大部分机器人用于工厂,执行焊接、喷涂、搬运等工作,这些工作的特点是简单、重复,这恰好与计算机的特点一样。计算机最擅长执行大量简单的、定义明确的操作(加减乘除)。由于缺乏像人一样的适应能力,机器人还无法用于有较大不确定性的环境和任务,比如家庭环境,其中有随意穿梭的人员,环境中的物体可能经常变动位置,这都给机器人造成了很大的挑战。
The biggest obstacle in the design of robots for other areas of application, such as domestic environments, is uncertainty.
———— Formations and Obstacle Avoidance in Mobile Robot ControlInformation reduces uncertainty.
———— wikipedia.com/Information
现实中呆板的机器人一定会让你大失所望,因为这与电影中刻画的形象差距实在太大。看过电影《变形金刚》的同学,一定会对红蜘蛛攻击 F-22 战斗机时眼花缭乱的动作印象深刻。红蜘蛛连续对多个目标进行了打击,同时不动声色地完成了躲避摩天大楼和战机碎片的任务,而所有这一切又是在高速运动下进行的。在红蜘蛛如杂技一般的运动能力面前,我们现在所有的机器人都成了老年痴呆,导演迈克尔贝炫耀了一把特效,顺便也鄙视了一下科技界。所谓外行看热闹,内行看门道,重型机器人在高速运动下的动力学效应不可忽略,动力学约束下的运动规划和控制非常困难(难到有一家公司直接以它命名——波士顿动力);红蜘蛛还要测量环境中静态障碍物(大楼)的数据,同时躲避动态障碍物(战斗机碎片),在这些前提下红蜘蛛还要快速计算攻击多个动态目标(人类战斗机)的顺序。这些任务中的任何一个拿出来对于今天的机器人都是极大的挑战,更不要说放在一起了。
为什么我们智慧的科研人员绞尽脑汁设计出来的机器人连稍微复杂一点的任务都应付不了呢?我认为问题出在信息上,更具体的说:现在的机器人缺少信息的感知和处理能力,这里的关键词是“信息”。处在信息时代的你对信息的概念一定不陌生,但是你未必了解它的重要作用。我们从信息的角度思考一下常见的东西:中国的四大发明中有三个与信息有关——指南针用于给出方向信息、造纸术使(文字)信息传递更加方便、而印刷术促进了信息传递的效率;再举个例子,人类超过80%的信息是通过视觉获得的。为了体验信息缺乏对生活的影响,你可以尝试闭上眼在人流量大的马路上走个几百米。人作出决策需要信息,但盲人最主要的信息源被切断了,这就是盲人生活艰辛的原因。
盲人不得不依靠听觉和触觉等其它信息获取方式,而机器人的生活比盲人还要艰难,它能利用的信息更加有限。为了增加信息,我们可以给机器人添加各种各样的传感器:摄像头、GPS、超声波雷达、加速度计、力矩传感器等。我们建立机器人的模型(不管是运动学还是动力学模型),也是为了得到机器人(“身体”的)信息;我们建立环境的地图,目的同样是给机器人提供(外部环境的)信息,以便于它决策——比如躲避障碍物。一般来说,信息越充足,机器人的性能就越好,因为我们都有这样的经验——信息越充分,决策越容易成功;反之信息越少,决策就越容易失败(知己知彼,百战不殆,这点老祖宗早就意识到了。历史上几乎所有以少胜多的战役都能找到信息的身影。三十六计中各种欺骗、策略也是在操纵信息)。可是信息充裕了之后,机器人应该如何利用呢?这个问题就更困难了,当然这是人工智能的研究范围。人脑就是一个优秀的信息处理器,经过训练(即学习),它能够做出复杂的决策。可是人脑是如何处理信息的呢?目前这还是一个未解之谜。不要说人脑,就连一只苍蝇的大脑是如何处理和存储信息的我们都不知道。
猎豹既不懂数学,也不会建立动力学方程,可是它矫健的身手让现在的机器人望尘莫及,这是为什么呢?“秀丽隐杆线虫”是一种身长只有1毫米的小虫子,虽然它只有一个非常简单的大脑,但是却能感受环境中的很多刺激,比如接触、温度、化学物质、离子、外激素等等。和实验室和工厂中的机器人对比一下不免让人疑惑,一个大脑如此“单纯”的虫子为什么需要这么多“传感器”呢?我的观点是,生物没有高级的数学方程“信息”可供利用,所以只能最大限度的收集其它形式的“信息”弥补这一缺陷。利用这些信息,动物能在自己的神经网络中建立类比动力学方程的输入输出关系,其实际效果甚至超过精确但却死板的动力学模型。幸好上帝没有给动物直接灌输动力学方程,如果我们人类也像机器人一样,先建立模型再设计控制算法才能行走,可能到大学毕业我们还没迈出第一步;而蝴蝶的大脑也必须装载两套运动控制系统:一套专门用来控制爬行,一套用来飞行。看来大自然比我们想象的更聪明。
机器人学是一个庞杂的学科,它都包含哪些部分呢?在大部分教科书中,一般划分为“建模、感知、规划、控制”这几部分。在我最初接触机器人学时就十分好奇:为什么要划分成这几部分,各部分间的关系又是什么?在我读研究生期间,从未有人能阐述清楚它们的关系,似乎大家都默认这是顺其自然的,而且我也从未看到有博客或书籍给出能让我信服而又深入浅出的解释。现在从信息的角度俯瞰全局,相信你不再有我最初的困惑了。“信息”贯穿了机器人研究的整个过程。为了让机器人有更好的表现,必须搜刮能找到的一切信息,并最大限度的使用它们:
● 建立模型能得到机器人的运动变量间的关系(信息),这是为了预测机器人的行为,但更多时候我们想改变它的行为(控制它按照我们的意愿运动);
● 感知则是为了得到周围环境的信息;
● 当然,得到信息不是目的,我们最终还是要用信息来决策,这就是“规划”的任务了。规划时使用信息可以提高效率,比如在图搜索中常用的启发式信息(这个例子展示了使用信息的好处);
● 规划出结果后如何让机器人执行呢?这就是控制的任务了。控制更离不开信息,比如机械臂控制中最常用的计算力矩法里的前馈项就是机器人的动力学信息,由于我们掌握的信息不能做到100%准确,所以有偏差,因此还需要结合反馈控制,反馈控制依赖的误差同样是信息。(有个期刊叫《信息与控制》,由沈阳自动化研究所主办。无独有偶,我们国家唯一的机器人学国家重点实验室就设立在沈阳自动化研究所。此外,还有各种“信息与控制学院”、“信息与控制研究所”。“信息”和“控制”有什么亲密关系?为什么要把它们哥俩放到一起。其实,“信息不但是控制的基础,还是控制的出发点和归宿,贯穿于整个控制过程的始终”——《信息科学原理》,钟义信)
我们一直在和信息打交道,只不过信息的形象千变万化,你不容易认出来。这一点,我希望老师在讲课时能明确提出来。因为以我个人的经验,学生很容易迷失在琐碎的公式和细节的海洋,只埋头于自己狭窄的专业领域而难以建立起对整个学科宏观的认识。我发现很多机器人方向的硕士生、博士生即使毕业了还没有建立起这样的观念;同时,很多老师对自己的专业很精通,可是学生听他的课却很费劲,其实有时多说一句话学生理解起来就会容易的多。以这篇讲座《为什么计算机视觉对机器人如此重要》为例,演讲者李飞飞东拉西扯举了各种例子试图说明白视觉有多重要,但可惜就是没有戳破这层窗户纸——视觉是为了获取信息。