智能機(jī)器人原理與應(yīng)用 課件 第8章 ROS機(jī)器人操作系統(tǒng)_第1頁(yè)
智能機(jī)器人原理與應(yīng)用 課件 第8章 ROS機(jī)器人操作系統(tǒng)_第2頁(yè)
智能機(jī)器人原理與應(yīng)用 課件 第8章 ROS機(jī)器人操作系統(tǒng)_第3頁(yè)
智能機(jī)器人原理與應(yīng)用 課件 第8章 ROS機(jī)器人操作系統(tǒng)_第4頁(yè)
智能機(jī)器人原理與應(yīng)用 課件 第8章 ROS機(jī)器人操作系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

北京信息科技大學(xué)自動(dòng)化學(xué)院智能機(jī)器人原理與應(yīng)用“智能檢測(cè)技術(shù)與模式識(shí)別”研究所北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》第八章ROS機(jī)器人操作系統(tǒng)

機(jī)器人操作系統(tǒng)(robot

operating

system),簡(jiǎn)稱ROS,是由WillowGarage公司于2010年發(fā)布并開源的高度靈活的軟件架構(gòu),用于編寫機(jī)器人軟件程序。ROS極大地提高了研發(fā)效率,減少了重復(fù)工作,也降低了硬件設(shè)計(jì)和開發(fā)的難度。8.1.1ROS簡(jiǎn)介

ROS并不是傳統(tǒng)意義上的操作系統(tǒng),它是基于計(jì)算機(jī)操作系統(tǒng)之上開發(fā)的一個(gè)框架,提供了硬件抽象、底層設(shè)備管理與控制、常用功能實(shí)現(xiàn)、進(jìn)程間消息、程序包發(fā)送等功能。ROS具備操作系統(tǒng)的許多功能,但是它需要運(yùn)行在計(jì)算機(jī)操作系統(tǒng)之上,故一般被稱作次級(jí)操作系統(tǒng)或元操作系統(tǒng)。ROS采用了分布式結(jié)構(gòu),基于TCP/IP的通信方式,其強(qiáng)大的耦合性使得每個(gè)功能模塊都可以單獨(dú)設(shè)計(jì)、編譯,然后在運(yùn)行時(shí)松散地進(jìn)行合成。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架ROS基于分布式處理框架,使得多種不同功能可單獨(dú)設(shè)計(jì),并能在運(yùn)行時(shí)松散耦合。如圖所示,這種基于模塊間點(diǎn)對(duì)點(diǎn)的松散耦合的網(wǎng)絡(luò)連接處理架構(gòu)執(zhí)行若干種類型的通訊,包括基于服務(wù)的同步RPC(遠(yuǎn)程過(guò)程調(diào)用)通信、基于Topic的異步數(shù)據(jù)流通信,還有參數(shù)服務(wù)器上的數(shù)據(jù)存儲(chǔ)。8.1.1ROS簡(jiǎn)介1.ROS的運(yùn)行機(jī)制北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架(1)點(diǎn)對(duì)點(diǎn)的設(shè)計(jì)。ROS有眾多的任務(wù)進(jìn)程,系統(tǒng)將其抽象為節(jié)點(diǎn),由Master統(tǒng)一管理。其中每個(gè)節(jié)點(diǎn)的耦合程度較低,而Master為服務(wù)和客戶建立連接充當(dāng)媒介,各個(gè)節(jié)點(diǎn)功能間都可進(jìn)行通信,這種消息傳遞機(jī)制使得ROS可分布式部署,并且更加簡(jiǎn)單高效。8.1.1ROS簡(jiǎn)介2.ROS系統(tǒng)的特點(diǎn)(2)多語(yǔ)言支持。ROS利用了簡(jiǎn)單的、與語(yǔ)言無(wú)關(guān)的接口定義語(yǔ)言描述模塊之間的消息傳送。接口定義語(yǔ)言使用簡(jiǎn)短的文本描述每條消息的結(jié)構(gòu),也允許消息的合成。在ROS系統(tǒng)中,每個(gè)節(jié)點(diǎn)內(nèi)部的程序可由各種語(yǔ)言編寫,只要其發(fā)出的接口相符,通過(guò)網(wǎng)絡(luò)套接字通信的方式便可獲取節(jié)點(diǎn)想表達(dá)的數(shù)據(jù)信息,此種通信方式有利于代碼的移植。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架(3)集成程度高。在設(shè)計(jì)之初,大多數(shù)已經(jīng)存在的機(jī)器人軟件工程都包含了可復(fù)用的驅(qū)動(dòng)和算法,但是由于接口不兼容,大部分代碼的中間層都非?;靵y,故ROS建立的系統(tǒng)具有模塊化的特點(diǎn)。在實(shí)際工程中,既可以編寫或使用一兩個(gè)節(jié)點(diǎn)單獨(dú)運(yùn)行,又可以通過(guò)代碼復(fù)用令多個(gè)節(jié)點(diǎn)融合。8.1.1ROS簡(jiǎn)介2.ROS系統(tǒng)的特點(diǎn)(4)工具包豐富。為了提升系統(tǒng)的管理效率,ROS參考已有的計(jì)算機(jī)操作系統(tǒng),構(gòu)建采用了豐富的工具包。這些工具承擔(dān)了各種各樣的任務(wù),豐富的工具包使基于ROS的開發(fā)更有效率。(5)源碼開放。ROS的所有的源碼都是公開發(fā)布,以分布式的關(guān)系遵循著BSD許可,即允許各種商業(yè)和非商業(yè)的工程開發(fā)。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架如圖所示,從架構(gòu)上看,ROS架構(gòu)分為3個(gè)層次:一是建立在Linux系統(tǒng)上的OS層;二是實(shí)現(xiàn)通信機(jī)制與機(jī)器人開發(fā)庫(kù)的中間層;三是在ROSMaster管理下保證各個(gè)節(jié)點(diǎn)功能運(yùn)行的應(yīng)用層。8.1.2ROS整體架構(gòu)分析在中間層中,ROS做了大量工作,并專門設(shè)計(jì)了通信系統(tǒng),各個(gè)節(jié)點(diǎn)之間均使用ROS提供的消息傳遞機(jī)制。在通信機(jī)制之上,ROS提供了大量機(jī)器人開發(fā)相關(guān)的庫(kù),如數(shù)據(jù)類型定義、坐標(biāo)變換、運(yùn)動(dòng)控制等,可以提供給應(yīng)用層使用。應(yīng)用層中負(fù)責(zé)管理整個(gè)系統(tǒng)的正常運(yùn)行管理者為Master。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架如圖所示,從應(yīng)用層面看,ROS系統(tǒng)可以分為3三個(gè)級(jí)別,分別為計(jì)算圖級(jí)、文件系統(tǒng)級(jí)、開源社區(qū)級(jí)。計(jì)算圖集描述程序如何運(yùn)行,以及各個(gè)進(jìn)程與系統(tǒng)之間的通信。文件系統(tǒng)級(jí)表達(dá)的是硬盤中的代碼程序以及軟件如何組織和構(gòu)建的。開源社區(qū)級(jí)主要是ROS資源的獲取和分享,如何開源代碼。8.1.2ROS整體架構(gòu)分析北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架計(jì)算圖級(jí)是ROS處理數(shù)據(jù)的一種點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)形式,該網(wǎng)絡(luò)是節(jié)點(diǎn)之間通過(guò)主題或服務(wù)來(lái)連接。系統(tǒng)運(yùn)行時(shí),任何節(jié)點(diǎn)都可以訪問(wèn)此網(wǎng)絡(luò),通過(guò)獲取其他節(jié)點(diǎn)發(fā)布的消息,或是將自身數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上來(lái)達(dá)到節(jié)點(diǎn)之間數(shù)據(jù)交換的目的。ROS中的基本計(jì)算圖級(jí)概念包括:節(jié)點(diǎn)、節(jié)點(diǎn)管理器、參數(shù)服務(wù)器、消息、服務(wù)、主題和消息記錄包。這些概念以各種形式來(lái)提供數(shù)據(jù)交互。8.1.2ROS整體架構(gòu)分析1.計(jì)算圖級(jí)1)節(jié)點(diǎn)(node)節(jié)點(diǎn)是ROS中抽象出來(lái)的最基本的計(jì)算執(zhí)行進(jìn)程。在工程中,若要使用某個(gè)功能包,或是調(diào)用自己編寫的可執(zhí)行文件,必然要?jiǎng)?chuàng)建一個(gè)節(jié)點(diǎn),并將此節(jié)點(diǎn)連接到ROS的網(wǎng)絡(luò)中,定義好該節(jié)點(diǎn)的接口和通信形式,以便完成節(jié)點(diǎn)之間的數(shù)據(jù)交換。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架8.1.2ROS整體架構(gòu)分析1.計(jì)算圖級(jí)2)節(jié)點(diǎn)管理器(master)節(jié)點(diǎn)管理器是為了管理節(jié)點(diǎn)產(chǎn)生的,用于節(jié)點(diǎn)的主題、信息和參數(shù)修改等,而節(jié)點(diǎn)之間的通信完全是由節(jié)點(diǎn)管理器控制。同時(shí),對(duì)于部署在不同設(shè)備的節(jié)點(diǎn)來(lái)說(shuō),可以通過(guò)一個(gè)節(jié)點(diǎn)管理器統(tǒng)一管理。3)參數(shù)服務(wù)器(parameter

server)參數(shù)服務(wù)器是可以通過(guò)網(wǎng)絡(luò)訪問(wèn)的共享的多變量字典,是節(jié)點(diǎn)存儲(chǔ)參數(shù)的地方,通過(guò)關(guān)鍵字存儲(chǔ)。使用節(jié)點(diǎn)時(shí),通過(guò)參數(shù)服務(wù)器存儲(chǔ)和檢索參數(shù),也通過(guò)參數(shù)服務(wù)器修改節(jié)點(diǎn)的工作任務(wù)。4)消息(message)節(jié)點(diǎn)之間的通信可以通過(guò)消息實(shí)現(xiàn)數(shù)據(jù)交換。消息包含了一個(gè)節(jié)點(diǎn)所發(fā)布的數(shù)據(jù)信息,消息的類型很多,前面已有了介紹,除了介紹的消息類型外,也可以進(jìn)行自定義消息操作。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架8.1.2ROS整體架構(gòu)分析1.計(jì)算圖級(jí)5)主題(topic)主題是ROS網(wǎng)絡(luò)對(duì)節(jié)點(diǎn)發(fā)布消息一種通信方式,它通過(guò)發(fā)布/訂閱來(lái)實(shí)現(xiàn),每一條消息都會(huì)發(fā)布到相應(yīng)的主題上。當(dāng)一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),可稱為此節(jié)點(diǎn)項(xiàng)主題發(fā)布消息,其他訂閱此主題的節(jié)點(diǎn)可通過(guò)主題接收消息,這是ROS中常見的通信方式。6)服務(wù)(service)服務(wù)是ROS網(wǎng)絡(luò)對(duì)節(jié)點(diǎn)發(fā)出請(qǐng)求的一種通信方式,它通過(guò)請(qǐng)求/應(yīng)答來(lái)實(shí)現(xiàn),服務(wù)也必須有唯一的名稱。當(dāng)一個(gè)節(jié)點(diǎn)提供了某一個(gè)服務(wù)后,ROS中的所有節(jié)點(diǎn)都可以使用ROS編寫的代碼與其通信。7)消息記錄包(bag)消息記錄包是用來(lái)保存ROS消息數(shù)據(jù)的文件格式。在工程中,可以通過(guò)消息記錄包記錄各種難以收集的傳感器數(shù)據(jù),并且收集多次實(shí)驗(yàn)的數(shù)據(jù),以便開發(fā)者的開發(fā)和調(diào)試。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架8.1.2ROS整體架構(gòu)分析2.文件系統(tǒng)級(jí)ROS的內(nèi)部結(jié)構(gòu)、文件結(jié)構(gòu)和所需的核心文件都在這一層。由于ROS有眾多的文件,而這些文件需要進(jìn)行統(tǒng)一的管理,不同的程序文件放在不同的文件夾下,根據(jù)不同的功能進(jìn)行分類。1)功能包集(metapackage)將多個(gè)功能接近甚至相互依賴的軟件包放到一個(gè)集合之中,稱為功能包集,在ROShydromedusa版本之前,相似的概念為stack(功能包集)。2)功能包(package)功能包在ROS中是組成軟件的最基本形式,無(wú)論是單個(gè)節(jié)點(diǎn)的運(yùn)行還是多個(gè)節(jié)點(diǎn)組織,都需要用功能包搭建。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架8.1.2ROS整體架構(gòu)分析2.文件系統(tǒng)級(jí)4)消息類型(message)在ROS中,消息是節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)交換的一種通信形式,它既有ROS設(shè)計(jì)時(shí)規(guī)定的消息格式,也可以根據(jù)工程需要進(jìn)行消息格式的自定義。5)服務(wù)類型(service)服務(wù)是節(jié)點(diǎn)之間通信的另一種方式,是一種簡(jiǎn)化的服務(wù)描述語(yǔ)言,以實(shí)現(xiàn)節(jié)點(diǎn)之間的請(qǐng)求/響應(yīng)的通信。與消息的通信方式不同,此種通信方式面對(duì)一對(duì)一的節(jié)點(diǎn)數(shù)據(jù)交換。3)功能包清單(manifest)功能包清單主要描述此功能包的依賴關(guān)系、名稱、版本號(hào)、作者、維護(hù)者等信息。一般來(lái)說(shuō),每個(gè)功能包都會(huì)對(duì)應(yīng)地提供一個(gè)功能包清單,以便更加方便地安裝應(yīng)用功能包,通過(guò)功能包清單實(shí)現(xiàn)對(duì)功能包的管理工作。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架8.1.2ROS整體架構(gòu)分析3.開源社區(qū)級(jí)ROS的資源共享機(jī)制主要來(lái)源于其開源社區(qū),其共享途徑有多種方式,通過(guò)獨(dú)立的網(wǎng)絡(luò)社區(qū)分享軟件和知識(shí)。發(fā)行版(distribution):類似Linux發(fā)行版,ROS發(fā)行版包括一系列帶有版本號(hào)、可直接安裝的功能包,這使得ROS的軟件管理和安裝更加容易,而且可以通過(guò)軟件集合來(lái)維持統(tǒng)一的版本號(hào)。軟件源(repository):ROS依賴共享網(wǎng)絡(luò)上的開源代碼,不同的組織結(jié)構(gòu)可以開發(fā)或共享自己的機(jī)器人軟件。ROS

wiki:記錄ROS信息文檔的主要論壇。所有人都可以注冊(cè)、登錄該論壇,上傳自己的開發(fā)文檔、更新、編寫教程。郵件列表(mailinglist):ROS郵件列表是交流ROS更新的主要渠道,也可以交流ROS開發(fā)的各種疑問(wèn)。ROS

Answers:ROSAnswers是一個(gè)咨詢ROS相關(guān)問(wèn)題的網(wǎng)站,用戶可以在該網(wǎng)站提交自己的問(wèn)題,并得到其他開發(fā)者的問(wèn)答。博客(blog):發(fā)布ROS社區(qū)中的新聞、圖片、視頻。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.1ROS框架8.1.3ROS名稱系統(tǒng)在設(shè)計(jì)之初,ROS便考慮到大型的工程存在很多節(jié)點(diǎn)以及節(jié)點(diǎn)通信時(shí)的主題等,通過(guò)對(duì)各個(gè)部分的名稱加以組織,工程會(huì)進(jìn)行得更加順利,以便ROS處理和提取復(fù)雜的信息,如節(jié)點(diǎn)、主題、服務(wù)、參數(shù)服務(wù)器都有各自對(duì)應(yīng)的名稱。資源名稱的解析可以是相對(duì)的,故資源不一定需要知道它們所在的命名空間的位置。編寫節(jié)點(diǎn)時(shí),可以假設(shè)它們?cè)诟臻g中,如果編寫更大的系統(tǒng),它們可以被放到另一個(gè)指定的命名空間內(nèi)。這種可以移動(dòng)到其他命名空間的機(jī)制提升了ROS的可復(fù)用性。在ROS中,每一個(gè)資源被定義在一個(gè)命名空間之中,此資源可以共享。資源可以在它們的命名空間內(nèi)創(chuàng)建,在自己的命名空間內(nèi)或上一級(jí)命名空間內(nèi)連接資源,連接可以在不同命名空間的資源間進(jìn)行。此種封裝將系統(tǒng)的不同部分進(jìn)行分離,避免命名錯(cuò)誤導(dǎo)致占用全局名稱,使得調(diào)用出錯(cuò)。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.2ROS通信機(jī)制8.2.1ROS通信機(jī)制概述ROS在中間層做的最多的是通信機(jī)制的改動(dòng),它提供了點(diǎn)對(duì)點(diǎn)的通信機(jī)制,在機(jī)器人開發(fā)中可以輕松地處理單獨(dú)模塊,靈活地使用機(jī)器人。ROS是基于Socket網(wǎng)絡(luò)連接的構(gòu)架,其中所有的消息通信都必須使用節(jié)點(diǎn)管理器。ROS通信實(shí)現(xiàn)的要素在8.1節(jié)進(jìn)行了詳細(xì)講解,包括節(jié)點(diǎn)、節(jié)點(diǎn)管理器、參數(shù)服務(wù)器、消息、服務(wù)、主題。ROS的架構(gòu)是基于ROS的松耦合網(wǎng)絡(luò)連接的處理架構(gòu),提供多種通信服務(wù),包括使用主題的異步數(shù)據(jù)流通信、使用服務(wù)的遠(yuǎn)程電泳通信和通過(guò)參數(shù)服務(wù)器數(shù)據(jù)傳輸通信,可以實(shí)現(xiàn)多種情況下的網(wǎng)絡(luò)連接。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.2ROS通信機(jī)制8.2.1ROS通信機(jī)制概述使用主題的異步數(shù)據(jù)流通信是ROS中最主要的通信方式,它實(shí)現(xiàn)了節(jié)點(diǎn)之間多對(duì)多的連接,并通過(guò)單向的數(shù)據(jù)通道傳輸數(shù)據(jù)。節(jié)點(diǎn)只需將數(shù)據(jù)發(fā)送到對(duì)應(yīng)的主題,訂閱者通過(guò)主題接收信息,實(shí)現(xiàn)了節(jié)點(diǎn)之間的通信解耦。使用遠(yuǎn)程調(diào)用服務(wù)通信可實(shí)現(xiàn)節(jié)點(diǎn)間一對(duì)一的連接,采用了請(qǐng)求/應(yīng)答的通信模式。當(dāng)一個(gè)節(jié)點(diǎn)發(fā)送請(qǐng)求并要從其他節(jié)點(diǎn)獲取數(shù)據(jù)時(shí),可使用此種類型的通信方式。使用參數(shù)服務(wù)器數(shù)據(jù)傳輸通信可實(shí)現(xiàn)通過(guò)ROS搭建的網(wǎng)絡(luò)獲取多元共享的參數(shù)字典,節(jié)點(diǎn)運(yùn)行時(shí)可在參數(shù)服務(wù)器上存儲(chǔ)或獲取參數(shù)。參數(shù)服務(wù)器運(yùn)行在節(jié)點(diǎn)管理器上,主要實(shí)現(xiàn)一些參數(shù)的配置。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.2ROS通信機(jī)制8.2.2主題異步數(shù)據(jù)流通信原理簡(jiǎn)介主題使用發(fā)布/訂閱模型進(jìn)行消息的傳遞,名稱是唯一的。在使用ROS的智能機(jī)器人中,一個(gè)節(jié)點(diǎn)若要與其他節(jié)點(diǎn)通信,只需在主題上發(fā)布消息,消息的發(fā)布者和訂閱者不需要相互知曉,實(shí)現(xiàn)了兩者之間的解耦,如圖所示。在ROS中,一個(gè)主題可以有多個(gè)發(fā)布者和訂閱者,同時(shí),一個(gè)節(jié)點(diǎn)可發(fā)布或訂閱多個(gè)主題,并且可以隨時(shí)新建發(fā)布者或訂閱者。但每個(gè)發(fā)布者只能向一個(gè)主題發(fā)布消息,訂閱者只能訂閱一個(gè)主題。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.2ROS通信機(jī)制8.2.2主題異步數(shù)據(jù)流通信原理簡(jiǎn)介通過(guò)主題的方式發(fā)布接收消息,實(shí)現(xiàn)節(jié)點(diǎn)間的單向數(shù)據(jù)流,發(fā)布者通過(guò)數(shù)據(jù)流向主題發(fā)布消息,而不用關(guān)注訂閱者是否接收到,訂閱者從主題接收消息,也不用反饋給發(fā)布者是否收到消息。在一個(gè)完整的ROS系統(tǒng)中,必須包含一個(gè)節(jié)點(diǎn)管理器Master,用來(lái)管理發(fā)布者和訂閱者,使消息可以正常地發(fā)布和訂閱,故每創(chuàng)建一個(gè)新的發(fā)布者或訂閱者,都要在Master上注冊(cè)。當(dāng)發(fā)布者在Master上注冊(cè)時(shí),Master會(huì)保存發(fā)布者的統(tǒng)一資源標(biāo)識(shí)符和發(fā)布者發(fā)布的主題,當(dāng)有訂閱者在Master上注冊(cè)并訂閱某個(gè)主題時(shí),它會(huì)在保存的信息中尋找發(fā)布者,之后將發(fā)布者的統(tǒng)一資源標(biāo)識(shí)符發(fā)送給訂閱者,從而建立一對(duì)多的連接。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.2ROS通信機(jī)制8.2.3同步遠(yuǎn)程過(guò)程調(diào)用服務(wù)通信發(fā)布/訂閱的通信方式屬于單向的多對(duì)多的通信方式,發(fā)布者與訂閱者之間解耦,這種通信方式不適合遠(yuǎn)程過(guò)程調(diào)用的請(qǐng)求/應(yīng)答模型。請(qǐng)求/應(yīng)答是分布式系統(tǒng)常用的信息交互方式,故ROS提供了遠(yuǎn)程過(guò)程服務(wù)通信方式,實(shí)現(xiàn)遠(yuǎn)程過(guò)程調(diào)用請(qǐng)求/應(yīng)答模型。服務(wù)是由一對(duì)一的消息組成,一個(gè)用于實(shí)現(xiàn)請(qǐng)求,一個(gè)用來(lái)實(shí)現(xiàn)應(yīng)答。節(jié)點(diǎn)用字符名定義服務(wù),客戶端通過(guò)發(fā)送一個(gè)請(qǐng)求消息調(diào)用服務(wù),之后等待響應(yīng)。如圖所示。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.2ROS通信機(jī)制8.2.4參數(shù)服務(wù)器數(shù)據(jù)傳輸簡(jiǎn)介參數(shù)服務(wù)器是在ROS上的一種共享的多變量參數(shù)字典,節(jié)點(diǎn)運(yùn)行時(shí)可在參數(shù)服務(wù)器上存儲(chǔ)或獲取參數(shù)。參數(shù)服務(wù)器通常用于存儲(chǔ)靜態(tài)的非二進(jìn)制數(shù)據(jù),并非是為了高性能數(shù)據(jù)存儲(chǔ)。參數(shù)服務(wù)器是全局可見的,所有節(jié)點(diǎn)都可以獲取和存儲(chǔ)參數(shù),可以刪除、修改數(shù)據(jù)。如圖所示。參數(shù)屬于參數(shù)服務(wù)器,即節(jié)點(diǎn)創(chuàng)建了參數(shù),在節(jié)點(diǎn)終止后,參數(shù)依然會(huì)保留在參數(shù)服務(wù)器中。這種模式提高了ROS節(jié)點(diǎn)的靈活性和可配置性。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.3ROS開發(fā)實(shí)例—基于ROS的室內(nèi)智能機(jī)器人導(dǎo)航與控制8.3.1ROS開發(fā)環(huán)境搭建支持ROS的操作系統(tǒng)有多種,但正式支持的只有Ubuntu系統(tǒng)。以Ubuntu系統(tǒng)為例,本節(jié)介紹ROS開發(fā)環(huán)境的搭建。這里主要介紹ROS的安裝和ROS開發(fā)環(huán)境的搭建,Ubuntu系統(tǒng)的安裝不再贅述。ROS的常規(guī)安裝操作如下。(1)設(shè)置網(wǎng)絡(luò)時(shí)間協(xié)議(network

time

protocol,NTP)。(2)添加代碼列表。這里需要在ros-latestl.ist添加ROS版本庫(kù)(3)設(shè)置公鑰。設(shè)置公鑰能獲取從ROS庫(kù)下載功能包的權(quán)限。(4)更新軟件包索引。(5)安裝ROS

Kinetic

Kame。此操作的目的是安裝臺(tái)式機(jī)的ROS功能包,功能包涵蓋ROS、rqt、RViz、機(jī)器人相關(guān)的一些庫(kù)、仿真、導(dǎo)航等內(nèi)容。(6)初始化rosdep。(7)安裝rosinstall。(8)加載環(huán)境配置文件。(9)創(chuàng)建并初始化工作目錄。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.3ROS開發(fā)實(shí)例—基于ROS的室內(nèi)智能機(jī)器人導(dǎo)航與控制8.3.2室內(nèi)移動(dòng)服務(wù)機(jī)器人的系統(tǒng)結(jié)構(gòu)室內(nèi)環(huán)境是一種結(jié)構(gòu)化環(huán)境,并具有一定動(dòng)態(tài)性。這要求室內(nèi)移動(dòng)服務(wù)機(jī)器人具備周邊環(huán)境感知、動(dòng)態(tài)環(huán)境下的地圖構(gòu)建、面向任務(wù)的導(dǎo)航以及人機(jī)間交互與合作的能力。室內(nèi)移動(dòng)服務(wù)機(jī)器人的基本硬件組成主要包括運(yùn)動(dòng)底盤、地圖構(gòu)建設(shè)備、感知與導(dǎo)航設(shè)備等。1.硬件結(jié)構(gòu)(1)運(yùn)動(dòng)底盤。雖然兩輪差動(dòng)底盤對(duì)地面的適應(yīng)性能較差,并且存在運(yùn)動(dòng)約束,但從控制成本角度考慮,選擇了YujinRobot公司生產(chǎn)的智能機(jī)器人底盤Kobuki。Kobuki具有碰撞、高精度碼盤以及陀螺儀等傳感器,具有判別行進(jìn)路面的情況以及自身姿態(tài)的能力。(2)地圖構(gòu)建設(shè)備。本文使用RPLIDAR激光雷達(dá)作為地圖構(gòu)建設(shè)備,它能夠?qū)崿F(xiàn)360°、6m范圍內(nèi)的激光測(cè)距掃描,在各類室內(nèi)環(huán)境以及無(wú)日光直接照射的室外環(huán)境下表現(xiàn)不錯(cuò)。(3)視覺導(dǎo)航與認(rèn)知。為實(shí)現(xiàn)高性能的場(chǎng)景認(rèn)知功能,本文采用具有深度信息獲取功能的XtionPROLive攝像頭完成。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.3ROS開發(fā)實(shí)例—基于ROS的室內(nèi)智能機(jī)器人導(dǎo)航與控制8.3.2室內(nèi)移動(dòng)服務(wù)機(jī)器人的系統(tǒng)結(jié)構(gòu)根據(jù)上述要求,室內(nèi)服務(wù)機(jī)器人的系統(tǒng)結(jié)構(gòu)如圖8.10所示。硬件層包括移動(dòng)底盤,用于地圖構(gòu)建的傳感器以及用于完成任務(wù)的視覺傳感器。虛線部分為驅(qū)動(dòng)層,用于應(yīng)用層與硬件的溝通。定位導(dǎo)航模塊負(fù)責(zé)完成機(jī)器人的自主移動(dòng),可視化部分是人機(jī)交互的接口。2.軟件結(jié)構(gòu)北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.3ROS開發(fā)實(shí)例—基于ROS的室內(nèi)智能機(jī)器人導(dǎo)航與控制8.3.3系統(tǒng)實(shí)現(xiàn)本文構(gòu)建的基于ROS的軟件系統(tǒng)主要分為4大部分:機(jī)器人運(yùn)動(dòng)控制模塊、同步定位與地圖構(gòu)建模塊、定位導(dǎo)航模塊、三維視覺認(rèn)知模塊。所有模塊獨(dú)立完成,開發(fā)者可以根據(jù)需要拼接。如圖所示,模塊運(yùn)行時(shí),統(tǒng)一由ROS_Master完成調(diào)度。北京信息科技大學(xué)自動(dòng)化學(xué)院課程《智能機(jī)器人原理與應(yīng)用》8.3ROS開發(fā)實(shí)例—基于ROS的室內(nèi)智能機(jī)器人導(dǎo)航與控制8.3.3系統(tǒng)實(shí)現(xiàn)SLAM是機(jī)器人認(rèn)知外界環(huán)境的一種方式,也是智能機(jī)器人實(shí)現(xiàn)自主行為規(guī)劃的前提。其功能可以描述為:在未知的環(huán)境中,根據(jù)地圖以及傳感器信息進(jìn)行定位估計(jì),并在定位的基礎(chǔ)上建造增量式地圖。1.同號(hào)定位與地圖構(gòu)建2.定位與導(dǎo)航智能機(jī)器人的定位導(dǎo)航是實(shí)現(xiàn)機(jī)器人自主運(yùn)動(dòng)的關(guān)鍵,本系統(tǒng)使用激

溫馨提示

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

評(píng)論

0/150

提交評(píng)論