![機器人操作系統(tǒng)(ROS)課件3.ROS的概述_第1頁](http://file4.renrendoc.com/view9/M03/2D/00/wKhkGWdf5deATKFEAABsO5d7qiE196.jpg)
![機器人操作系統(tǒng)(ROS)課件3.ROS的概述_第2頁](http://file4.renrendoc.com/view9/M03/2D/00/wKhkGWdf5deATKFEAABsO5d7qiE1962.jpg)
![機器人操作系統(tǒng)(ROS)課件3.ROS的概述_第3頁](http://file4.renrendoc.com/view9/M03/2D/00/wKhkGWdf5deATKFEAABsO5d7qiE1963.jpg)
![機器人操作系統(tǒng)(ROS)課件3.ROS的概述_第4頁](http://file4.renrendoc.com/view9/M03/2D/00/wKhkGWdf5deATKFEAABsO5d7qiE1964.jpg)
![機器人操作系統(tǒng)(ROS)課件3.ROS的概述_第5頁](http://file4.renrendoc.com/view9/M03/2D/00/wKhkGWdf5deATKFEAABsO5d7qiE1965.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
機器人操作系統(tǒng)(ROS)機器人操作系統(tǒng)(ROS)ROS概述3機器人操作系統(tǒng)(ROS)3.ROS的概述在這一章,我們將深入探討ROS的架構和一些重要概念。ROS是兩個程序或者進程間通信的框架,是一個優(yōu)秀的機器人分布式框架。ROS系統(tǒng)的架構主要被設計和劃分為三部分,每一部分代表一個層級的概念: 文件系統(tǒng)級(Thefilesystemlevel)
計算圖級(Thecomputationgraphlevel)
開源社區(qū)級(Thecommunitylevel)機器人操作系統(tǒng)(ROS)3.1ROS文件系統(tǒng)級如果你是剛剛接手ROS方面的開發(fā)或項目,你肯定會覺得ROS中的各種概念非常奇怪,但是當你對ROS的使用熟練之后,你就覺得這些概念很好理解了。與其他操作系統(tǒng)相似,一個ROS程序的不同組件要被放在不同的文件夾下,這些文件夾是根據(jù)不同的功能來對文件進行組織的,如圖3-1所示:機器人操作系統(tǒng)(ROS)3.1ROS文件系統(tǒng)級功能包(Package):功能包是ROS中軟件組織的基本形式。它可以包含ROS運行的進程(節(jié)點)、配置文件等。功能包清單(PackageManifest):功能包清單提供關于功能包、許可信息、依賴關系、編譯標志等的信息。一個包的清單一個名為package.xml的文件管理。元功能包(Metapackage):將幾個具有某些功能的功能包組織在一起,就獲得了一個元功能包。例如一個ROS導航的元功能包中會包含建模、定位、導航等功能包。消息類型(Message):消息是一個節(jié)點發(fā)送到其他節(jié)點的信息。ROS系統(tǒng)有很多的標準消息類型。消息類型的說明存儲在對應功能包的msg文件夾下。服務類型(Service):服務描述說明存儲在對應功能包的src文件夾下,定義了在ROS中由每個進程提供的關于服務請求和響應的數(shù)據(jù)結構。機器人操作系統(tǒng)(ROS)3.1.1工作空間工作空間就是一個包含功能包、可編輯源文件或編譯包的文件夾。當想同時編譯不同的功能包時非常有用,并且可以用來保存本地開發(fā)包,一般包含src、bulid和devel這三個文件夾。開發(fā)過程中只需要更改src文件夾里的文件,build和devel無需手動創(chuàng)建,編譯功能包時會自動生成。源文件空間(src文件夾):在源文件空間放置了功能包等。編譯空間(build文件夾):build文件夾存放CMake和catkin的緩存信息、配置和其他中間文件。開發(fā)空間(devel文件夾):devel文件夾用來保存編譯后的程序。典型的ROS程序包結構機器人操作系統(tǒng)(ROS)3.1.2功能包功能包是ROS中軟件組織的基本形式,一個功能包具有用于創(chuàng)建ROS程序的最小結構和最少內(nèi)容,它可以包含ROS運行的進程(節(jié)點)、配置文件等。一個功能包中主要包含這幾個文件:CMakeLists.txt功能包配置文件:用于這個功能包cmake編譯時的配置文件。package.xml功能包清單文件:用xml的標簽格式標記這個功能包的各類相關信息,比如包的名稱、依賴關系等。主要作用是為了更容易的安裝和分發(fā)功能包。include<package_name>功能包頭文件目錄:你可以把你的功能包程序包含的*.h頭文件放在這里,include下之所以還要加一級路徑<package_name>是為了更好的區(qū)分自己定義的頭文件和系統(tǒng)標準頭文件,<package_name>用實際功能包的名稱替代。不過這個文件夾不是必要項,比如有些程序沒有頭文件的情況。msg非標準消息定義目錄:消息是ROS中一個進程(節(jié)點)發(fā)送到其他進程(節(jié)點)的信息,消息類型是消息的數(shù)據(jù)結構,ROS系統(tǒng)提供了很多標準類型的消息可以直接使用,如果你要使用一些非標準類型的消息,就需要自己來定義該類型的消息,并把定義的文件放在這里。不過這個文件夾不是必要項,比如程序中只使用標準類型的消息的情況。機器人操作系統(tǒng)(ROS)3.1.2功能包srv服務類型定義目錄:服務是ROS中進程(節(jié)點)間的請求/響應通信過程,服務類型是服務請求/響應的數(shù)據(jù)結構,服務類型的定義放在這里。如果要調(diào)用此服務,你需要使用該功能包名稱和服務名稱。不過這個文件夾不是必要項,比如程序中不使用服務的情況。scripts可執(zhí)行腳本文件存放目錄:這里用于存放bash、Python或其他腳本的可執(zhí)行文件。不過這個文件夾不是必要項,比如程序中不使用可執(zhí)行腳本的情況。launch文件目錄:這里用于存放*.launch文件,*.launch文件用于啟動ROS功能包中的一個或多個節(jié)點,在含有多個節(jié)點啟動的大型項目中很有用。不過這個文件夾不是必要項,節(jié)點也可以不通過launch文件啟動。src功能包中節(jié)點源文件存放目錄:一個功能包中可以有多個進程(節(jié)點)程序來完成不同的功能,每個進程(節(jié)點)程序都是可以單獨運行的,這里用于存放這些進程(節(jié)點)程序的源文件,你可以在這里再創(chuàng)建文件夾和文件來按你的需求組織源文件,源文件可以用c++、Python等來書寫。機器人操作系統(tǒng)(ROS)3.1.2功能包為了創(chuàng)建、修改、使用功能包,ROS給我們提供了一些實用的工具,常用的有下面這些工具。rospack:用于獲取信息或在系統(tǒng)中查找工作空間。catkin_create_pkg:用于在工作空間的src源空間下創(chuàng)建一個新的功能包。catkin_make:用于編譯工作空間中的功能包。rosdep:用于安裝功能包的系統(tǒng)依賴項。rqt_dep:用于查看功能包的依賴關系圖。關于這些工具命令的具體使用方法,會在后面的章節(jié)中結合實例進行具體的講解。這里只是先介紹給大家,讓大家有個概念上的了解,感興趣的朋友也可以自己上網(wǎng)了解這些命令的具體用法。機器人操作系統(tǒng)(ROS)3.1.3元功能包MetaPackage是Linux的一個文件管理系統(tǒng)的概念。是ROS中的一個虛包,里面沒有實質(zhì)性的內(nèi)容,但是它依賴了其他的軟件包,通過這種方法可以把其他包組合起來,構成一個邏輯上獨立的功能包,類似功能包集合的概念。元功能包與功能包的package.xml有些許不同,需包含引用標簽:<export><metapackage/></export>此外,元功能包還不需要<build_depend>標簽聲明編譯過程依賴的其他功能包,只需要使用<run_depend>標簽聲明功能包運行時依賴的其他功能包。機器人操作系統(tǒng)(ROS)3.2計算圖級ROS會創(chuàng)建一個連接到所有進程的網(wǎng)絡。在系統(tǒng)中的任何節(jié)點都可以訪問此網(wǎng)絡,并通過該網(wǎng)絡與其他節(jié)點交互,獲取其他節(jié)點發(fā)布的信息,并且將自身數(shù)據(jù)發(fā)布到網(wǎng)絡上。以下是一些與ROS計算圖級有關的術語:ROS節(jié)點(node):使用ROSAPI進行運算的進程。ROS節(jié)點管理器(master):連接ROS節(jié)點的媒介程序。ROS參數(shù)服務器(parameterserver):通常與ROSMaster一起運行的一個程序。使用者可以在此服務器上存儲不同的參數(shù),所有的節(jié)點都可以訪問它,但使用者也可以設置參數(shù)的保密性。如果某個參數(shù)是公共的,那么所有節(jié)點都可以訪問,但如果某個參數(shù)具有私有屬性,那么只有特定的節(jié)點才可以訪問這個參數(shù)。機器人操作系統(tǒng)(ROS)3.2計算圖級ROS話題(topics):ROS節(jié)點可以通過話題發(fā)送或接收信息。一個節(jié)點可以發(fā)布或者接收任意數(shù)量的話題。ROS消息(message):消息基本上都是通過話題傳送。ROS含有許多內(nèi)建的消息類型,當然使用者也可以定義他們自己的消息類型。ROS服務(service):比起ROS的話題(Topics),ROS服務(Service)則有著請求/應答的機制。服務是一種根據(jù)客戶節(jié)點的請求進行服務響應的功能。能夠處理服務請求的節(jié)點被稱為服務節(jié)點,而請求服務的節(jié)點被稱為客戶節(jié)點。ROS數(shù)據(jù)記錄包(bags):一種可用于保存和查看ROS話題歷史記錄的有效方式,可用于在機器人中記錄數(shù)據(jù)以便離線處理。計算圖級機器人操作系統(tǒng)(ROS)3.2.1節(jié)點節(jié)點是主要的計算執(zhí)行進程。系統(tǒng)包含能夠?qū)崿F(xiàn)不同功能的多個節(jié)點。你最好讓眾多節(jié)點都具有單一的功能而不是在系統(tǒng)中創(chuàng)建一個包羅萬象的大節(jié)點。節(jié)點需要使用如roscpp或rospy的ROS客戶端庫進行編寫。ROS有另一種類型的節(jié)點,動態(tài)加載接節(jié)點nodelet。nodelet可以在單個進程中運行多個,其中每個nodelet為一個線程(輕量級進程)。nodelet可以減少ros節(jié)點之間的消息傳輸,將多個算法的nodelet跑到一個進程中,這樣就無需數(shù)據(jù)傳輸,這是因為進程內(nèi)部內(nèi)存是共享的,數(shù)據(jù)傳輸?shù)娜〉刂芳纯?,從而實現(xiàn)的零拷貝(zerocopy)。這樣節(jié)點通信效率更高。例如nodelet對于攝像頭和3D傳感器這類大數(shù)據(jù)傳輸量的設備特別有用。ROS提供了處理節(jié)點的工具,用于節(jié)點信息、狀態(tài)、可用性等的查詢操作,例如可以用下面的命令對正在運行的節(jié)點進行操作。rosnodeinfo<node_name>:用于輸出當前節(jié)點信息。rosnodekill<node_name>:用于殺死正在運行節(jié)點進程來結束節(jié)點的運行。rosnodelist:用于列出當前活動的節(jié)點。rosnodemachine<hostname>:用于列出指定計算機上運行的節(jié)點。rosnodeping<node_name>:用于測試節(jié)點間的網(wǎng)絡連通性。rosnodecleanup:用于將無法訪問節(jié)點的注冊信息清除。機器人操作系統(tǒng)(ROS)3.2.2消息節(jié)點通過消息(message)完成彼此的溝通。消息包含一個節(jié)點發(fā)送給其他節(jié)點的信息數(shù)據(jù)。關于消息類型的知識在前面已經(jīng)講述了,這里不再贅述。ROS提供了獲取消息相關信息的命令工具,以下列舉出一些常用的命令。rosmsgshow<message_type>:用于顯示一條消息的字段。rosmsglist:用于列出所有消息。rosmsgpackage<package_name>:用于列出功能包的所有消息。rosmsgpackages:用于列出所有具有該消息的功能包。rosmsgusers<message_type>:用于搜索使用該消息類型的代碼文件。rosmsgmd5<message_type>:用于顯示一條消息的MD5求和結果。機器人操作系統(tǒng)(ROS)3.2.3話題每個消息都必須發(fā)布到相應的話題(topic),通過話題來實現(xiàn)在ROS計算圖網(wǎng)絡中的路由轉(zhuǎn)發(fā)。當一個節(jié)點發(fā)送數(shù)據(jù)時,我們就說該節(jié)點正在向話題發(fā)布消息;節(jié)點可以通過訂閱某個話題,接收來自其他節(jié)點的消息。通過話題進行消息路由不需要節(jié)點之間直接連接,這就意味著發(fā)布者節(jié)點和訂閱者節(jié)點之間不需要知道彼此是否存在,這樣就保證了發(fā)布者節(jié)點與訂閱者節(jié)點之間的解耦合。同一個話題可以有多個訂閱者也可以有多個發(fā)布者,不過要注意必須使用不同的節(jié)點發(fā)布同一個話題。每個話題都是強類型的,不管是發(fā)布消息到話題還是從話題中訂閱消息,發(fā)布者和訂閱者定義的消息類型必須與話題的消息類型相匹配。ROS提供了操作話題的命令工具,以下列舉出一些常用的命令。rostopicbw</topic_name>:用于顯示話題所使用的帶寬。rostopicecho</topic_name>:用于將話題中的消息數(shù)據(jù)輸出到屏幕。rostopicfind<message_type>:用于按照消息類型查找話題。rostopichz</topic_name>:用于顯示話題的發(fā)布頻率。rostopicinfo</topic_name>:用于輸出活動話題、發(fā)布的話題、話題訂閱者和服務的信息。rostopiclist:用于列出當前活動話題的列表。rostopicpub</topic_name><message_type><args>:用于通過命令行將數(shù)據(jù)發(fā)布到話題。rostopictype</topic_name>:用于輸出話題中發(fā)布的消息類型。機器人操作系統(tǒng)(ROS)3.2.4服務在一些特殊的場合,節(jié)點間需要點對點的高效率通信并及時獲取應答,這個時候就需要用服務的方式進行交互。提供服務的節(jié)點叫服務端,向服務端發(fā)起請求并等待響應的節(jié)點叫客戶端,客戶端發(fā)起一次請求并得到服務端的一次響應,這樣就完成了一次服務通信過程。服務通信過程中服務的數(shù)據(jù)類型需要用戶自己定義,與消息不同,節(jié)點并不提供標準服務類型。服務類型的定義文件都是以*.srv為擴展名,并且被放在功能包的srv/文件夾下。ROS提供了操作服務的命令工具,以下列舉出一些常用的命令。rosservicecall</service_name><args>:用于通過命令行參數(shù)調(diào)用服務。rosservicefind<service_type>:用于根據(jù)服務類型查詢服務。rosserviceinfo</service_name>:用于輸出服務信息。rosservicelist:用于列出活動服務清單。rosservicetype</service_name>:用于輸出服務類型。rosserviceuri</service_name>:用于輸出服務的ROSRPCURI。機器人操作系統(tǒng)(ROS)3.2.5節(jié)點管理器節(jié)點管理器(master)用于節(jié)點的名稱注冊和查找等,也負責設置節(jié)點間的通信。如果在你的整個ROS系統(tǒng)中沒有節(jié)點管理器,就不會有節(jié)點、消息、服務之間的通信。由于ROS本身就是一個分布式的網(wǎng)絡系統(tǒng),所以你可以在某臺計算機上運行節(jié)點管理器,在這臺計算機和其他臺計算機上運行節(jié)點。ROS中提供了跟節(jié)點管理器相關的命令行工具,就是roscore。roscore:用于啟動節(jié)點管理器,這個命令會加載ROS節(jié)點管理器和其他ROS核心組件。機器人操作系統(tǒng)(ROS)3.2.6參數(shù)服務器參數(shù)服務器(parameterserver)能夠使數(shù)據(jù)通過關鍵詞存儲在一個系統(tǒng)的核心位置。通過使用參數(shù),就能夠在節(jié)點運行時動態(tài)配置節(jié)點或改變節(jié)點的工作任務。參數(shù)服務器是可通過網(wǎng)絡訪問的共享的多變量字典,節(jié)點使用此服務器來存儲和檢索運行時的參數(shù)。ROS中關于參數(shù)服務器的命令行工具,以下列舉出一些常用的命令。rosparamlist:用于列出參數(shù)服務器中的所有參數(shù)。rosparamget<parameter_name>:用于獲取參數(shù)服務器中的參數(shù)值。rosparamset<parameter_name><value>:用于設置參數(shù)服務器中參數(shù)的值。rosparamdelete<parameter_name>:用于將參數(shù)從參數(shù)服務器中刪除。rosparamdump<file>:用于將參數(shù)服務器的參數(shù)保存到一個文件。rosparamload<file>:用于從文件將參數(shù)加載到參數(shù)服務器。機器人操作系統(tǒng)(ROS)3.2.7消息記錄包消息記錄包(bag)是一種用于保存和回放ROS消息數(shù)據(jù)的文件格式。消息記錄包是一種用于存儲數(shù)據(jù)的重要機制,它可以幫助記錄一些難以收集的傳感器數(shù)據(jù),然后通過反復回放數(shù)據(jù)進行算法的性能開發(fā)和測試。ROS創(chuàng)建的消息記錄包文件以*.bag為擴展名,通過播放、停止、后退操作該文件,可以像實時會話一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 條形碼、電子標簽等物聯(lián)網(wǎng)技術在文檔管理中的應用
- 2025年福建省職教高考《職測》核心考點必刷必練試題庫(含答案)
- 2025年楊凌職業(yè)技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 中國銀行個人借款合同
- 正規(guī)的借款合同范本
- 航空運輸人才培養(yǎng)與行業(yè)發(fā)展
- 事業(yè)單位的試用期勞動合同范本
- 鋼筋單項勞務承包合同
- 臨設建設工程施工勞務分包合同
- 消防產(chǎn)品的買賣合同
- (二模)遵義市2025屆高三年級第二次適應性考試試卷 地理試卷(含答案)
- 二零二五隱名股東合作協(xié)議書及公司股權代持及回購協(xié)議
- IQC培訓課件教學課件
- 2025年計算機二級WPS考試題目
- 高管績效考核全案
- 2024年上海市中考英語試題和答案
- 教育部《中小學校園食品安全和膳食經(jīng)費管理工作指引》知識培訓
- 長沙醫(yī)學院《無機化學》2021-2022學年第一學期期末試卷
- eras婦科腫瘤圍手術期管理指南解讀
- 初一到初三英語單詞表2182個帶音標打印版
- 《人力資源管理》全套教學課件
評論
0/150
提交評論