申明:ROS学习参考了古月居老师的Blibli视频,强烈推荐大家看视频学习,本博客仅记录自己的学习经历和心得,欢迎大家一起讨论!
1 launch文件介绍
Launch文件:通过XML文件实现多节点的配置和启动(可自启动ROS Master)
2 Launch文件语法
<launch>
<node pkg = "turtlesim" name="sim1" type="turtlesim_node" />
<node pkg = "turtlesim" name="sim2" type="turtlesim_node" />
</launch>
< launch > launch文件中的根元素采用< launch >标签定义
< node > 启动节点
<node pkg = "package-name" type = "executable-name" name= "node-name"/>
- pkg : 节点所在的功能包名称
- type:节点的可执行文件名称
- name:节点运行时的名称
- output:打印当前信息到终端上
- respawn、required、ns、args(参数)
< param >/< rosparam > 设置ROS系统运行中的参数,存储在参数服务其中。
<param name = "output_frame" value="odem" />
- name:参数名
- value:参数值
加载参数文件中的多个参数:
<rosparam file="params.yaml" command="load" ns="params" />
其中,ns是命名空间(name space)
< arg > launch文件内部的局部变量,仅限于launch文件使用
<arg name="arg-name" value="arg-value" />
参数调用:
<param name="foo" value="$(arg arg-name)" />
<node name="node" pkg="package" type="type" args="$(arg arg-name)" />
< remap > 重映射ROS计算图资源的命名
<remap from="/turtlebot/cmd_vel" to="/cmd_vel" />
from:原命名
to:映射之后的命名
< include >内嵌包含其他launch文件,类似C语言中的头文件包含。
<include file="$(dirname)/other.launch" />
-file: 其他launch文件的路径
3 launch示例
3.1 创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_launch
mkdir launch
编译:
cd ~/catkin_ws
catkin_make
- 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>
- turtlesim_parameter_config.launch
<launch>
<param name="/turtle_number" value="2" />
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" >
<param name="turtle_name1" value="Tom" />
<param name="turtle_name2" value="Jerry" />
<rosparam file="$(find learning_launch)/config/param.yaml" command="load" />
</node>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen" />
</launch>
此时ROS中的参数列表为:
- start_tf_demo_c++.launch
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="sim" />
<node pkg="turtlesim" type="turtlesim_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>
- turtlesim_remap.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>
查看当前ROS中的话题,并使用重映射后的话题发布速度指令:
本讲完,以后会持续更新!