launch檔案
阿新 • • 發佈:2018-11-11
1、簡介
機器人是一個系統工程, 通常一個機器人執行操作時要開啟很多個node, ROS為我們
提供了一個命令能一次性啟動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>