機器人操作系統(ROS)課件11ROS-2簡介_第1頁
機器人操作系統(ROS)課件11ROS-2簡介_第2頁
機器人操作系統(ROS)課件11ROS-2簡介_第3頁
機器人操作系統(ROS)課件11ROS-2簡介_第4頁
機器人操作系統(ROS)課件11ROS-2簡介_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

機器人操作系統(ROS)機器人操作系統(ROS)ROS-2簡介11機器人操作系統(ROS)11.ROS-2簡介在過去的十多年時間里,ROS-1已經發展壯大,其擁有龐大的功能包列表,通過幾個小規模的功能包,用戶就可以創建一個全新的復雜系統。然而,ROS-1仍然存在以下幾個問題,雖然很多開發者對其中一些問題提出了針對性的解決方案,但仍然無法解決ROS-1中的根本問題。1)多機器人系統。多機器人系統是機器人領域研究的一個重點問題,可以解決單機器人性能不足、無法應用等問題,但是ROS-1中并沒有構建多機器人系統的標準方法。2)跨平臺。ROS-1基于Linux系統,在Windows、macOS、RTOS等系統上無法應用或者功能有限,這對機器人開發者和開發工具提出了較高要求,也有很大的局限性。3)實時性。很多應用場景下的機器人對實時性要求較高,尤其是工業領域,系統需要做到硬實時的性能指標,但是ROS-1缺少實時性方面的設計,所以在很多應用中捉襟見肘。4)網絡連接。ROS-1的分布式機制需要良好的網絡環境才能保證數據的完整性,而且網絡不具備數據加密、安全防護等功能,網絡中的任意主機都可以獲得節點發布或接收的消息數據。5)產品化。ROS-1的穩定性欠佳,ROSMaster、節點等重要環節在很多情況下會莫名宕機,這就導致很多機器人從研究開發到消費產品的過渡非常艱難。ROS-2的開發主要就是解決上述情形中遇到的問題。機器人操作系統(ROS)11.1ROS-2概述相比ROS-1,ROS-2的設計目標更加豐富,旨在改進可用于實時系統和產品階段解決方案的通信網絡架構。ROS-2的主要設計目標是:1)支持多機器人系統2)實時通信能力3)直接在硬件層面上提供ROS層4)軟件版本更新(主要是客戶端庫)ROS-2簡化了發布-訂閱的基礎結構,并使其在不同的硬件和軟件組件之間更加可靠,以確保用戶可以更專注與功能和生態系統。經過幾年的alpha和beta版本的發布,ROS-2于2017年12月推出第一個發行版——ArdentApalone。截至本書稿撰寫期間,最新的ROS-2版本是GalacticGeochelone,于2021年5月23日發布.具體的ROS-2發行版如表11-1所示。機器人操作系統(ROS)11.1ROS-2概述機器人操作系統(ROS)11.2ROS-2基礎ROS-2重新設計了系統架構,可以從圖11-1中看到兩代ROS之間架構的變化。在ROS-1中,用戶代碼將連接到ROS客戶端庫(如rospy和roscpp),它們直接與網絡中的其他節點通信;而在ROS-2中,ROS客戶端就像一個抽象層,使用其他節點通過DDS實現連接到網絡中進行通信的另一層。在ROS-2中,操作系統層與底層硬件層的通信是通過DDS實現完成的。圖中的DDS組件有供應商實現,供應商不同則具體實現不同。抽象DDS層與ROS-2客戶端庫連接,并通過DDS實現幫助用戶連接代碼。通過這樣的分層抽象,用戶無須感知DDSAPI的存在就可以與操作系統連接。機器人操作系統(ROS)11.2.1DDSDDS(DataDistributionService,數據分發服務),2004年由對象管理組織(ObjectManagementGroup,OMG)發布,是一種專門為實時系統設計的數據分發/訂閱標準。DDS最早應用于美國海軍,用于解決艦船復雜網絡環境中大量軟件升級的兼容性問題,目前已經成為美國國防部的強制標準,同時廣泛應用于國防、民航、工業控制等領域,成為分布式實時系統中數據發布/訂閱的標準解決方案。其技術關鍵是以數據為核心的發布/訂閱(Data-CentricPublish-Subscribe,DCPS)模型,可以幫助兩個或多個DDS程序在不使用master的情況下相互通訊。這種DCPS模型創建了一個“全局數據空間”(GlobalDataSpace)的概念,所有獨立的應用都可以訪問。機器人操作系統(ROS)11.2.2計算圖ROS-2遵循與ROS-1相同的計算圖概念,但有一些變化:節點:在ROS-2中,節點被稱為參與者。除了可以像ROS-1一樣在計算圖中定義節點之外,在ROS-2中一個進程還可以初始化多個節點,它們可能位于同一進程、不同進程或不同機器中。發現(discovery):ROS-1中有一個master的概念可以幫助節點互相進行通信,而ROS-2中則沒有master的概念,而是通過一種稱為“發現”的機制實現通信。在默認情況下,ROS-2中的DDS標準實現提供了一種分布式發現方法,節點能夠在網絡中自動發現彼此。此機制有助于實現不同類型的多個機器人之間的可靠通信。除此之外,我們在前面章節中看到的其他概念,如消息、話題、參數服務器、服務和數據包,對于ROS-2來說都是一樣的。機器人操作系統(ROS)11.2.3社區層級與ROS-1成熟活躍的社區氛圍不同,ROS-2社區目前還在發展之中。一些研究機構和企業都做出了很好的貢獻。由于ROS-2在2014年才開始開發,因此關于ROS-2的研究和工具還有很多需要關注的問題,這是因為通過開源社區實現實時系統需要克服巨大的困難。OSRF與提供DDS實現并為社區做出貢獻的供應商進行了很好的溝通。目前ROS-1在其倉庫中有2000多個功能包,而ROS-2還只有100多個。最新的ROS-2頁面的網址為/doc/ros2/。機器人操作系統(ROS)11.3ROS-2中的通信前面我們所學習的是ROS-1通信模型,也就是話題、服務等通信機制。ROS-2的通信模型會稍顯復雜,加入了很多DDS的通信機制,如圖11-2所示。基于DDS的ROS-2通信模型包含以下幾個關鍵概念。參與者(Participant)在DDS中,每一個發布者或者訂閱者都稱為參與者,對應于一個使用DDS的用戶,可以使用某種定義好的數據類型來讀/寫全局數據空間。發布者(Publisher)數據發布的執行者,支持多種數據類型的發布,可以與多個數據寫入器(DataWriter)相連,發布一種或多種話題(Topic)的消息。訂閱者(Subscriber)數據訂閱的執行者,支持多種數據類型的訂閱,可以與多個數據讀取器(DataReader)相連,訂閱一種或多種話題(Topic)的消息。數據寫入器(DataWriter)上層應用向發布者更新數據的對象,每個數據寫入器對應一個特定的話題(Topic),類似于ROS-1中的一個消息發布者。數據讀取器(DataReader)上層應用從訂閱者讀取數據的對象,每個數據讀取器對應一個特定的話題(Topic),類似于ROS-1中的一個消息訂閱者。話題(Topic)與ROS-1中的概念類似,話題需要定義一個名稱和一種數據結構,但ROS2中的每個話題都是一個實例,可以存儲該話題中的歷史消息數據。質量服務原則(QualityofServicePolicy)質量服務原則簡稱QoSPolicy,這是ROS-2中新增的、也是非常重要的一個概念,控制各方面與底層的通信機制,主要從時間限制、可靠性、持續性、歷史記錄這幾個方面滿足用戶針對不同場景的數據需求。機器人操作系統(ROS)11.3ROS-2中的通信基于DDS的ROS-2通信模型包含以下幾個關鍵概念。參與者(Participant)在DDS中,每一個發布者或者訂閱者都稱為參與者,對應于一個使用DDS的用戶,可以使用某種定義好的數據類型來讀/寫全局數據空間。發布者(Publisher)數據發布的執行者,支持多種數據類型的發布,可以與多個數據寫入器(DataWriter)相連,發布一種或多種話題(Topic)的消息。訂閱者(Subscriber)數據訂閱的執行者,支持多種數據類型的訂閱,可以與多個數據讀取器(DataReader)相連,訂閱一種或多種話題(Topic)的消息。數據寫入器(DataWriter)上層應用向發布者更新數據的對象,每個數據寫入器對應一個特定的話題(Topic),類似于ROS-1中的一個消息發布者。數據讀取器(DataReader)上層應用從訂閱者讀取數據的對象,每個數據讀取器對應一個特定的話題(Topic),類似于ROS-1中的一個消息訂閱者。話題(Topic)與ROS-1中的概念類似,話題需要定義一個名稱和一種數據結構,但ROS2中的每個話題都是一個實例,可以存儲該話題中的歷史消息數據。質量服務原則(QualityofServicePolicy)質量服務原則簡稱QoSPolicy,這是ROS-2中新增的、也是非常重要的一個概念,控制各方面與底層的通信機制,主要從時間限制、可靠性、持續性、歷史記錄這幾個方面滿足用戶針對不同場景的數據需求。機器人操作系統(ROS)11.4安裝ROS-21.添加軟件源$sudoaptupdate&&sudoaptinstallcurl

$curl/repos.key|sudoapt-keyadd–

$sudosh-c'echo"deb[arch=amd64,arm64]/ubuntu/mainxenialmain">/etc/apt/sources.list.d/ros2-latest.list'2.安裝ROS-2$sudoapt-getupdate

$sudoaptinstall`aptlistros-ardent-*2>/dev/null|grep"/"|awk-F/'{print$1}'|grep-v-eros-ardent-ros1-bridge-eros-ardent-turtlebot2-|tr"\n"""`3.設置環境變量$source/opt/ros/ardent/setup.bash如果安裝了Python包——argcomplete,還需要設置以下環境變量:$source/opt/ros/ardent/share/ros2cli/environment/ros2-argcomplete.bash4.配置ROSMiddleware(RMW)DDS是ROS-2中的重要部分,ROS-2默認使用的RMW是FastRPTS,我們也可以通過以下環境變量將默認的RMW修改為OpenSplice:RMW_IMPLEMENTATION=rmw_opensplice_cpp5.安裝依賴ROS1的功能包ROS2在很長一段時間內會與ROS1并存,所以目前很多ROS2中的功能包需要依賴ROS1中的功能包,ROS2也提供了與ROS1之間通信的橋梁——ros1_bridge。在安裝這些與ROS1有依賴關系的功能包之前,需要系統已經成功安裝有ROS1,然后才能通過以下命令安裝ROS2的功能包:$sudoaptupdate

$sudoaptinstallros-ardent-ros1-bridgeros-ardent-turtlebot2-*按照以上方法安裝完成后,就可以使用ROS2的命令了。ROS2的默認安裝路徑依然是在Ubuntu系統的/opt/ros路徑下。機器人操作系統(ROS)11.5本章小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論