1. 程式人生 > >Ros 中的launch檔案

Ros 中的launch檔案

在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命令一次性的將多個引數載入到引數伺服器。