Ros 中的launch檔案
阿新 • • 發佈:2018-11-13
在ROS中,每個節點通常有許多引數需要設定,為了方便高效操作多個節點,可以編寫launch檔案,然後用roslaunch命令執行
使用方式:
roslaunch [options] [package]<filename>[arg_name:=value...]
roslaunch [options] <filename>[<filename>...][arg_name:=value...]
launch檔案的一般格式,引數
<launch> <node .../> <rosparam .../> <param .../> <include .../> <env .../> <remap .../> <arg.../> </launch>
任何一個launch檔案的重點都是,節點node元素的集合,啟動的每一個節點node都要有自己獨一無二的名字name,如果node節點元素有children,就需要顯式標籤來定義,children比如是:remap元素或者是param元素。顯式關閉標籤的形式:
<node pkg="" type="" name=""></node>
<launch> <include file="$(find region_cover_start)/launch/amcl.launch.xml" /> <node pkg="mapfile_genrate" name="mapfile_genrate_node" type="main.py" respawn="false" output="screen"> <rosparam file="$(find common_param)/param/$(env VIEW_ROBOT)_track_footprint.yaml" command="load" /> <remap from="scan" to="base_scan"/> <param name="/use_sim_time" value="true" />#node的children, param元素 <rosparam file="$(find cleaning_info_catch)/param/cleaning_info_catch.yaml" command="load" /> </node> #顯示關閉標籤node </launch>
pkg為節點的功能包,程式包名字
type為需要執行的那個節點,可執行檔案的名字
name為節點的名字,
拓展屬性:
1.output="screen"輸出結果顯示在螢幕上, 一般在node元素中使用output屬性
2。 respawn="true",啟動完所有請求的節點之後,roslaunch監測每一個節點,讓他們保持正常的執行狀態,對於每一個節點,當它終止時,可以要求roslaunch重新啟動它。
-remap標籤
在launch檔案中重新命名,使用remap元素
<remap from="original-name" to="new-name" />
-include標籤
1.file屬性
<include file="path-to-launch-file" />
包含其他檔案,這個file屬性期望我們新增想要包含的檔案的完整路徑。但是大多數時候,include元素使用一個find命令來搜尋一個程式包,代替一個明確的完整路徑
<include file="$(find package-name)/launch-file-name" />
這樣做是正確的
<include file = "find learning_tutrols"/launch/start_demo.launch" / >
這樣做是錯誤的
<include file = "find learning_tutrols"/start_demo.launch" />
rosparam
rosparam命令一次性的將多個引數載入到引數伺服器。