@目錄1.launch文件有哪些標簽2.node標簽2.1 必選屬性2.2 可選屬性2.3 可選子級標簽3.include標簽3.1 必選屬性3.2 可選屬性3.3 可選子級標簽4.remap標簽4.1 必選屬性5.param標簽5.1 必選屬性5.2 可選屬性6.rosparam標簽6.1 必選屬 ...
@
目錄1.launch文件有哪些標簽
標簽 | 含義 |
---|---|
node | 指定 ROS 節點,是最常見的標簽 |
include | 用於將另一個 xml 格式的 launch 文件導入到當前文件 |
remap | 話題重命名 |
param | 在參數伺服器上設置參數 |
rosparam | 從 YAML 文件導入參數,或將參數導出到 YAML 文件,也可以用來刪除參數 |
group | 可以對節點分組,具有 ns 屬性,可以讓節點歸屬某個命名空間 |
arg | 用於動態設置參數,可以增強launch文件的靈活性 |
env | 用於設置環境變數 |
2.node標簽
2.1 必選屬性
屬性 | 含義 |
---|---|
name="node-name" | 節點名稱(在 ROS 網路拓撲中節點的名稱) |
pkg="package-name" | 節點所屬的包 |
type="node-type" | 節點類型(與之相同名稱的可執行文件) |
2.2 可選屬性
屬性 | 含義 |
---|---|
args="arg1 arg2 arg3" | 將參數傳遞給節點 |
machine="machine-name" | 在指定機器上啟動節點 |
respawn="true| false" | 如果節點退出,是否自動重啟 |
respawn_delay="n" | 如果 respawn 為 true, 那麼延遲 N 秒後啟動節點 |
required="true| false" | 該節點是否必須,如果為 true,那麼如果該節點退出,將殺死整個 roslaunch |
ns="namespace" | 在指定命名空間中啟動節點 |
clear_params="true| false" | 在啟動前,刪除節點的私有空間的所有參數 |
output="log| screen" | 日誌發送目標,可以設置為 log 日誌文件,或 screen 屏幕,預設是 log |
2.3 可選子級標簽
- <env>
- <remap>
- <rosparam>
- <param>
3.include標簽
3.1 必選屬性
屬性 | 含義 |
---|---|
file="$(find pkg-name)/path/filename.launch" | 要包含的文件路徑 |
3.2 可選屬性
屬性 | 含義 |
---|---|
ns="namespace" | 在指定命名空間導入文件 |
3.3 可選子級標簽
- <env>
- <arg>
4.remap標簽
4.1 必選屬性
屬性 | 含義 |
---|---|
from="original-name" | 原始話題名稱 |
to="new-name" | 目標名稱 |
5.param標簽
- 作為
\<node>
子級標簽時,相當於私有命名空間。
5.1 必選屬性
屬性 | 含義 |
---|---|
name="namespace/name" | 參數名稱,可以包含命名空間 |
5.2 可選屬性
屬性 | 含義 |
---|---|
value="value" | 定義參數值,如果此處省略,必須指定外部文件作為參數源 |
type="str|int|double|bool|yaml" | 指定參數類型,如果未指定,roslaunch 會嘗試確定參數類型 |
roslaunch 確定參數類型的規則如下:
- 如果包含 '.' 的數字解析未浮點型,否則為整型
- "true" 和 "false" 是 bool 值(不區分大小寫)
- 其他是字元串
6.rosparam標簽
6.1 必選屬性
屬性 | 含義 |
---|---|
file="$(find pkg-name)/path/foo.yaml" | 載入或導出到的 yaml 文件 |
param="param-name" | 參數名稱 |
6.2 可選屬性
屬性 | 含義 |
---|---|
command="load| dump | delete" | 載入、導出或刪除參數,預設為載入 |
ns="namespace" | 將參數指定到命名空間 |
7.group標簽
7.1 可選屬性
屬性 | 含義 |
---|---|
ns="namespace" | 將該組節點分配到指定的命名空間。命名空間可以是全局的,也可以是相對的,但不鼓勵使用全局命名空間。 |
clear_params="true|false" | 在啟動前刪除組的命名空間中的所有參數。這個功能非常危險,應該謹慎使用。 |
7.2 可選子級標簽
- 其他所有標簽都是其子級標簽
8.arg標簽
8.1 必選屬性
屬性 | 含義 |
---|---|
name="arg-name" | 欲設置的參數名稱 |
8.2 可選屬性
屬性 | 含義 |
---|---|
default="default value" | 設置參數的預設值。不能與value屬性結合。 |
value="value" | 設置參數的值。不能與default屬性結合。 |
doc="description for this arg" | 載入、導出或刪除參數,預設為載入 |
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" | 所設置的環境變數的名字 |
value="environment-variable-value" | 參數說明 |
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>
本文由博客一文多發平臺 OpenWrite 發佈!