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>

猜你喜欢

转载自www.cnblogs.com/long5683/p/9941548.html