1. 程式人生 > >launch檔案

launch檔案

1、簡介

機器人是一個系統工程, 通常一個機器人執行操作時要開啟很多個nodeROS為我們
提供了一個命令能一次性啟動master和多個node。 該命令是:

$ roslaunch pkg_name file_name.launch

roslaunch命令首先會自動進行檢測系統的roscore有沒有執行, 也即是確認節點管理器是否在
執行狀態中, 如果master沒有啟動, 那麼roslaunch就會首先啟動master, 然後再按照launch
的規則執行。 launch檔案裡已經配置好了啟動的規則。 所以 roslaunch 就像是一個啟動工
具, 能夠一次性把多個節點按照我們預先的配置啟動起來, 減少我們在終端中一條條輸入指


令的麻煩。

2、寫法與格式

參考連結:http://wiki.ros.org/roslaunch/XML

launch檔案同樣也遵循著xml格式規範, 是一種標籤文字, 它的格式包括以下標籤:

<launch> <!--根標籤-->
<node> <!--需要啟動的node及其引數-->
<include> <!--包含其他launch-->
<machine> <!--指定執行的機器-->
<env-loader> <!--設定環境變數-->
<param> <!--定義引數到引數伺服器-->
<rosparam> <!--啟動yaml檔案引數到引數伺服器-->
<arg> <!--定義變數-->
<remap> <!--設定引數對映-->
<group> <!--設定名稱空間-->
</launch> <!--根標籤-->

3、舉例

<launch>
<node name="talker" pkg="rospy_tutorials" type="talker" />
</launch>

例子2

<launch>
<!--arg是launch標籤中的變數宣告, arg的name為變數名, default或者value為值-->
<arg name="robot" default="xbot2"/>
<arg name="debug" default="false"/>
<arg name="gui" default="
true"/> <arg name="headless" default="false"/> <!-- Start Gazebo with a blank world --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <!--include用來巢狀模擬場景 的launch檔案--> <arg name="world_name" value="$(find robot_sim_demo)/worlds/ROS-Academy.world"/> <arg name="debug" value="$(arg debug)" /> <arg name="gui" value="$(arg gui)" /> <arg name="paused" value="false"/> <arg name="use_sim_time" value="true"/> <arg name="headless" value="$(arg headless)"/> </include> <!-- Oh, you wanted a robot? --> <!--嵌套了機器人的launch檔案--> <include file="$(find robot_sim_demo)/launch/include/$(arg robot).launch.xml" /> <!--如果你想連同RViz一起啟動, 可以按照以下方式加入RViz這個node--> <!--node name="rviz" pkg="rviz" type="rviz" args="-d $(find robot_sim_demo)/urdf_gazeb o.rviz" /--> </launch>