【ROS教程】編寫launch文件

@TOC


1.launch文件有哪些標簽

標簽 含義
node 指定 ROS 節(jié)點,是最常見的標簽
include 用于將另一個 xml 格式的 launch 文件導入到當前文件
remap 話題重命名
param 在參數(shù)服務器上設置參數(shù)
rosparam 從 YAML 文件導入?yún)?shù),或將參數(shù)導出到 YAML 文件,也可以用來刪除參數(shù)
group 可以對節(jié)點分組,具有 ns 屬性,可以讓節(jié)點歸屬某個命名空間
arg 用于動態(tài)設置參數(shù),可以增強launch文件的靈活性
env 用于設置環(huán)境變量

2.node標簽

2.1 必選屬性

屬性 含義
name="node-name" 節(jié)點名稱(在 ROS 網(wǎng)絡拓撲中節(jié)點的名稱)
pkg="package-name" 節(jié)點所屬的包
type="node-type" 節(jié)點類型(與之相同名稱的可執(zhí)行文件)

2.2 可選屬性

屬性 含義
args="arg1 arg2 arg3" 將參數(shù)傳遞給節(jié)點
machine="machine-name" 在指定機器上啟動節(jié)點
respawn="true| false" 如果節(jié)點退出,是否自動重啟
respawn_delay="n" 如果 respawn 為 true, 那么延遲 N 秒后啟動節(jié)點
required="true| false" 該節(jié)點是否必須,如果為 true,那么如果該節(jié)點退出,將殺死整個 roslaunch
ns="namespace" 在指定命名空間中啟動節(jié)點
clear_params="true| false" 在啟動前,刪除節(jié)點的私有空間的所有參數(shù)
output="log| screen" 日志發(fā)送目標,可以設置為 log 日志文件,或 screen 屏幕,默認是 log

2.3 可選子級標簽

  1. <env>
  2. <remap>
  3. <rosparam>
  4. <param>

3.include標簽

3.1 必選屬性

屬性 含義
file="$(find pkg-name)/path/filename.launch" 要包含的文件路徑

3.2 可選屬性

屬性 含義
ns="namespace" 在指定命名空間導入文件

3.3 可選子級標簽

  1. <env>
  2. <arg>

4.remap標簽

4.1 必選屬性

屬性 含義
from="original-name" 原始話題名稱
to="new-name" 目標名稱

5.param標簽

  • 作為\<node>子級標簽時,相當于私有命名空間。

5.1 必選屬性

屬性 含義
name="namespace/name" 參數(shù)名稱,可以包含命名空間

5.2 可選屬性

屬性 含義
value="value" 定義參數(shù)值,如果此處省略,必須指定外部文件作為參數(shù)源
type="str|int|double|bool|yaml" 指定參數(shù)類型,如果未指定,roslaunch 會嘗試確定參數(shù)類型

roslaunch 確定參數(shù)類型的規(guī)則如下:

  • 如果包含 '.' 的數(shù)字解析未浮點型,否則為整型
  • "true" 和 "false" 是 bool 值(不區(qū)分大小寫)
  • 其他是字符串

6.rosparam標簽

6.1 必選屬性

屬性 含義
file="$(find pkg-name)/path/foo.yaml" 加載或導出到的 yaml 文件
param="param-name" 參數(shù)名稱

6.2 可選屬性

屬性 含義
command="load| dump | delete" 加載、導出或刪除參數(shù),默認為加載
ns="namespace" 將參數(shù)指定到命名空間

7.group標簽

7.1 可選屬性

屬性 含義
ns="namespace" 將該組節(jié)點分配到指定的命名空間。命名空間可以是全局的,也可以是相對的,但不鼓勵使用全局命名空間。
clear_params="true|false" 在啟動前刪除組的命名空間中的所有參數(shù)。這個功能非常危險,應該謹慎使用。

7.2 可選子級標簽

  • 其他所有標簽都是其子級標簽

8.arg標簽

8.1 必選屬性

屬性 含義
name="arg-name" 欲設置的參數(shù)名稱

8.2 可選屬性

屬性 含義
default="default value" 設置參數(shù)的默認值。不能與value屬性結合。
value="value" 設置參數(shù)的值。不能與default屬性結合。
doc="description for this arg" 加載、導出或刪除參數(shù),默認為加載

8.3 示例

<launch>
  <!-- declare arg to be passed in -->
  <arg name="hoge" /> 

  <!-- read value of arg -->
  <param name="param" value="$(arg hoge)"/>
</launch>

9.env標簽

9.1 必選屬性

屬性 含義
name="environment-variable-name" 所設置的環(huán)境變量的名字
value="environment-variable-value" 參數(shù)說明

10.全局示例

<launch>
  <!-- local machine already has a definition by default.
       This tag overrides the default definition with
       specific ROS_ROOT and ROS_PACKAGE_PATH values -->
  <machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
  <!-- a basic listener node -->
  <node name="listener-1" pkg="rospy_tutorials" type="listener" />
  <!-- pass args to the listener node -->
  <node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" />
  <!-- a respawn-able listener node -->
  <node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!-- start listener node in the 'wg1' namespace -->
  <node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!-- start a group of nodes in the 'wg2' namespace -->
  <group ns="wg2">
    <!-- remap applies to all future statements in this scope. -->
    <remap from="chatter" to="hello"/>
    <node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" />
    <node pkg="rospy_tutorials" type="talker" name="talker">
      <!-- set a private parameter for the node -->
      <param name="talker_1_param" value="a value" />
      <!-- nodes can have their own remap args -->
      <remap from="chatter" to="hello-1"/>
      <!-- you can set environment variables for a node -->
      <env name="ENV_EXAMPLE" value="some value" />
    </node>
  </group>
</launch>

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容