開源機器人自學指南
雷鋒網AI科技評論按,本文轉載自公眾號Nao,作者邱強,AI 科技評論已獲授權。
我在Github上發起了一個開源機器人學自學指南,地址是:https://github.com/qqfly/how-to-learn-robotics。
第一版本放在公眾號里發出:
目錄
零. 前前言
一. 前言
二. 先修知識
三. 入門
四. 實踐
4.1 動手
4.2 Penn"s Robotics Specialization
4.3 ROS
五. 進階
5.1 數學
5.2 Modern Robotics
5.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 機器人。靠著師兄的「祖傳代碼」,也曾狐假虎威地在外賓面前做過一些演示:
但是,當我後來真正開始看這些「祖傳代碼」的時候,我發現實際發給機器人的只有幾個關節位置點而已。
「PID 在哪裡???」
這是我當時產生的最大疑問。這個代碼邏輯跟我本科玩得四旋翼、智能車等都完全不一樣!
於是,拿著這個疑問,我在實驗室問了一圈,沒有得到答案。即使後來,我選修了好幾門跟機器人相關的研究生課程。經過一年的學習,我還是沒有得到答案。
是的,作為國內最早開展機器人研究的院校之一,這裡的機器人研究生課程只教我們如何建立 DH 坐標系,動力學只是簡單計算了一個平面三連桿。根本沒有涉及控制、軌跡規劃的內容,甚至連運動學逆解也沒有要求大家計算。
據我所知,很多其他研究機構也是如此,機器人學這塊還沒有形成完整的教學體系。所以,基本上學生都沒有接受過完整的機器人學系統教育,只有在做項目的時候通過自學掌握項目所需的內容。這也就造就了一大批沒有算過機器人運動學逆解的機器人專業博碩士生。
當然,並不是說「運動學逆解」、「軌跡插補」之類的知識有多難。我想強調的是,在大陸,一個學生只通過上課,無法掌握、甚至是無法接觸到這些機器人學中非常基礎的知識。
當然,這一情況在大陸比較普遍,而國外或者港台高校畢業的學生,基本上都沒有這個問題。國外或者港台高校在機器人學這塊的教學體系相對比較完整,基本上大作業都會覆蓋主要的知識點,並且大都要求編程實現。
雖然,大多數小夥伴都是「非科班出身」的,但是,根據我的經驗,大陸的學生還是非常聰明的,基本只要得到一些簡單的正確引導,就能很快通過自學掌握這些知識。所以,我們不妨來看看「非科班出身」如何學習機器人學吧。
二. 先修知識
當然,先修知識會隨著研究深度的變換而不同,尤其是數學,數學就像是寫輪眼,看同一個石碑,不同層次的「寫輪眼」所看到的內容也完全不同。
但是,由於機器人學涉及面廣,不同方向所需要的基礎知識也完全不同,如果一開始就陷入「先修知識」的泥潭中,可能就得不償失了。
所以,我認為,可以先列一些真正必須掌握的先修知識,其他的在後續相應部分提及即可:
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、狀態方程、可觀性、可控性、李雅普諾夫、最優控制、一點點非線性控制與一點點智能控制等。這塊我基本是在學校上課,沒有太好的公開課推薦,可以先試試學堂在線上的課程。
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》[1],在 Youtube 和網易公開課都可以找到斯坦福 Oussama Khatib 大神的視頻,基本與 Craig 的教材內容相匹配。
建議從 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原理演示》文章中的效果了:https://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》[2]。接觸一個新的領域時,在 Handbook 里找到相應的章節,通過它了解基本的大綱,並利用提供的參考文獻快速補齊知識。
5.1 數學
這時候,你的數學基礎基本不允許你更進一步了。所以,你需要補充數學知識。
數值計算方法:很多時候,我們都是通過計算機來實現演算法功能的,所以,你必須了解基本的數值計算方法,如數值微分、數值積分等。我沒有太好的公開課資源可以推薦。
凸優化:這個世界很多問題都不存在解析解,我們得用優化方法來計算。所以,你必須了解如何建立優化模型,並知道如何用代碼進行求解。這裡,我推薦 Stanford 的公開課《Convex Optimization》
李群李代數:優化方法經常要使用梯度信息,但是,你發現很多時候你不知道怎麼定義梯度。李群李代數是一個非常經典的數學工具,可以非常方便描述 SO(3)、SE(3) 空間中的對象。到這裡,你之前對於四元數、角速度之類的疑問將一掃而空。這部分的學習資料,我會在後面補充。
5.2 Modern Robotics
李群李代數對於很多工科學生可能一時無法接受。這裡,我推薦從 Modern Robotics 開始,這是一本面向本科生的教材,非常淺顯。
你可以在網上找到它的所有信息,Coursera 上也有對應的課程:《Modern Robotics》。
上完這門課,你能掌握旋量(Screw)這一全新的建模方式,同時,你會發現機器人運動學、動力學建模變得如此簡單、乾淨。
這時候,你已經觸碰到了一點點李群李代數。之後就可以去看一些針對工科生的李群李代數教材,如《Notes on Differential Geometry and Lie Groups, I & II》
5.3 控制
這時候,你可能已經嘗試搭建過一些機器人平台,了解了一些基本的控制理論。但是,你發現實際的機器人並不理想,動力學模型可能非常不精確。於是,你需要做機器人的參數辨識。於是,你可以去看 Khalil 的教材《Modeling, identification and control of robots》[3]。其中,你需要了解各種濾波演算法(計算加速度)、各種數值優化演算法。而且,如果需要對機器人的運動學參數進行標定,你會發現李群李代數可以非常方便地定義各種相關的雅可比。
現在,你有了一個相對精確的動力學模型,但是你發現,在給機器人控制器做軌跡規劃的時候,需要給出速度、加速度約束。你感覺這其中有什麼不對。是的,機器人系統中實際上並不存在什麼速度、加速度約束,我們所有的操作都是針對電機力矩的。也就是說,我們只有力矩約束。
那麼,問題來了:在力矩約束下,如何讓機器人實現最快的運動。於是你就入了最優控制的坑。在這裡,各種數值優化方法將非常有用。
現在你能把單獨的一個機器人控制好了,但你發現,機器人一旦跟環境發生接觸,只用機器人模型就不夠了。你需要對環境進行建模。但是,環境是無法精確建模的。於是,你開始學各種力控、阻抗控制之類的內容。相應地、你就可以實現一些所謂協作機器人的功能了:《聽說現在協作機器人很火,所以我也做了1/7個》
5.4 運動規劃
現在,你能讓機器人按照你的要求運動了。但是,你感覺機器人還是太難用了,必須人工指定經過的路徑點,否則機器人可能就會與環境發生碰撞。你想,有沒有可能讓機器人自己找到這些路徑點。
於是,你來到了運動規劃的領域。
當然,一個很自然的想法是,有沒有可能直接構建一個目標函數,用優化的方法計算出需要的軌跡。但是,世界有時候並沒有那麼可愛。運動規劃問題常常是一個非凸問題,無法直接求解。所以,對於機械臂,可以有各種 Sampling-based 演算法;當然,也有人將其近似成多個凸問題進行優化求解,在比較簡單的場景下效果還算不錯。
運動規劃的大致介紹可以看我以前寫過的文章:《運動規劃 | 簡介篇》。
當然,更詳細的介紹最好看教材,如《Principles of Robot Motion》[4] 和《Planning Algorithms》[5] 都是不錯的教材。
另外,這部分一定要配合著編程來做。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 樹上。
但是,我們可以從另一個角度看問題。機器人的末端姿態就是一個 SE(3) 李群。保持末端水平,可以認為是一個 R3 空間與 SO(2) 空間的半直積,這也是一個李群。於是,我們可以直接在李群內或者 Tangent Space 上跑一個 RRT,例如 Tangent Bundle RRT[6]與 AtlasRRT[7]
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》[8]可以說是必讀聖經了。
閱讀 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 訂閱相應的關鍵詞,它會不定期將最新的論文推送到你的郵箱。
六. 勇者斗惡龍
自此,你已經知道了如何讓一個機器人動起來,並且深入掌握了研究機器人某一領域的知識。然後,你就像一個剛剛斬殺一隻史萊姆的勇者一般,舉著寶劍,時刻準備著將寶劍刺入惡龍的胸口。
但是,這時候有人跑過來,往你頭上澆了一盆水:
現在隨便一個公司,花點錢請人畫個機器人圖紙,找工廠加工出來,買些電機、減速器之類的零部件,套上一個通用控制器就可以跑了。哪需要什麼動力學、最優控制、運動規劃呀!
就連四大家,機器人建模用 DH 就夠了,最多做點運動學標定、動力學辨識,更多精力放在了應用集成上。哪需要什麼李群李代數、凸優化、強化學習呀!
「這世上哪兒有什麼惡龍啊!」
然而,我想說的是,就機器人這塊,只要工農業這類體力勞動沒有實現完全的自動化,惡龍就存在:
當你看到絕大多數機器人還是通過上面這樣的方式,一點點示教出來的,你會有強烈的感覺:「這就是惡龍!」
當你看到世界上那麼多機器人公司,有著各自形形色色、互不兼容的編程語言、示教器的時候,你會有強烈的感覺:「這就是惡龍!」
當你看到還有非常多與你我同齡的人在工廠里做著重複、枯燥的工作的時候,你會有強烈的感覺:「這就是惡龍!」
是的,在機器人領域,還有非常多惡龍。於是,你拿起劍,又興沖沖地上路了。
忽然你發現,你之前學的都是如何殺死一個「真空中的球形龍」,你不知道應該如何殺死一個真正的龍。
所以,你應該繼續學習。去找更多的真實史萊姆練手,將之前學到的劍法應用在實際戰場上。
後來,你又遇到了新問題,你之前的寶劍並不具有「工業級強度」:ROS 經成崩、Oroscos的沒有處理 Eigen Alignment、沒有好用的 3D 感測器、工業機器人不開放底層介面等等。
於是,你意識到,你需要重新打造自己真正的寶劍。
但是,這不是你一個人可以做到的,你需要一個團隊,有人採煤、有人鍊鋼、有人鍛造、有人磨刀……
這時候,不妨來 RVBUST 看看。
七. 參考文獻
[1] John J. Craig. Introduction to Robotics: Mechanics and Control[M]. 1986.
[2] Siciliano, Bruno, and Oussama Khatib, eds. Springer handbook of robotics. Springer, 2016.
[3] Khalil, Wisama, and Etienne Dombre. Modeling, identification and control of robots. Butterworth-Heinemann, 2004.
[4] Choset, Howie M., et al. Principles of robot motion: theory, algorithms, and implementation. MIT press, 2005.
[5] LaValle, Steven M. Planning algorithms. Cambridge university press, 2006.
[6] Kim, Beobkyoon, et al. "Tangent bundle RRT: A randomized algorithm for constrained motion planning." Robotica 34.1 (2016): 202-225.
[7] 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.
[8] Sutton, Richard S., and Andrew G. Barto. Introduction to reinforcement learning. Vol. 135. Cambridge: MIT press, 1998.


※攻擊者濫用 LinkedIn 求職資料傳播 More_eggs 後門
※深度學習人機交互相關資源推薦來啦
TAG:雷鋒網 |