《ROS機器人操作系統(tǒng)基礎》 課件 項目3、4 命令行工具的使用、ROS 節(jié)點的啟動_第1頁
《ROS機器人操作系統(tǒng)基礎》 課件 項目3、4 命令行工具的使用、ROS 節(jié)點的啟動_第2頁
《ROS機器人操作系統(tǒng)基礎》 課件 項目3、4 命令行工具的使用、ROS 節(jié)點的啟動_第3頁
《ROS機器人操作系統(tǒng)基礎》 課件 項目3、4 命令行工具的使用、ROS 節(jié)點的啟動_第4頁
《ROS機器人操作系統(tǒng)基礎》 課件 項目3、4 命令行工具的使用、ROS 節(jié)點的啟動_第5頁
已閱讀5頁,還剩87頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

任務一初識命令行工具01任務二使用rosnode命令管理節(jié)點02任務三使用rostopic命令管理話題消息03任務四使用rosservice命令管理服務消息04任務五使用rosbag命令記錄運行數(shù)據(jù)0154任務六使用rosparam命令修改參數(shù)01任務七使用rosmsg命令查看消息0255任務一

初識命令行工具561.?了解ROS常用的命令行工具2.?掌握使用ROS?的命令行工具實現(xiàn)相關功能的方法任務目標57一、ROSshell命令ROSshell命令可以快速地定位、查看并編輯功能包中的文件,ROSshell命令的釋義及詳細說明見下表?;A知識58ROSshell命令的釋義及詳細說明二、ROS執(zhí)行命令ROS執(zhí)行命令是最常用的命令類型,用于啟動ROS節(jié)點管理器以及日志的檢查或刪除等。ROS執(zhí)行命令的釋義及詳細說明見下表。59ROS執(zhí)行命令的釋義及詳細說明三、ROS消息命令ROS消息命令用于獲取ROS系統(tǒng)中的數(shù)據(jù),包括節(jié)點、話題、服務、參數(shù)等,而且可以通過ROS消息命令對數(shù)據(jù)進行儲存并回放。ROS消息命令的釋義及詳細說明見下表。60ROS消息命令的釋義及詳細說明四、ROScatkin命令catkin是開發(fā)者為了高效編譯和整合項目而開發(fā)的工具,ROScatkin命令可以很方便地生成功能包并快速完成功能包的編譯。ROScatkin命令的詳細說明見下表。61ROScatkin命令的詳細說明五、ROS功能包命令ROS功能包命令用于查看與功能包相關的消息和依賴性文件。ROS功能包命令的釋義及詳細說明見下表。62ROS功能包命令的釋義及詳細說明任務二

使用rosnode命令管理節(jié)點631.?熟悉并掌握rosnode命令的使用方法2.?能通過運行rosnode命令控制小海龜任務目標64rosnode命令的使用rosnode是用于顯示ROS節(jié)點調試消息的命令行工具,包括發(fā)布、訂閱、連接等。rosnode主要命令的作用見下表?;A知識6566rosnode主要命令的作用任務三

使用rostopic命令管理話題消息671.?熟悉并掌握rostopic命令的使用方法2.?能通過運行rostopic命令控制小海龜任務目標68rostopic命令的使用rostopic主要命令的作用見下表。基礎知識69rostopic主要命令的作用70rostopic主要命令的作用任務四

使用rosservice命令管理服務消息711.?熟悉并掌握rosservice命令的使用方法2.?能通過運行rosservice命令控制小海龜任務目標72rosservice命令的使用rosservice主要命令的作用見下表?;A知識73rosservice主要命令的作用任務五

使用rosbag命令記錄運行數(shù)據(jù)741.?熟悉并掌握rosbag命令的使用方法2.?能通過運行rosbag命令控制小海龜任務目標75rosbag命令的使用rosbag主要命令的作用見下表?;A知識76rosbag主要命令的作用任務六

使用rosparam命令修改參數(shù)771.?熟悉并掌握rosparam命令的使用方法2.?能通過運行rosparam命令控制小海龜任務目標78一、rosparam命令的使用rosparam主要命令的作用見下表?;A知識79rosparam主要命令的作用二、RGB值RGB色彩模式是工業(yè)領域的顏色標準,它通過調整紅(R)、綠(G)、藍(B)三個顏色通道以及它們的疊加來生成各種顏色。RGB色彩模式涵蓋了人類視覺所能感知的幾乎所有顏色,因此被廣泛應用于各個領域。RGB函數(shù)成功執(zhí)行后會返回一個長整數(shù),用于表示由指定數(shù)值確定的顏色。該函數(shù)的語法為:RGB(RedAsInteger,GreenAsInteger,BlueAsInteger),具體的參數(shù)描述見下表。8081RGB函數(shù)參數(shù)描述需要注意的是,如果其中一個參數(shù)的值超過了255,不會顯示任何錯誤,但該參數(shù)會被視為255處理。這是為了確保顏色數(shù)值在合理范圍內(nèi),避免超出可表示的顏色范圍。任務七

使用rosmsg命令查看消息821.?熟悉并掌握rosmsg命令的使用方法2.?能通過運行rosmsg命令控制小海龜任務目標83rosmsg命令的使用rosmsg主要命令的作用見下表。基礎知識84rosmsg主要命令的作用任務一啟動節(jié)點和節(jié)點管理器的兩種方式01任務二創(chuàng)建工作空間和功能包02任務三使用Python和C++編寫節(jié)點程序03任務四使用launch文件實現(xiàn)節(jié)點啟動和參數(shù)設置04任務五使用launch文件實現(xiàn)多節(jié)點啟動0185任務一

啟動節(jié)點和節(jié)點管理器的兩種方式861.?掌握rosrun?命令的使用方法2.?掌握roslaunch命令的使用方法3.?理解roslaunch命令的優(yōu)點任務目標87一、rosrun命令的使用若要啟動ROS節(jié)點,首先輸入以下命令:$roscore命令執(zhí)行后ROSmaster啟動,同時啟動的還有rosout和parameterserver,其中rosout是負責日志輸出的節(jié)點,其作用是告知用戶當前系統(tǒng)的狀態(tài),包括輸出系統(tǒng)的錯誤、警告等,并將log記錄于日志文件中;parameterserver是參數(shù)服務器,它并不是一個節(jié)點,而是存儲參數(shù)配置的服務器?;A知識88啟動節(jié)點管理器之后,節(jié)點管理器就開始按照系統(tǒng)的安排進行具體的節(jié)點啟動工作。節(jié)點就是一個進程,只不過它在ROS中被賦予了專用的名字——node。package中存放著可執(zhí)行文件,可執(zhí)行文件是靜態(tài)的,當系統(tǒng)運行這些可執(zhí)行文件時,這些文件被加載到內(nèi)存中,就成為了動態(tài)的node。啟動節(jié)點的命令是:$rosrun[package_name][node_name]在ROS中,通常按照以下步驟來啟動系統(tǒng):首先啟動節(jié)點管理器,然后啟動各個節(jié)點。當系統(tǒng)中的節(jié)點數(shù)量增多時,可以選擇使用launch文件進行批量啟動。節(jié)點管理器與節(jié)點、節(jié)點與節(jié)點之間的關系見下圖。8990節(jié)點管理器與節(jié)點、節(jié)點與節(jié)點之間的關系二、roslaunch命令的使用輸入以下命令,啟動ROS節(jié)點和節(jié)點管理器。$roslaunch[package_name][launch_file_name]roslaunch命令會自動檢測ROS系統(tǒng)的roscore進程是否在運行,以確定節(jié)點管理器是否處于運行狀態(tài)。如果roscore未啟動,roslaunch會首先啟動roscore進程,無須運行roscore命令,然后按照launch文件中定義的規(guī)則執(zhí)行啟動過程。launch文件包含了預先配置好的啟動規(guī)則,roslaunch是一個啟動工具,可以一次性按照配置啟動多個節(jié)點,無須在終端中逐個輸入命令。91三、roslaunch命令的優(yōu)點ROS中的launch文件可以簡單理解為一個集合了多個節(jié)點和參數(shù)的文件,launch文件的功能是一次性啟動多個節(jié)點。ROS中通常需要同時運行多個節(jié)點,如果每次開機都需要逐個輸入命令來啟動每個節(jié)點將會非常煩瑣。因此,可以將要啟動的節(jié)點和相應的參數(shù)全部寫入launch文件,然后通過roslaunch命令一次性啟動多個節(jié)點。92相對于使用rosrun命令來單獨運行程序,roslaunch命令有兩個主要優(yōu)點:1.roslaunch命令可以向程序傳遞參數(shù),以便在啟動時動態(tài)地配置節(jié)點的行為。2.roslaunch命令可以同時運行多個節(jié)點,提供了更方便的節(jié)點啟動方式。93任務二

創(chuàng)建工作空間和功能包941.?了解工作空間的作用2.?掌握ROS工作空間的創(chuàng)建、編譯和環(huán)境配置方法3.?了解ROS功能包的典型文件結構4.?掌握ROS功能包的創(chuàng)建方法5.?能創(chuàng)建一個工作空間并在此基礎上創(chuàng)建一個功能包任務目標95一、工作空間的作用在ROS中,創(chuàng)建工作空間有助于組織和管理ROS項目的功能包、編譯、依賴項等,創(chuàng)建工作空間的作用有以下幾點:1.模塊化組織:工作空間允許用戶將ROS項目模塊化組織。ROS項目通常包含多個功能包,每個功能包可能包含節(jié)點、主題、服務、消息定義等。工作空間是用戶創(chuàng)建的一個目錄結構,用戶可以在工作空間中創(chuàng)建和組織這些功能包。這種模塊化結構有助于更好地組織和管理項目?;A知識962.方便編譯和構建:ROS項目需要進行編譯,將源代碼轉化為可執(zhí)行文件,同時需要生成構建文件,如CMakeLists.txt和package.xml。工作空間允許用戶在其中進行編譯,并自動生成構建文件,從而簡化項目構建過程。3.依賴項管理:工作空間有助于管理項目所依賴的其他功能包。ROS中的功能包通常會依賴其他功能包,這些依賴項需要正確配置和安裝。工作空間提供了一個依賴項管理系統(tǒng),可以更輕松地跟蹤和安裝依賴項。974.可移植性:工作空間使ROS項目更具可移植性。用戶可以輕松地將整個工作空間復制到其他計算機上并進行編譯和運行,而無須手動復制和配置每個功能包。5.環(huán)境隔離:用戶可以在不同的工作空間中運行不同版本的ROS項目或依賴項,這有助于環(huán)境隔離和避免沖突。98二、工作空間的創(chuàng)建在ROS中創(chuàng)建工作空間,本質就是將一個新建的文件夾通過工具(catkin_make)編譯成ROS中可以搜索的文件路徑,通過配置環(huán)境變量,使這個文件夾可以被用戶在終端中使用的過程。創(chuàng)建工作空間需要創(chuàng)建一個文件夾,工作空間的名稱可以自行設定,如catkin_ws、myProject_ws等,但要注意工作空間中應包含一個src文件夾,該文件夾用于存放ROS功能包,若不創(chuàng)建該文件夾會導致編譯環(huán)節(jié)出現(xiàn)錯誤。創(chuàng)建工作空間和src文件夾的命令如下:$mkdir-p<workspace_name>/src99三、工作空間的編譯catkin元構建系統(tǒng)是為了高效構建眾多相互依賴但獨立開發(fā)的CMake項目而構建的。catkin_make是將cmake與make的編譯方式做了封裝的指令工具,它簡化了程序cmake編譯的標準工作流程,用法如下:$cd<workspace_name>#終端路徑進入工作空間$catkin_make

#使用catkin_make創(chuàng)建工作空間100以上兩行命令等效于以下多行命令,這是使用cmake方式編譯項目的標準流程示例:$cd<workspace_name>/src#終端路徑進入工作空間$catkin_init_workspace$cd..$mkdirbuild$cdbuild101$cmake../src-DCMAKE_INSTALL_PREFIX=../install-DCATKIN_DEVEL_PREFIX=../devel$make$makeinstall#(該步驟是可選的)編譯完成后,工作空間中應該有三個文件夾:devel、build、src。工作空間的編譯是必不可少的,它可以看作是普通文件與ROS關聯(lián)的橋梁。102四、工作空間的環(huán)境配置工作空間編譯完成后,需要將工作空間的地址告知ROS,即進行工作空間的環(huán)境配置,以便ROS能夠找到并使用新建的工作空間。配置工作空間環(huán)境的命令如下:$echo"source~/<workspace_name>/devel/setup.bash">>~/.bashrc$source~/.bashrc命令執(zhí)行后,將工作空間的環(huán)境變量執(zhí)行文件添加到了終端的啟動腳本中,每次新建終端時都會自動地將工作空間的環(huán)境變量添加到終端。添加完成后可以通過以下命令查看環(huán)境變量:$export|grepROS103五、功能包的典型文件結構功能包是程序和資源文件的集合,在ROS中可以自己創(chuàng)建功能包并編寫程序,也可以使用已有的功能包來實現(xiàn)功能。功能包的典型文件結構如圖所示。104功能包的典型文件結構功能包中各文件夾的作用見下表。105功能包中各文件夾的作用六、功能包的創(chuàng)建catkin_create_pkg命令可以創(chuàng)建一個新功能包,用法如下:$cd~/<workspace>/src$catkin_create_pkg<package_name>[depend1][depend2][depend3]其中,<package_name>為功能包的名稱,[depend1][depend2][depend3]分別為每個依賴的名稱。執(zhí)行該命令后會生成一個功能包,如圖所示。功能包創(chuàng)建完成后,需要重新編譯工作空間才能使用。106107生成的功能包任務三

使用Python和C++編寫節(jié)點程序1081.?了解Python與C++編程語言的區(qū)別2.?了解Python與C++在實際開發(fā)中的區(qū)別3.?使用Python和C++編寫節(jié)點程序任務目標109ROS中的一個軟件包可以包含多個可執(zhí)行文件,這些可執(zhí)行文件在運行后成為進程,最小的進程單元就是節(jié)點,節(jié)點可以是由C++編寫的可執(zhí)行文件或由Python腳本組成的進程。一、Python與C++編程語言的對比Python和C++編程語言主要有以下幾個方面的區(qū)別:首先,就編程語言的特點而言,Python是一種動態(tài)、解釋型語言,語法簡潔、易于學習和理解,適合快速開發(fā)和原型驗證。C++是一種靜態(tài)、編譯型語言,執(zhí)行效率高,適合對性能要求較高的任務和底層開發(fā)。基礎知識110其次,就開發(fā)效率和執(zhí)行效率而言,Python代碼量少,語法簡潔,有豐富的庫和工具支持,適合快速開發(fā)和迭代;相比之下,C++需要更多的代碼量和語法結構,編寫和調試可能會更復雜和耗時。因此,Python比C++的開發(fā)效率更高。但是,C++是一種編譯型語言,代碼在編譯階段轉化為機器碼,執(zhí)行速度快;而Python是解釋型語言,需要在運行時解釋執(zhí)行,執(zhí)行速度相對較慢。因此,C++比Python的執(zhí)行效率更高。最后,就應用場景而言,Python適用于快速原型驗證、數(shù)據(jù)處理、腳本編寫等場景,如機器人的高層控制、任務調度和算法驗證,使用Python可以更快速地實現(xiàn)這些功能。而C++適用于對執(zhí)行效率有較高要求的場景,如底層驅動、實時控制、計算密集型任務等。111二、Python與C++在實際開發(fā)中的區(qū)別1.?編譯Python是一種解釋型語言,而C++是一種編譯型語言。這意味著Python腳本(后綴為“.py”的文件)在運行之前不需要進行編譯,可以直接修改腳本后運行。在ROS中,Python節(jié)點程序通常存放在/scripts目錄下。而C++節(jié)點程序需要先編譯成可執(zhí)行文件,然后才能運行。C++節(jié)點程序的源代碼(后綴為“.cpp”的文件)在運行時并不直接參與,而是通過編譯器生成的可執(zhí)行文件來運行。因此,如果修改了C++源代碼,需要在CMakeLists.txt文件中添加編譯語句,然后運行catkin_make來重新編譯生成可執(zhí)行文件,才能使修改生效。1122.?編寫本文將以一個名為“hello”的節(jié)點為例,分別使用Python和C++兩種編程語言來編寫節(jié)點程序,從而理解兩種節(jié)點程序的區(qū)別。(1)Python程序當使用Python編寫節(jié)點程序時,需要在程序的開頭使用初始化節(jié)點的函數(shù),rospy.init_node()函數(shù)會告知ROS主系統(tǒng)當前編寫的程序是一個ROS節(jié)點,并且會為該節(jié)點提供必要的運行環(huán)境。以編寫名為“hello”的節(jié)點為例,初始化節(jié)點的命令如下:rospy.init_node("hello",anonymous=True)113rospy.init_node(NAME)函數(shù)用于初始化節(jié)點并開始與ROSmaster進行通信。這里初始化了一個名為“hello”的節(jié)點,需要注意的是,節(jié)點的名稱不需要以“/”為開頭,因為在命令中運行節(jié)點時,系統(tǒng)會自動在節(jié)點名稱前添加“/”。當參數(shù)“anonymous”設置為True時,系統(tǒng)會在節(jié)點名稱的末尾添加一串隨機數(shù),以確??梢酝瑫r運行多個具有相同名稱的節(jié)點。如果設置為False,則只能運行一個具有該名稱的節(jié)點。114這樣的設置使得節(jié)點可以靈活地在系統(tǒng)中創(chuàng)建并進行通信。1.

whilenotrospy.is_shutdown():2.

hello_str="HelloWorld%s"%rospy.get_time()3.

rospy.loginfo(hello_str)4.

rate.sleep()(注:縮進為4個空格)115循環(huán)是rospy的常用結構,rospy.is_shutdown()是一個用于檢查程序是否應該退出循環(huán)的函數(shù)。當該函數(shù)返回False時,程序會繼續(xù)執(zhí)行;當返回True時,程序會退出。一般情況下,可以使用組合鍵“Ctrl+C”來觸發(fā)程序退出,從而使rospy.is_shutdown()返回True,結束程序的運行。rospy.get_time()函數(shù)用于獲取節(jié)點初始化的時間和當前時間,計算它們之間的時間間隔并打印。這有助于在節(jié)點中測量和記錄操作的執(zhí)行時間。116rospy.loginfo(str)函數(shù)用于在終端屏幕輸出調試信息,同時將消息寫入節(jié)點日志文件和rosout節(jié)點。rate.sleep()是一個定時器,該函數(shù)使當前線程進入休眠狀態(tài),以保持節(jié)點消息發(fā)送頻率的穩(wěn)定。通過設置合適的頻率,可以控制節(jié)點的執(zhí)行速率,從而適應不同的應用場景,避免消息發(fā)送過于頻繁或不足。117(2)C++程序同樣,當使用C++編寫節(jié)點程序時,需要在程序的開頭使用初始化節(jié)點的函數(shù),即ros::init(argc,argv,“node_name”)。以編寫名為“hello”的節(jié)點為例,初始化節(jié)點的命令如下:ros::init(argc,argv,"hello");118ros::init()函數(shù)用于在roscpp節(jié)點中進行初始化操作。當編寫node程序時,需要先調用ros::init()函數(shù)進行節(jié)點的初始化,這樣才能繼續(xù)調用其他roscpp庫中的函數(shù)。在初始化過程中,函數(shù)會解析命令行中傳入的參數(shù),包括argc和argv。在示例代碼中,“hello”表示節(jié)點的名稱。ROS系統(tǒng)中的節(jié)點名稱必須是唯一的,如果有重名的節(jié)點正在運行,之前運行的節(jié)點會被自動關閉以確保節(jié)點名稱的唯一性。119完成節(jié)點的初始化后,需要使用ros::NodeHandle函數(shù)創(chuàng)建節(jié)點句柄(句柄可以理解為一個把手,就像握住門把手一樣,用戶可以輕松地打開整扇門,而不需要關心門的細節(jié)),用于進行節(jié)點的其他操作,命令如下:ros::NodeHandlen;上述命令的目的是創(chuàng)建ROS節(jié)點句柄。在ROS中,節(jié)點句柄用于描述節(jié)點的資源。節(jié)點句柄的引入使用戶能夠方便地對節(jié)點進行各種操作,包括但不限于為程序提供服務、監(jiān)聽特定話題上的消息、訪問和修改參數(shù)等。這一工具提供了一種便捷的方式來管理和調用節(jié)點的功能。通過使用節(jié)點句柄,用戶可以輕松地與ROS進行交互,而無須深入關注底層的實現(xiàn)細節(jié)。120完成節(jié)點句柄的創(chuàng)建后,即可繼續(xù)其他節(jié)點邏輯程序的編寫,實例代碼如下:1.while(ros::ok())

//當節(jié)點關閉時退出循環(huán)2.{3.

ROS_INFO("HelloWorld");

//輸出到終端4.

loop_rate.sleep();5.}在while循環(huán)的判斷語句中,ros::ok()接口被用來判斷節(jié)點是否仍在運行。如果ros::ok()返回False,則表示節(jié)點已經(jīng)關閉,while循環(huán)將結束。1213.?運行(1)使用rosrun命令啟動Python腳本的格式如下:$rosrun[package_name][file_name](2)使用rosrun命令啟動C++節(jié)點程序編譯成的可執(zhí)行文件的格式如下:$rosrun[package_name][node_name]122任務四

使用launch文件實現(xiàn)節(jié)點啟動和參數(shù)設置1231.?了解launch文件和launch文件的標簽2.?掌握XML文件的編寫注意事項3.?掌握launch文件的參數(shù)設置方法4.?能創(chuàng)建和編寫launch文件,并且用roslaunch命令啟動launch文件任務目標124一、launch文件launch文件是多個節(jié)點和參數(shù)的集合文件,可以將要啟動的節(jié)點和對應的參數(shù)全部寫入launch文件中,然后使用roslaunch命令一次啟動多個節(jié)點。launch文件遵循XML語言(可擴展標記語言,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言)規(guī)范。和其他ROS文件相同,每一個啟動文件都應該與一個特定的功能包關聯(lián)起來,通常以“.launch”作為啟動文件名稱的后綴。基礎知識125最簡單的方法是將啟動文件直接存放在功能包的根目錄中。當查找啟動文件時,roslaunch工具會同時搜索每個功能包目錄的子目錄。包括ROS核心包在內(nèi)的許多功能包都是利用這一特性,將所有啟動文件統(tǒng)一存放在一個子目錄中,該子目錄通常命名為“l(fā)aunch”。126二、launch文件的標簽launch文件是XML格式,它是由各種標簽元素組成的。因此,要理解并且熟練編寫launch文件,需要熟悉launch文件中各個標簽的含義及其書寫格式。launch文件的結構參考如下:1.<launch>2.

<!--第1個節(jié)點-->3.

<nodepkg="包名"type="包內(nèi)可執(zhí)行程序名字"name="節(jié)點名">4.

<!--注釋內(nèi)容-->5.

<paraname="程序中的數(shù)值或布爾參數(shù)"value=""/>1276.

<paraname="程序中的字符串參數(shù)"value=""type="str"/>7....8.</node>9.

<!--第n個節(jié)點-->10.

<nodepkg="包名"type="包內(nèi)可執(zhí)行程序名字"name="節(jié)點名">11....12.</node>13.</launch>128launch文件中各標簽的作用見下表。129launch文件中各標簽的作用130launch文件中各標簽的作用1.<launch><launch>是ROSlaunch文件的根元素,它是XML文檔的最頂層元素。每個ROSlaunch文件必須包含且僅包含一個根元素,它由一對<launch>標簽定義。1.<launch>2....3.</launch>其他的所有元素標簽都要寫在<launch>與</launch>標簽之間。1312.<node><node>標簽的作用是啟動節(jié)點。每個launch文件的核心是節(jié)點的集合。每個節(jié)點都必須具有唯一的名稱,node元素的格式如下:<nodepkg="..."type="..."name="..."/>注意:<node>標簽末尾的“/”很重要,編寫launch文件時不要遺漏?!?”表明:這里不會再有“</node>”出現(xiàn),并且node元素的定義完成。也可以寫為顯示關閉標簽的形式:1.<nodepkg="..."type="..."name="...">2.</node>132node元素必需的三個屬性為pkg、type和name,它們的詳細說明見下表。133node元素必需屬性的說明node元素中不僅有pkg、type和name三個最常用的屬性,在某些情況下,還可能用到其他屬性,具體見下表。134node元素其他屬性的說明三、XML文件的編寫注意事項編寫XML文件時的注意事項如下:1.所有元素必須有結束標簽。2.XML語法對大、小寫敏感,即大、小寫字母應區(qū)分對待。3.嵌套格式必須正確。4.同級標簽要對齊。5.元素名稱可以包含字母、數(shù)字或其他字符,但是不能以數(shù)字或標點符號開始。6.元素名稱中不能包含空格。7.XML屬性值必須加引導符號。1358.XML文件中字符“<”和“&”是非法的,需要用實體引用來代替它們,XML文件中5個特殊字符的實體引用見下表。136XML文件中5個特殊字符的實體引用9.XML文件的注釋格式為:<!--注釋內(nèi)容-->10.XML文件的聲明語句格式如下,該語句聲明了使用的XML版本以及編寫使用的編碼格式,launch文件不要求編寫聲明。<?xmlversion="1.0"encoding="UTF-8"?>137四、launch文件的參數(shù)設置launch文件支持參數(shù)設置功能,類似于編程語言中的變量聲明。參數(shù)設置的標簽元素為<param>和<arg>,其中<param>代表parameter,<arg>則代表argument。這兩個標簽元素的含義都是參數(shù),但是它們的意義完全不同,具體區(qū)別如下:1.?<param>使用方法如下:<paramname="..."value="..."/>138一些復雜系統(tǒng)中的參數(shù)數(shù)量很多,如果一個一個地設置會非常麻煩,因此ROS提供了另外一種類似的參數(shù)加載方式——<rosparam>,具體用法如下:<rosparamfile="$(find...)/.../xxx.yaml"command="load"ns="..."/><rosparam>可以將一個yaml格式的文件中的參數(shù)全部加載到ROS參數(shù)服務器中,需要設置command屬性為“l(fā)oad”,還可以選擇設置命名空間(ns,即namespace的縮寫)。1392.?<arg>argument類似于laun

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論