版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2章機器人操作系統(tǒng)基礎目錄2.1ROS安裝目錄2.2測試ROS2.3
ROS架構2.4工作空間2.5創(chuàng)建功能包2.6本章小結2.1ROS安裝目錄ROS默認的安裝目錄為“文件/其他位置/計算機/opt”,找到“ros”文件夾并打開,可以看到一個以當前安裝的ROS版本號命名的文件夾,這里面就包含所有ROS的文件(見圖2-1),共有5個文件夾。圖2-1ROS默認文件夾2.1.1bin文件夾bin文件夾中的內(nèi)容如圖2-2所示,里面放置的是一些終端指令,如后續(xù)會經(jīng)常用到的“catkin_make”“roslaunch”“rosrun”等。圖2-2bin文件夾中的內(nèi)容2.1.2etc文件夾etc文件夾中的內(nèi)容如圖2-3所示,它主要是用來存放“catkin”和“ros”的配置文件的文件夾。圖2-3etc文件夾中的內(nèi)容2.1.3include文件夾include文件夾中的內(nèi)容如圖2-4所示,里面放置的是通過終端安裝的功能包里的頭文件。某個功能包中具有一些頭文件,在創(chuàng)建功能包時,如果需要依賴另一個功能包,就必須包含那個功能包的頭文件。圖2-4include文件夾中的內(nèi)容2.1.4lib文件夾lib文件夾中的內(nèi)容如圖2-5所示,里面放置的是通過終端安裝的功能包里的可執(zhí)行程序,也就是功能包中的節(jié)點,運行其中的節(jié)點就可以啟動相應功能。圖2-5lib文件夾中的內(nèi)容2.1.5share文件夾share文件夾中的內(nèi)容如圖2-6所示,里面放置的是通過終端安裝的功能包里的共享數(shù)據(jù),是功能包里面接口的一些具體信息。接口包含話題、服務、action等。圖2-6share文件夾中的內(nèi)容2.2測試ROS2.2.1查看ROS安裝版本前面已經(jīng)介紹了ROS安裝的位置,并且明確了安裝的ROS版本為“noetic”,接下來我們可以通過在終端中輸入指令查看ROS版本。在終端中輸入“rosversion-d”,在終端窗口里顯示出了指令“noetic”,如圖2-7所示。這個指令可以幫助我們快速了解計算機當前安裝的ROS版本。圖2-7查看ROS版本2.2.2控制小烏龜(1)打開一個終端,輸入如下指令。roscore這條指令是啟動ROS節(jié)點管理器,如圖2-8所示。圖2-8啟動ROS節(jié)點管理器2.2.2控制小烏龜(2)保持之前的終端不要關閉,打開一個新終端,輸入如下指令。rosrunturtlesimturtlesim_node這條指令是啟動小烏龜節(jié)點,運行后彈出一個“TurtleSim”窗口,在其中心有一只靜止的小烏龜(見圖2-9)。(3)保持之前的終端不要關閉,打開一個新的終端,輸入如下指令。rosrunturtlesimturtle_teleop_key這條指令是啟動鍵盤控制小烏龜移動的節(jié)點,運行后可以通過鍵盤上的方向鍵控制小烏龜在窗口內(nèi)移動并留下軌跡(見圖2-10)。2.2.2控制小烏龜圖2-9小烏龜靜止圖2-10小烏龜移動2.3
ROS架構ROS架構分為三個部分:開源社區(qū)、文件系統(tǒng)和計算圖,如圖2-11所示。圖2-11ROS架構圖2.3.1ROS開源社區(qū)ROS用戶可以在通過網(wǎng)絡建立的開源社區(qū)中共享和獲取知識、代碼與算法?,F(xiàn)在開源社區(qū)中的資源非常豐富,這些資源包括以下幾種。(1)ROSDistribution:它類似于Linux發(fā)行版,是一個特定版本的所有程序包集合。(2)ROSWiki:它是用于記錄有關ROS信息的主要論壇,大家都可以進行注冊、登錄,分享、更正、更新和編寫教程等。(3)ROSRepository:ROS依賴于共享開源代碼與軟件庫,不同的機構組織能夠在這里發(fā)布或共享各自的機器人軟件或程序。(4)ROSAnswer:它是用于咨詢ROS相關問題的網(wǎng)站。2.3.2ROS文件系統(tǒng)ROS文件系統(tǒng)是指ROS代碼在計算機系統(tǒng)硬盤上的組織形式。和其他操作系統(tǒng)相似,ROS文件系統(tǒng)根據(jù)其中不同功能的組件,將其各個組件放置在不同的文件夾中,其結構如圖2-12所示。ROS文件系統(tǒng)的組織形式是一個標準化的架構,編寫的時候不要改變,以下是常用的各文件系統(tǒng)。(1)catkinworkspace:工作空間,是用戶自定義的存放工程開發(fā)相關文件的文件夾,包含3個文件夾,即src、Build、devel。(2)src:源碼空間,用于儲存功能包、項目、克隆包等。(3)Build:編譯空間,用于儲存CMake和catkin的緩存信息、配置信息及其他中間文件。(4)devel:開發(fā)空間,用于儲存變異后生成的目標文件,包括頭文件、動態(tài)或靜態(tài)鏈接庫和可執(zhí)行文件等,這些都是可以直接運行的程序。2.3.2ROS文件系統(tǒng)圖2-12ROS文件系統(tǒng)結構2.3.2ROS文件系統(tǒng)(5)Package:功能包。單個功能包稱為軟件包,多個功能包稱為堆。功能包是ROS程序的基本單元,每個功能包可以包含多個節(jié)點(進程或可執(zhí)行文件)、程序庫、腳本、配置文件及其他可以手動創(chuàng)建的東西。這些內(nèi)容可以在邏輯上被定義為一個完整的軟件模塊。(6)CMakeList.txt:編譯規(guī)則文件,用于設定編譯規(guī)則,如源文件、依賴項和目標文件等。2.3.2ROS文件系統(tǒng)(7)Manifest(Package.xml):功能包清單文件,是一個名為Package.xml的XML文件,它必須位于功能包文件夾中。它是對功能包相關信息的介紹,用于定義軟件包相關信息之間的依賴關系,如功能包名稱、版本、作者、描述(某功能的軟件包)、維護者的郵箱、許可,這些可以改也可以不改,但是格式不能出錯;這里面還包括編譯標志及對其他功能包的依賴項。注意,系統(tǒng)包的依賴關系也應該在Package.xml中聲明,當用戶需要在設備上通過源代碼來構建包時,這一點是非常有必要的。(8)scripts:用于儲存Python文件、Linux操作系統(tǒng)下的shell文件和其他可執(zhí)行文件。2.3.2ROS文件系統(tǒng)(9)msg:在ROS框架中,節(jié)點(Node)之間通過將消息發(fā)布到話題(Topic)中來實現(xiàn)彼此的異步通信,這里的話題是一種數(shù)據(jù)結構,而消息文件的擴展名為.msg,它位于功能包msg中,即msg是用來儲存消息通信格式的文件夾。(10)srv:ROS服務。ROS節(jié)點還可以通過系統(tǒng)服務的調用來同步交換請求(Request)和響應(Response)消息。這些交換請求和響應消息位于srv文件夾中,擴展名為.srv。(11)include:用于儲存頭文件。(12)src:用來儲存源文件。2.3.2ROS文件系統(tǒng)(13)launch:用于儲存launch文件。launch文件的作用是一次性運行多個節(jié)點。如果要獲得關于ROS環(huán)境中的功能包和棧的信息,如它們的路徑、依賴關系等,則需要用到ROS文件系統(tǒng)工具。它們可以幫助我們查詢ROS工作空間中的相關文件,可以簡化操作,常用的指令有如下幾個。(1)rospack可以得到一個包的信息,rospackhelp指令會運行出來許多相關操作,其中find的功能是得到一個功能包的路徑。格式:rospackfind功能包名。實例:rospackfindroscpp。結果:/opt/ros/melodic/share/roscpp。2.3.2ROS文件系統(tǒng)(2)roscd可以直接進入pkg,不需要使用絕對路徑。格式:roscd包名。實例:roscdroscpp。結果:/opt/ros/melodic/share/roscpp$。注意:roscd只會在ROS_PACKAGE_PATH環(huán)境變量指定的路徑中查找ros包,并進入這個包,所以在使用roscd來進入一個pkg前,一定要保證pkg的路徑在ROS_PACKAGE_PATH中。2.3.2ROS文件系統(tǒng)(3)rosls直接列出一個包的目錄,也不需要使用絕對路徑,只需要一個包名即可。格式:rosls包名。實例:roscdroscpp_tutorials。結果:cmakelaunchPackage.xmlsrv。(4)Tab自動補全。對于已經(jīng)存在的文件,可以只輸入文件名的前面幾個字母,剩余部分使用“Tab”鍵補全。2.3.3ROS計算圖ROS軟件的各功能以節(jié)點為單位獨立運行。ROS創(chuàng)建了連接所有節(jié)點的通信網(wǎng)絡,通過這個網(wǎng)絡,各個相互獨立的節(jié)點可以進行交互。ROS計算圖如圖2-13所示,計算圖這一層級中包括節(jié)點、節(jié)點管理器、參數(shù)服務器、消息、主題、服務和消息記錄包。圖2-13ROS計算圖2.3.3ROS計算圖1.節(jié)點在ROS中,節(jié)點相當于模塊,一個機器人具有很多的功能,每個功能都可以獨立出來成為功能模塊,而節(jié)點就相當于軟件層面的功能模塊,使軟件設計更加便捷。像2.2節(jié)中運行rosrunturtlesimturtlesim_node和rosrunturtlesimturtle_teleop_key兩步,就是啟動了對應的節(jié)點。2.節(jié)點管理器節(jié)點管理器在ROS中扮演著管理者的角色,管理著各個節(jié)點,保證節(jié)點正常運行,節(jié)點需要先在節(jié)點管理器中進行注冊,才能融入ROS程序這個“大家庭”進行交流。2.2節(jié)中的“roscore”指令的作用就是啟動節(jié)點管理器。2.3.3ROS計算圖3.參數(shù)服務器參數(shù)服務器相當于ROS程序“大家庭”中的“家族圖書館”,是可以通過網(wǎng)絡訪問的共享字典,節(jié)點將關鍵字儲存在節(jié)點管理器中,節(jié)點使用參數(shù)服務器儲存和檢索參數(shù)。4.消息消息相當于ROS程序“大家庭”中各成員聯(lián)系所使用的“書信”,節(jié)點之間通過傳遞消息進行通信,每種消息都有自己嚴格的數(shù)據(jù)結構。2.3.3ROS計算圖5.主題主題相當于ROS所在世界的“郵局”,可以有針對性地傳遞消息。在2.2節(jié)中已經(jīng)運行的那兩個指令的狀態(tài)基礎上,可以打開一個新的終端運行如下指令。rqt_graph運行后會彈出如圖2-14所示的rqt_graph_RosGraph-rqt界面,可以看出節(jié)點“/teleop_turtle”和節(jié)點“/turtlesim”之間通過名為“/turtle1/cmd_vel”的主題進行通信。節(jié)點“/teleop_turtle”在此主題上發(fā)布按鍵輸入消息,節(jié)點“/turtlesim”訂閱此主題接收該消息。圖2-14rqt_graph_RosGraph_rqt界面6.服務服務相當于升級版的主題,相對于主題來說,服務可以進行同步消息傳遞,其基于客戶端/服務器(Client/Server)模型,包含兩個部分的通信數(shù)據(jù)類型:一個用于請求;另一個用于應答,類似于Web服務器。與主題不同的是,ROS中只允許有一個節(jié)點提供指定命名的服務。本節(jié)介紹了ROS計算圖下的各組成部分,在2.2節(jié)中,用到了“rosrun”指令,現(xiàn)在具體介紹一下“rosrun”指令格式。指令格式:rosrun[package_name][node_name]如果需要啟動多個節(jié)點,可以使用“roslaunch”指令批量運行。指令格式:roslaunch[package_name][launch_name.launch]“roslaunch”會在啟動節(jié)點前檢測系統(tǒng)是否啟動了節(jié)點管理器,如果沒有,那么它會自動打開節(jié)點管理器。2.4工作空間在前面的章節(jié)中已經(jīng)介紹了工作空間及其內(nèi)部結構,接下來我們就要自己手動創(chuàng)建一個工作空間以供后面實驗使用。工作空間直觀理解就是一個文件夾,工作空間不是功能包,一個工作空間中可以有多個功能包。2.4.1創(chuàng)建工作空間(1)打開終端,輸入如下指令。
mkdir-p~/catkin_ws/src
這條指令會先在主文件夾(用戶文件夾)下創(chuàng)建一個名為“catkin_ws”的文件夾,然后在其下創(chuàng)建一個下一級的src文件夾,如圖2-15所示。而使用“mkdir-p”這個指令可以依次創(chuàng)建目錄,即使上一級目錄不存在,也會按照目錄層級自動創(chuàng)建目錄?!?p”表示遞歸創(chuàng)建目錄?!皛/”表示當前用戶名目錄。src文件夾即代碼空間,用戶不能自行用別的名稱代替。工作空間名稱是可以自定義的。圖2-15“catkin_ws”文件夾2.4.1創(chuàng)建工作空間(2)在終端中輸入如下指令。
cd~/catkin_ws/src
這條指令會使終端在“~/catkin_ws/src”目錄下運行,如圖2-16所示。圖2-16運行在“~/catkin_ws/src”目錄下的終端2.4.1創(chuàng)建工作空間(3)在終端中輸入如下指令。catkin_init_workspace這條指令是初始化src文件夾,將其變?yōu)镽OS工作空間。運行后會在“src”文件夾中生成一個名為“CMakeLists.txt”的文件,如圖2-17所示,此時一個最初始的ROS工作空間便創(chuàng)建成功。圖2-17生成“CMakeLists.txt”文件2.4.2編譯工作空間要編譯工作空間,就要先回到工作空間的根目錄。(1)在終端中輸入如下指令。cd~/catkin_ws/這條指令會使終端在“~/catkin_ws”目錄下運行,如圖2-18所示。catkin_ws是指自定義的工作空間名稱。圖2-18運行在“~/catkin_ws/”目錄下的終端2.4.2編譯工作空間(2)在終端中輸入如下指令。catkin_make這條指令是進行編譯的指令,編譯成功后會在“~/catkin_ws”目錄下生成“build”和“devel”兩個文件夾,如圖2-19所示。“devel”文件夾中存放了編譯完成的內(nèi)容。加上2.4.1節(jié)創(chuàng)建的“src”文件夾,此時catkin_ws文件夾下共有三個文件夾。需要注意的是,“catkin_make”如果不在工作空間文件夾下運行,則系統(tǒng)將會報錯。圖2-19生成“build”和“devel”兩個文件夾2.4.2編譯工作空間(3)在終端中輸入如下指令。catkin_init_workspace這條指令是初始化src文件夾,將其變?yōu)镽OS工作空間。運行后會在“src”文件夾中生成一個名為“CMakeLists.txt”的文件,如圖2-17所示,此時一個最初始的ROS工作空間便創(chuàng)建成功.圖2-17生成“CMakeLists.txt”文件2.4.3添加環(huán)境變量將工作空間添加到環(huán)境變量中可以省去每次打開終端時手動刷新的步驟,具體步驟如下。(1)在終端中輸入如下指令。echo"source~/catkin_ws/devel/setup.bash">>~/.bashrc該指令的意思是把“source~/catkin_ws/devel/setup.bash”這條指令加載到“~/.bashrc”這個腳本的后面。實際上,這與直接打開.bashrc文件將“source~/catkin_ws/devel/setup.bash”粘貼進去的結果是一樣的。這樣每次打開終端時,系統(tǒng)就會自動刷新工作空間環(huán)境。這個工作空間中的所有Package都可以在編譯后直接運行,不用再source。(讀者可通過網(wǎng)絡查看其他環(huán)境配置方式或手動配置。)2.4.3添加環(huán)境變量(2)在終端中輸入如下指令。source~/.bashrc使用該指令就可以成功將工作空間添加到環(huán)境變量中,添加后的“~/.bashrc”文件如圖2-20所示,在其最后兩行就包含第1章及這一步添加的環(huán)境變量。工作空間生效后,通過指令“echo$ROS_PACKAGE_PATH”可以查看當前環(huán)境中的工作變量,在當前工作空間中運行以上指令后,會顯示創(chuàng)建的工作空間和二進制安裝的核心庫與依賴包兩個路徑(/home/robot/catkin_ws/src:/opt/ros/melodic/share)。圖2-20添加后的“~/.bashrc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46951-2025建筑施工單位節(jié)水管理規(guī)范
- 吉林省吉林市蛟河市2025-2026學年七年級上學期1月期末考試地理試卷(無答案)
- 貴州省安順市2025-2026學年上學期期末高二數(shù)學試卷(含答案)
- 廣東省中山市2025-2026學年八年級上學期期末測試地理試卷(無答案)
- 2025-2026學年山東省煙臺市高三(上)期末數(shù)學試卷(含答案)
- 12月衍生品月報:衍生品市場提示情緒中性
- 飛機配送員培訓課件模板
- 2026年玉灃科技(西安)有限公司招聘(39人)備考考試題庫及答案解析
- 2026山東事業(yè)單位統(tǒng)考煙臺招遠市招聘47人備考考試題庫及答案解析
- 2026年度延邊州教育局所屬事業(yè)單位教師專項招聘(53人)參考考試題庫及答案解析
- 機動車駕校安全培訓課件
- 2025年役前訓練考試題庫及答案
- 2024VADOD臨床實踐指南:耳鳴的管理課件
- 2025年湖南省公務員錄用考試錄用考試《申論》標準試卷及答案
- 行政崗位面試問題庫及應對策略
- 2025年中信金融業(yè)務面試題庫及答案
- 2025廣東潮州府城文化旅游投資集團有限公司下屬企業(yè)副總經(jīng)理崗位招聘1人筆試歷年備考題庫附帶答案詳解2套試卷
- 城市軌道交通服務與管理崗位面試技巧
- GB/T 46607.1-2025塑料熱固性粉末模塑料(PMCs)試樣的制備第1部分:一般原理及多用途試樣的制備
- 《允許一切發(fā)生》讀書感悟
- 續(xù)保團購會活動方案
評論
0/150
提交評論