技術專欄 當前位置:首頁 > 資訊中心 > 技術專欄
ROS機器人軟件開發平臺的前世今生
發布時間:2018-09-30瀏覽次數:11130字號:小中大
近年來,機器人領域取得了舉世矚目的進展。性價比較高的機器人平臺,包括地面移動機器人、旋翼無人機和類人機器人等,
得到了廣泛應用。更令人感到振奮的是,越來越多的高級智能算法讓機器人的自主等級逐步提高。盡管如此,對于機器人軟
件開發人員來說,仍然存在著諸多挑戰。
ROS, 即機器人操作系統 (Robot Operating System, 或簡稱 ROS),它可以幫助提高機器人軟件的開發效率。ROS 系統
的官方定義如下: ROS是面向機器人的開源的元操作系統(meta-operating system) 。它能夠提供類似傳統操作系統的諸
多功能, 如硬件抽象、底層設備控制、常用功能實現、進程間消息傳遞和程序包管理等。此外,它還提供相關工具和庫,
用于獲取、編譯、編輯代碼以及在多個計算機之間運行程序完成分布式計算。
ROS的前身是斯坦福人工智能實驗室在2000年為了支持斯坦福智能機器人STAIR而建立的交換庭(switchyard)項目。
到了2008年,ROS主要由柳樹車庫公司繼續該項目的研發運維. 目前ROS的最新穩定版本是LUNAR.
ROS提供一些標準操作系統服務,例如硬件抽象,底層設備控制,常用功能實現,進程間消息以及數據包管理。ROS是基
于一種圖狀架構,從而不同節點的進程能接受,發布,聚合各種信息(例如傳感,控制,狀態,規劃等等)。目前ROS主
要支持Ubuntu, 這是一種最常見的LINUX操作系統.
很顯然, ROS雖然翻譯成機器人操作系統, 但是它并不是我們日常理解的操作系統(OS), 是在LINUX操作系統上開發的專門
服務于機器人各功能包之間的通信協調的一種規范和功能包集合.
ROS作為一個強大的機器人軟件開發系統, 它的強大之處在于:
第一: 分布式計算
現代機器人系統往往需要多個計算機同時運行多個進程,例如:
1)一些機器人搭載多臺計算機,每臺計算機用于控制機器人的部分驅動器或傳感器;
2)即使只有一臺計算機,通常仍將程序劃分為獨立運行且相互協作的小的模塊來完成復雜的控制任務,這也是常見的做法;
3)當多個機器人需要協同完成一個任務時,往往需要互相通信來支撐任務的完成;
4)用戶通常通過臺式機、筆記本或者移動設備發送指令控制機器人,這種人機交互接口可以認為是機器人軟件的一部分。
第二: 軟件復用
隨著機器人研究的快速推進,誕生了一批應對導航、路徑規劃、建圖等通用任務的算法。當然,任何一個算法實用的前
提是其能夠應用于新的領域,且不必重復實現。事實上,如何將現有算法快速移植到不同系統一直是一個挑戰,ROS 通過以
下兩種方法解決這個問題。
1)ROS 標準包(Standard Packages)提供穩定、可調式的各類重要機器人算法實現。
2)ROS通信接口正在成為機器人軟件互操作的 事實標準 ,也就是說絕大部分最新的硬件驅動和最前沿的算法實現都可以
在ROS中找到。例如,在ROS的官方網頁上有著大量的開源軟件庫,這些軟件使用ROS通用接口,從而避免為了集成它們而
重新開發新的接口程序。
第三: 快速測試
為機器人開發軟件比其他軟件開發更具挑戰性,主要是因為調試準備時間長,且調試過程復雜。況且,因為硬件維修、
經費有限等因素,不一定隨時有機器人可供使用。ROS 提供兩種策略來解決上述問題。
1)精心設計的 ROS 系統框架將底層硬件控制模塊和頂層數據處理與決策模塊分離,從而可以使用模擬器替代底層硬件模塊,
獨立測試頂層部分,提高測試效率。
2)ROS 另外提供了一種簡單的方法可以在調試過程中記錄傳感器數據及其他類型的消息數據,并在試驗后按時間戳回放。
通過這種方式,每次運行機器人可以獲得更多的測試機會。例如,可以記錄傳感器的數據,并通過多次回放測試不同的數據處
理算法。在 ROS 術語中,這類記錄的數據叫作包(bag), 一個被稱為 rosbag 的工具可以用于記錄和回放包數據.