1. 程式人生 > >Launch檔案編寫

Launch檔案編寫

roslaunch可以用來啟動定義在launch檔案中的多個節點,且不需要提前roscore。

roslaunch的使用方法為: 
$ roslaunch pkg-name launch-file-name

建立turtlemimic.launch檔案

<launch>
 
  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>
 
  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>
 
  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>
 
</launch>
  • <launch>:以launch標籤開頭以表明這是一個launch檔案。
  • <group ns="turtlesim1">:標籤,就像C++中的namespace一樣,這樣可以讓我們同時啟動兩個turtlesim模擬器而不會產生命名衝突。
  • <node pkg="turtlesim" name="sim" type="turtlesim_node"/>:節點的三個屬性分別是程式包名字,節點名字,可執行檔名字。
  • arg:啟動引數。args="$(find arg-name)"
  • include:在launch 中複用其他launch檔案可以減少程式碼編寫工作量。

                       <include file="$(find pkg-name)/launch/launch-file-name">

Terminal 1:

roslaunch beginner_tutorials turtlemimic.launch

Terminal 2:

$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

這裡寫圖片描述

小練習

現在我們已經學會了,如何編寫一個簡單的 launch檔案,並且我們也知道了如何使用 roslaunch 命令來啟動一個啟動指令碼檔案。
下面我們來做一個小練習: 我們就將下面這一堆命令打包成一個啟動檔案:

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

beginner_tutorials 程式包中的launch 路徑裡新建一個 turlte_key_control.launch 檔案:

  • 將下面的程式碼複製過去:
<launch>
    <node pkg="turtlesim" name="turtle1" type="turtlesim_node"/>
    <node pkg="turtlesim" name="turtle1_key" type="turtle_teleop_key"/>
</launch>
  • OK,現在我們來執行一下這個啟動指令碼:
$ roslaunch beginner_tutorials turtle_key_control.launch
  • 你可以在這個終端中,通過方向鍵來控制小海龜了。

這裡寫圖片描述