(GitChat)沉迷機器人作業系統的一個理由和四種修仙祕籍
原文連結:https://gitbook.cn/books/5bbda85f90227d6992c167ed/index.html
捷徑常誤人,欲速則不達
The longest way round is the nearest way home.
圖 1:今天的 Atlas
我們會驚豔於圖 1 中機器人的敏捷身姿。
圖 2:5 年前的 Atlas
今天的 Atlas 身輕如燕,跑跳自如;5 年前的它依靠吊繩,步履蹣跚,這是不斷進化成長的必然結果。
循序漸進,厚積薄發,是學習 ROS 和機器人技術的必由之路。
機器人被譽為製造業皇冠上的明珠,歷經 500 年的不斷髮展(16 世紀西班牙自動祈禱的機械僧侶),目前已經全面進入“機器人+”時代,湧現出各種新奇智慧的黑科技,如機械狗、無人機、自動駕駛汽車以及各種服務機器人……在這些機器人的大腦之中,都用到一個共同的軟體工具,將視覺、聽覺、觸覺、四肢等連線協調,完成複雜多變的任務,它就是機器人作業系統(Robot Operating System,ROS)。同時,它也是近百所高校機器人方向的專業核心課程。
圖 3:ROS 維基訪問排名
自 2007 年 11 月由史丹佛大學提交,已經發展了 11 年,成為機器人領域使用最廣泛的軟體平臺,超過 450 萬行核心程式碼,支援天上飛、地上跑、水中游等各類機器人。然而使用 ROS 進行機器人軟體開發與設計並非易事,為什麼要學習研究 ROS,有哪些主流的方式路徑,這正是 Chat 的主題所在,當然也包括跨系統平臺對比和雙語資料彙總。內容綱要如下:
- 學習研究 ROS 的理由 Reasons for learning and studying ROS
- ROS 案例簡述 Brief description of ROS robot
- ROS 特色優勢 Characteristics and advantages of ROS
- ROS 與機器人理論 ROS and robotic theory
- 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 機器人連結,總有一款你喜歡的~
圖 4:支援 ROS 的機器人列表
這裡,以掃地機器人這類典型的服務機器人為例:
圖 5:掃地機器人案例示意
這裡案例,融合了機器人運動學原理到程式碼編寫實現,SLAM 理論到模擬應用,感測器和執行器訊息傳遞的方式,基於區域覆蓋的路徑規劃演算法等。用 ROS 學習並掌握這套理論,不僅形象便於理解,而且藉助開源社群的力量,只需一週就可以做出一個“不太聰明”的掃地機器人。通過模擬可以零成本的搭建各式各樣的環境用於演算法驗證。
圖 6:典型室內模擬環境與寓教於樂的實踐環節
ROS 的應用領域也非常廣泛,從物流小車,到無人駕駛;無論是小到可以進入千家萬戶的教育機器人,還是大到礦山機械星辰大海,都可以讓開發人員迅速上手,開發出期望的產品原型,並不斷更新改進完善。
嗯,這些行業大佬都非常看好 ROS 呢!
3. ROS 特色優勢
ROS 1 主要特點如圖 7 所示:
圖 7:ROS 的主要特點
ROS 2 在此基礎之上增強了資料分發服務(Data Distribution Service,DDS)和實時性(Real-time)等,如圖 8 所示:
圖 8:ROS 的發展改進
上面的 rqt_graph 圖中,有節點(可用 Python 或 C++ 實現),箭頭代表資料資訊流向,可以多臺計算機分別執行不同的程式,通過網路進行通訊,只需要在原有程式基礎上,依據 ROS 做少許修改即可,例如,語音識別控制機器人運動程式,就是通過程式碼移植實現的,非常方便。
4. ROS 與機器人理論
ROS 是快速實現機器人理論的一種途徑,可以通過模擬或實際機器人測試學習過的或者新開發的演算法。
圖 9:ROS 與機器人學的關係
ROS 是一座橋樑,將枯燥的理論變為鮮活的應用,使兩者有機結合,發生奇妙的變化。
例如,Google 開源的 SLAM 演算法 cartographer,通過 ROS,可應用於任何一款定製的機器人。
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.
5. ROS 主流學習與開發路徑
本節分為兩部分,5.1-5.4 講述四種修煉之路,5.5 簡單說一下開發的問題。
5.1 武林正宗
如果您是程式設計師老司機,那麼 ROS 和 GitHub 官網能夠找到您想要了解的幾乎全部資料,免費詳細的文件,唯一需要的就是您寶貴的時間。
5.2 另闢蹊徑
- 如果您是剛剛瞭解 ROS 的新手,這裡推薦一本 ROS 入門最佳書:ROS 機器人程式設計。下載中英文版本,並儘可能同步閱讀。
- 在完成後,推薦蘇黎世聯邦理工學院 ETH 的 ROS 課程,同樣推薦中英文同步學習,並完成課後習題。
- 再然後呢,恭喜您,已經完全入門 ROS 了,選擇自己感興趣的方向或專案需求深入研究就好。
5.3 雲端遨遊
三個線上學習 ROS 的課程:
- 中文慕課:機器人作業系統入門;
- 實驗樓:ROS 機器人作業系統的安裝、配置與初級教程;
- Construct:Learn to Develop for Robots with ROS。
掌握 ROS 技巧,變身機器人開發者
Master ROS Skills and Become a Robotics Developer
5.4 隨心所欲
如果您沒有目標,也可以報個 ROS 培訓班,聽大神吹吹牛,找本書隨便翻翻,或者在網上東看看西耍耍,然後,嗯,您什麼也學不會。“從古至今,雖然學習的手段有所改變,但是人內在的動力依然是學有所成的關鍵。” 引自吳軍老師的書。
消極學習和主動實踐差異是巨大的,明確目標,選好方向,非常,非常,非常重要!
5.5 開發路徑
演算法和應用是不分平臺的,但是不同的作業系統,編譯環境會有差異,例如,system("PAUSE")
只能在 Windows/DOS 成功編譯,而cin.ignore()
則適用於 Windows、Linux 和 MacOS。因此,要了解 Windows 上的 ROS 與 Linux 上的 ROS 之間的差異。針對專案要求或需求分析,基於開原始碼開發的應用,請閱讀每一行原始碼,否則出現 bug,茫然無措。
如果大家對 ROS 課程感興趣,歡迎多多留言討論,非常感謝。
Fin
相關文章
- 作業系統-1.1_2作業系統四個特徵作業系統特徵
- Linux作業系統受到開發者偏愛的5個理由!Linux作業系統
- 作業系統引導和虛擬機器作業系統虛擬機
- 一文讀懂自動駕駛中的機器人作業系統ROS自動駕駛機器人作業系統ROS
- 自制作業系統(一) 第一個作業系統作業系統
- 作業系統(一):作業系統概述作業系統
- 微機結構和作業系統作業系統
- 工業機器人領域機器視覺的四個顯著功能機器人視覺
- 企業整合CRM與ERP系統的5個理由
- 一個故事看懂計算機作業系統的進化史計算機作業系統
- 作業-安裝虛擬機器以及CentOS作業系統虛擬機CentOS作業系統
- ROS 2 Crystal Clemmys版機器人作業系統補充說明ROS機器人作業系統
- ROS 2 Crystal Clemmys版機器人作業系統安裝說明ROS機器人作業系統
- 實現ARM+ROS(機器人作業系統)之環境搭建!ROS機器人作業系統
- 實現ARM+ROS(機器人作業系統)之執行ROS!ROS機器人作業系統
- 還可以這樣實現ARM+ROS(機器人作業系統)ROS機器人作業系統
- 企業使用CRM系統的理由
- 【機器人】工業機器人典型控制系統及結構;中國工業機器人系統整合行業發展趨勢;工業機器人在PCB行業的應用機器人行業
- 常用的8個Linux伺服器作業系統!Linux伺服器作業系統
- 計算機作業系統|作業系統引論計算機作業系統
- Fuchsia 作業系統的四層結構作業系統
- 機器人作業系統ROS 1.0 和 2.0 發展規劃2018-2025(Open Robotics)譯機器人作業系統ROS
- Webots R2019和ROS使用筆記(機器人模擬軟體與作業系統)WebROS筆記機器人作業系統
- 這個國家棄用Windows作業系統?而我們的國產作業系統卻很少人用Windows作業系統
- ROS機器人作業系統資料與資訊(2018年11月)ROS機器人作業系統
- ROS機器人作業系統資料與資訊(2018年12月)ROS機器人作業系統
- 計算機的作業系統計算機作業系統
- 【工業機器人】工業機器人技術最新知識大全;工業機器人驅動與控制系統機器人
- 機器人4.0白皮書:雲-邊-端融合的機器人系統和架構機器人架構
- JS忍者祕籍中的定時器機制詳解JS定時器
- 為什麼推薦使用Ubuntu 18.04 LTS學習機器人作業系統ROS 1和2Ubuntu機器人作業系統ROS
- 【2018.04.19 ROS機器人作業系統】機器人控制:運動規劃、路徑規劃及軌跡規劃簡介之一ROS機器人作業系統
- 作業系統基礎第四講作業系統
- 一個紐西蘭人用了五年業餘時間開發了一個作業系統:Winix作業系統
- 【作業系統】磁碟的四種基本排程演算法(圖表說明)作業系統演算法
- 作業系統:計算機的生態系統作業系統計算機
- 部落格關於ROS機器人作業系統內容調整說明ROS機器人作業系統
- 為什麼銷售人員要使用CRM的四個理由?