(七)Robotics学习路径

2024-11-25 00:59

(七)Robotics学习路径




1. 初阶

顺序

资源

知识分类/使用方法

推荐指数

链接和介绍

了解如何让一个工业机器人动起来

1

《Introduction to Robotics: Mechanics and Control》by John Craig

【大局观】

这本书很难啃,先粗略看一遍,之后再重复读。和2配合一起学

4

英文版:

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgtrWHuwYokNS8uwQ.pdf


中文版

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgtrWHuwYosJmhkAU.pdf

「如果你把这本书的内容掌握了,就已经超过实验室绝大多数师兄师姐了。」然而,真正把教材啃下来的并不多。所以,我在这里要换个说法了,「如果你把这本书的内容掌握了,就可以胜任国内绝大多数机器人公司的开发工作了。」

==

个人推荐的是 John Craig 的教材 《Introduction to Robotics: Mechanics and Control》[1],在 Youtube 和网易公开课都可以找到斯坦福 Oussama Khatib 大神的视频,基本与 Craig 的教材内容相匹配。

==

是本老教材了,也是介绍机械臂类型机器人的经典入门读物。里面的知识都比较基础,可以用来扫盲(这里的“基础”不是指简单,如果你没有更基础的知识储备,比如理论力学、控制理论,可能还是不懂)。如果英文不好可以看中文版:《机器人学导论》。

==

这本书由John J. CrAIg撰写,已经更新到第四版,是机器人学和控制领域的经典课本。它从基本的力学概念讲起,逐渐引入控制理论,使读者能够逐步建立起对机器人系统的深入理解。

2

Stanford课程 Oussama Khatib for Introduction to Robotics (CS223A)

【大局观】

和1配合一起学

1

https://www.youtube.com/watch?v=0yD3uBshJB0&list=PL64324A3B147B5578


个人推荐的是 John Craig 的教材 《Introduction to Robotics: Mechanics and Control》,基本与 Craig 的教材内容相匹配。

3

A Mathematical Introduction to Robotic Manipulation 机器人操作的数学导论

【数学】

2

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAguLWHuwYo1IDv-wM.pdf‍


作者之一是李泽湘,他在机器人圈子中几乎无人不知,学术和商业上做的都比较成功。他有一个学生比较有名,就是大疆的创始人汪涛,李同时也是固高自动化的老板。该书在微分几何的基础上展开,对初学者可能有些难。我是一边看微分几何入门一边看这本书,用了一年多才慢慢理解了,虽然还算经典但不适合入门。如果你英文不好可以看中文版:《机器人操作的数学导论》。随书也附带了一个旋量软件包 Screws,可以用来建立机器人运动学模型,不过这个软件包是用 Mathematica 软件编写的。

==

讲的很全面也很清晰看的过程中顺便可以复习复习高等线性代数

4

Principles of Robot Motion Theory, Algorithms, and Implementations

运动规划

2

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAguLWHuwYouJ623QM.pdf‍


主要讲移动机器人的运动规划,也有一部分机械臂最优轨迹规划,比较基础。该书的特点是包含一些简单的例子,有助于读者理解,我比较推荐。

5

Robook 机器人手册

【查缺补漏】

1

https://www.robook.org/docs/handbook/intro_handbook


Robook是一份面向对机器人感兴趣的新生的机器人扫盲手册和攻略手册.


Robook致力于编辑、汇总南科大机器人方向入门、成长所必须的各种资料, 让更多对机器人感兴趣的人了解、深入这一领域. 手册中既包括机器人学科的学习路线建议,也涵盖在南科大做机器人如何打怪升级的建议和经验.


Robook由南科大学生贡献和总结,我们希望通过这个手册, 将我们学到的知识传递下去,为南科大工程师文化在学生群体中的建立提供一个平台.

截止我们的统计日期之前,这个资源被推荐的次数。10代表这个资源被推荐过10次。被赞数和次数无关,被赞100次也只算一次。不同的领域不能横向对比,比如”机器学习学习路径“中的资源的指数和和”HCI学习路径“中的资源指数不能直接比较,因为不同领域的popularity不一样。

2. 中阶

顺序

资源

知识分类/使用方法

推荐指数

链接和介绍

1

ROS 机器人操作系统的开源项目 (Robot Operating System, ROS)

【实战】

7

ROS Tutorials

https://wiki.ros.org/ROS/Tutorials


《ROS机器人程序设计》

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg07eHuwYovJy-nwE.pdf


Robotics by ColumbiaXatedxorg

https://www.edx.org/learn/robotics/columbia-university-robotics


到现在为止,你对机器人的基础知识有了一个比较完整的脉络,而且,也用 Matlab 实现了一些有趣的算法。但是,你发现,机器人是一个非常大的系统,作为初学者,不太可能从头开始一步步搭建机器人所需的各个算法模块。这时候,你就应该开始拥抱伟大的开源世界了。

对于学习 ROS,网上可能有不少教程了。但是,我感觉,很多机电、自动化方向的学生并不适合直接开始看 ROS。因为他们缺乏基本的 Linux、C++ 知识。所以,我推荐按照如下步骤进行学习:

Linux:如果完全没有 Linux 开发经验,我建议可以先安装 Ubuntu 系统,然后看UNIX Tutorial for Beginners (http://www.ee.surrey.ac.uk/Teaching/Unix/,熟悉基本的 Linux 使用方法。

Github:ROS 的大多数项目都是托管在Github 上的。所以,非常有必要学会使用 Github,学会用 git 管理自己的代码。而且也可以为开源项目做些修改。例如可以像我一样只是删除多余的分号(https://github.com/stack-of-tasks/pinocchio/pull/672

C++ 基础:如果你没有系统学习过 C++,建议先把这部分补齐,因为 ROS 的主要代码都是 C++ 实现的。这里,我推荐学堂在线上清华大学郑莉老师的课程《C++语言程序设计基础》(http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/about《C++语言程序设计进阶》(http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043_2x_2015_T2+sp/about。当然,学习 C++ 的时候就可以在 Ubuntu 下进行,安装一个Visual Studio Code(https://code.visualstudio.com/ 是个不错的选择。

数据结构:其实,上面的基础已经足够你学习 ROS 了,但是,为了未来的学习,可以在适当时候学习一些数据结构的知识。数据结构的话,我推荐学堂在线上清华邓俊辉老师《数据结构(上)》(http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240184+sp/about《数据结构(下)》(http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240184_2X+sp/about

现在,你就可以大胆地去看 ROS 了。作为开源项目,我认为最好的教程就是官网的教程ROS Tutorials(https://wiki.ros.org/ROS/Tutorials

首先,通过 Beginner Level 和 Intermediate Level 了解 ROS 基本的通讯机制、学会使用 catkin、roslaunch、Rviz 等基本工具。

之后,就可以根据各自的研究兴趣去看不同模块了。如果有条件,能够配合一些 ROS 支持比较好的平台进行研究的话,可以大大提高学习速度。例如 TurtleBot、Baxter、Universal Robot 之类的。(这就看每个人条件了。)

https://qiu6401.gitbook.io/how-to-learn-robotics/advanced

2

Springer Handbook of Robotics

【工具书】

2

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg17eHuwYosJ2SwAc.pdf

是部百科全书似的大部头,各章都是杰出人才写的自己拿手研究领域的基础内容。

3

学习SLAM

【SLAM】

SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”,主要用于解决机器人在未知环境运动时的定位与地图构建问题

N/A

《视觉SLAM十四讲》

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg17eHuwYo2tf96gI.pdf

《视觉SLAM十四讲:从理论到实践》系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。

==

这个不应该还要介绍吧,几乎学习移动机器人SLAM的同学都人手一本吧,极力推荐。



《Probabilistic Robotics概率机器人》

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1LeHuwYovbH4jQc.pdf


‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg07eHuwYo8pvqrAM.pdf‍

《概率机器人》对概率机器人学这一新兴领域进行了全面的介绍。概率机器人学依赖统计技术表示信息和进行决策,以容纳当今大多数机器人应用中必然存在的不确定性,是机器人学的一个分支。它依赖统计技术表示信息和制定决策。这样做,可以接纳在当今大多数机器人应用中引起的不确定性。本书主要专注于算法,对于每种算法,均提供了四项内容:伪码示例;完整的数学推导;实验结果;算法优缺点的详细讨论。

4

Penn's Robotics Specialization

【实战】【Matlab】

2

https://www.coursera.org/specializations/robotics


在此之后,不妨抽出几个月时间,看看 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原理演示》文章中的效果了:


Estimation and Learning:这门课从高斯分布开始,介绍了 Kalman Filter、Particle Filter 等在机器人状态估计中非常有用的工具。而且,这门课的大作业会让你从零开始编写 2D 地图重建的程序,你可以知道如何利用激光传感器信息获得下面这样的 2D 地图。

==

UPenn的Robotics的课我听过lecture特别短知识点都是蜻蜓点水python在robotics里面经常用到建议学一下

5

Awesome Robotics

【资源汇总】

1

https://github.com/Kiloreux/awesome-robotics

6

Awesome Robotics Libraries

【资源汇总】

1

https://github.com/jslee02/awesome-robotics-libraries

7

阿莫电子论坛

【论坛】

1

https://www.amobbs.com/forum-3020-1.html


8

参加一些小比赛

【竞赛】

1

如 RoboMaster、飞思卡尔智能车大赛、电子设计大赛等;也可以加入学校的一些科技组织,例如清华的天空工厂。主要是熟悉各种电子电路、培养动手能力。但是,以我的观察,很多科技比赛大牛,在理论学习上往往比较弱。这主要是因为科技比赛强调的是系统能力,决定比赛结果的往往是一些小 tricks,而非理论知识;而且,比赛容易让人产生一种虚假的充实感,每天都很忙碌,但是可能只是在重复低级工作。这两个原因很容易让人陷入 local minima,无法在理论方面更进一步。


所以,我有个不成熟的小建议:参加比赛和学生科技活动的话,有过两次完整的经历就够了。之后应该迅速将重点转向理论学习。

9

项目实战

【实战】

1

  1. 手写双目视觉里程计。涉及到图像处理、特征匹配、位置解算、空间变换等等。这里可以推荐高翔博士的 slam十四讲(https://github.com/gaoxiang12/slambook

  2. 手写四旋翼飞行器基于GPS的轨迹规划。涉及到深挖四旋翼飞行器的运动原理、IMU原理、轨迹生成和优化等。这里可以推荐 天穹飞控(https://github.com/loveuav/BlueSkyFlightControl

  3. 造一个被推了也不会倒的四足舵机机器人。涉及到舵机控制、倒立摆建模、动力学分析、PID控制、IMU原理等。这里可以推荐OLDX-MocoMoco(https://github.com/golaced/MocoMoco_Software

  4. 深度学习训练一个小车追人跑。涉及到深度学习工具包使用、数据集采集、数据集分析、小车控制等。这里可以推荐动手学深度学习(https://github.com/ShusenTang/Dive-into-DL-PyTorch

  5. 机械臂给人端茶倒水。这个相对来说土豪一点,因为能直接拿来用的机械臂都很贵,这个就要看有没有找到富婆了。涉及到多自由度机械臂原理的学习、工具包的使用、轨迹规划等等。这里可以推荐ROS中的MoveIt(https://www.ncnynl.com/category/ros-moveit/

  6. 这里有我2018-2019年里做的一些作品,有兴趣的同学可以点此链接(https://github.com/izh20/The-path-of-robotics-engineers看看


3. 高阶

顺序

资源

知识分类/使用方法

推荐指数

链接和介绍

1

数学

【数学】

N/A

这时候,你的数学基础基本不允许你更进一步了。所以,你需要补充数学知识。

数值计算方法:很多时候,我们都是通过计算机来实现算法功能的,所以,你必须了解基本的数值计算方法,如数值微分、数值积分等。这部分可以看《Numerical Methods for Engineers》[3]

凸优化:这个世界很多问题都不容易找到解析解,我们得用优化方法来计算。所以,你必须了解如何建立优化模型,并知道如何用代码进行求解。这里,我推荐 Stanford 的公开课《Convex Optimization》(https://lagunita.stanford.edu/courses/Engineering/CVX101/Winter2014/about

李群李代数:优化方法经常要使用梯度信息,但是,你发现很多时候你不知道怎么定义梯度。李群李代数是一个非常经典的数学工具,可以非常方便地描述 SO(3)、SE(3) 空间中的对象。到这里,你之前对于四元数、角速度之类的疑问将一扫而空。这部分的学习资料,我会在后面补充。

https://qiu6401.gitbook.io/how-to-learn-robotics/advanced

2

Modern Robotics

【Modern Robotics】

1

Coursera Modern Robotics: Mechanics, Planning, and Control Specialization

https://www.coursera.org/specializations/modernrobotics

《Notes on Differential Geometry and Lie Groups, I & II》

李群李代数对于很多工科学生可能一时无法接受。这里,我推荐从 Modern Robotics 开始,这是一本面向本科生的教材,非常浅显。

你可以在网上(http://hades.mech.northwestern.edu/index.php/Modern_Robotics找到它的所有信息,Coursera 上也有对应的课程:《Modern Robotics》(https://www.coursera.org/specializations/modernrobotics

上完这门课,你能掌握旋量(Screw)这一全新的建模方式,同时,你会发现机器人运动学、动力学建模变得如此简单、干净。

这时候,你已经触碰到了一点点李群李代数。之后就可以去看一些针对工科生的李群李代数教材,如《Notes on Differential Geometry and Lie Groups, I & II》(http://www.cis.upenn.edu/~jean/gbooks/manif.html

3

《Modeling, identification and control of robots》

【控制】

1

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg4bqHuwYokpat-wM.pdf

这时候,你可能已经尝试搭建过一些机器人平台,了解了一些基本的控制理论。但是,你发现实际的机器人并不理想,动力学模型可能非常不精确。于是,你需要做机器人的参数辨识。于是,你可以去看 Khalil 的教材《Modeling, identification and control of robots》[4]。其中,你需要了解各种滤波算法(计算加速度)、各种数值优化算法。而且,如果需要对机器人的运动学参数进行标定,你会发现李群李代数可以非常方便地定义各种相关的雅可比。


现在,你有了一个相对精确的动力学模型,但是你发现,在给机器人控制器做轨迹规划的时候,需要给出速度、加速度约束。你感觉这其中有什么不对。是的,机器人系统中实际上并不存在什么速度、加速度约束,我们所有的操作都是针对电机力矩的。也就是说,我们只有力矩约束。


那么,问题来了:在力矩约束下,如何让机器人实现最快的运动。于是你就入了最优控制的坑。在这里,各种数值优化方法将非常有用。


现在你能把单独的一个机器人控制好了,但你发现,机器人一旦跟环境发生接触,只用机器人模型就不够了。你需要对环境进行建模。但是,环境是无法精确建模的。于是,你开始学各种力控、阻抗控制之类的内容。相应地、你就可以实现一些所谓协作机器人的功能了


https://qiu6401.gitbook.io/how-to-learn-robotics/advanced

4

《Principles of Robot Motion》[5] 和《Planning Algorithms》

【运动规划】

1

Principles of Robot Motion

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg4bqHuwYo2Naq7AY.pdf

Planning Algorithms

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg4bqHuwYoq7D89wY.pdf

现在,你能让机器人按照你的要求运动了。但是,你感觉机器人还是太难用了,必须人工指定经过的路径点,否则机器人可能就会与环境发生碰撞。你想,有没有可能让机器人自己找到这些路径点。

于是,你来到了运动规划的领域。

当然,一个很自然的想法是,有没有可能直接构建一个目标函数,用优化的方法计算出需要的轨迹。但是,世界有时候并没有那么可爱。运动规划问题常常是一个非凸问题,无法优化直接求解。所以,对于机械臂,可以有各种 Sampling-based 算法;当然,也有人将其近似成多个凸问题进行优化求解,在比较简单的场景下效果还算不错。

运动规划的大致介绍可以看我以前写过的文章:《运动规划 | 简介篇》(https://mp.weixin.qq.com/s/_fE760XxFlvrkzYEpslYvA

更详细的介绍最好看教材,如《Principles of Robot Motion》和《Planning Algorithms》都是不错的教材。

另外,这部分一定要配合着编程来做。The Open Motion Planning Library(http://ompl.kavrakilab.org/ 是个不错的参考,相信你在学 ROS 的时候也或多或少了解过一些。

https://qiu6401.gitbook.io/how-to-learn-robotics/advanced

5

Machine Learning

【AI】

1

随着人工智能的发展,越来越多的机器人开始具备学习和自主决策的能力。学习机器学习可以帮助你了解机器学习算法的原理和应用,并使用它们来训练机器人模型。学习人工智能可以帮助你设计和实现智能决策和交互系统,使机器人能够更加智能地与人类进行交互。


具体见Machine Learning学习路径部分



DIY吧 除非你...
若你有信心 我建议CS申硕申博求职DIY~ 若你想找专家伴你成长 我建议寻找做啥成啥的人 他们能力强 资源多 能解决你一切CS申硕申博求职身份生活的挑战~
先找其他机构?
肯定有其他靠谱机构 但如果你感觉他们干不过我、或你走投无路了 你再来找我吧hhh 但如果我没名额了 希望你别难过 我不是针对你 而是我每年名额都会满
就想加肖哥微信
我的微信被我藏在我荡气回肠的人生经历里 xiaogeedu.tech/col.jsp?id=253 辛苦你去找下hhh 我是美西时区 但每年9月中-12月中是申请季/招聘季 作息是乱的
不考虑商业合作
不商业合作 因为我不知谁靠谱 不合作能杜绝狗血 因噎废食能保护我自己 且我不缺流量还要赶走流量 找我合作您巨亏hh 我与任何商家或申硕申博求职中介都无关
用电脑访问本站
不建议用手机端访问本站,看着贼挤,在电脑端看着舒服hh