(GitChat)沉迷機器人作業系統的一個理由和四種修仙祕籍

zhangrelay發表於2019-01-11

原文連結:https://gitbook.cn/books/5bbda85f90227d6992c167ed/index.html


捷徑常誤人,欲速則不達

The longest way round is the nearest way home.

enter image description here

圖 1:今天的 Atlas

我們會驚豔於圖 1 中機器人的敏捷身姿。

enter image description here

圖 2:5 年前的 Atlas

今天的 Atlas 身輕如燕,跑跳自如;5 年前的它依靠吊繩,步履蹣跚,這是不斷進化成長的必然結果。

循序漸進,厚積薄發,是學習 ROS 和機器人技術的必由之路。

機器人被譽為製造業皇冠上的明珠,歷經 500 年的不斷髮展(16 世紀西班牙自動祈禱的機械僧侶),目前已經全面進入“機器人+”時代,湧現出各種新奇智慧的黑科技,如機械狗、無人機、自動駕駛汽車以及各種服務機器人……在這些機器人的大腦之中,都用到一個共同的軟體工具,將視覺、聽覺、觸覺、四肢等連線協調,完成複雜多變的任務,它就是機器人作業系統(Robot Operating System,ROS)。同時,它也是近百所高校機器人方向的專業核心課程。

enter image description here

圖 3:ROS 維基訪問排名

自 2007 年 11 月由史丹佛大學提交,已經發展了 11 年,成為機器人領域使用最廣泛的軟體平臺,超過 450 萬行核心程式碼,支援天上飛、地上跑、水中游等各類機器人。然而使用 ROS 進行機器人軟體開發與設計並非易事,為什麼要學習研究 ROS,有哪些主流的方式路徑,這正是 Chat 的主題所在,當然也包括跨系統平臺對比和雙語資料彙總。內容綱要如下:

  1. 學習研究 ROS 的理由 Reasons for learning and studying ROS
  2. ROS 案例簡述 Brief description of ROS robot
  3. ROS 特色優勢 Characteristics and advantages of ROS
  4. ROS 與機器人理論 ROS and robotic theory
  5. ROS 主流學習與開發路徑 Efficient learning guides and typical development paths of ROS

1. 學習研究 ROS 的理由

簡言之,“”。

對於機器人專業方向的學生而言,學習 ROS 能將理論應用於實際系統,學以致用

從學士到碩士再到博士,ROS 都是必不可少的工具。

推薦閱讀:機器人工程師學習計劃

對於機器人工程師和科研人員,掌握 ROS 可以跟蹤研究最新的演算法和架構,知行合一

晉升路徑分別為:

初級工程師 - 助理工程師 - 工程師 - 主任工程師 - 高階工程師 - 副總工程師 - 總工程師 - 技術總監 (企業)

助教 - 講師 - 副教授 - 教授(高校)或助理研究員 - 副研究員 - 研究員(研究所等)

對於機器人愛好者,應用 ROS 可以愉快把玩各種機器人並設計屬於自己的機器人,個性訂製

對於寶爸寶媽,嗯,ROS 可以讓您和孩子一起動手製作高大上的機器人玩具,藉助 ROS 可以從 Scratch 到 Python 然後過渡到 C++ 語言,一步步在您陪伴孩子共同成長的過程中不斷深入探索機器人程式設計的無窮奧妙

利於學業,利於晉升,利於應用,利於研究,利於定製,利於玩耍。

只有“”這麼一個理由,如果還要第二個理由,那就是簡單易學。

只要識字,就可以學會程式設計;若會程式設計,就能夠掌握ROS。

If you know how to read you can learn how to code, if you know how to code you can learn how to use ROS.

2. ROS 案例簡述

ROS 機器人主要分為兩個主流的研究領域:服務機器人工業機器人,核心功能包分別對應 Navigation 和 MoveIt!。

支援 ROS 的機器人列表:ROS 機器人連結,總有一款你喜歡的~

enter image description here

圖 4:支援 ROS 的機器人列表

這裡,以掃地機器人這類典型的服務機器人為例:

enter image description here

圖 5:掃地機器人案例示意

這裡案例,融合了機器人運動學原理到程式碼編寫實現,SLAM 理論到模擬應用,感測器和執行器訊息傳遞的方式,基於區域覆蓋的路徑規劃演算法等。用 ROS 學習並掌握這套理論,不僅形象便於理解,而且藉助開源社群的力量,只需一週就可以做出一個“不太聰明”的掃地機器人。通過模擬可以零成本的搭建各式各樣的環境用於演算法驗證。

enter image description here

enter image description here

圖 6:典型室內模擬環境與寓教於樂的實踐環節

ROS 的應用領域也非常廣泛,從物流小車,到無人駕駛;無論是小到可以進入千家萬戶的教育機器人,還是大到礦山機械星辰大海,都可以讓開發人員迅速上手,開發出期望的產品原型,並不斷更新改進完善。

enter image description here

enter image description here

嗯,這些行業大佬都非常看好 ROS 呢!

3. ROS 特色優勢

ROS 1 主要特點如圖 7 所示:

enter image description here

enter image description here

enter image description here

圖 7:ROS 的主要特點

ROS 2 在此基礎之上增強了資料分發服務(Data Distribution Service,DDS)和實時性(Real-time)等,如圖 8 所示:

enter image description here

enter image description here

圖 8:ROS 的發展改進

enter image description here

上面的 rqt_graph 圖中,有節點(可用 Python 或 C++ 實現),箭頭代表資料資訊流向,可以多臺計算機分別執行不同的程式,通過網路進行通訊,只需要在原有程式基礎上,依據 ROS 做少許修改即可,例如,語音識別控制機器人運動程式,就是通過程式碼移植實現的,非常方便。

4. ROS 與機器人理論

ROS 是快速實現機器人理論的一種途徑,可以通過模擬或實際機器人測試學習過的或者新開發的演算法。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

圖 9:ROS 與機器人學的關係

ROS 是一座橋樑,將枯燥的理論變為鮮活的應用,使兩者有機結合,發生奇妙的變化。

例如,Google 開源的 SLAM 演算法 cartographer,通過 ROS,可應用於任何一款定製的機器人。

enter image description here

Cartographer 是一個適用於二維和三維環境的提供實時同步定位和地圖構建(SLAM)的系統,支援多平臺和感測器配置。

Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.

參考連結:ROS WikiGithub

5. ROS 主流學習與開發路徑

本節分為兩部分,5.1-5.4 講述四種修煉之路,5.5 簡單說一下開發的問題。

5.1 武林正宗

如果您是程式設計師老司機,那麼 ROS 和 GitHub 官網能夠找到您想要了解的幾乎全部資料,免費詳細的文件,唯一需要的就是您寶貴的時間。

5.2 另闢蹊徑

  1. 如果您是剛剛瞭解 ROS 的新手,這裡推薦一本 ROS 入門最佳書:ROS 機器人程式設計。下載中英文版本,並儘可能同步閱讀。
  2. 在完成後,推薦蘇黎世聯邦理工學院 ETH 的 ROS 課程,同樣推薦中英文同步學習,並完成課後習題。
  3. 再然後呢,恭喜您,已經完全入門 ROS 了,選擇自己感興趣的方向或專案需求深入研究就好。

5.3 雲端遨遊

三個線上學習 ROS 的課程:

  1. 中文慕課:機器人作業系統入門
  2. 實驗樓:ROS 機器人作業系統的安裝、配置與初級教程
  3. Construct:Learn to Develop for Robots with ROS

掌握 ROS 技巧,變身機器人開發者

Master ROS Skills and Become a Robotics Developer

5.4 隨心所欲

如果您沒有目標,也可以報個 ROS 培訓班,聽大神吹吹牛,找本書隨便翻翻,或者在網上東看看西耍耍,然後,嗯,您什麼也學不會。“從古至今,雖然學習的手段有所改變,但是人內在的動力依然是學有所成的關鍵。” 引自吳軍老師的書。

enter image description here

消極學習和主動實踐差異是巨大的,明確目標,選好方向,非常,非常,非常重要!

5.5 開發路徑

演算法和應用是不分平臺的,但是不同的作業系統,編譯環境會有差異,例如,system("PAUSE") 只能在 Windows/DOS 成功編譯,而cin.ignore() 則適用於 Windows、Linux 和 MacOS。因此,要了解 Windows 上的 ROS 與 Linux 上的 ROS 之間的差異。針對專案要求或需求分析,基於開原始碼開發的應用,請閱讀每一行原始碼,否則出現 bug,茫然無措。

如果大家對 ROS 課程感興趣,歡迎多多留言討論,非常感謝。



Fin



 

相關文章