2020年10月30日 星期五

[ROS] roslaunch: <group> 標籤的用法

當你想要把設定套用在一組節點上的時候,使用 <group> 標籤將會方便許多。它具有 ns 屬性,可以讓你將這組節點放到個別的命名空間中。另外,還可以使用 <remap> 標籤,對整組節點套用重新映射的設定。

 

 

標籤說明

 

  • <group>

 

此標籤用來將一組節點設在同一個群組中,也可以設定命名空間,將這組節點放到同一個命名空間中使用。有下列屬性可以使用:

 

ns="namespace" (optional) : 將一組節點設定到指定的命名空間中。命名空間可以使用全局名稱來指定,或是使用相對名稱來指定,但是不鼓勵使用全局名稱來指定。

 

clear_params="true|false" (optional) : 先前設置在此 <group> 標籤所指定命名空間中的參數,在啟動之前將會被全部刪除。此功能非常危險,應謹慎使用。使用時必須指定 ns

 

<group> 標籤中,還可以內嵌下列標籤:

 

由於 <group> 標籤等效於頂層的 <launch> 標籤,因此可以簡單的做為一個容器 (container),將其他標籤置於其中。換句話說,可以像在 <launch> 標籤中一樣來使用其他標籤。

 

<node> : 啟動一個節點。

 

<param> : 設定 Parameter Server 上的一個參數。

 

<remap> : 宣告一個名稱的重新映射 (remapping)

 

<machine> : 宣告一台設備,可用於啟動該設備上的節點。

 

<rosparam> : 透過 rosparam 指令來設置 Parameter Server 上的參數。

 

<include> : 匯入其他 roslaunch 文件。

 

<env> : 設置一個環境變數。

 

<test> : 啟動一個測試節點 (參照 rostest)

 

<arg> : 宣告一個 arg 參數。

 

注意事項:

 

  • <group> 標籤中,使用 <arg> <env> 標籤設定的 arg 參數和環境變數,只有在 <group> 範圍內才有作用,在 <group> 範圍外就沒有作用了。

 

  • <param> 標籤則因為是設定在 Parameter Server 上,所以即使在 <group> 標籤範圍外,已經設定在 Parameter Server 上的參數仍有作用。

 

 

實例說明

 

下面舉一個例子來做說明。我們在 mypackage 套件裡面的 launch 目錄,新增一個簡單的 launch 文件來做測試。

 

範例:

 

此範例使用兩個 <group> 標籤,分別執行兩個 turtlesim_node turtle_teleop_key 節點。兩個 <group> 標籤中的 <node> 標籤完全一樣,透過指定 <group> 標籤的 ns 屬性,讓兩個 <group> 標籤中的節點位於不同的命名空間下,從而避免了命名重複的問題。

 

-- group.launch

<launch>

  <group ns="turtlesim1">

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim" />

    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop_key" launch-prefix="gnome-terminal -e" />

  </group>

  <group ns="turtlesim2">

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim" />

    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop_key" launch-prefix="gnome-terminal -e" />

  </group>

</launch>

 

執行 roslaunch mypackage group.launch 之後,會出現兩個新的視窗各自有一隻小海龜。另外,還會開啟兩個新的 Terminal 視窗,可以分別用來控制兩隻小海龜。

 

 

 

參考資料

 

  • roslaunch: <group> tag

http://wiki.ros.org/roslaunch/XML/group

 

沒有留言:

張貼留言

和我聯絡

名稱

以電子郵件傳送 *

訊息 *