通过xml文件实现多节点的配置与启动(可自启动ROS Master)
1. launch文件语法概述
<launch
>launch
文件中的根元素采用<launch
> 标签定义
<node
> 启动节点
<node pkg="package-name" type="execulate-name" name="node-name"/>
pkg :功能包名称
type:节点可执行文件名称
name:节点运行时的名称
参数设置:
<param
>/<rosparam
>
设置ROS系统运行参数,存储在参数服务器中
<param name="output_name" value="odom"/>
name:参数名
value:参数值
加载参数文件中的多个参数
<rosparam file="params.yaml" command="load"ns="params"/>
例:<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>
<arg
>
launch文件内部的局部变量,仅仅在launch文件中使用
<arg name="arg_name" default="arg_value"/>
name:参数名
value:参数值
<param name="foo" value="$(arg arg_name)"/>
<node name="node pkg="package-name" type="type" arg="$(arg arg_name)"/>
重映射:
<remap
> 重映射ROS计算图资源的命名
tips:remap之后,原命名会不复存在
<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
from:原命名
to:之后的命名
嵌套:
<include
>包含其他launch的头文件,类似c与cpp
<include file="$(dirname)/other.launch" />
例:<include file="$(find learning_launch)/launch/simple.launch" />
2. 实例讲述
2.1 launch启动文件实例
编写相关simple.cpp文件
<launch>
<node pkg="learning_topic" type="person_subscriber" name="talker" output="screen" />
<node pkg="learning_topic" type="person_publisher" name="listener" output="screen" />
</launch>
编译运行
catkin_make
roslaunch learning_launch simple.launch
2.2 launch实现小海龟坐标跟随
代码编写
<launch>
<!-- Turtlesim Node-->
<node pkg="turtlesim" type="turtlesim_node" name="sim"/>
<node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>
<node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle1" name="turtle1_tf_broadcaster" />
<node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle2" name="turtle2_tf_broadcaster" />
<node pkg="learning_tf" type="turtle_tf_listener" name="listener" />
</launch>
编译运行
roslaunch learning_launch start_tf_demo_c++.launch
2.3 launch重映射实例
代码编写
<launch>
<include file="$(find learning_launch)/launch/simple.launch" />
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
</node>
</launch>
编译运行
若更改后小乌龟正常运动,则正常
roslaunch learning_launch turtlesim_remap.launch
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"