发表于 2019-12-10 20:37:01

开源呆板人自学指南

雷锋网AI科技批评按,本文转载自公众号Nao,作者邱强,AI 科技批评已获授权。
我在Github上发起了一个开源呆板人学自学指南,地点是:http://github.com/qqfly/how-to-learn-robotics。
初版本放在公众号里发出:
目次
零. 前媒介一. 媒介二. 先修知识三. 进门四. 实践4.1 动手4.2 Penn's Robotics Specialization4.3 ROS五. 进阶5.1 数学5.2 Modern Robotics5.3 控制5.4 活动规划5.5 呆板学习5.6 强化学习5.7 最新论文六. 勇者斗恶龙七. 参考文献零. 前媒介
本文中含有不少公式,为了方便编辑,接纳的是 Latex 格式誊写。但是,Github Markdown 不支持 Latex,为了方便阅读,发起接纳 Chrome 欣赏器,并安装插件 TeX All the Things。安装后,即可将网页上的 Latex 公式转换成大多数人能看懂的情势。
部门复杂的公式会用 在线LaTeX公式编辑器 转换成图片插进。
本课本写作时间很短,以是肯定有疏漏。因此放在这里作为一个开源项目,各人可以随时修改并提交 Pull Request;有题目也可以提 issue。
一. 媒介
RVBUST INC. 建立半年有余。口试过不少从事呆板人研究的小同伴后,我发现一个题目:尽大多数大陆的结业的门生都不像是「科班身世」的。
固然,假如仅从工作教诲履历上看 —— 大部门结业于机电、盘算机专业,乃至是研究呆板人的实行室,有过呆板人公司的工作履历 —— 这些人应该都算是「专业选手」。
但是,从口试环境上看,尽大多数人都不具备呆板人学的完备知识体系:画电路板的小同伴不知道怎么举行呆板人工作空间分析;计划机构的小同伴不知道怎么把动力学用在控制上;做控制算法的小同伴不知道什么的构型空间(Configuration Space);做活动规划的小同伴不知道什么是Q-learning;做深度强化学习的小同伴不知道学习到的控制指令要怎么让现实呆板人活动起来。
从我这几年的学习履历上看,我是能明白这一征象的。博士刚进学的时间,我接下了师兄的 SmartPal 呆板人。靠着师兄的「祖传代码」,也曾仗势欺人地在外宾眼前做过一些演示:
http://pics1.baidu.com/feed/cb8065380cd79123a708032c8ad72886b0b780e1.jpeg?token=f554b36febce616ff73b060770616604&s=CB3002C546693D1DD4AC8CA20300E0D3
但是,当我厥后真正开始看这些「祖传代码」的时间,我发现现实发给呆板人的只有几个关节位置点而已。
「PID 在那里???」
这是我其时产生的最大疑问。这个代码逻辑跟我本科玩得四旋翼、智能车等都完全不一样!
于是,拿着这个疑问,我在实行室问了一圈,没有得到答案。纵然厥后,我选修了好几门跟呆板人相干的研究生课程。颠末一年的学习,我照旧没有得到答案。
是的,作为国内最早开展呆板人研究的院校之一,这里的呆板人研究生课程只教我们怎样创建 DH 坐标系,动力学只是简朴盘算了一个平面三连杆。根本没有涉及控制、轨迹规划的内容,乃至连活动学逆解也没有要求各人盘算。
据我所知,许多其他研究机构也是云云,呆板人学这块还没有形成完备的讲授体系。以是,根本上门生都没有担当过完备的呆板人学体系教诲,只有在做项目标时间通过自学把握项目所需的内容。这也就作育了一大批没有算过呆板人活动学逆解的呆板人专业博硕士生。
固然,并不是说「活动学逆解」、「轨迹插补」之类的知识有多难。我想夸大的是,在大陆,一个门生只通过上课,无法把握、乃至是无法打仗到这些呆板人学中非常底子的知识。
固然,这一环境在大陆比力广泛,而国外大概港台高校结业的门生,根本上都没有这个题目。国外大概港台高校在呆板人学这块的讲授体系相对比力完备,根本上大作业都会覆盖重要的知识点,而且多数要求编程实现。
固然,大多数小同伴都是「非科班身世」的,但是,根据我的履历,大陆的门生照旧非常智慧的,根本只要得到一些简朴的精确引导,就能很快通过自学把握这些知识。以是,我们不妨来看看「非科班身世」怎样学习呆板人学吧。
二. 先修知识
固然,先修知识会随着研究深度的变更而差别,尤其是数学,数学就像是写轮眼,看同一个石碑,差别条理的「写轮眼」所看到的内容也完全差别。
http://pics5.baidu.com/feed/bd315c6034a85edf2892947d61b77827dc5475bd.jpeg?token=a263b015fc952d35f0b5e7ca40681543&s=CCAD9552CACEF615429697A403009025
但是,由于呆板人学涉及面广,差别方向所必要的底子知识也完全差别,假如一开始就陷进「先修知识」的泥潭中,大概就得不偿失了。
以是,我以为,可以先列一些真正必须把握的先修知识,其他的在后续相应部门提及即可:
1.根本的英文:在呆板人方面,现在根本上没有非常符合的中文课本可以保举。写得深进浅出的课本都是国外的,各人必须学会阅读英文文献。这个过程一开始肯定是痛楚的,但是,根本上对峙一个月就会风俗了。
2.学会利用 VPN。缘故原由同上,根本上有效的资料都必要通过 Goolge 或 Youtube 获取。
3.线性代数:全部的空间变更、呆板人相干盘算都依靠于线性代数,乃至必要有一些根本的"线性空间"头脑。对于线性代数,我首推 Prof. Gilbert Strang 的《Linear Algebra》,在 Youtube 和网易公然课上可以找到视频。这门课一开始就引导各人从空间的角度对待题目,而不像国内高校,只要夸大怎样盘算。而且,网易公然课上有中笔墨幕,对于初学者也还算友爱。
4.微积分:呆板人里,全部涉及到导数、积分、优化的地方,都会有微积分的影子。以是,这门数学课也是一开始就绕不开的。我没有太好的视频保举,不妨也看看 Gilbert Strange 的《微积分重点》?
5.理论力学:呆板人学就是天天与力打交道。但是一样平常呆板人课本里都不会细致推导空间变更、虚功原理、拉格朗日等力学理论,而且这些东西又相对抽象,许多初学者的自学过程就是被截杀在动力学章节的。固然,这部门我也没有太好的保举资料,学堂在线上有清华高云峰老师的《理论力学》公然课,也可以参考一下。(但至少我当年上他的课总是犯困)。
6.Matlab or Python:这两个黑白常轻易上手,且非常方便数据可视化的编程语言。各人在学习呆板人学的过程中,能非常轻易地通过这类脚本语言实现一些算法,从而用于验证本身的推导效果。固然,这两部门只要把握根本的矩阵操纵和可视化操纵就可以了。其他更高级的用法可以之后再学习。Coursera 上很轻易找到这两门语言的进门课程 Matlab、Python。
7.控制理论:呆板人学是离不开控制的,但是呆板人学课本一样平常不会过多先容这块。固然,现在大多数产业呆板人都照旧利用比力简朴的算法,但是,作为研究者,有须要相识一些根本的控制理论,比方 PID、状态方程、可观性、可控性、李雅普诺夫、最优控制、一点点非线性控制与一点点智能控制等。这块我根本是在学校上课,没有太好的公然课保举,可以先试试学堂在线上的课程。
http://pics5.baidu.com/feed/7a899e510fb30f24f1154368e176a047ac4b0331.jpeg?token=0709d5cc03014ad6796e1bad222e95e7&s=7BDD6E8EC785454F13EB2E680300707A
8.数字电路与模仿电路:呆板人是一门实践科学,只有当你把你推导的公式写成代码、并终极让现实呆板人按照你的想法动起来的时间,才阐明你把握了相干知识。数电模电的知识可以让你对逻辑电路有个根本相识,不至于背面连为什么电机前面要加一个驱动器都不知道;同时,在身边没有现实呆板人的环境下,本身搭个小电路做一些控制实行也黑白常方便的。这块知识可以任意找本课本看看,比方我其时上的是唐庆玉老师的课本。
9.一点点单片机:要想制作简朴的实行用控制电路,只有数电模电知识是不敷的,还要能将这些知识转换成现实的电路,而且能将运行代码,那么就必要会单片机。对于单片机,可以网上任意买一些带伺服电机控制教程的最小体系板,学学 Arduino 或 STM32,固然,假如能到场个 RoboMaster 大概飞思卡尔智能车大赛什么的是最好了,可以对嵌进式的各个模块有个根本相识。
10.Linux 和 C 语言:如今有了电路部门,我们必要将公式代码酿成电路指令,这就涉及嵌进式的编程了。这块发起学一点 C 语言。嵌进式对 C 的要求实在并不高,任意学点语法就够了,比方《C语言进门》。但是,假如将来想做一些更加上层的工作,最好一开始就把 C 学好。学编程,Linux 是个不错的选择,以是,这时间,可以实验按照个 Linux 体系,在上面学习 C 语言。
11.根本的3D计划:在制作实行平台的时间,常常会碰到必要加工计划小零件的环境,这时间把握一个3D计划软件可以大大进步开辟速率,比方 SolidWorks 就是个不错的选择。共同上 3D 打印机之类的工具就可以实行快速原型计划了。(纵然没有 3D 打印机,在网上也可以很轻易找到 3D 打印服务,把你计划的 3D 文件发已往就可以了)。
上面这些知识,根本是一个主动化专业大概机电专业大三门生应该到达的程度。假如对上述几部门有了根本相识,就可以开始看呆板人学的知识了。
三. 进门
对于进门部门,现实上就是相识怎样让一个产业呆板人动起来。这方面实在研究已经非常成熟了,各人看上个世纪的课本就行,个人保举的是 John Craig 的课本 《Introduction to Robotics: Mechanics and Control》,在 Youtube 和网易公然课都可以找到斯坦福 Oussama Khatib 大神的视频,根本与 Craig 的课本内容相匹配。
http://pics0.baidu.com/feed/29381f30e924b8999bf51d6446e56c91087bf68c.jpeg?token=ce86832781d440bf45e74d9ba5db5aa1&s=C5A502F656AE1ABCD90EE9AC0300304B
发起从 Craig 的课本开始就看英文版本,Google 一下,很轻易找到 PDF 版本。作为一本进门课本,Craig 的课本是相称深进浅出的,共同着 Khatib 的视频,可以快速把握呆板人学的底子。
我常对刚进学的师弟们说,「假如你把这本书的内容把握了,就已经凌驾实行室尽大多数师兄师姐了。」
然而,真正把课本啃下来的并未几。
以是,我在这里要换个说法了,「假如你把这本书的内容把握了,就可以胜任国内尽大多数呆板人公司的开辟工作了。」
// 在 Github 上,我有对 Craig 书上的内容举行大概的梳理,在公众号中就先省略了。
四. 实践
看完 Craig 的书后,你应该对产业呆板人的原理有了一个大概的概念,但是,你缺乏现实动手履历,不清晰怎样将书上的东西应用到现实呆板人上。呆板人究竟是一个实践性的学科,不停停顿在理论,不但无用、而且无趣。
4.1 动手
假如是本科生的话,非常发起到场一些角逐,如 RoboMaster、飞思卡尔智能车大赛、电子计划大赛等;也可以参加学校的一些科技构造,比方清华的天空工厂。重要是认识各种电子电路、造就动手本领。
但是,以我的观察,许多科技角逐大牛,在理论学习上每每比力弱。这重要是由于科技角逐夸大的是体系本领,决定角逐效果的每每是一些小 tricks,而非理论知识;而且,角逐轻易让人产生一种虚伪的充实感,天天都很繁忙,但是大概只是在重复低级工作。这两个缘故原由很轻易让人陷进 local minima,无法在理论方面更进一步。
以是,我有个不成熟的小发起。到场角逐和门生科技运动的话,有过两次完备的履历就够了。之后应该敏捷将重点转向理论学习。
假如身边有可以玩的呆板人硬件,也可以实验玩一玩,大概在 RobotStudio 里玩 ABB 的呆板人。
4.2 Penn's Robotics Specialization
之后,不妨抽出几个月时间,看看 Coursera 上宾夕法尼亚大学的 Robotics 专项课程。这个专项课程与机器臂大概产业呆板人关系不大,但是由于呆板人许多方面是相通的,以是非常发起看一看。
Aerial Robotics:这门课重要是先容四旋翼无人机的控制题目,此中的轨迹规划、姿态形貌、控制等对机器臂的学习非常有资助。而且,这门课的作业质量也非常高,提供了基于 Matlab 的数值仿真模块,可以让初学者直观地看到本身代码的控制结果。
Computational Motion Planning:这门课的程度感觉不如前一个,但是通过这门课可以大概知道呆板人里有 Motion Planning 这个方向,同时大作业也包罗了手写 A*、PRM、Potential Fileds 等根本的 Motion Planning 算法,同时大概相识一下 Collision Checking 的根本方法。
Mobility:这部门重要是先容足式呆板人的控制题目。通过这门课,一方面可以大抵相识足式呆板人控制的发展脉络,如许看起 Boston Dynamics 的视频也不会那么一脸懵逼了。同时,更紧张的是,把握呆板人建模与控制的关系:一个简化的模子,也大概对控制起非常大资助。
Perception:这门课质量非常不错,根本是先容相机模子、多视多少之类的内容。这方面内容可以对各人将来从事 SLAM、3D 视觉、标定等方面的研究非常有资助。学完之后,各人就可以做出雷同《AR原理演示》文章中的结果了:http://v.qq.com/x/page/z0308y9971c.html
Estimation and Learning:这门课从高斯分布开始,先容了 Kalman Filter、Particle Filter 等在呆板人状态估计中非常有效的工具。而且,这门课的大作业会让你从零开始编写 2D 舆图重修的步伐,你可以知道怎样使用激光传感器信息得到下面如许的 2D 舆图。
4.3 ROS
到如今为止,你对呆板人的底子知识有了一个比力完备的脉络,而且,也用 Matlab 实现了一些风趣的算法。但是,你发现,呆板人是一个非常大的体系,作为初学者,不太大概重新开始一步步搭建呆板人所需的各个算法模块。这时间,你就应该开始拥抱巨大的开源天下了。
许多人大概知道,有一个叫做呆板人操纵体系的开源项目 (Robot Operating System, ROS)。
对于学习 ROS,网上大概有不少教程了。但是,我感觉,对于许多机电、主动化方向的门生并不得当直接开始看 ROS。由于他们缺乏根本的 Linux、C++ 知识。以是,我保举按照如下步调举行学习:
Linux:假如完全没有 Linux 开辟履历,我发起可以先安装 Ubuntu 体系,然后看 UNIX Tutorial for Beginners ,认识根本的 Linux 利用方法。Github:ROS 的大多数项目都是托管在 Github 上的。以是,非常有须要学会利用 Github,学会用 git 治理本身的代码。而且也可以为开源项目做些修改。比方可以像我一样只是删除多余的分号。C++ 底子:假如你没有体系学习过 C++,发起先把这部门补齐,由于 ROS 的重要代码都是 C++ 实现的。这里,我保举学堂在线上清华大学郑莉老师的课程《C++语言步伐计划底子》和《C++语言步伐计划进阶》。固然,学习 C++ 的时间就可以在 Ubuntu 下举行,安装一个 Visual Studio Code 是个不错的选择。数据布局:实在,上面的底子已经充足你学习 ROS 了,但是,为了将来的学习,可以在适其时候学习一些数据布局的知识。数据布局的话,我保举学堂在线上清华邓俊辉老师 《数据布局(上)》与《数据布局(下)》。如今,你就可以大胆地往看 ROS 了。作为开源项目,我以为最好的教程就是官网的教程 ROS Tutorials。
起首,通过 Beginner Level 和 Intermediate Level 相识 ROS 根本的通讯机制、学会利用 catkin、roslaunch、Rviz 等根本工具。
之后,就可以根据各自的研究爱好往看差别模块了。
假如有条件,可以或许共同一些 ROS 支持比力好的平台举行研究的话,可以大大进步学习速率。比方 TurtleBot、Baxter、Universal Robot 之类的。(这就看每个人条件了。)
理论上,在 ROS 情况下,你可以从事尽大多少与及时控制无关的研究,如 SLAM、Navigation、Motion Planning 等。假如你从事的是更加底层的工作,(如控制器计划),现在 ROS 还无法胜任。(假如不清晰为什么,回首一下及时操纵体系、呆板人控制方面的知识)。
五. 进阶
至此,你已经是一个不错的呆板人工程师了。但是,假如你想从事研发工作,就必要学习更多专业知识。固然,这部门就跟各人的研究方向关系比力密切了,我没法逐一细说。只大概先容一些。
别的,非常发起进手一本《Springer Handbook of Robotics》。打仗一个新的范畴时,在 Handbook 里找到相应的章节,通过它相识根本的大纲,并使用提供的参考文献快速补齐知识。
5.1 数学
这时间,你的数学底子根本不答应你更进一步了。以是,你必要增补数学知识。
数值盘算方法:许多时间,我们都是通过盘算机来实现算法功能的,以是,你必须相识根本的数值盘算方法,如数值微分、数值积分等。我没有太好的公然课资源可以保举。凸优化:这个天下许多题目都不存在剖析解,我们得用优化方法来盘算。以是,你必须相识怎样创建优化模子,并知道怎样用代码举行求解。这里,我保举 Stanford 的公然课《Convex Optimization》李群李代数:优化方法常常要利用梯度信息,但是,你发现许多时间你不知道怎么界说梯度。李群李代数是一个非常经典的数学工具,可以非常方便形貌 SO(3)、SE(3) 空间中的对象。到这里,你之前对于四元数、角速率之类的疑问将一扫而空。这部门的学习资料,我会在背面增补。5.2 Modern Robotics
http://pics0.baidu.com/feed/ac6eddc451da81cbd966d6ef7a85a11208243173.jpeg?token=086247a4ce2cf9d525f21f11909e4173&s=67B48E64101741CECA9074DB01008092
李群李代数对于许多工科门生大概一时无法担当。这里,我保举从 Modern Robotics 开始,这是一本面向本科生的课本,非常浅近。
你可以在网上找到它的全部信息,Coursera 上也有对应的课程:《Modern Robotics》。
上完这门课,你能把握旋量(Screw)这一全新的建模方式,同时,你会发现呆板人活动学、动力学建模变得云云简朴、干净。
这时间,你已经触遇到了一点点李群李代数。之后就可以往看一些针对工科生的李群李代数课本,如《Notes on Differential Geometry and Lie Groups, I & II》
5.3 控制
这时间,你大概已经实验搭建过一些呆板人平台,相识了一些根本的控制理论。但是,你发现现实的呆板人并不抱负,动力学模子大概非常不准确。于是,你必要做呆板人的参数辨识。于是,你可以往看 Khalil 的课本《Modeling, identification and control of robots》。此中,你必要相识各种滤波算法(盘算加快度)、各种数值优化算法。而且,假如必要对呆板人的活动学参数举行标定,你会发现李群李代数可以非常方便地界说各种相干的雅可比。
如今,你有了一个相对准确的动力学模子,但是你发现,在给呆板人控制器做轨迹规划的时间,必要给出速率、加快度束缚。你感觉这此中有什么不对。是的,呆板人体系中现实上并不存在什么速率、加快度束缚,我们全部的操纵都是针对电机力矩的。也就是说,我们只有力矩束缚。
那么,题目来了:在力矩束缚下,怎样让呆板人实现最快的活动。于是你就进了最优控制的坑。在这里,各种数值优化方法将非常有效。
如今你能把单独的一个呆板人控制好了,但你发现,呆板人一旦跟情况发生打仗,只用呆板人模子就不敷了。你必要对情况举行建模。但是,情况是无法准确建模的。于是,你开始学各种力控、阻抗控制之类的内容。相应地、你就可以实现一些所谓协作呆板人的功能了:《听说如今协作呆板人很火,以是我也做了1/7个》
5.4 活动规划
如今,你能让呆板人按照你的要求活动了。但是,你感觉呆板人照旧太难用了,必须人工指定颠末的路径点,否则呆板人大概就会与情况发生碰撞。你想,有没有大概让呆板人本身找到这些路径点。
于是,你来到了活动规划的范畴。
固然,一个很天然的想法是,有没有大概直接构建一个目的函数,用优化的方法盘算出必要的轨迹。但是,天下有时间并没有那么可爱。活动规划题目经常是一个非凸题目,无法直接求解。以是,对于机器臂,可以有各种 Sampling-based 算法;固然,也有人将其近似成多个凸题目举行优化求解,在比力简朴的场景下结果还算不错。
活动规划的大抵先容可以看我从前写过的文章:《活动规划 | 简介篇》。
固然,更具体的先容最悦目课本,如《Principles of Robot Motion》 和《Planning Algorithms》 都是不错的课本。
别的,这部门肯定要共同着编程来做。The Open Motion Planning Library 是个不错的参考,信赖你在学 ROS 的时间也或多或少相识过一些。
信赖只要你明白得充足深进,便会明白前面李群李代数的作用。比方:
(1)活动规划是在 Configuration Space 里举行的,而大多数常识趣构的 Configuration Space 都是一个 Lie Group:多关节呆板人的关节空间(Torus(n)),无人机(SE(3)),呆板人末了操纵物体的相干束缚(SE(3))。于是,我们只要界说各种 Lie Group 的基天性质,就可以用同一的规划算法来举行规划了。详细可以看 Ompl 里 State space 的利用。
(2)当我们的规划涉及到一些束缚,如让呆板人末了保持程度(拿着一杯水)。一种方法是用传统的方法。如 OpenRave 里的一个实现:ConstraintPlanning - 在关节空间随机采样一个点,然后投影到近来的使命空间上,之后用 Jacobian 迭代的方式将随机点毗连到 RRT 树上。
http://pics0.baidu.com/feed/ac6eddc451da81cbd966d6ef7a85a11208243173.jpeg?token=086247a4ce2cf9d525f21f11909e4173&s=67B48E64101741CECA9074DB01008092
但是,我们可以从另一个角度看题目。呆板人的末了姿态就是一个 SE(3) 李群。保持末了程度,可以以为是一个 R3 空间与 SO(2) 空间的半直积,这也是一个李群。于是,我们可以直接在李群内大概 Tangent Space 上跑一个 RRT,比方 Tangent Bundle RRT与 AtlasRRT
http://pics2.baidu.com/feed/3801213fb80e7bec3215b6f907cdc83c99506bc6.jpeg?token=5fc82d6581a0cc900c5355874e2476fd&s=AA98E403426052A10A31D0400100E0E1
5.5 呆板学习
前面许多工作都是在做建模+辨识的工作。现实上另有一大类工作是基于数据的,也即,给一个通用模子,用数据举行学习拟合。也就是各人常说的呆板学习了。
对于此,我个人的学习路径如下:
Coursera上吴恩达的《呆板学习》,相识根本的呆板学习内容。Geoffrey Hinton 的《Neural Networks for Machine Learning》,之前是在 Coursera 上看的,如今好像只能在 Youtube 上找到了。这门课根本可以把几种经典的神经网络过一遍。各种开源平台。有了前面的底子,也在 Matlab 中实现过几种经典呆板学习算法,你就可以往实验一些深度学习开源平台了,如 TensorFlow。做呆板学习的人太多了,以是资料也非常多,在网上非常轻易自学。固然,我们要知道,我们学呆板学习,并不是为了转到 DL 方向上,而是用它来为呆板人研究提供工具的:
智能控制:信赖学习过智能控制的小同伴,应该还记得小脑模子之类的网络在控制中的应用;建模:对于一些欠好建模的地方,有时间不妨试试呆板学习的方法,比方,用神经网络拟合摩擦力;视觉:呆板人经成必要跟视觉联合在一起,而 DL 在视觉范畴发展敏捷,有时间借用这一工具,可以非常快地搭建实行原型;强化学习:这个下章先容。5.6 强化学习
假如研究过强化学习,肯定会被其极简的理论所折服:全部的理论衍生自一个 Bellman equation。而且,强化学习非常符合人的直觉。因此,许多人以为强化学习是呆板人的将来方向。
对此,我不做过多批评。我只大概先容怎样进门强化学习。
起首,就是看书。Sutton 的《Introduction to reinforcement learning》可以说是必读圣经了。
阅读 Sutton 的书,你可以一步步相识怎样从最初的 Bellman 方程推导出 Dynamic Programming、Monte Carlo、TD Learning 等方法。
你知道了强化学习就是要通过不停实验来学习得到一个从 State 到 Action 的查找表。
于是,你就想,有没有大概简化这个查找表,于是,你知道了有 Function Approximation。假如这个近似函数是神经网络,那么就是如今很火的 Deep Reinforcement Learing 了。
固然,这些不紧张。紧张的是明白 Markov Decision Processes。你会发现,它不但可以用来办理活动规划题目(DP ≈ Dijkstra、Monte Carlo ≈ RRT),还可以用来办理使命规划题目。
5.7 最新论文
至此,你已经可以或许阅读尽大多数最新的论文了。以是,你应该关注雷同 RSS、ICRA、IROS 等相干集会,相识呆板人范畴的最新希望;通过 IJRR、TRO 等期刊学习最新的理论。
固然,你也可以通过 Google Scholar 订阅相应的关键词,它会不定期将最新的论文推送到你的邮箱。
六. 勇者斗恶龙
http://pics7.baidu.com/feed/1b4c510fd9f9d72a8974eed5fec95930369bbbca.jpeg?token=54c82043ff0f48ce6035a5e14facda5b&s=E8004E940811E8D45080D4D4030050EB
自此,你已经知道了怎样让一个呆板人动起来,而且深进把握了研究呆板人某一范畴的知识。然后,你就像一个刚刚斩杀一只史莱姆的勇者一样平常,举着宝剑,时候预备着将宝剑刺进恶龙的胸口。
但是,这时间有人跑过来,往你头上浇了一盆水:
如今任意一个公司,花点钱请人画个呆板人图纸,找工厂加工出来,买些电机、减速器之类的零部件,套上一个通用控制器就可以跑了。哪必要什么动力学、最优控制、活动规划呀!
就连四各人,呆板人建模用 DH 就够了,最多做点活动学标定、动力学辨识,更多精神放在了应用集成上。哪必要什么李群李代数、凸优化、强化学习呀!
「这世上哪儿有什么恶龙啊!」
然而,我想说的是,就呆板人这块,只要工农业这类体力劳动没有实现完全的主动化,恶龙就存在:
http://pic.rmb.bdstatic.com/c007d6f376c0bd1b36315d5be2951e9c7502.gif
当你看到尽大多数呆板人照旧通过上面如许的方式,一点点示教出来的,你会有猛烈的感觉:「这就是恶龙!」
http://pics6.baidu.com/feed/b17eca8065380cd754bb9d3c88a7dc305b8281a5.jpeg?token=b556195c5736f691cde59f9e13ff9093&s=4100951A57707F98407C8CC90300B0B2
当你看到天下上那么多呆板人公司,有着各自形形色色、互不兼容的编程语言、示教器的时间,你会有猛烈的感觉:「这就是恶龙!」
http://pics5.baidu.com/feed/2fdda3cc7cd98d10608b46d508dcc90a79ec90da.jpeg?token=316bfc33440d5f20fba22b10f1af01bb&s=71A025F1F4232CB298B4A14B03008093
当你看到另有非常多与你我同龄的人在工厂里做偏重复、枯燥的工作的时间,你会有猛烈的感觉:「这就是恶龙!」
是的,在呆板人范畴,另有非常多恶龙。于是,你拿起剑,又兴冲冲地上路了。
突然你发现,你之前学的都是怎样杀死一个「真空中的球形龙」,你不知道应该怎样杀死一个真正的龙。
以是,你应该继承学习。往找更多的真实史莱姆练手,将之前学到的剑法应用在现实战场上。
厥后,你又碰到了新题目,你之前的宝剑并不具有「产业级强度」:ROS 经成崩、Oroscos的没有处置惩罚 Eigen Alignment、没有好用的 3D 传感器、产业呆板人不开放底层接口等等。
于是,你意识到,你必要重新打造本身真正的宝剑。
但是,这不是你一个人可以做到的,你必要一个团队,有人采煤、有人炼钢、有人铸造、有人磨刀……
这时间,不妨来 RVBUST 看看。
七. 参考文献
John J. Craig. Introduction to Robotics: Mechanics and Control. 1986.
Siciliano, Bruno, and Oussama Khatib, eds. Springer handbook of robotics. Springer, 2016.
Khalil, Wisama, and Etienne Dombre. Modeling, identification and control of robots. Butterworth-Heinemann, 2004.
Choset, Howie M., et al. Principles of robot motion: theory, algorithms, and implementation. MIT press, 2005.
LaValle, Steven M. Planning algorithms. Cambridge university press, 2006.
Kim, Beobkyoon, et al. "Tangent bundle RRT: A randomized algorithm for constrained motion planning." Robotica 34.1 (2016): 202-225.
Jaillet, Léonard, and Josep M. Porta. "Path planning with loop closure constraints using an atlas-based RRT." Robotics Research. Springer, Cham, 2017. 345-362.
Sutton, Richard S., and Andrew G. Barto. Introduction to reinforcement learning. Vol. 135. Cambridge: MIT press, 1998.


http://www.fyguaji.com
页: [1]
查看完整版本: 开源呆板人自学指南