智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.6 ROS通信系統(tǒng)的構(gòu)建_第1頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.6 ROS通信系統(tǒng)的構(gòu)建_第2頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.6 ROS通信系統(tǒng)的構(gòu)建_第3頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.6 ROS通信系統(tǒng)的構(gòu)建_第4頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.6 ROS通信系統(tǒng)的構(gòu)建_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

智能網(wǎng)聯(lián)汽車

計算平臺部署與測試項目五ROS的安裝與使用任務(wù)6ROS通信系統(tǒng)的構(gòu)建目錄01.任務(wù)描述02.任務(wù)目標(biāo)03.任務(wù)準(zhǔn)備04.知識準(zhǔn)備05.任務(wù)實施06.評價反饋01.任務(wù)描述

基于ROS研發(fā)出一個無人駕駛小車,會存在節(jié)點A用于控制底盤輪子的轉(zhuǎn)動,節(jié)點B用于驅(qū)動攝像頭獲取圖形信息,節(jié)點C用于驅(qū)動激光雷達(dá),節(jié)點D用于收集傳感器信息進(jìn)行路徑規(guī)劃等等,這樣分布式排列節(jié)點能夠盡可能避免處理復(fù)雜程序時發(fā)生崩潰的情況。往往在實際情況中,整體系統(tǒng)的功能多,運行節(jié)點數(shù)量也非常龐大,作為測試工程師,請你幫助助理工程師了解節(jié)點分布結(jié)構(gòu)以及各節(jié)點之間如何通信。02.任務(wù)目標(biāo)通過學(xué)習(xí),希望同學(xué)們完成以下任務(wù)。了解ROS常用的通信機(jī)制。了解如何創(chuàng)建ROS通信節(jié)點。熟悉不同通信機(jī)制的操作命令。能夠創(chuàng)建簡單的ROS通信節(jié)點。能夠正常啟動創(chuàng)建的節(jié)點。獲得多途徑檢索知識、分析解決問題以及多元化思考解決問題的方法,形成創(chuàng)新意識。具備良好的職業(yè)道德。具有良好的團(tuán)隊協(xié)作精神和較強(qiáng)的組織溝通能力。能夠通過命令查詢節(jié)點的相關(guān)信息。03.任務(wù)準(zhǔn)備常規(guī)實訓(xùn)著裝防護(hù)裝備安裝有ROS系統(tǒng)的計算機(jī)平臺教學(xué)設(shè)備ROS教學(xué)工具04.知識準(zhǔn)備(一)節(jié)點(node)

節(jié)點是指在ROS中運行的最小進(jìn)程單元,可以把它看作一個可執(zhí)行程序或一個小的功能模塊。例如,自動駕駛車輛可能會把激光雷達(dá)定義為一個節(jié)點,深度攝像頭是另一個節(jié)點,線控底盤也是一個節(jié)點。在ROS中,注重各個功能模塊的復(fù)用,經(jīng)常將較復(fù)雜的功能細(xì)分為多個節(jié)點,可以提升節(jié)點的可復(fù)用型,有利于提升編程效率。一、ROS常見術(shù)語(二)主節(jié)點(master)

主節(jié)點負(fù)責(zé)節(jié)點到節(jié)點的連接和消息通信,類似于節(jié)點管理器的作用。當(dāng)節(jié)點運行時,需要向主節(jié)點注冊自己的信息(節(jié)點名,發(fā)布/接收的話題名、服務(wù)名、消息類型等),通過主節(jié)點建立起節(jié)點間的訪問和消息的傳遞。智慧貓的決策單元就充當(dāng)了主節(jié)點的角色。(三)消息(msg)

節(jié)點之間通過消息來發(fā)送和接收數(shù)據(jù),消息里包括消息的簡單數(shù)據(jù)結(jié)構(gòu)。使用消息的通信方法包括TCPROS、UDPROS等。每一條消息都要發(fā)布到相應(yīng)的話題。例如,定義一個名為障礙物的消息類型,消息中包含的五個字段,分別是障礙物的長度、寬度、高度、運動線速度和運動角速度。(四)話題(topic)話題可以理解為是某一類消息的總稱,發(fā)布者(publisher)和訂閱者(subscriber)通過向主節(jié)點注冊話題名,來建立相互之間的連接,通過TCPROS/UDPROS來實現(xiàn)具體消息的傳遞。話題是一種異步通信方式,一個話題可以有多個訂閱者,發(fā)布者和訂閱者之間是相互解耦的,發(fā)布者發(fā)布話題時不需要有訂閱者,訂閱者訂閱話題時不需要有發(fā)布者。話題的名稱在功能包里必須具有唯一性。

例如,自動駕駛車輛的攝像頭、驅(qū)動系統(tǒng)和制動系統(tǒng)都被分別定義為單獨的一個節(jié)點。攝像頭節(jié)點發(fā)布一個檢測路面是否出現(xiàn)行人的主題,頻率為20Hz,攝像頭此時就充當(dāng)一個主題發(fā)布者的角色。再定義驅(qū)動系統(tǒng)和制動系統(tǒng)都去訂閱這個檢測路面行人的主題,那么這兩個節(jié)點就充當(dāng)該主題的訂閱者。如果前方出現(xiàn)行人,驅(qū)動系統(tǒng)停止工作,制動系統(tǒng)則會同步制動車輛。(六)動作(action)

動作類似于服務(wù),是一種基于請求—響應(yīng)的雙向通信方式。但是,它增加了中途反饋,因此適用于需要較長通信時間的場景??梢栽谶^程中查看進(jìn)度或終止請求。例如,自動駕駛車輛的人機(jī)交互節(jié)點要求與導(dǎo)航算法節(jié)點建立動作方式的通信連接,以便及時獲取車輛是否抵達(dá)目標(biāo)位置的信息,通常消息類型包含接收節(jié)點ID、目標(biāo)是否達(dá)成、任務(wù)完成進(jìn)度等。(五)服務(wù)(service)當(dāng)一個節(jié)點需要從另外一個節(jié)點發(fā)出請求并期望獲得響應(yīng)時,我們就需要借助于服務(wù)的客戶端和服務(wù)器來實現(xiàn)同步雙向消息的傳遞。適用于節(jié)點之間需要直接進(jìn)行通信,且不能使用話題發(fā)布方式的場合。例如,當(dāng)自動駕駛車輛在行駛過程中需要提高車速時,主節(jié)點向毫米波雷達(dá)節(jié)點發(fā)送服務(wù)請求,請求消息類型是車輛正前方,測量范圍是150m。毫米波雷達(dá)節(jié)點收到服務(wù)請求后,將探測結(jié)果直接反饋給主節(jié)點,當(dāng)響應(yīng)消息是無任何障礙物時,車輛即可加速。二、節(jié)點(node)

為了最大化用戶的可重用性,ROS是以節(jié)點(node)的形式開發(fā)的,而節(jié)點是根據(jù)其目的細(xì)分的可執(zhí)行程序的最小單位。節(jié)點通過消息(message)與其他的節(jié)點交換數(shù)據(jù),最終成為一個大型的程序。節(jié)點之間的消息通信分為三種:單向消息發(fā)送/接收方式的話題(topic)、雙向消息請求/響應(yīng)方式的服務(wù)(service)、雙向消息目標(biāo)(goal)/結(jié)果(result)/反饋(feedback)方式的動作(action)。另外,在節(jié)點中使用的參數(shù)可以從外部進(jìn)行修改。ROS的節(jié)點通信結(jié)構(gòu)如圖所示。ROS的節(jié)點通信結(jié)構(gòu)圖

節(jié)點名在系統(tǒng)中必須唯一。節(jié)點可以采用C++或Python語言來進(jìn)行編寫。所有節(jié)點啟動的時候都要在主節(jié)點進(jìn)行注冊,因此在運行節(jié)點的時候,必須要先啟動主節(jié)點(master),否則啟動的時候會報錯。節(jié)點間通信的架構(gòu)圖三、ROS通信ROS中主要的通信方式有話題(topic)、服務(wù)(service)和動作(action)三種。話題(topic)是最常用的一種。對于實時性、周期性的消息,使用話題(topic)來傳輸是最佳的選擇。話題(topic)是一種點對點的單向通信方式,這里的“點”指的是節(jié)點(node)。使用話題(topic)通信時,首先需要將publisher節(jié)點和subscriber節(jié)點都轉(zhuǎn)移到節(jié)點管理器進(jìn)行注冊,其次publisher會發(fā)布topic,subscriber在master的指揮下會訂閱該topic,從而建立起sub-pub之間的通信,注意整個過程是單向的。服務(wù)(service)方式在通信模型上與topic做了區(qū)別。服務(wù)(service)通信是雙向的,它不僅可以發(fā)送消息,同時還會有反饋。所以服務(wù)(service)包括兩部分,一部分是請求方(Clinet),另一部分是應(yīng)答方/服務(wù)提供方(server)。這時請求方(Client)就會發(fā)送一個request,要等待server處理,反饋回一個reply,這樣通過類似“請求—應(yīng)答”的機(jī)制完成整個服務(wù)通信。動作(action)通信中,actionlib是ROS中一個很重要的庫,類似service通信機(jī)制,actionlib也是一種請求響應(yīng)機(jī)制的通信方式,actionlib主要彌補(bǔ)了service通信的一個不足,就是當(dāng)機(jī)器人執(zhí)行一個長時間的任務(wù)時,假如利用service通信方式,那么publisher會很長時間接收不到反饋的reply,致使通信受阻。當(dāng)service通信不能很好地完成任務(wù)時候,actionlib則比較適合實現(xiàn)長時間的通信過程,actionlib通信過程可以隨時被查看過程進(jìn)度,也可以終止請求,這樣的特性使得它在一些特別的機(jī)制中擁有很高的效率。(一)話題(topic)1.消息(msg)消息(msg)就是節(jié)點間話題通信時傳遞的具體信息,msg的類型包括bool、int、uint、float、string、array等,自定義的消息文件后綴為“.msg”。我們可以把msg理解為是一個“類”,那么每次發(fā)布的內(nèi)容可以理解為“對象”,以圖像的消息sensor_msg/image中的image.msg為例,消息文件定義內(nèi)容如下:

(1)std_msg/Headerheader

(2)uint32seq//消息序號(3)timestamp//存儲ROS中的時間戳信息(4)stringframe_id//綁定的坐標(biāo)系(5)uint32height//圖像的高度(6)uint32width //圖像的寬度(7)stringencoding//圖像的編碼格式(8)uint8is_bigendian//圖像數(shù)據(jù)的大小端存儲模式(9)uint32step //一行圖像數(shù)據(jù)的字節(jié)數(shù)量,作為數(shù)據(jù)的步長(以字節(jié)為單位)(10)uint8[]data //存儲圖像數(shù)據(jù)的數(shù)組,大小為step*height個字節(jié)2.話題(topic)的發(fā)布和訂閱訂閱者和發(fā)布者在主節(jié)點中注冊話題名及消息的類型,訂閱者通過查詢在主節(jié)點中注冊的話題名稱,找到與之相匹配的發(fā)布者并建立連接,來實現(xiàn)話題的具體消息的接收。訂閱者和發(fā)布者有以下三種對應(yīng)關(guān)系:(1)一對一;(2)一對多;(3)多對多。話題訂閱和發(fā)布的通信結(jié)構(gòu)一對一關(guān)系一對多關(guān)系多對多關(guān)系(二)服務(wù)(Service)1.服務(wù)文件(srv)類似msg文件,srv文件是用來描述service數(shù)據(jù)類型的,service通信的數(shù)據(jù)格式定義在*.srv中。它聲明了一個服務(wù),包括請求(request)和響應(yīng)(reply)兩部分。2.服務(wù)(service)服務(wù)(service)的特點:自定義的服務(wù)文件后綴為“.srv”。包含有客戶端(client)和服務(wù)端(server)的服務(wù)是同步雙向通信,不僅可以發(fā)送消息,而且還會有應(yīng)答,這樣會形成阻塞??蛻舳撕头?wù)端分別在主節(jié)點中注冊發(fā)布的服務(wù)名及請求的服務(wù)名等。服務(wù)的發(fā)布和訂閱的通信結(jié)構(gòu)(三)動作(Action)1.動作(action)文件模板類似msg文件,action文件是用來描述action相關(guān)信息的,action通信的數(shù)據(jù)格式定義在*.action中。它聲明了一個動作,包括目標(biāo)、反饋、結(jié)果三個部分。2.動作(Action)特點動作(Action)的特點如下:(1)動作和服務(wù)一樣,都包含請求和應(yīng)答。(2)動作比服務(wù)多了中途反饋,客戶端可以在多種執(zhí)行中獲得動作的狀態(tài)信息、結(jié)果信息或取消動作。(3)動作的消息傳輸方式屬于異步雙向通信,不會形成阻塞。動作的通信結(jié)構(gòu)圖05.任務(wù)實施按照前面所了解的知識內(nèi)容和小組內(nèi)部討論的結(jié)果,制

溫馨提示

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

評論

0/150

提交評論