版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ROS通信機制汽車計算機基礎一、課程導入機器人是一種高度復雜的系統(tǒng)性實現(xiàn),在機器人上可能集成各種傳感器(雷達、攝像頭、GPS...)以及運動控制實現(xiàn),為了解耦合,在ROS中每一個功能點都是一個單獨的進程,每一個進程都是獨立運行的。更確切的講,ROS是進程(也稱為Nodes)的分布式框架。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結一、課程導入不同的進程是如何通信的?也即不同進程間如何實現(xiàn)數據交換的??參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.1話題通信概念及應用場景(1)概念話題通信是ROS中使用頻率最高的一種通信模式,話題通信是以發(fā)布訂閱的方式實現(xiàn)不同節(jié)點之間數據交互的通信模式,也即:一個節(jié)點發(fā)布消息,另一個節(jié)點訂閱該消息。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.1話題通信概念及應用場景(2)話題通信應用場景話題通信用于不斷更新的、少邏輯處理的數據傳輸場景。應用場景極其廣泛,比如:機器人在執(zhí)行導航功能,使用的傳感器是激光雷達,機器人會采集激光雷達感知到的信息并計算,然后生成運動控制信息驅動機器人底盤運動。以激光雷達信息的采集處理為例,在ROS中有一個節(jié)點需要時時的發(fā)布當前雷達采集到的數據,導航模塊中也有節(jié)點會訂閱并解析雷達數據。再以運動消息的發(fā)布為例,導航模塊會根據傳感器采集的數據時時的計算出運動控制信息并發(fā)布給底盤,底盤也可以有一個節(jié)點訂閱運動信息并最終轉換成控制電機的脈沖信號。傳感器數據采集雷達攝像頭GPS參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.2話題通信模型話題通信實現(xiàn)模型是比較復雜的,該模型如下圖所示。該模型中涉及到三個角色:ROSMaster(管理者)、Talker(發(fā)布者)、Listener(訂閱者)。ROSMaster負責保管Talker和Listener注冊的信息,并匹配話題相同的Talker與Listener,幫助Talker與Listener建立連接,連接建立后,Talker可以發(fā)布消息,且發(fā)布的消息會被Listener訂閱。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.2話題通信模型整個流程由以下步驟實現(xiàn):注意事項:上述實現(xiàn)流程中,前五步使用的RPC協(xié)議,最后兩步使用的是TCP協(xié)議。Talker與Listener的啟動無先后順序要求Talker與Listener都可以有多個Talker與Listener連接建立后,不再需要ROSMaster。也即,即便關閉ROSMaster,Talker與Listern照常通信。Talker注冊Listener注冊ROSMaster實現(xiàn)信息匹配Listener向Talker發(fā)送請求Talker確認請求Listener與Talker建立連接Talker向Listener發(fā)送消息參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.3話題通信基本操作(C++)需求:編寫發(fā)布訂閱實現(xiàn),要求發(fā)布方以10HZ(每秒10次)的頻率發(fā)布文本消息,訂閱方訂閱消息并將消息內容打印輸出。分析:在模型實現(xiàn)中,ROSmaster不需要實現(xiàn),而連接的建立也已經被封裝了。流程:編寫發(fā)布方實現(xiàn)編寫訂閱方實現(xiàn)編輯配置文件編譯并執(zhí)行關鍵點發(fā)布方接受方數據(普通文本)參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.3話題通信基本操作(C++)(1)發(fā)布方參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.3話題通信基本操作(C++)(2)訂閱方參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.3話題通信基本操作(C++)(3)配置CMakeLists.txt參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.3話題通信基本操作(C++)(4)執(zhí)行啟動roscore啟動發(fā)布節(jié)點啟動訂閱節(jié)點參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg在ROS通信協(xié)議中,數據載體是一個較為重要組成部分,ROS中通過std_msgs封裝了一些原生的數據類型,比如:String、Int32、Int64、Char、Bool、Empty等。但是,這些數據一般只包含一個data字段,結構的單一意味著功能上的局限性,當傳輸一些復雜的數據,比如:激光雷達的信息...std_msgs由于描述性較差而顯得力不從心,這種場景下可以使用自定義的消息類型。msgs只是簡單的文本文件,每行具有字段類型和字段名稱,可以使用的字段類型有:字段類型int8,int16,int32,int64float32,float64
stringtime,durationothermsgfilesvariable-lengtharray[]andfixed-lengtharray[C]Header參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg需求:創(chuàng)建自定義消息,該消息包含人的信息,姓名、身高、年齡等。流程:按照固定格式創(chuàng)建msg文件編輯配置文件編譯生成可以被Python或C++調用的中間文件參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg(1)定義msg文件功能包下新建msg目錄,添加文件Person.msg。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg(2)編輯配置文件①package.xml中添加編譯依賴與執(zhí)行依賴。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg(2)編輯配置文件②CMakeLists.txt編輯msg相關配置。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg(2)編輯配置文件②CMakeLists.txt編輯msg相關配置。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.4通信自定義msg(3)編譯編譯后的中間文件查看:C++需要調用的中間文件(.../工作空間/devel/include/包名/xxx.h)參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.5話題通信自定義msg調用需求:編寫發(fā)布訂閱實現(xiàn),要求發(fā)布方以10HZ(每秒10次)的頻率發(fā)布文本消息,訂閱方訂閱消息并將消息內容打印輸出。分析:在模型實現(xiàn)中,ROSmaster不需要實現(xiàn),而連接的建立也已經被封裝了。流程:編寫發(fā)布方實現(xiàn)編寫訂閱方實現(xiàn)編輯配置文件編譯并執(zhí)行關鍵點發(fā)布方接受方數據(普通文本)參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.5話題通信自定義msg調用(1)vscode配置為了方便代碼提示以及避免誤拋異常,需要先配置vscode,將前面生成的head文件路徑配置進c_cpp_properties.json的includepath屬性:參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.5話題通信自定義msg調用(2)發(fā)布方參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.5話題通信自定義msg調用(3)訂閱方參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.5話題通信自定義msg調用(4)配置CMakeLists.txt需要添加add_dependencies用以設置所依賴的消息相關的中間文件。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結二、話題通信2.5話題通信自定義msg調用(5)執(zhí)行啟動roscore啟動發(fā)布節(jié)點啟動訂閱節(jié)點參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.1服務通信概念及應用場景(1)概念服務通信也是ROS中一種極其常用的通信模式,以請求響應的方式實現(xiàn)不同節(jié)點之間數據交互的通信模式,是一種應答機制。也即:一個節(jié)點A向另一個節(jié)點B發(fā)送請求,B接收處理請求并產生響應結果返回給A。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.1服務通信概念及應用場景(2)服務通信應用場景服務通信更適用于對時時性有要求、具有一定邏輯處理的應用場景。比如:機器人巡邏過程中,控制系統(tǒng)分析傳感器數據發(fā)現(xiàn)可疑物體或人...此時需要拍攝照片并留存。在上述場景中,就使用到了服務通信。一個節(jié)點需要向相機節(jié)點發(fā)送拍照請求,相機節(jié)點處理請求,并返回處理結果。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.2服務通信理論模型服務通信較之于話題通信更簡單些,理論模型如下圖所示,該模型中涉及到三個角色:ROSmaster(管理者)、Server(服務端)、Client(客戶端)。ROSMaster負責保管Server和Client注冊的信息,并匹配話題相同的Server與Client,幫助Server與Client建立連接,連接建立后,Client發(fā)送請求信息,Server返回響應信息。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.3服務通信自定義srv需求:服務通信中,客戶端提交兩個整數至服務端,服務端求和并響應結果到客戶端,請創(chuàng)建服務器與客戶端通信的數據載體。流程:srv文件內的可用數據類型與msg文件一致,且定義srv實現(xiàn)流程與自定義msg實現(xiàn)流程類似。按照固定格式創(chuàng)建msg文件編輯配置文件編譯生成可以被Python或C++調用的中間文件參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.3服務通信自定義srv(1)定義srv文件服務通信中,數據分成兩部分,請求與響應,在srv文件中請求和響應使用---分割,具體實現(xiàn)如下:功能包下新建srv目錄,添加xxx.srv文件,內容:參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.3服務通信自定義srv(2)編輯配置文件package.xml中添加編譯依賴與執(zhí)行依賴。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.3服務通信自定義srv(2)編輯配置文件CMakeLists.txt編輯srv相關配置。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.3服務通信自定義srv(2)編輯配置文件CMakeLists.txt編輯srv相關配置。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.3服務通信自定義srv(3)編譯編譯后的中間文件查看:C++需要調用的中間文件(.../工作空間/devel/include/包名/xxx.h)參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.4服務通信自定義srv調用需求:編寫服務通信,客戶端提交兩個整數至服務端,服務端求和并響應結果到客戶端。分析:在模型實現(xiàn)中,ROSmaster不需要實現(xiàn),而連接的建立也已經被封裝了。流程:關鍵點服務端客戶端數據編寫服務端實現(xiàn)編寫客戶端實現(xiàn)編輯配置文件編譯并執(zhí)行參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.4服務通信自定義srv調用(1)vscode配置參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.4服務通信自定義srv調用(2)服務端參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.4服務通信自定義srv調用(3)客戶端參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.4服務通信自定義srv調用(4)配置CMakeLists.txt參數服務器課程導入服務通信話題通信常用命令通信機制比較總結三、服務通信2.4服務通信自定義srv調用(5)執(zhí)行流程:需要先啟動服務:rosrun包名服務然后再調用客戶端:rosrun包名客戶端參數1參數2結果:會根據提交的數據響應相加后的結果。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結四、參數服務器4.1參數服務器的概念及應用場景(1)參數服務器的概念參數服務器是以共享的方式實現(xiàn)不同節(jié)點之間數據交互的通信模式。在ROS中主要用于實現(xiàn)不同節(jié)點之間的數據共享。參數服務器相當于是獨立于所有節(jié)點的一個公共容器,可以將數據存儲在該容器中,被不同的節(jié)點調用,當然不同的節(jié)點也可以往其中存儲數據。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結四、參數服務器4.1參數服務器的概念及應用場景(2)參數服務器應用場景關于參數服務器的典型應用場景如下:導航實現(xiàn)時,會進行路徑規(guī)劃,比如:全局路徑規(guī)劃,設計一個從出發(fā)點到目標點的大致路徑。本地路徑規(guī)劃,會根據當前路況生成時時的行進路徑上述場景中,全局路徑規(guī)劃和本地路徑規(guī)劃時,就會使用到參數服務器:路徑規(guī)劃時,需要參考小車的尺寸,我們可以將這些尺寸信息存儲到參數服務器,全局路徑規(guī)劃節(jié)點與本地路徑規(guī)劃節(jié)點都可以從參數服務器中調用這些參數參數服務器課程導入服務通信話題通信常用命令通信機制比較總結四、參數服務器4.2參數服務器理論模型參數服務器實現(xiàn)是最為簡單的,該模型如下圖所示。該模型中涉及到三個角色:ROSMaster(管理者)、Talker(參數設置者)、Listener(參數調用者)。ROSMaster作為一個公共容器保存參數,Talker可以向容器中設置參數,Listener可以獲取參數。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結四、參數服務器4.2參數服務器理論模型整個流程由以下步驟實現(xiàn):Talker設置參數Listener獲取參數ROSMaster向Listener發(fā)送參數值參數服務器課程導入服務通信話題通信常用命令通信機制比較總結四、參數服務器4.3參數操作需求:實現(xiàn)參數服務器參數的增刪改查操作。在C++中實現(xiàn)參數服務器數據的增刪改查,可以通過兩套API實現(xiàn):ros::NodeHandle、ros::param。例:參數服務器刪除參數。參數服務器課程導入服務通信話題通信常用命令通信機制比較總結五、常用命令5.1rosnode:操作節(jié)點rosnode是用于獲取節(jié)點信息的命令。命令說明rosnodeping測試到節(jié)點的連接狀態(tài)rosnodelist列出活動節(jié)點rosnodeinfo打印節(jié)點信息rosnodemachine列出指定設備上節(jié)點rosnodekill殺死某個節(jié)點rosnodecleanup清除不可連接的節(jié)點參數服務器課程導入服務通信話題通信常用命令通信機制比較總結五、常用命令5.2rostopic:操作話題rostopic包含rostopic命令行工具,用于顯示有關ROS主題的調試信息,包括發(fā)布者,訂閱者,發(fā)布頻率和ROS消息。它還包含一個實驗性Python庫,用于動態(tài)獲取有關主題的信息并與之交互。命令說明rostopicbw顯示主題使用的帶寬rostopicdelay顯示帶有header的主題延遲rostopicecho打印消息到屏幕rostopicfind根據類型查找主題rostopichz顯示主題的發(fā)布頻率rostopicinfo顯示主題相關信息rostopiclist顯示所有活動狀態(tài)下的主題rostopicpub將數據發(fā)布到主題rostopictype打印主題類型參數服務器課程導入服務通信話題通信常用命令通信機制比較總結五、常用命令5.3rosmsg:操作msg消息rosmsg是用于顯示有關ROS消息類型的信息的命令行工具。命令說明rosmsgshow顯示消息描述rosmsginfo顯示消息信息rosmsglist列出所有消息rosmsgmd5顯示md5加密后的消息rosmsgpackage顯示某個功能包下的所有消息rosmsgpackages列出包含消息的功能包參數服務器課程導入服務通信話題通信常用命令通信機制比較總結五、常用命令5.4rosservice:操作服務rosservice包含用于列出和查詢ROSServices的rosservice命令行工具。調用部分服務時,如果對相關工作空間沒有配置path,需要進入工作空間調用source./devel/setup.bash。命令說明rosserviceargs打印服務參數rosservicecall使用提供的參數調用服務rosservicefind按照服務類型查找服務rosserviceinfo打印有關服務的信息rosservicelist列出所有活動的服務rosservicetype打印服務類型rosserviceuri打印服務的ROSRPCuri參數服務器課程導入服務通信話題通信常用命令通信機制比較總結五、常用命令5.5rossrv:操作srv消息rossrv是用于顯示有關ROS服務類型的信息的命令行工具,與rosmsg使用語法高度雷同。命令說明rossrvshow顯示服務消息詳情rossrvinfo顯示服務消息相關信息rossrvlist列出所有服務信息rossrvmd5顯示md5加密后的服務消息rossrvpackage顯示某個包下所有服務消息rossrvpackages顯示包含服務消息的所有包參數服務器課程導入服務通信話題通信常用命令通信機制比較總結五、常用命令5.6rosparam:操作參數rosparam包含rosparam命令行工具,用于使用YAML編碼文件在參數服務器上獲取和設置ROS參數。命令說明rosparamset設置參數rosparamget獲取參數rosparamload從外部文件加載參數rosparamdump將參數寫出到外部文件rosparamdelete刪除參數rosparamlist列出所有參數參數服務器課程導入服務通信話題通信常用命令通信機制比較總結六、通信機制比較三種通信機制中,參數服務器是一種數據共享機制,可以在不同的節(jié)點之間共享數據,話題通信與服務通信是在不同的節(jié)點之間傳遞數據的,三者是ROS中最基礎也是應用最為廣泛的通信機制。這其中,話題通信和服務通信有一定的相似性也有本質上的差異,在此將二者做一下簡單比較:二者的實現(xiàn)流程是比較相似的,都是涉及到四個要素:可以概括為:兩個節(jié)點通過話題關聯(lián)到一起,并使用某種類型的數據載體實現(xiàn)數據傳輸。6.1相似性四要素消息的發(fā)布方/客戶端(Publisher/Client)消息的訂閱方/服務端(Subscriber/Se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026 年中職經濟與管理基礎(經濟基礎)試題及答案
- 高考總復習優(yōu)化設計二輪用書英語A 考點分類練7 詞句猜測題
- 辦公樓轉讓合同協(xié)議2025年
- 辦公隔斷安裝合同協(xié)議2025年
- 基于機器學習的軟件故障預測方法
- 多模態(tài)數據融合感知系統(tǒng)
- 2025年河北省公需課學習-《中華人民共和國著作權法修訂》解讀
- 2025年幼教考編填空題200道
- 國標汽車構造試題及答案
- 第六單元 微專題 圓中最值問題
- 2025年四級營養(yǎng)師考試題庫(含答案)
- 2025貴州銅仁市千名英才·智匯銅仁赴西安引才151人(公共基礎知識)測試題附答案解析
- 復腎寧膠囊質量標準研究
- 2025團員教育評議大會
- 2025年10月自考14462小學綜合性學習與跨學科教學.試題及答案
- 七年級歷史上冊第三次月考卷新教材統(tǒng)編版
- 德國風俗文化概述
- 糖尿病足潰瘍VSD治療創(chuàng)面負壓參數優(yōu)化方案
- 英語專業(yè)畢業(yè)論文完整版
- 鐵路客運規(guī)章應用課件 1-2 鐵路旅客票價計算
- 三類醫(yī)療器械經營企業(yè)負責人試題卷(附答案)
評論
0/150
提交評論