




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