




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.1ROS操作系統(tǒng)及使用ROS(RobotOperatingSystem)是一個(gè)開(kāi)源的機(jī)器人中間件框架,而非傳統(tǒng)操作系統(tǒng),旨在為機(jī)器人開(kāi)發(fā)提供跨平臺(tái)、跨語(yǔ)言的支持。其核心功能包括硬件抽象、通信機(jī)制、工具鏈和庫(kù)函數(shù),幫助開(kāi)發(fā)者高效集成傳感器、執(zhí)行器、算法等模塊,實(shí)現(xiàn)機(jī)器人感知、決策與控制的協(xié)同。ROS通過(guò)節(jié)點(diǎn)(Node)作為基本執(zhí)行單元,節(jié)點(diǎn)間通過(guò)話題(Topic)、服務(wù)(Service)、動(dòng)作(Action)等通信機(jī)制交互,形成分布式網(wǎng)絡(luò)拓?fù)洌≧OSGraph),支持多任務(wù)并行與模塊化開(kāi)發(fā)。例如,節(jié)點(diǎn)可獨(dú)立完成圖像處理、運(yùn)動(dòng)控制等功能,通過(guò)話題實(shí)時(shí)共享數(shù)據(jù)。ROS分為ROS1(基于TCPROS/ROSCPP通信)和ROS2(基于DDS協(xié)議,支持實(shí)時(shí)性與去中心化架構(gòu))兩大版本。安裝便捷,可通過(guò)一鍵腳本(如fishros)或手動(dòng)配置環(huán)境變量完成。其工具鏈豐富,如Rviz用于可視化傳感器數(shù)據(jù)與地圖,Gazebo進(jìn)行物理仿真,Catkin構(gòu)建編譯系統(tǒng),支持Python、C++等語(yǔ)言開(kāi)發(fā)。典型應(yīng)用場(chǎng)景包括SLAM建圖(如Cartographer)、機(jī)械臂運(yùn)動(dòng)規(guī)劃(MoveIt!)、多機(jī)器人協(xié)同等。ROS社區(qū)活躍,提供大量功能包(Package)與教程,降低了機(jī)器人開(kāi)發(fā)門(mén)檻,廣泛應(yīng)用于教育、科研及工業(yè)領(lǐng)域。7.1.1什么是ROSROS是一個(gè)靈活且強(qiáng)大的開(kāi)源機(jī)器人操作系統(tǒng),旨在為機(jī)器人軟件開(kāi)發(fā)提供一個(gè)通用的平臺(tái)。ROS是構(gòu)建機(jī)器人應(yīng)用程序的一系列庫(kù)、工具和程序包的集合(如下圖),它通過(guò)提供硬件抽象、設(shè)備驅(qū)動(dòng)、庫(kù)函數(shù)、可視化工具、消息傳遞和軟件包管理等功能,可以極大簡(jiǎn)化繁雜多樣的機(jī)器人平臺(tái)下的復(fù)雜任務(wù)創(chuàng)建與穩(wěn)定行為控制。ROS由核心通信機(jī)制、開(kāi)發(fā)工具、應(yīng)用功能和生態(tài)系統(tǒng)四個(gè)部分組成7.1.1什么是ROS2)硬件無(wú)關(guān)性:ROS提供了對(duì)各種硬件設(shè)備的驅(qū)動(dòng)和接口支持,使得開(kāi)發(fā)者能夠方便地與不同類(lèi)型的傳感器、執(zhí)行器等設(shè)備進(jìn)行交互。3)開(kāi)放性和共享性:ROS是一個(gè)開(kāi)源項(xiàng)目,擁有龐大的用戶社區(qū)和豐富的資源庫(kù),開(kāi)發(fā)者可以共享自己的軟件包或從社區(qū)中獲取現(xiàn)有的軟件包,加快開(kāi)發(fā)進(jìn)程。4)可視化工具:ROS提供了可視化工具,如Rviz(RobotVisualizer)和RQt(RosQt),方便開(kāi)發(fā)者實(shí)時(shí)查看和調(diào)試機(jī)器人的狀態(tài)、傳感器數(shù)據(jù)和運(yùn)動(dòng)軌跡。5)強(qiáng)大的生態(tài)系統(tǒng):ROS生態(tài)系統(tǒng)中存在眾多的第三方軟件包和庫(kù),支持各種功能,如機(jī)器人感知、導(dǎo)航、運(yùn)動(dòng)控制等,能夠滿足不同應(yīng)用需求。7.1.2ROS架構(gòu)ROS一般分成操作系統(tǒng)(OperationSystem)層、中間層和應(yīng)用層。目前ROS分成ROS1和ROS2兩種,本章采用的演示環(huán)境是Ubuntu18.04+ROS(MelodicMorenia),是基于ROS1來(lái)操作的,為避免混淆,下文ROS均表示ROS1。ROS的架構(gòu)如下圖所示。ROS并不是一個(gè)傳統(tǒng)意義上的操作系統(tǒng),要依托于Linux系統(tǒng)在OS層,可以直接使用ROS官方支持度最好的Ubuntu操作系統(tǒng),也可以使用macOS、Arch、Debian等操作系統(tǒng)。7.1.2ROS架構(gòu)其次,Linux并沒(méi)有針對(duì)機(jī)器人開(kāi)發(fā)提供特殊的中間件,因此ROS在中間層做了大量工作,其中最重要的就是基于TCPROS/UDPROS的通信系統(tǒng)。ROS的通信系統(tǒng)基于TCP/UDP網(wǎng)絡(luò),在此之上進(jìn)行了再次封裝,也就是TCPROS/UDPROS。通信系統(tǒng)使用發(fā)布/訂閱、客戶端/服務(wù)器等模型,實(shí)現(xiàn)多種通信機(jī)制的數(shù)據(jù)傳輸。在通信機(jī)制之上,ROS提供了大量機(jī)器人開(kāi)發(fā)相關(guān)的庫(kù),如數(shù)據(jù)類(lèi)型定義、坐標(biāo)變換、運(yùn)動(dòng)控制等,可以提供給應(yīng)用層使用。7.1.2ROS架構(gòu)最后,在應(yīng)用層,ROS需要運(yùn)行一個(gè)管理者——Master,負(fù)責(zé)管理整個(gè)系統(tǒng)的正常運(yùn)行。ROS社區(qū)內(nèi)共享了大量的機(jī)器人應(yīng)用功能包,這些功能包內(nèi)的模塊以節(jié)點(diǎn)為單位運(yùn)行,以ROS標(biāo)準(zhǔn)的輸入輸出作為接口,開(kāi)發(fā)者不需要關(guān)注模塊的內(nèi)部實(shí)現(xiàn)機(jī)制,只需要了解接口規(guī)則即可實(shí)現(xiàn)復(fù)用,極大地提高了開(kāi)發(fā)效率。7.1.3相關(guān)名詞解釋在使用ROS開(kāi)發(fā)機(jī)器人時(shí),總是不可避免的要接觸一些在ROS中特定的重要名詞概念。1)節(jié)點(diǎn)節(jié)點(diǎn)(Node)就是一些執(zhí)行運(yùn)算任務(wù)的進(jìn)程,一個(gè)系統(tǒng)一般由多個(gè)節(jié)點(diǎn)組成,也可以稱(chēng)為“軟件模塊”。節(jié)點(diǎn)概念的引入使得基于ROS的系統(tǒng)在運(yùn)行時(shí)更加形象。如下圖所示,在這個(gè)圖中,進(jìn)程就是圖中的節(jié)點(diǎn),而端對(duì)端的連接關(guān)系就是節(jié)點(diǎn)之間的連線。7.1.3相關(guān)名詞解釋2)消息節(jié)點(diǎn)之間最重要的通信機(jī)制就是基于發(fā)布/訂閱模型的消息(Message)通信。每一個(gè)消息都是一種嚴(yán)格的數(shù)據(jù)結(jié)構(gòu),支持標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型(整型、浮點(diǎn)型、布爾型等),也支持嵌套結(jié)構(gòu)和數(shù)組(類(lèi)似于C語(yǔ)言的結(jié)構(gòu)體struct),還可以根據(jù)需求由開(kāi)發(fā)者自主定義。例如下圖就是利用接口定義語(yǔ)言描述的一個(gè)點(diǎn)的消息。7.1.3相關(guān)名詞解釋3)話題消息以一種發(fā)布/訂閱(Publish/Subscribe)的方式傳遞(見(jiàn)下圖)。一個(gè)節(jié)點(diǎn)可以針對(duì)一個(gè)給定的話題(Topic)發(fā)布消息(稱(chēng)為發(fā)布者),也可以關(guān)注某個(gè)話題并訂閱特定類(lèi)型的數(shù)據(jù)(稱(chēng)為訂閱者)。發(fā)布者和訂閱者并不了解彼此的存在,系統(tǒng)中可能同時(shí)有多個(gè)節(jié)點(diǎn)發(fā)布或者訂閱同一個(gè)話題的消息。7.1.3相關(guān)名詞解釋4)服務(wù)雖然基于話題的發(fā)布/訂閱模型是一種很靈活的通信模式,但是對(duì)于雙向的同步傳輸模式并不適合。在ROS中,我們稱(chēng)這種同步傳輸模式為服務(wù)(Service),其基于客戶端/服務(wù)器(Client/Server)模型,包含兩個(gè)部分的通信數(shù)據(jù)類(lèi)型:一個(gè)用于請(qǐng)求,另一個(gè)用于應(yīng)答,類(lèi)似于Web服務(wù)器。與話題不同的是,ROS中只允許有一個(gè)節(jié)點(diǎn)提供指定命名的服務(wù)。7.1.3相關(guān)名詞解釋5)節(jié)點(diǎn)管理器為了統(tǒng)籌管理以上概念,系統(tǒng)當(dāng)中需要有一個(gè)控制器使得所有節(jié)點(diǎn)有條不紊地執(zhí)行,這就是ROS節(jié)點(diǎn)管理器(ROSMaster)。ROSMaster通過(guò)遠(yuǎn)程過(guò)程調(diào)用(RPC,RemoteProcedureCall)提供登記列表和對(duì)其他計(jì)算圖表的查找功能,幫助ROS節(jié)點(diǎn)之間相互查找、建立連接,同時(shí)還為系統(tǒng)提供參數(shù)服務(wù)器,管理全局參數(shù)。ROSMaster就是一個(gè)管理者,沒(méi)有它的話,節(jié)點(diǎn)將無(wú)法找到彼此,也無(wú)法交換消息或調(diào)用服務(wù),整個(gè)系統(tǒng)將會(huì)癱瘓,由此可見(jiàn)其在ROS系統(tǒng)中的重要性。7.1.3相關(guān)名詞解釋6)文件系統(tǒng)類(lèi)似于操作系統(tǒng),ROS將所有文件按照一定的規(guī)則進(jìn)行組織,不同功能的文件被放置在不同的文件夾下,如右圖所示。功能包(Package):功能包是ROS軟件中的基本單元,包含ROS節(jié)點(diǎn)、庫(kù)、配置文件等。功能包清單(PackageManifest):每個(gè)功能包都包含一個(gè)名為package.xml的功能包清單,用于記錄功能包的基本信息,包含作者信息、許可信息、依賴選項(xiàng)、編譯標(biāo)志等。元功能包(MetaPackage):在新版本的ROS中,將原有功能包集(Stack)的概念升級(jí)為“元功能包”,主要作用都是組織多個(gè)用于同一目的的功能包。例如一個(gè)ROS導(dǎo)航的元功能包中會(huì)包含建模、定位、導(dǎo)航等多個(gè)功能包。消息(Message)類(lèi)型:消息是ROS節(jié)點(diǎn)之間發(fā)布/訂閱的通信信息,可以使用ROS提供的消息類(lèi)型,也可以使用.msg文件在功能包的msg文件夾下自定義所需要的消息類(lèi)型。服務(wù)(Service)類(lèi)型:服務(wù)類(lèi)型定義了ROS客戶端/服務(wù)器通信模型下的請(qǐng)求與應(yīng)答數(shù)據(jù)類(lèi)型,可以使用ROS系統(tǒng)提供的服務(wù)類(lèi)型,也可以使用.srv文件在功能包的srv文件夾中進(jìn)行定義。代碼(Code):用來(lái)放置功能包節(jié)點(diǎn)源代碼的文件夾。7.1.4ROS通信機(jī)制ROS的分布式框架,為用戶提供多節(jié)點(diǎn)(進(jìn)程)之間的通信服務(wù),所有軟件功能和工具都建立在這種分布式通信機(jī)制上,所以ROS的通信機(jī)制是底層也是核心的技術(shù)。在大多數(shù)應(yīng)用場(chǎng)景下,盡管不需要關(guān)注底層通信的實(shí)現(xiàn)機(jī)制,但是了解其相關(guān)原理一定會(huì)幫助我們?cè)陂_(kāi)發(fā)過(guò)程中更好地使用ROS。以下就ROS核心的三種通信機(jī)制進(jìn)行介紹。話題通信(發(fā)布訂閱模式)服務(wù)通信(請(qǐng)求響應(yīng)模式)參數(shù)服務(wù)器(參數(shù)共享模式)7.1.4ROS通信機(jī)制話題在ROS中使用最為頻繁,其通信模型也較為復(fù)雜。如圖所示話題通信實(shí)現(xiàn)模型是比較復(fù)雜的,該模型如下圖所示,該模型中涉及到三個(gè)角色:ROSMaster(管理者)、Talker(發(fā)布者)和Listener(訂閱者)。ROSMaster負(fù)責(zé)保管Talker和Listener注冊(cè)的信息,并匹配話題相同的Talker與Listener,幫助Talker與Listener建立連接,連接建立后,Talker可以發(fā)布消息,且發(fā)布的消息會(huì)被Listener訂閱。1.話題通信機(jī)制7.1.4ROS通信機(jī)制整個(gè)流程由以下步驟實(shí)現(xiàn):(1)Talker注冊(cè)Talker啟動(dòng),通過(guò)1234端口使用RPC向ROSMaster注冊(cè)發(fā)布者的信息,包含所發(fā)布消息的話題名;ROSMaster會(huì)將節(jié)點(diǎn)的注冊(cè)信息加入注冊(cè)列表中。ROSMaster會(huì)將節(jié)點(diǎn)的注冊(cè)信息加入到注冊(cè)表中。(2)Listener注冊(cè)Listener啟動(dòng)后,也會(huì)通過(guò)RPC在ROSMaster中注冊(cè)自身信息,包含需要訂閱消息的話題名。ROSMaster會(huì)將節(jié)點(diǎn)的注冊(cè)信息加入到注冊(cè)表中。(3)ROSMaster實(shí)現(xiàn)信息匹配ROSMaster會(huì)根據(jù)注冊(cè)表中的信息匹配Talker和Listener,并通過(guò)RPC向Listener發(fā)送Talker的RPC地址信息。(4)Listener向Talker發(fā)送請(qǐng)求Listener根據(jù)從Master發(fā)回的Talker地址信息,通過(guò)RPC向Talker發(fā)送連接請(qǐng)求,傳輸訂閱的話題名稱(chēng)、消息類(lèi)型以及通信協(xié)議(TCP/UDP)。(5)Talker確認(rèn)請(qǐng)求Talker接收到Listener的請(qǐng)求后,也是通過(guò)RPC向Listener確認(rèn)連接信息,并發(fā)送自身的TCP地址信息。(6)Listener與Talker件里連接Listener根據(jù)步驟4返回的消息使用TCP與Talker建立網(wǎng)絡(luò)連接。(7)Talker向Listener發(fā)送消息1.話題通信機(jī)制7.1.4ROS通信機(jī)制2.服務(wù)通信機(jī)制服務(wù)是一種帶有應(yīng)答的通信機(jī)制,通信原理如圖所示,與話題的通信相比,其減少了Listener與Talker之間的RPC通信。整個(gè)流程由以下步驟實(shí)現(xiàn):服務(wù)是一種帶有應(yīng)答的通信機(jī)制,通信原理如圖所示,與話題的通信相比,其減少了Listener與Talker之間的RPC通信。具體步驟如下:(1)Talker注冊(cè)Talker啟動(dòng),通過(guò)1234端口使用RPC向ROSMaster注冊(cè)發(fā)布者的信息,包含所提供的服務(wù)名;ROSMaster會(huì)將節(jié)點(diǎn)的注冊(cè)信息加入注冊(cè)列表中。(2)Listener注冊(cè)Listener啟動(dòng),同樣通過(guò)RPC向ROSMaster注冊(cè)訂閱者的信息,包含需要查找的服務(wù)名。(3)ROSMaster進(jìn)行信息匹配Master根據(jù)Listener的訂閱信息從注冊(cè)列表中進(jìn)行查找,如果沒(méi)有找到匹配的服務(wù)提供者,則等待該服務(wù)的提供者加入;如果找到匹配的服務(wù)提供者信息,則通過(guò)RPC向Listener發(fā)送Talker的TCP地址信息。(4)Listener與Talker建立網(wǎng)絡(luò)連接Listener接收到確認(rèn)信息后,使用TCP嘗試與Talker建立網(wǎng)絡(luò)連接,并且發(fā)送服務(wù)的請(qǐng)求數(shù)據(jù)。(5)Talker向Listener發(fā)布服務(wù)應(yīng)答數(shù)據(jù)Talker接收到服務(wù)請(qǐng)求和參數(shù)后,開(kāi)始執(zhí)行服務(wù)功能,執(zhí)行完成后,向Listener發(fā)送應(yīng)答數(shù)據(jù)。2.服務(wù)通信機(jī)制7.1.4ROS通信機(jī)制3.參數(shù)通信機(jī)制參數(shù)類(lèi)似于ROS中的全局變量,由ROSMaster進(jìn)行管理,其通信機(jī)制較為簡(jiǎn)單,不涉及TCP/UDP的通信7.1.4ROS通信機(jī)制整個(gè)流程由以下步驟實(shí)現(xiàn):(1)Talker設(shè)置變量Talker使用RPC向ROSMaster發(fā)送參數(shù)設(shè)置數(shù)據(jù),包含參數(shù)名和參數(shù)值;ROSMaster會(huì)將參數(shù)名和參數(shù)值保存到參數(shù)列表中。(2)Listener查詢參數(shù)值Listener通過(guò)RPC向ROSMaster發(fā)送參數(shù)查找請(qǐng)求,包含所要查找的參數(shù)名。(3)ROSMaster向Listener發(fā)送參數(shù)值Master根據(jù)Listener的查找請(qǐng)求從參數(shù)列表中進(jìn)行查找,查找到參數(shù)后,使用RPC將參數(shù)值發(fā)送給Listener。這里需要注意的是,如果Talker向Master更新參數(shù)值,Listener在不重新查詢參數(shù)值的情況下是無(wú)法知曉參數(shù)值已經(jīng)被更新的。所以在很多應(yīng)用場(chǎng)景中,需要一種動(dòng)態(tài)參數(shù)更新的機(jī)制。3.參數(shù)通信機(jī)制7.1.4ROS通信機(jī)制在深入研究怎么利用ROS開(kāi)發(fā)機(jī)器人之前,我們簡(jiǎn)單嘗試ROS的使用。首先啟動(dòng)ROS自帶的小海龜測(cè)試程序,依次在三個(gè)終端中輸入以下三條指令:$roscore$rosrunturtlesimturtlesim_node$rosrunturtlesimturtle_teleop_key在深入研究怎么利用ROS開(kāi)發(fā)機(jī)器人之前,我們簡(jiǎn)單嘗試ROS的使用。首先啟動(dòng)ROS自帶的小海龜測(cè)試程序,依次在三個(gè)終端中輸入以下三條指令:$roscore$rosrunturtlesimturtlesim_node$rosrunturtlesimturtle_teleop_key3.參數(shù)通信機(jī)制如圖所示,小海龜可以通過(guò)鍵盤(pán)上下左右移動(dòng),表明ROS基本的環(huán)境安裝成功。7.1.5ROS使用簡(jiǎn)例7.2激光雷達(dá)導(dǎo)航系統(tǒng)實(shí)例在ROS系統(tǒng)中,激光雷達(dá)導(dǎo)航系統(tǒng)的典型實(shí)例可參考基于RPLIDARA1雷達(dá)與TARKBOT麥克納姆輪機(jī)器人的實(shí)現(xiàn)。該系統(tǒng)通過(guò)激光雷達(dá)實(shí)時(shí)掃描環(huán)境,利用Cartographer或gmapping算法構(gòu)建2D柵格地圖,并在Rviz中可視化地圖與機(jī)器人位姿。導(dǎo)航功能基于ROSNavigationStack,結(jié)合AMCL算法進(jìn)行定位,通過(guò)move_base包實(shí)現(xiàn)全局路徑規(guī)劃(如A*算法)與局部動(dòng)態(tài)窗口法(DWA)避障,使機(jī)器人能自主繞開(kāi)障礙物并抵達(dá)目標(biāo)點(diǎn)。實(shí)驗(yàn)中,用戶通過(guò)SSH遠(yuǎn)程控制小車(chē),使用鍵盤(pán)或APP遙控移動(dòng),完成地圖閉合后保存為.yaml和.pgm文件,支持后續(xù)多點(diǎn)導(dǎo)航任務(wù)。此外,系統(tǒng)還可擴(kuò)展至多機(jī)協(xié)作場(chǎng)景,通過(guò)激光雷達(dá)數(shù)據(jù)融合實(shí)現(xiàn)多機(jī)器人協(xié)同避障與路徑優(yōu)化,適用于倉(cāng)儲(chǔ)物流、工業(yè)巡檢等場(chǎng)景。7.2.1ROS中的導(dǎo)航功能簡(jiǎn)介機(jī)器人依賴導(dǎo)航技術(shù)實(shí)現(xiàn)自主的移動(dòng)。ROS系統(tǒng)具有導(dǎo)航(Navigation)功能包,包括建圖、定位、規(guī)劃三大功能。它是一個(gè)二維導(dǎo)航堆棧,接收來(lái)自里程計(jì)、傳感器流和目標(biāo)姿態(tài)的信息,并輸出發(fā)送到移動(dòng)底盤(pán)的命令。ROS官方提供了一張導(dǎo)航功能包集的圖示,如下圖所示,該圖中囊括了ROS導(dǎo)航的一些關(guān)鍵技術(shù)。上圖中,白色的部分是必須且已實(shí)現(xiàn)的組件,灰色的部分是可選且已實(shí)現(xiàn)的組件,藍(lán)色的部分是必須為每一個(gè)機(jī)器人平臺(tái)創(chuàng)建的組件。其包括全局地圖、自身定位、路徑規(guī)劃、運(yùn)動(dòng)控制、環(huán)境感知五個(gè)主要過(guò)程值得注意的是機(jī)器人在定位過(guò)程中,對(duì)與參考坐標(biāo)系的使用,在ROS系統(tǒng)里有兩種常用的方式:1)通過(guò)里程計(jì)定位:實(shí)時(shí)收集機(jī)器人的速度信息,計(jì)算并發(fā)布機(jī)器人坐標(biāo)系與父級(jí)參考系的相對(duì)關(guān)系。2)通過(guò)傳感器定位:傳感器收集外界環(huán)境信息,通過(guò)匹配計(jì)算并發(fā)布機(jī)器人坐標(biāo)系與父級(jí)參考系的相對(duì)關(guān)系。上述兩種定位實(shí)現(xiàn)中,機(jī)器人坐標(biāo)系一般使用機(jī)器人模型中的根坐標(biāo)系(base_link或base_footprint),里程計(jì)定位時(shí),父級(jí)坐標(biāo)系一般稱(chēng)之為odom,如果通過(guò)傳感器定位,父級(jí)參考系一般稱(chēng)之為map。當(dāng)二者結(jié)合使用時(shí),map和odom都是機(jī)器人模型根坐標(biāo)系的父級(jí),這是不符合坐標(biāo)變換中"單繼承"的原則的,所以,一般會(huì)將轉(zhuǎn)換關(guān)系設(shè)置為:map->doom->base_link或base_footprint。7.2.1ROS中的導(dǎo)航功能簡(jiǎn)介7.2.2導(dǎo)航機(jī)器人模型搭建導(dǎo)航機(jī)器人模型搭建是一個(gè)融合硬件集成、軟件配置與算法優(yōu)化的系統(tǒng)性工程,核心步驟包括:硬件層面需選配差速底盤(pán)、激光雷達(dá)、攝像頭等組件并完成電路連接;軟件層面需部署ROS框架,配置傳感器驅(qū)動(dòng)及URDF機(jī)器人模型;算法層面則通過(guò)SLAM(如Gmapping或Cartographer)實(shí)現(xiàn)環(huán)境建模與定位,并結(jié)合導(dǎo)航棧(如Nav2或move_base)完成路徑規(guī)劃與動(dòng)態(tài)避障;最后通過(guò)TF樹(shù)驗(yàn)證、參數(shù)調(diào)優(yōu)及多傳感器融合優(yōu)化系統(tǒng)性能,確保機(jī)器人實(shí)現(xiàn)精準(zhǔn)導(dǎo)航與智能交互。7.2.3激光雷達(dá)導(dǎo)航實(shí)現(xiàn)激光雷達(dá)導(dǎo)航的實(shí)現(xiàn)基于激光雷達(dá)(LiDAR)通過(guò)發(fā)射激光脈沖并接收反射信號(hào),利用飛行時(shí)間(ToF)原理精確計(jì)算目標(biāo)距離,結(jié)合掃描技術(shù)生成環(huán)境的三維點(diǎn)云數(shù)據(jù)。其核心流程包括:激光發(fā)射器向周?chē)h(huán)境發(fā)射激光束,接收器捕獲反射信號(hào)后,通過(guò)光速與時(shí)間差計(jì)算障礙物距離,并結(jié)合掃描系統(tǒng)(如旋轉(zhuǎn)或固態(tài)掃描)獲取多角度數(shù)據(jù),形成高精度三維點(diǎn)云地圖。隨后,通過(guò)SLAM(同步定位與地圖構(gòu)建)算法,將點(diǎn)云數(shù)據(jù)與慣性導(dǎo)航系統(tǒng)(IMU)、GPS等傳感器信息融合,實(shí)時(shí)更新設(shè)備的位置、速度和姿態(tài),實(shí)現(xiàn)動(dòng)態(tài)環(huán)境中的精準(zhǔn)定位與路徑規(guī)劃。例如,在自動(dòng)駕駛中,激光雷達(dá)可識(shí)別車(chē)道線、行人及障礙物,結(jié)合算法預(yù)判移動(dòng)軌跡,確保安全避障;在無(wú)人機(jī)或機(jī)器人領(lǐng)域,則通過(guò)點(diǎn)云建模實(shí)現(xiàn)復(fù)雜場(chǎng)景的自主導(dǎo)航。這一技術(shù)依賴高效的數(shù)據(jù)處理(如濾波、點(diǎn)云配準(zhǔn))和多傳感器協(xié)同,最終為智能系統(tǒng)提供魯棒的環(huán)境感知與決策支持。7.3視覺(jué)導(dǎo)航系統(tǒng)實(shí)例在ROS中,視覺(jué)導(dǎo)航系統(tǒng)典型實(shí)例為:基于RGB-D相機(jī)(如IntelRealSenseD435)實(shí)時(shí)采集深度與圖像數(shù)據(jù),通過(guò)視覺(jué)SLAM算法(如rtabmap或ORB-SLAM3)構(gòu)建3D點(diǎn)云地圖并定位,結(jié)合ROSNavigationStack的全局A*路徑規(guī)劃與局部DWA動(dòng)態(tài)避障,實(shí)現(xiàn)自主導(dǎo)航。系統(tǒng)通過(guò)Rviz可視化地圖與軌跡,支持多傳感器融合與實(shí)時(shí)任務(wù)調(diào)整,適用于室內(nèi)服務(wù)機(jī)器人或無(wú)人機(jī)場(chǎng)景。7.3.1深度相機(jī)模型實(shí)現(xiàn)在諸多SLAM算法中,一般都需要訂閱激光雷達(dá)數(shù)據(jù)用于構(gòu)建地圖,因?yàn)榧す饫走_(dá)可以感知周?chē)h(huán)境的深度信息,而深度相機(jī)也具備感知深度信息的功能,但是激光雷達(dá)價(jià)格比較昂貴,可以選用深度相機(jī)(Kinect)代替激光雷達(dá),不過(guò)二者發(fā)布的消息類(lèi)型是完全不同的,如果想要實(shí)現(xiàn)傳感器的置換,那么就需要將深度相機(jī)發(fā)布的三維的圖形信息轉(zhuǎn)換成二維的激光雷達(dá)信息,這一功能就是通過(guò)ROS中的一個(gè)功能包:depthimage_to_laserscan來(lái)實(shí)現(xiàn)的。在轉(zhuǎn)換之前,先來(lái)測(cè)試一下寫(xiě)好的相機(jī)模型,終端執(zhí)行以下命令:#終端1$source./devel/setup.bash$roslaunchurdf_gazebotest.launch
#終端2$source./devel/setup.bash$roslaunchurdf_rvizCar.launch選擇深度相機(jī)的話題,可得到右圖所示結(jié)果7.3.2深度相機(jī)建圖導(dǎo)航實(shí)現(xiàn)在kinect中也可以以點(diǎn)云的方式顯示感知周?chē)h(huán)境,但是需要先進(jìn)行坐標(biāo)變換,首先在src/urdf_gazebo/urdf/gazebo/depthCamera.xacro文件中修改:<frameName>support_depth</frameName>然后在src/urdf_gazebo/launch/test.launch中添加坐標(biāo)變換關(guān)系:<nodepkg="tf2_ros"type="static_transform_publisher"name="static_transform_publisher"args="000-1.570-1.57/support/support_depth"/>最后在終端執(zhí)行以下命令:#終端1$source./devel/setup.bash$roslaunchurdf_gazebotest.launch
#終端2$source./devel/setup.bash$roslaunchurdf_rvizCar.launch添加PointCloud2話題,可以得到如右圖所示的結(jié)果,中間就是點(diǎn)云圖。在ROS系統(tǒng)中完成深度相機(jī)建圖導(dǎo)航的實(shí)現(xiàn),需先安裝深度相機(jī)驅(qū)動(dòng)及導(dǎo)航功能包(如rtabmap-ros),通過(guò)depthimage_to_laserscan將深度圖像轉(zhuǎn)換為偽激光數(shù)據(jù),利用RTAB-Map等SLAM算法構(gòu)建三維柵格地圖,結(jié)合move_base導(dǎo)航包進(jìn)行路徑規(guī)劃,并通過(guò)閉環(huán)檢測(cè)優(yōu)化地圖精度,最后在Rviz中可視化地圖與導(dǎo)航路徑,實(shí)現(xiàn)機(jī)器人自主定位與避障。7.3.2深度相機(jī)建圖導(dǎo)航實(shí)現(xiàn)7.4機(jī)器人平臺(tái)自主導(dǎo)航實(shí)例本節(jié)導(dǎo)航實(shí)例采用Turtlebot3機(jī)器人,TurtleBot3的目標(biāo)是大幅降低平臺(tái)的尺寸和價(jià)格,而不會(huì)犧牲性能,功能和質(zhì)量。由于提供了不同可選,如底盤(pán),計(jì)算機(jī)和傳感器,TurtleBot3可以通過(guò)各種方式進(jìn)行定制。7.4.1環(huán)境搭建機(jī)器人依賴導(dǎo)航技術(shù)實(shí)現(xiàn)自主的移動(dòng)。ROS系統(tǒng)具有導(dǎo)航(Navigation)功能包,包括建圖、定位、規(guī)劃三大功能。它是一個(gè)二維導(dǎo)航堆棧,接收來(lái)自里程計(jì)、傳感器流和目標(biāo)姿態(tài)的信息,并輸出發(fā)送到移動(dòng)底盤(pán)的命令。ROS官方提供了一張導(dǎo)航功能包集的圖示,如下圖所示,該圖中囊括了ROS導(dǎo)航的一些關(guān)鍵技術(shù)。7.4.2仿真測(cè)試
結(jié)合之前的內(nèi)容,首先建圖,保存地圖,然后在已知地圖環(huán)境下進(jìn)行路徑規(guī)劃,可同時(shí)啟用局部規(guī)劃策略,通過(guò)激光雷達(dá)SLAM輔助局部建圖,進(jìn)行局部避障。
首先,打開(kāi)Gazebo以及Rviz:
再開(kāi)一個(gè)終端,打開(kāi)鍵盤(pán)控制節(jié)點(diǎn),用于控制小車(chē)運(yùn)動(dòng)建圖,如右圖(上)所示。
保存好圖像過(guò)后,關(guān)閉打開(kāi)Rviz的終端(終端2),然后在終端2中執(zhí)行Turtlebot3源碼里邊的導(dǎo)航包文件。結(jié)果如右圖(下)所示。7.5無(wú)人機(jī)平臺(tái)自主導(dǎo)航實(shí)例上一節(jié)的導(dǎo)航實(shí)例仿真基于激光雷達(dá)的輪式機(jī)器人,本節(jié)將在無(wú)人機(jī)平臺(tái)上實(shí)現(xiàn)自主導(dǎo)航,由于目前激光雷達(dá)的體積一般較大,不適用于小型的四旋翼無(wú)人機(jī)用于機(jī)載建圖,因此,本節(jié)使用深度相機(jī)完成四旋翼無(wú)人機(jī)導(dǎo)航。7.5.1實(shí)現(xiàn)框架前面章節(jié)中,提到過(guò)基于相機(jī)的地圖構(gòu)建過(guò)程,本節(jié)采用魯棒性更優(yōu)的實(shí)時(shí)視覺(jué)SLAM算法框架,分為前端和后端,前端提取視覺(jué)信息(單目或者雙目視覺(jué)特征點(diǎn))并進(jìn)行跟蹤,后端處理前端得到的特征點(diǎn)跟蹤信息,可融合IMU,GPS等外部信息,利用優(yōu)化算法實(shí)時(shí)得出當(dāng)前的狀態(tài)。本節(jié)的開(kāi)源代碼EGO-Planner(Fast-Drone-250)旋翼無(wú)人機(jī)軌跡規(guī)劃算法目前有以下
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織雙節(jié)活動(dòng)方案
- 公司組織部活動(dòng)方案
- 公司日常體育活動(dòng)方案
- 公司節(jié)約成本活動(dòng)方案
- 公司網(wǎng)上銷(xiāo)售活動(dòng)方案
- 公司文旅活動(dòng)方案
- 公司收入策劃方案
- 公司組織外省旅游活動(dòng)方案
- 2025年系統(tǒng)工程基本原理及其應(yīng)用考試試題及答案
- 2025年網(wǎng)絡(luò)直播運(yùn)營(yíng)管理師職業(yè)資格考試試題及答案
- 《商場(chǎng)促銷(xiāo)活動(dòng)策劃》課件
- 多模態(tài)成像技術(shù)在醫(yī)學(xué)中的應(yīng)用-全面剖析
- 郭秀艷-實(shí)驗(yàn)心理學(xué)-練習(xí)題及答案
- 員工測(cè)試題目及答案
- 《用電飯煲蒸米飯》(教案)-2024-2025學(xué)年四年級(jí)上冊(cè)勞動(dòng)魯科版
- 七年級(jí)英語(yǔ)下冊(cè) Unit 1 Can you play the guitar教學(xué)設(shè)計(jì) (新版)人教新目標(biāo)版
- 腎臟內(nèi)科護(hù)理疑難病例討論
- 物業(yè)電梯管理制度及規(guī)范
- 果蔬類(lèi)營(yíng)養(yǎng)知識(shí)培訓(xùn)課件
- 2025年深圳市勞動(dòng)合同保密協(xié)議官方模板
- 信息化建設(shè)項(xiàng)目質(zhì)量控制措施
評(píng)論
0/150
提交評(píng)論