《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

對於電腦和智慧型手機來說,即使產品型號不同也能使用同款軟體。但機器人領域並不是這樣,因為各機器人或各廠家使用的OS、中間件以及編程語言都不同,並且一般不公開其規格。故此,近年來機器人用開源中間件「ROS」(機器人操作系統)備受關注,這是由美國Willow Garage公司開發、由Open Source Robotics Foundation(OSRF)維護和管理的中間件。現在日本一些機器人廠商也開始推出支持ROS的產品,比如川田工業、電裝WAVE及川崎重工業等。那麼你了解ROS嗎?下面這篇文章小編就帶你全面了解ROS!

一、歷史


隨著機器人領域的快速發展和複雜化,代碼的復用性和模塊化的需求原來越強烈,而已有的開源機器人系統又不能很好的適應需求。2010年Willow Garage公司發布了開源機器人操作系統ROS(robot operating system),很快在機器人研究領域展開了學習和使用ROS的熱潮。

隨著機器人領域的快速發展和複雜化,代碼的復用性和模塊化的需求原來越強烈,而已有的開源機器人系統又不能很好的適應需求。2010年Willow Garage公司發布了開源機器人操作系統ROS(robot operating system),很快在機器人研究領域展開了學習和使用ROS的熱潮。

ROS系統是起源於2007年史丹佛大學人工智能實驗室的項目與機器人技術公司Willow Garage的個人機器人項目(Personal Robots Program)之間的合作,2008年之後就由Willow Garage來進行推動。已經有四年多的時間了 (影片)。隨著PR2那些不可思議的表現,譬如疊衣服,插插座,做早飯,ROS也得到越來越多的關注。Willow Garage公司也表示希望借助開源的力量使PR2變成「全能」機器人。

PR2價格高昂,2011年零售價高達40萬美元。PR2現主要用於研究。PR2有兩條手臂,每條手臂七個關節,手臂末端是一個可以張合的鉗子。PR2依靠底部的四個輪子移動。在PR2的頭部,胸部,肘部,鉗子上安裝有高分辨率錄影頭,雷射測距儀,慣性測量單元,觸覺傳感器等豐富的傳感設備。在PR2的底部有兩台8核的電腦作為機器人各硬體的控制和通訊中樞。兩台電腦安裝有Ubuntu和ROS。

二、設計目標


ROS是開源的,是用於機器人的一種後操作系統,或者說次級操作系統。它提供類似操作系統所提供的功能,包含硬體抽象描述、底層驅動程序管理、共用功能的執行、程序間的消息傳遞、程序發行包管理,它也提供一些工具程序和庫用於獲取、建立、編寫和運行多機整合的程序。

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

ROS的首要設計目標是在機器人研發領域提高代碼復用率。ROS是一種分布式處理框架(又名Nodes)。這使可執行文件能被單獨設計,並且在運行時松散耦合。這些過程可以封裝到數據包(Packages)和堆棧(Stacks)中,以便於共享和分發。ROS還支持代碼庫的聯合系統。使得協作亦能被分發。這種從文件系統級別到社區一級的設計讓獨立地決定發展和實施工作成為可能。上述所有功能都能由ROS的基礎工具做到。

三、主要特點

ROS的運行架構是一種使用ROS通信模塊做到模塊間P2P的松耦合的網路連接的處理架構,它執行若干種類型的通訊,包括基於服務的同步RPC(遠程過程調用)通訊、基於Topic的異步數據流通訊,還有參數服務器上的數據存儲。但是ROS本身並沒有實時性。

ROS的主要特點可以歸納為以下幾條:

(1)點對點設計

一個使用ROS的系統包括一系列進程,這些進程存在於多個不同的主機並且在運行過程中通過端對端的拓撲結構進行聯繫。雖然基於中心服務器的那些軟體框架也可以做到多進程和多主機的優勢,但是在這些框架中,當各電腦通過不同的網路進行連接時,中心數據服務器就會發生問題。
《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

ROS的點對點設計以及服務和節點管理器等機制可以分散由計算機視覺和語音識別等功能帶來的實時計算壓力,能夠適應多機器人遇到的挑戰。

(2)多語言支持

在寫代碼的時候,許多編程者會比較偏向某一些編程語言。這些偏好是個人在每種語言的編程時間、調試效果、語法、執行效率以及各種技術和文化的原因導致的結果。為了解決這些問題,我們將ROS設計成了語言中立性的框架結構。ROS現在支持許多種不同的語言,例如C++、Python、Octave和LISP,也包含其他語言的多種接口做到。
《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

ROS的特殊性主要體現在消息通訊層,而不是更深的層次。端對端的連接和配置利用XML-RPC機制進行做到,XML-RPC也包含了大多數主要語言的合理做到描述。我們希望ROS能夠利用各種語言做到的更加自然,更符合各種語言的語法約定,而不是基於C語言給各種其他語言提供做到接口。然而,在某些情況下利用已經存在的庫封裝後支持更多新的語言是很方便的,比如Octave的客戶端就是通過C++的封裝庫進行做到的。

為了支持交叉語言,ROS利用了簡單的、語言無關的接口定義語言去描述模塊之間的消息傳送。接口定義語言使用了簡短的文本去描述每條消息的結構,也允許消息的合成,例如下圖就是利用接口定義語言描述的一個點的消息:

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

每種語言的代碼產生器就會產生類似本種語言目標文件,在消息傳遞和接收的過程中通過ROS自動連續並行的做到。這就節省了重要的編程時間,也避免了錯誤:之前3行的接口定義文件自動的擴展成137行的C++代碼,96行的Python代碼,81行的Lisp代碼和99行的Octave代碼。因為消息是從各種簡單的文本文件中自動生成的,所以很容易列舉出新的消息類型。在編寫的時候,已知的基於ROS的代碼庫包含超過四百種消息類型,這些消息從傳感器傳送數據,使得物體檢測到了周圍的環境。

最後的結果就是一種語言無關的消息處理,讓多種語言可以自由的混合和匹配使用。

(3)精簡與集成

大多數已經存在的機器人軟體工程都包含了可以在工程外重復使用的驅動和算法,不幸的是,由於多方面的原因,大部分代碼的中間層都過於混亂,以至於很困難提取出它的功能,也很難把它們從原型中提取出來應用到其他方面。

為了應對這種趨勢,我們鼓勵將所有的驅動和算法逐漸發展成為和ROS沒有依賴性單獨的庫。ROS建立的系統具有模塊化的特點,各模塊中的代碼可以單獨編譯,而且編譯使用的CMake工具使它很容易的就做到精簡的理念。ROS基本將複雜的代碼封裝在庫裡,只是創建了一些小的應用程序為ROS顯示庫的功能,就允許了對簡單的代碼超越原型進行移植和重新使用。作為一種新加入的有優勢,單元測試當代碼在庫中分散後也變得非常的容易,一個單獨的測試程序可以測試庫中很多的特點。

ROS利用了很多現在已經存在的開源項目的代碼,比如說從Player項目中借鑒了驅動、運動控制和仿真方面的代碼,從OpenCV中借鑒了視覺算法方面的代碼,從OpenRAVE借鑒了規划算法的內容,還有很多其他的項目。在每一個實例中,ROS都用來顯示多種多樣的配置選項以及和各軟體之間進行數據通信,也同時對它們進行微小的包裝和改動。ROS可以不斷的從社區維護中進行升級,包括從其他的軟體庫、應用補丁中升級ROS的源代碼。

(4)工具包豐富

為了管理複雜的ROS軟體框架,我們利用了大量的小工具去編譯和運行多種多樣的ROS組建,從而設計成了內核,而不是構建一個龐大的開發和運行環境。

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

這些工具擔任了各種各樣的任務,例如,組織源代碼的結構,獲取和設置配置參數,形象化端對端的拓撲連接,測量頻帶使用寬度,生動的描繪信息數據,自動生成文檔等等。盡管我們已經測試通過像全局時鐘和控制器模塊的記錄器的核心服務,但是我們還是希望能把所有的代碼模塊化。我們相信在效率上的損失遠遠是穩定性和管理的複雜性上無法彌補的。

(5)免費並且開源

ROS所有的源代碼都是公開發布的。我們相信這將必定促進ROS軟體各層次的調試,不斷的改正錯誤。雖然像Microsoft Robotics Studio和Webots這樣的非開源軟體也有很多值得讚美的屬性,但是我們認為一個開源的平台也是無可為替代的。當硬體和各層次的軟體同時設計和調試的時候這一點是尤其真實的。

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

ROS以分布式的關係遵循這BSD許可,也就是說允許各種商業和非商業的工程進行開發。ROS通過內部處理的通訊系統進行數據的傳遞,不要求各模塊在同樣的可執行功能上連接在一起。如此,利用ROS構建的系統可以很好的使用他們豐富的組件:個別的模塊可以包含被各種協議保護的軟體,這些協議從GPL到BSD,但是許可的一些「污染物」將在模塊的分解上就完全消滅掉。


欲了解更多,推薦閱讀《ROS機器人程序設計》

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍
無論是業餘愛好者還是專業的機器人開發人員,在開始進行機器人系統及程序設計時,首先要面對的問題都是最基本的驅動機器人的輪子的設計。ROS通過軟體代碼復用集成了眾多已經開發完成的功能組件。而本書就是專門幫助讀者從對ROS一無所知到能夠通過ROS系統完成小型機器人系統的開發和編程工作的。 本書提供了各種實際的示例代碼供讀者學習和理解ROS的軟體框架。你可以在仿真環境中自行構建機器人相應的功能程序,並在ROS社區中分享你的學習心得和知識。


點擊「閱讀原文」直接進入《ROS機器人程序設計》圖書頁面!

長按二維碼進入金粉商城,搜尋關鍵詞「機器人」選購圖書!

《ROS機器人程序設計》,學習開源機器人操作系統ROS必備書籍

點擊「閱讀原文」↙↙

閱讀原文


關於作者:
「金屬加工」由創刊於1950年的《金屬加工》雜誌(包括冷加工和熱加工兩個半月刊)和金屬加工在線(mw1950.com)共同經營,匯聚新聞、技術、產品、市場等內容,紙媒、網媒、活動與服務四位一體,是該領域一流的信息服務平台和推廣服務平台。

微信號:mw1950pub

推薦閱讀:

》生不出男孩被婆家逼走,獨自養兩個女兒流落街頭,如今她是身價60億的水餃皇后!

》她是中國史上最強女海盜,讓多少洋人感受過被她支配的恐懼!