跑步矢量图 机器人工程师研究计划

日期: 2023-04-25 01:05:25|浏览: 551|编号: 11238

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

跑步矢量图 机器人工程师研究计划

谢谢你拿出来

.

.

阅读这篇文章

前言

很多朋友私信问我对机器人和人工智能感兴趣,如何开始学习。 最近有点闲,写下自己的看法。

机器人技术的核心问题是做好与物理世界的交互。 在目前主流的机器人分支中,处理与物理世界交互的学科分为三类:传感器和处理算法(激光雷达、多眼视觉、融合算法); 多刚体系统动力学控制(工业机器人动力学控制和接触力控制); Robot (不知道怎么翻译,研究轮式、腿式、飞行式等移动机器人)。 我建议对机器人感兴趣的同学关注这些问题。

此外,根据世界排名第一的机器人教育机构卡耐基梅隆大学机器人学博士的课程分类,机器人学有四个核心领域:

洞察力。 视觉传感器、图像传感器、触觉和力传感器、惯性导航等。

认识。 人工智能、知识表示、规划、任务调度、机器学习等。

行为。 运动学、动力学、控制等。

数学基础。 最优估计、微分几何、计算几何、运筹学等。

结合卡耐基梅隆大学的核心课程要求,我觉得我定义的机器人学核心问题基本没有落差。 本文后面讨论的机器人项目就是基于上述观点和课程要求。

一些可能有争议的观点:

1. 机器人技术是有钱人的活动。 虽然行业越来越发达,但是好的开发板和电机还是很贵的。 如果你想下定决心学习机器人并制造东西,你必须找到资金来制造东西。 要么自己花钱,要么得找学校里的机器人社团,或者找愿意赞助年轻人读书的人。 此外,也没有一本完整的书可以教你如何搭建四旋翼空中机器人或大狗机器人。 你需要参考十几本不同的教科书,而且这些书无论是中文版还是英文版都非常昂贵。

2. 机器人是屠龙的艺术。 这是创始人说的。 尽管近年来平衡车、扫地机器人、多旋翼飞行器等将机器人技术带入了人们的生活,但可行的商业应用仍然很少,现有的机器人和理论仍难以解决与物理世界交互的问题. 事物。 所以一定要确保你在机器人之路上培养了可以用于其他行业的技能,比如编程、机械设计和硬件设计。 你也要有心理准备接受这样一个事实,你可能在学习了屠龙之术后的几年内无法创造出对社会有用的东西。

3、基于以上观点,如果你已经工作了再想学习机器人,可能就来不及了,因为兴趣很可能无法克服客观约束。 如果作为兴趣爱好学习,只能学习制作巡线车和舵机机械臂,可能无法满足二病的创作欲望。

我个人认为机器人技术是一条艰难的道路。 要成为一名独立的机器人工程师,需要多年的理论和实践同步培训。 理论学习和动手实践的过程要相互安排。 在做某一个实际项目的同时学习最相关的理论,往往能起到事半功倍的效果,但同时,那些不太相关的理论也会显得很枯燥,所以如何合理安排自己的实践项目也很重要。

在这篇文章中,我计划为电气工程、机械工程和计算机科学专业的学生介绍一个从大学一年级到研究生二年级的机器人学学习计划。 基本上是对我以往学习方法的总结。 按照这个学习方法,你可以成为一个综合能力很强的机器人工程师,只是软件要多一点。 对于这个六年的学习计划,估计每年除了上课和完成课程要求外,每天还要花费6-8小时的学习时间。 一方面将其他学科的教科书用于实际项目。

机器人工程师在大型项目中的角色类似于飞机系统的总体架构师。 与机械工程师、硬件工程师、软件工程师、算法工程师、控制工程师相比,机器人工程师参与某一特定技术的时间较少,但他们能听懂所有工程师说的话,并且可以充当不同模块之间的协调者,主导整个团队全力以赴。 当然,如果机器人工程师能够在一个领域达到该领域工程师的卓越水平,那肯定会更好。

由于时间仓促,个人水平有限,文中如有疏漏和错误,敬请读者指出跑步矢量图,谢谢。 如果同学们有什么想了解的内容和教材,欢迎留言交流。

大一同学

一旦你是一名新生,你的机器人职业生涯就开始了。 首先查看学校的校园网是否可以绕墙。 没有的话就买一个100多块钱一年的VPN。 节省数万美元。 然后去注册一个gmail账号,再注册一个账号,再注册一个账号,再注册一个CSDN账号,注册完之后,登录就可以逛街了,暂时不要问为什么。

在一定程度上,英语水平会成为机器人工程师水平的限制因素。 英语是学生在大学里最重要的一门学科,不能只把它当作一门课,更应该是一种技能,是生活的一部分。 当你开始努力学习一些高级机器人知识时,可能很难找到中文参考资料。 如果这时候看不懂英文资料,你的进步速度和视野都会受到很大的影响。 所以大一的时候要多看红皮书,多看美剧。

不管是什么专业背景的学生,大学一年级必修的好课就是微积分和线性代数。 线性代数的重要性需要特别强调。 一般来说,优秀的工程师和科学家在职业生涯中至少要学习五次线性代数,大一一次,凸优化一次,线性系统一次,机器学习一次……如果你读对书,第一关就做对题,以后的学习就会轻松很多。

网上有很多关于如何学习线性代数的讨论,比如知道如何理解线性代数的问题? - 数学学习。 大神文章注释:我们需要什么样的数学教育? 也很励志。 学习线性代数我个人的建议是两本书,一本叫《Done Right》,一本叫《Done Wrong》(/~treil/p),我比较喜欢Done Wrong这本书,第一本是免费的。 第二,你只需要阅读前6章200页。 三是页边距大,印刷时留有较多空白供练习题。 另一本不错的教科书是麻省理工学院公开课:线性代数。 不管怎样,学线性代数,一定要用国外的教材,千万不要用国内的教材。 看英文书很累,但考虑到以后要多看英文书,线性代数已经算是很基础的了,所以一定要读下去,同时课后也要做足功课问题。

学完线性代数,一个很自然的问题就是如何用计算机计算矩阵的乘法、向量的乘法、向量的内积。 因此引入了编程学习。

不管你是什么专业,大一的时候就要开始学习编程。 至于用什么语言开始学习编程,我推荐比较好的教材是MIT公开课:计算机科学与程序设计概论,比较好的开发学习环境是(.io/)。 熟悉之后,同学们就可以开始玩转数值计算包Numpy了。 这时候线性代数的问题基本解决了,他们可以使用Numpy来帮助他们解决线性代数的问题。

对于任何人来说,它都是一把瑞士军刀,你可以用他做很多事情,比如自动回复邮件,自动收集信息。 但如果你真的想造一个机器人,正确的工具不是瑞士军刀,而是像C/C++这样简单粗暴的类似锤子和螺丝刀的工具。 当学习到一定程度时(比如听说有个东西叫C),最好从C开始学起,强迫自己练习使用C的一维数组和指针实现矩阵的加法、乘法、求逆、等操作。 之所以有高级或者Java(不要问我Java高级在哪里)我们以后还需要学习C,是因为机器人一般用的不是完整的计算机,而是计算量有限的嵌入式系统。 系统开发基本上只能使用C或更底层的语言。

我个人学习C的入门是清华大学出版的《C++语言程序设计》。 虽然这本书的书名是C++,但其实也没什么大问题。 但是,国内的C语言教材存在一个很大的问题,就是不指导学生使用Linux。 近几年比较好的教材是/,这个网站的教材很好,因为它教育学生使用Linux环境作为程序编译的环境,还介绍了一些计算机体系结构的介绍。

IT行业的程序员会争论哪个更好,高级语言还是低级语言,Linux还是哪个更好,但是对于机器人工程师来说,从现在到可预见的未来,C是最好的语言,Linux是最好的最好的操作系统,毫无疑问。 我们很少对选择哪个 Linux 发行版有任何疑问:(适用于 PC、手机和云的操作系统)。 原因是机器人操作系统ROS(|世界的)基于开发,因此在其上运行最为稳定。 请注意,有一个名为 Kylin 的中文版本。 个人感觉有点棘手。 建议不要安装中文版。 作为一个开源操作系统,它总是在快速迭代。 2016年8月比较稳定的版本是14.04和16.04。 建议同学们安装14.04。

当你差不多学会了C,开始学习编写包含多个头文件的程序时,你必须同时学习这些知识。 这时候只好上网搜索“详细解释”( (super good)),看这篇文章。

我自己在大一的时候也学过HTML和HTML,大一结束的时候已经可以熟练的手写一些动态页面了。 我个人认为HTML和也是机器人工程师必备的技术,而不仅仅是软件工程师的玩具。 这是因为网络技术实际上已经渗透到编程的方方面面。 比如json,本来是一种定义方式,现在已经成为一种非常标准的数据交互和参数配置格式。 另外,AJAX可以帮助初学者了解一定的网络技术原理,网络技术也是机器人工程师必备的技能。 再者,制作GUI(图形用户界面)是一种常规的调试方式,近年流行的趋势是使用嵌入式程序使用HTML作为图形界面的后台,在机器人操作系统ROS(| world's ), 通过它把机器人程序的数据传到互联网上是非常方便的。 看不懂这句话也没关系。 不管怎样,你知道学习 HTML 和 HTML 很重要。 更重要的是,HTML文档背后的DOM(Model)深深地体现了面向对象的思想。 大学里的面向对象编程一般都会讲C++,而在我看来应该讲HTML和C++。 这点我就不细说了,如果同学们学习了HTML和HTML,自然会体会到。 HTML and is /,学习完网站左侧的“Learn HTML”,“Learn CSS”,“Learn”和“Learn”即可。 其他地方有很多花哨的技术,没必要学起来。 为了培养自己对网络的兴趣,可以去three.js/看热闹。

上面介绍的知识点和书籍资料应该在大一的时候看一遍,然后利用大一的暑假巩固这些知识。 例如,开始使用HTML并制作自己的个人主页,温习编程主题,学习技巧和窍门(例如,制作自己的个人主页)。 另外,可以抽空学习数学知识,比如开始看代数和离散数学。 大一的时候看了两篇文章,才意识到数学的重要性。 一本是MIT CV专家林大华写的【转】MIT牛人讲解数学体系,另一本是前研究员吴军博士写的《数学之美》。 (数学之美(豆瓣))。 那时,林大华还在攻读博士学位。 在麻省理工学院,“数学之美”尚未完成。 看完这两篇文章,感觉自己对数学的整体理解又上了一个新的台阶。 从那以后,我就一直注意提高自己的数学水平,几年下来感觉受益匪浅。 在后面的介绍中,我会反复强调需要学习的数学知识和相应的教材。

二年级

到大二时,您已经掌握了基础编程和基础数学。 大二应该投入到嵌入式系统的学习中,同时继续拓展自己的各种能力。 学校的机器人社团,比如Do,应该在招收新成员,快点加入吧,有学长学姐的指导,有同学的鼓励,应该会进步的更快吧。

大二学生应掌握的技能:绘制基本机械图、数字电路基础知识、数模转换、51单片机原理、AVR单片机、STM32单片机、UART原理,SPI,I2C,CAN等协议及数据收发,STM32开发板的使用,电机旋转与驱动原理,PID原理,调试四轮机器人底盘运动,原理与陀螺仪、码盘、红外、超声波等基本传感器的读取方法,配置IP配置路由器等网络知识,微电子焊接,金工技术。 机器人工程师需要的技能是IT行业全栈工程师的三倍以上,而这些技能的基础要在大二积累。

如果你的专业是机械工程相关的,那么在大二的时候,你应该深入学习绘图,购买机械加工手册,学习各种机械技巧。 你的专业知识不足以让你进行严谨的受力分析,但你可以尽可能多地制作机械结构,感受它们的乐趣。

如果你的专业是硬件和电路相关的,大二就应该深入学习画图、制板、焊接。 从现在开始,你要给自己积累一份工作记录,可以是一个简单的txt文件,记录你做过的所有板子的bug、解决方案、学习过的原理图、PCB注意事项等等。 积累多年,你的工作记录会值很多钱。

学习这些技能的最佳方式是参加你们学校机器人俱乐部的培训和项目设计。 一般来说,学校的机器人社团招收新生后,都会有培训和测试,让新人分组制作机器人。 如果他们愿意在这个过程中努力学习,他们会很快提高。 如果你的大学是机器人竞赛的强校,比如西安交通大学、电子科技大学、哈尔滨工业大学、华中科技大学、东北大学等。那么你很幸运,你们学校的机器人社团有很好的积累,有很多资源可以帮助你们学习。 基本上只要每天去实验室,保证每天只睡6-7个小时(不过还是要多跑步游泳保持身体健康),勤于向学长学姐请教建议,你一定会进步很快的。

大二阶段要特别强调动手能力的培养,包括机械材料的加工、电路焊接、制作电线和连接器、连接路由器、配置网络、制作网线等等。 机加工工具包括螺丝刀、锯、钻、锤、车床、铣床和钻床。 高级玩家可以学习氧焊。 这个比较危险,我没试过; 电路焊接的工具有焊机、焊锡、洗板水。 、松香、吸锡装置; 制作线材的工具有剪刀、剥线钳、夹头钳、网线钳等; 网络配置就是连接路由器插网线,但是在linux系统下配置网络有时候会很麻烦。 多积累这方面的知识,因为以后你搭建的机器人大部分都会带着无线路由器跑来跑去,甚至有些机器人身上的一些模块可以自己组成一个小型局域网。 这些技能的熟练程度需要你花大量时间做真正的机器人来练习。

对于如何搭建一个“真正可用的机器人”进行练习的选择,最好的选择肯定是机器人比赛中的机器人。 如果你参与,你将跟随学长学姐们,学习如何搭建一个和人一样高的巨型机器; 如果您参与其中,您将学习构建比汽车更灵活的机器人和快速发射子弹的装置。 其他的一些小比赛,比如 Smart Car,也是很好的锻炼,因为 Smart Car已经发展的非常成熟了,这个比赛的参赛资料足够学习一段时间了,学完之后可以收获更多。 机器人技能。

如果学校的机器人社团资源不是太多,学生们还是有一些小型的比赛,比如挑战杯,大创比赛等等,可以三五人的小团队参加这些比赛。 如果学生所在的学校连这些比赛都不组织大家参加,那就得自己花钱了。 国内的开源机器人社区有很多资源可以用来学习,比如购买STEM Robot kits的各种开发包,制作简单的机器人。 有些人可能不喜欢开发环境,因为它对硬件有一级包。 如果想接触到单片机的本质,可以买一块STM32开发板自学。 俗话说,没有一个STM32实现不了的嵌入式系统。 如果有,请使用两个。 STM32是ARM-M家族中使用最广泛的单片机,​​网上也有很多教材和开发板可供选择。 国内知名电子论坛STM32/8分论坛帖子列表(阿莫电子论坛)上有很多参考资料。 如果您有任何疑问,可以在这里与您一起讨论和学习。

如果你真的想参加机器人比赛,身边也正好有一些志同道合的朋友,但是学校不支持。 没关系,来找我,我会通过大疆的关系,尽力说服你们学校支持你们参加。

虽然你是在以机器人比赛为主线探索机器人技术,但你要时刻记住,机器人比赛给你的理论训练是很差的,也会让你养成一些坏习惯,比如希望用一切都采用粗略而快速的方法。 解决方法。 通常,整个团队在项目管理方面的经验并不多,他们会在比赛前一段时间加紧制作机器人。 很多时候,他们会采用“山寨”的方式来处理机器人故障。 比如某种承重结构,用久了就会弯曲。 为了赶上比赛进度,用锤子把它拉直了,加了一个辅助结构继续用,没有详细建模,没有受力分析,也没有思考承重结构变形的原因。 再比如,调整PID参数是随机调整,没有基于机器人的动力学模型来估计参数的大致范围。

大二的暑假,你可能和学校的机器人队一起参加过一些机器人比赛。 现在是反思总结的好时机,机器人团队为什么会取得这样那样的成绩? 整个团队如何才能更有效率? 明年如何继续招收新生? 暑假要花时间在技术积累上。 这个时候你可以回过头来想一想,以前在备战的时候粗暴快速解决的问题应该怎么解决。

如果大二暑假没有参加过机器人比赛,可以做一个转向机器人,比如6足蜘蛛,比如码垛机器人。 舵机是机器人工程师的好朋友,一定要掌握好。

此外,你在其他方面的能力也不能落下。 大二结束的时​​候,你应该已经很熟练的使用linux了,只不过你还用了cmake。 你也应该开始明白存在的意义了,因为你上去看了很多别人的代码,你也把自己的一些课程设计和小项目放到了上面。 另外,大二基本都学了一些本专业比较难的基础课,比如自动控制原理、机器学习、概率统计、材料与力学等,学生会看到这些课程中用到了线性代数和微积分的知识,和建模知识。 这时候可以翻大一物理,线性代数,微积分。

同学所在学校应该面向大二到大三开设面向对象编程,一般用Java或C++授课。 在面向对象编程课上,你必须积累3000行左右的代码开发经验。 经典的面向对象编程实践通常是写游戏,比如俄罗斯方块,吃豆人等,你必须能够手写一个完整的项目。

此外,您可以开始学习工件。 在大二的学习过程中,你可能在很多课程中都或多或少地使用过它。 假设你在我的推荐下已经喜欢上了它,你可能会觉得这个计算工具比它好不了多少; 假设你自己在别人的推荐下喜欢它(它有多好? - ),你可能会觉得它不如这个 与这种神一样的语言相比,它是弱的。 但请注意,最强大的工具是可以模拟几乎所有物理系统和控制系统的工具。 我建议同学们先体会一下倒立摆的威力,然后再去理解它。 对此,我强烈推荐一本不错的教科书(§ion=),里面详细介绍了如何分析和实现一些经典的控制系统。 然后我强烈推荐一篇关于更接近物理模拟(购物车上)的工具的文章。 看完这两篇文章的内容,同学们应该对倒立摆有了更深的理解。 倒立摆是机器人学中一个非常重要的模型,因为火箭、导弹、双足机器人、四足机器人基本上都是倒立摆的变形。 自己实现的模型一定要保存起来,以后可能会拿出来仔细看看。

如果你按照我之前所说的方式探索过一些 HTML 和其他技术,那么,你已经或多或少地知道是怎么回事了。 您还可以了解 PHP 和 MySQL 等 Web 后端技术,并了解如何配置 LAMP。 如果有同学找你帮忙写一个小网站,尽量去做。 帮助别人建站是提高自己系统编程能力的好习惯。 在制作网站的过程中,你还可能学会如何使用,让网站看起来更漂亮。 这些技能是最好的,没时间学也没关系。

初级

大三开始就可以在学校的机器人队中扮演重要角色,或者能够带领小队参加小型机器人比赛。 你在系里,甚至在学院里都是小有名气的。 有些人可能会称你为大师,有些人认为你的技术还不错。 但是你一定要记住,你现在的水平放在别的地方应该就不算什么了。 每年大疆夏令营我都会招收100名和你们同等水平的同学。

大三学生必须培养独立构建完整机器人的能力,例如水平机器人、战车或四旋翼机器人。

卧式机器人涉及到很多机械设计、单片机开发、电机驱动开发、码盘、超声波等传感器的读取、底盘运动学计算、PID调试、任务调度逻辑调试、舵机控制等。 战车的机械部分比较简单,但还是需要掌握云台的控制、发射系统的控制、动力控制等知识。 另外,你也可以不搞这些部分,学学视觉识别和自动打击,那你就可以开始研究了(|)。

四旋翼的机械部分最简单,但算法比较复杂。 对于后辈来说,从头写出一个稳定的飞控是有一定难度的,因为飞控中的小知识点很多。 目前,我还没有找到什么好书推荐。 现有的一些四旋翼系统的书要么太浅(上来就教你焊电路),要么太深(上来就教你状态)。 听说@Liu Top 的 exbot 群 很期待写一本教科书。 学习四旋翼飞行器有几个步骤:

第一步:调小四轴自己飞

现在开源社区的人肯定要说了,其实我觉得从学习的角度来说太贵了,不适合学习。 推荐首页-第七实验室淘宝店卖的飞控。 那就买个机架(比如DJI F450)、接收机和遥控器,按照飞控板附带的学习资料和调试软件就可以飞了。

第二步:看硬件图,读代码

飞控板自带很多学习资料,加速度计,陀螺仪,磁力计都有详细的讲解,硬件链接图也很详细。 淘宝掌柜很认真负责。 在学习使用的过程中,如果发现代码有bug或者有不懂的地方,可以直接向掌柜请教。

看完代码,一个飞控系统的基本模块:姿态计算、控制计算、混合控制输出、遥控处理、嵌入式处理就很清楚了。 但是,还有很多技术需要另外去学习。 除了基本的嵌入式编程,还需要把大二和大专学习的信号处理知识捡起来。 由于飞行器在空中振动,加速度计会产生噪音。 为了去除这些噪声,需要对来自加速度计的信号进行低通滤波。 如何选择滤波器的参数? 如果滤波太厉害,延时会比较大,影响控制性能; 如果滤波不够,偶尔会出现一些低频噪声,使加速度计的观测无法使用。 另外,最重要的是了解姿态计算和控制计算这两块知识。 飞控板的代码使用了最简单的互补滤波算法作为姿态计算模块,然后控制方案就是对欧拉角三个角度进行闭环PID控制,基本就是这个基础。

第 3 步:小幅修改以加深理解

飞行控制由气压计决定,飞行效果非常奔放。 这时候可以在淘宝上买一个20块钱的超声波模块,然后写一个高度环来稳定飞控的性能。

I think this is very , is a way to PID , and the and are very easy to add. The is not large, the is , so it can give a sense of and the fun of .

Step 4: the core and

This part of year is too late to learn, but I still list it here, you need to learn these later, and I will to these later.

The in and :

1. of rigid body , and . the and of the -Euler , the of Euler for the of a rigid body, the and , and so on.

This part is not , nor is it . I also did not find a book that them all. I it out after books and . Now it seems that it is more to start from .

2. The of . There are many books and about PID, and there are not too many books.

3. Basic of . In fact, it is : a IMU : The . Use this to all kinds of Baidu.

Step 5: Build the wheel from

I know that the vczh once said that can only if you have the to make . So on the basis of being with other 's , you can a wheel by . You can re-draw a board from the chip, read the chip of STM32, read the chip of , draw a of the by , make the PCB, make the board and the . 1,000 yuan can a lot of of . If this part is not in year, you don't have to do it.

In the of the robot, be paid to the of . At the end of your year, you may be for the with the robot team of the , and you may be in of a robot. You make an excel sheet , the of and wires used by the robot, and the of each part. On the one hand, this form can be used to help the team the of the robot. On the other hand, it is also your own and . In the , other you make may be more or less of .

is to build one's own, what is , and list some of the that have and the final . For , " are not and easy to come off. After , they be with tape." , such as screw holes, key " and so on. You can also make such for other robot . It can be a text file. If you keep of your work in it, when you work in the , this file may be worth a lot of money.

In the year, the offer . of you are in this major or not, you take the to to it, and even do it along with the of the . I think is the that robot must have, a robot a large of and , and the part often , , and tool . If work , has and , which makes the codes and very . UML and other tools must be used as soon as to help the team and with each other.

In the year, the also offer on the of and , and in the year, I the of (the so- ). From the year, need to start to the real-time and non-real-time , the and the that need to be paid to when using it. This is a point, and I haven't found a good to it. On STM32, there are real-time such as uCOS; Linux is a non-real-time , but it can be into a real-time by . The of these will be more or less in the of , and can go to CSDN to check the of the at any time.

point is that the in the robot has the of out. It is that I have hard to write code for more than a month on an Linux , and the burns out, and the code is also . Just lost it. , if your robot has an Linux , you must jack up the as soon as , and the code to SVN or git .

In the of the year, you may be the main force of the robot team to in the . for and in is a of the mind. When I was a , I the pain of away with , and the of not the to come back for year. I was also in of the DJI and was as an of vent by those who and . I was very . I think in the robot , very hard and then , is that makes grow . If have the , they in at least one robot .

You can also to in DJI's camp the of your year. Every year, we look for with a the , and let them group to do an robot . This camp, as the in of the , said , I think it be the best camp in the world.

One of the most in the of the year is to think about what to do in the year. , there is no with your to in this . Of , you can also to take the exams in other or study . your are very now, you still need 2-3 years to fully your to move the road of . it is going or , the most is to win for to be able to in an in the next 2-3 years, have , and be able to in some good .可能其他有些行当,出国留学始终是比在国内待着更好的选择,但是机器人行业并不是这样。我们国家这两年在机器人方面提高也很快,而且我们国家现在比较有钱。就像我开始说的那样,机器人是富人的活动,现在你在国内也能找到一些很有钱的实验室可以造比较牛逼的机器人。另外国外很多比较强的机器人公司也都在做比较敏感的军方项目,去找实习可能比较受限制。

出国去学机器人学方面的知识你有很多不错的选择,比如世界第一的机器人研究院卡耐基梅隆大学,或者麻省理工学院的CSAIL实验室。北美传统计算机四大名校(麻省理工学院,卡耐基梅隆大学,斯坦福大学,加州大学伯克利分校)里,除了斯坦福大学热火朝天在搞人工智能以外,其他几个学校的机器人研究都很不错。除了四大名校,你还有很多其他的选择,就像我开始说的那样,机器人是富人的活动,如果想接触到最好的机器人资源,你要选择有钱的实验室,而不是有名的实验室。

另外你还需要在大三的尾巴上选定自己将来的细分研究方向,而且开始往这个方向深挖,也就是我在文章开始提到的感知、认知、行为几个方向。当然同时你也不能放松其他方面的知识,尤其是数学基础。我在大三的暑假专门找数学系的同学给我开了个数学小讲座,学习了一点抽象代数的知识,对我后来学习密码学帮助很大。同时我也读了一些拓扑方面的教材(有一本很神奇的书叫做Tears ),这样才理解了为什么数学分析要用奇怪的符号去解释一些看起来很浅显的道理。

大三阶段的机器人工程师该学什么基础数学是众说纷纭的跑步矢量图,在我看来,你要基本掌握“群是什么”,能够用代数的眼光去证明"det(AB) = det(A)det(B)",还要能理解“用一张纸就可以变出克莱因瓶”(当然是在四维空间里)。另外,你这个时候也要能够意识到自己需要再学一遍线性代数。

大四

大四开始了,你可以开始深挖自己的研究方向,同时也要开始学一些高级一点的通用技术和理论,这时候你和一般的机械、电子、计算机学生就不太一样了,你虽然也在狂编程,但也在狂学习物理和数学。通用技术包括ROS,,和Vrep等工具。通用理论包括,再学一遍线性代数,学学凸优化、数值计算、旋转表示法等方面的知识。这些知识你在大四仅仅只能开一个头,因为你的大四要实习、毕业、考研、毕设,你会非常地忙。有些人会在大四进实验室和老师发论文,我个人觉得发论文这件事没必要操之过急。你的整个大学期间应该用在广泛涉猎各种各样的知识上面,而不是深入某一个细小的研究问题。

大四可以开始读一些著名入门书籍,我把这些书不分先后地列出来,你没有必要全部去读,而且每本书先读前几章就够了,能读多少尽量读多少。

1. 概率机器人学,/

2. 凸优化,/~boyd/

3. 线性系统理论,/-Syste

4. View in , View in

5. 线性估计,/-Estim

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

7. An to 3-D ,/~cer/arv

8. ,/-Contr

9. Rigid Body ,。说实话刚体动力学理论我没有找到特别好的书。但是刚体动力学理论很重要。

10. : An for and ,

就像我开始说的那样,这些书,大部分特别贵,还好有一些业界良心的作者放出了他们书的电子版。当然你也可以去一些名字都不能说的网站去找影印版。

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

你可能早就听说了ROS的大名,但是最好不要在大四之前去碰它。因为ROS用了很多操作系统和网络的底层技术。我在知乎回答高手可以谈谈ROS机器人操作平台开发的一些经验吗?- YY硕的回答里有简单的介绍。ROS的设计目标是把机器人的控制和传感器处理的软件和它的硬件隔离开,用上ROS以后,你可以方便地用到很多能直接跑的软件代码。但是ROS从入门到精通需要至少一年以上的时间,你必须不断地用,不断地尝试新的代码和硬件,才能对它熟悉起来。

ROS的可视化工具Rviz里面对于机器人旋转的表示用的是四元数,而在你之前研究四旋翼飞行器时,里面的代码表示旋转用的是欧拉角,做姿态解算用的可能是四元数。这个时候要开始有意识地去学习旋转表示法之间的区别和联系。

要重视大四期间的实习和毕业设计。很多大四的学生毕业设计都会非常颓地做一下,我觉得是不好的。要把做毕业设计的过程看做一个正式的项目。这个项目除了做好技术方面的工作,也要做好展示方面的工作。中国工程师的一大特点是,不会表达自己,可能做的东西水平很高,但是做出PPT就会犯字体花哨不正式、一页上面字太多,图文没有联系等表达上的问题。通过PPT介绍、展示自己的成果在工程师的职业生涯的任何一个阶段都非常重要,它甚至也一定程度上限制了机器人工程师能够达到的高度。只有能够把自己的成果清晰地表达给自己的团队,才能获得其他人的反馈、通过沟通提高团队的整体凝聚力和知识水平,这样自己在团队能够获得更多的认可,有助于团队整体工作效率的提高。我每年去参加几次学术会议,都在会议上感觉到一些中国的科研人员走到国际上以后,演讲能力很差就会导致他们的科研成果不受重视。当然其他国家的科研人员也是这样。

为了写出美观的技术报告和毕业论文,你可以开始学习Latex。Latex作为国际国内第一写作神器,学习资料在网上有很多。Latex的学习和使用同样也是需要不断地熟能生巧,多写多练就熟悉了。写毕业论文有个问题是怎么做出精美的矢量图,我推荐Draw | ,一个比更轻量化、但是有些功能反而更强大的免费软件。

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

关于毕业设计的选题,我推荐这么几个:

1. 手写双目视觉里程计。涉及到图像处理、特征匹配、位置解算、空间变换等等。

2. 手写四旋翼飞行器基于GPS的轨迹规划。涉及到深挖四旋翼飞行器的运动原理、IMU原理、轨迹生成和优化等。

3. 造一个被推了也不会倒的双足舵机机器人。涉及到舵机控制、倒立摆建模、动力学分析、PID控制、IMU原理等。

4. 深度学习训练一个小车追人跑。涉及到深度学习工具包使用、数据集采集、数据集分析、小车控制等。

5. 机械臂给人端茶倒水。这个相对来说土豪一点,因为能直接拿来用的机械臂都很贵,这个要看实验室有没有条件了。涉及到多自由度机械臂原理的学习、工具包的使用、轨迹规划等等。

这几个项目要做好,都要持续投入三个月以上的时间以及一定的资金,每一个都是理论多于实践。当然同学们自己也可以自己选择自己的毕业设计题目,但是最好还是选做出来能跑能飞的东西,同时避免选择需要花大量时间去拧螺丝、焊板子的题目,尽量买现成的电机、开发板、3D打印结构,大四要多给自己留时间去看书和写代码。

大四到研究生之前的暑假,最好去一些比较不错的机器人公司实习一下,比如说大疆。当然你也可以继续做机器人比赛,比如和大疆的飞行器比赛。

研一

研究生的时候,你的目标比较清晰了,就是做一种机器人至少两年时间,并从中发掘出可以发表论文的知识点。上面我给出的书单里面,你要开始精读里面的几本。

如果做机器人视觉定位、传感器融合方面的研究,1、4、5、7四本书一定要精读。

如果做控制系统的研究,3、8、9、10一定要精读。

如果做规划算法的研究,那么还要读其他偏CS一些的书,比如讲A* , ,图论方面知识的教材。由于我在这方面造诣不深,就不托大了。

如果学习随机系统的控制和最优控制,除了1、2、3,还要读一本神书and (/~welch/kalma)。

如果研究机器人视觉定位,几种常用的定位算法:PTAM( and for Small AR (PTAM)),ROS的标配VO( - ROS Wiki),SVO( - uzh-rpg/: Semi- ),LSD-SLAM(.in.tum.de/)ORB-SLAM( - /: Real-Time SLAM for , and RGB-D , with Loop and ),都必须自己学习之后全部跑一遍。只会用的函数和这些工具包并不能说明你会视觉定位,必须要能自己手写出一个能用的才算。国内有一个很厉害的SLAM专家叫高翔,他的博客要关注一下:机器人- 标签。由于SLAM这两年很火,研究的人很多,所以网上可以参考的资料也很多,比如//ROS,就在ROS上实现了几种定位算法的对比。

我现在非常不建议同学们选择从四旋翼飞行器的动力学控制里找问题作为研究课题。因为四旋翼飞行器的特点已经被研究透了。目前国际上对多旋翼飞行器的研究主要集中在造一些奇葩形状的飞行器,以及给多旋翼飞行器上安装一个机械臂去做力控制,这样做就对多旋翼飞行器控制的动力学造成了一些影响。因此需要同学对动力学和多自由度机械臂控制有比较深的认识。

自动导航和驾驶是这两年的热点,一方面汽车的自动化是大势所趋,另一方面多旋翼飞行器异军突起,产生了很多对自动飞行的需求。除了机器人视觉定位算法以外,同学还需要学习其他的传感器,以及这些传感器与视觉定位算法怎么融合。这里面有很多坑,比如计算量的问题,怎么保证融合算法不崩,怎么处理传感器的延时等等,都需要同学结合自己的项目去踩,坑踩得多了才能成长。如果大家想找一个多旋翼飞行器平台研究自动导航,我推荐大疆的M100,我已经在知乎回答夏令营是怎样的?- YY硕的回答里吹过一波M100,前面说过的今年夏令营的知乎回答参加2016夏令营是怎样一种体验? - DJI 大疆创新里也有人帮我吹了一波。

一些大学里学过的知识点,是必须结合研究生期间的项目的需求弄得很清楚的,比如三大变换(傅里叶变换,拉普拉斯变换,Z变换),旋转表示法(欧拉角、四元数、旋转矩阵),数值计算怎么防止矩阵出现数值问题等等。除了自己的项目,还需要把凸优化、卡尔曼滤波还有多自由度机械臂的控制学习一下。这三个领域的知识,是任何一种机器人都会用的到比较难的知识。

凸优化和凸优化的各种变形是非常重要的知识,因为各行各业里的研究问题,多半是会建立一个优化问题去解决的。上面提到的《 》/~boyd/,也是一本神书,同学们一定要认真读一读。、、C++都有一些现成的工具包可以帮助你解优化问题,不过最好同学们能自己手写一些基本的优化算法,比如, 等等。另外现在主流的SLAM算法,后端都是通过一种叫做g2o的优化算法来出效果的。而且g2o能够整合和-from-这两大计算机视觉里的关键问题,可以说是一种很好的计算思想了,非常有必要学习一下g2o。

卡尔曼滤波在上面书单里的1和3都有提到,同时在神书and (/~welch/kalma)也有相当多的篇幅。卡尔曼滤波有好几种证明的方法,同学最好能自己学会1-2种。

多自由度的机械臂的难点在于机械臂的运动学正反解、运动学控制和动力学控制,基本是一个建模分析和数值算法实现的问题。如果你所在的学校没有一个财力雄厚的机器人实验室的话,你基本上没有机会接触到多自由度的机械臂。这时候之前学到的和就要学的就派上用场了,你可以用里面的刚体搭一个多自由度机械臂,然后通过仿真去学习机械臂的控制;也可以用的URDF语言写一个机械臂,然后通过和ROS的接口去控制机械臂;也可以用ROS里面的著名工具包! ,不过的问题是,他只能仿真运动学,而不能仿真动力学。工业领域对多自由度的机械臂控制通常用一个叫做DH表示法的建模工具(),这个东西我并不太会。我只会向同学们推荐我导师的著作《A to 》(/~)。

有一个非常神奇的事实:《A to 》这本机械臂控制领域的著名教材的第二章和计算机视觉领域的著名教材《An to 3-D 》的第二章基本是一样的,都在讲旋转表示法。这是因为所有的旋转表示法都可以归纳为一种优雅的李群结构:SO(3)群。而计算机视觉和机械臂控制都涉及到理解刚体的旋转,事实上用计算系统去观测和控制所有的刚体构成的系统,理解旋转都是很关键的问题。旋转表示法应该作为研究生阶段的一个重要学习的知识点。

李群和李代数是刚体旋转表示背后的数学理论,如果想要深挖一些,可以看这篇文章An to and 的前50页(cmls..fr/p)。这是我自己读着觉得最好的文章,当然网上也有很多其他的介绍。

研究生阶段还要培养的一个能力是借助各种工具仿真机器人系统的能力。显然地,很多机器人系统真的造出来的话造价昂贵,需要在实际制造之前写一个比较真实的仿真系统出来测试算法。我觉得做仿真系统的能力直接衡量了机器人工程师的技术水平。当你开始要搭一个仿真系统的时候,第一步是通过欧拉方程和牛顿方程确定刚体的运动特点,甚至要自己写刚体二阶微分方程;第二步是确定刚体之间的互联关系,设计不同类型的关节,如果有软性连接需要加入弹簧阻尼模型;第三步是确定被仿真的刚体系统会不会和外界产生碰撞或者其他形式的力,如果有的话,需要设计合适的接触力和摩擦力仿真的模型。多旋翼飞行器的仿真是很简单的,不需要考虑什么接触力。但是多自由度机械臂基本都需要仿真接触力,不和物理世界去交互的机械臂只有很小的实用意义。而能够自行运动系统,比如双足、多足机器人,则涉及到更多的接触力,多到接触力都会影响仿真系统的数值稳定性。搭建一个仿真系统需要很强的系统建模能力和数值分析的能力,虽然、、Vrep提供了不同程度的工具简化你的工作,但是要让仿真系统能够稳定运行,必须要能深入其中的细节。有些看起来很高大上的仿真工具,比如Nvida的PhysX,在仿真的时候是忽略掉科里奥利力的,如果不理解仿真的本质,可能就会忽略这一个重要的缺陷。

研二

你的学习计划接近尾声。现在你已经进入了一个很好的状态:看到一个机器人,能够很果断地分析出它用了什么传感器、执行器、计算平台大概是什么量级,他的执行机构能够承受多少力量。看到一个新的算法,能够大约判断清楚它的执行流程,在什么环节做了优化。看到一个新的没学过的知识,能够分析出它和你以前学过的什么知识有联系,你还需要再学什么才能弄明白这个知识点。

研究生二年级要深化第一年学到的那些技术和知识,要做到完整地读过四五本书,五十篇以上的论文。你已经积累了几万行代码的经验,也能熟练地谈论谁家的电机回差小,谁家的电机线性程度好。

你这个时候可以去写作一些论文,也可以开始学习一些更高级的技术和工具,比如用FPGA和GPU优化算法、魔改Linux内核、玩玩液压系统、了解更多机器学习的知识比如强化学习等等。你也可以从计算机图形学或者计算力学里面找到一些帮助你更好进行机器人仿真和系统分析的工具。由于你懂很多机器人方面的知识,你可以给学校的机器人队做指导,或者带队参加一些比较有挑战性的机器人比赛。

写到这里,我就不可能给出很多不同领域的指导了,因为随着学习的进一步深化,我自己熟悉的领域也在收缩。我只能对几个领域给出我的意见。

对视觉定位和传感器融合来说,SLAM急需新的突破,目前通过几何约束去实现loop 看起来已经走入了死路,没法有更多的发展了,下一步可行的方向是与深度学习进行结合。具体的一些介绍可以阅读行业中大牛的一篇文章/,记述了几个业界大牛们最新的观点。传感器融合技术,目前还有很多问题可以探索,因为传感器的延时、不均匀的信号,会给定位系统造成困扰,如何去除这些干扰,需要建立比较复杂的非线性优化问题,具体可以关注香港科技大学Shen的工作。

对于多自由度机械手和机器人的来说,这里面还有非常多可以探索的研究问题。我前面提过接触力和摩擦力很难仿真,大神告诉我现在没有任何一种工具和理论能把接触力和摩擦力正确仿真出来,因此如何在机器人系统里妥善处理对这些力的控制,就是很难的问题了。现在业界的一个前沿发展方向,也是利用机器学习技术来帮助机器人学会处理这些外力,不过人类目前最优秀的多自由度机器人系统,的Brett机器人,叠几块积木就要用十分钟(New 'deep ' robot of via trial and error),显然还有很多提升的空间。

最后我想再强调一遍表达能力的重要性。你可以从自己带的课程和机器人队入手,把自己这几年来学过的知识做成PPT讲给学生们听,然后让他们给你反馈。多做这样的练习,提升自己做演讲的能力,这将来会让你受益匪浅。

研究生二年级之后,你可以准备进机器人公司工作了,也可以根据你自己感兴趣的研究方向申请博士接着努力。由于你已经掌握了广博的知识和技能,你的职业生涯将会大有作为。

结论

我从2008年展开自己的机器人生涯。那一年波士顿动力刚刚发布他们的大狗机器人,还是很小众的语言, 8.04还很不稳定,还没有多少人知道。在之后的几年中我目击了深度神经网络的复兴,看到波士顿动力的机器人日渐强大,经历了ROS的起源和繁荣,帮助了大疆的崛起,深深为这个产业的未来感到激动。我希望这篇文章能够帮助更多的年轻人进入机器人学的海洋,为未来机器人学的继续发展贡献力量。

过去的推荐

--

see the end

大家有什么看法呢?

提醒:请联系我时一定说明是从101箱包皮具网上看到的!