0.引言

  笔者因研究课题涉及ROS开发,学习了古月居出品的ROS入门21讲,为巩固launch的知识,本文将ROS的launch启动文件制作一讲内容进行总结。launch文件通过XML文件实现多节点的配置和启动,可自动启动ROS Master,即自动运行roscore命令。

1.Launch文件语法

(1)<launch>节点;

launch文件中的根元素采用<launch>;标签定义。

  (2)<node> 节点;

启动节点
<node pkg="package-name" type="executable-name" name="node-name" />;
pkg: 节点所在的功能包名称
type: 节点的可执行文件名称
name: 节点运行时的名称
**可选属性↓**
output: 指定输出方式,要在终端显示日志信息可用out="screen"
respawn: 当节点异常停止时,是否重启
required: 指定节点是否一定要启动
na: 命名空间
args: launch文件中的参数

  (3)<param>节点;

设置ROS系统运行中的参数,存储在参数服务器中
<param name="output_frame" value="odom"/>;
name: 参数名
value: 参数值

  (4)<arg>节点;

launch文件内部的局部变量,仅限于launch文件使用
<arg name="arg-name" default="arg-value"/>;
name: 参数名
value: 参数值
调用
<param name="foo" value="$(arg arg-name)"/>;
<node name="node" pkg="package" type="type" args="$(arg arg-name)"/>;

  (5)<remap>节点;

重映射ROS计算图资源的命名
<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>;
from: 原命名
to: 映射之后的命名

  更多标签可参见: http://wiki.ros.org/roslaunch/XML

2.Launch示例

  ①创建功能包;

cd ~/catkin_ws/src
catkin_create_pkg learning_launch roscpp rospy tf turtlesim

  ②发布者和订阅者代码见ROS开发之如何使用发布者、订阅者和话题消息?
  ③创建launch文件;
  在新建的功能包下创建launch文件夹,并在该文件夹中打开新终端,并键入:gedit simple.launch,输入以下代码并保存。

<launch>;
<node pkg="learning_topic" type="person_subscriber" name="talker" output="screen" />;
<node pkg="learning_topic" type="person_publisher" name="listener" output="screen" />;
</launch>;

  ④编译并运行。

cd ~/catkin_ws
catkin_make
或
catkin_make_isolated
source devel/setup.bash
或
source devel_isolated/setup.bash
roslaunch learning_launch simple.launch

参考资料:
[1] 古月居GYH. 【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程; 2019-07-16 [accessed 2023-04-11].
[2] ros官网. roslaunch/XML; [accessed 2023-04-11].
[3] cacrle. ROS开发之如何使用发布者、订阅者和话题消息?; 2023-04-09 [accessed 2023-04-11].