本文主要是介绍第十七弹 launch启动文件的使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ROS探索总结(五十六)—— launch文件
ROS 初级 - 解析 roslaunch 文件
1. launch文件简介
从 ROS 角度来看,机器人系统就是一堆 node 和 topic (再添加一些 parameter, service 等)构成的网络(rosgraph),其中每个 node 都可以完成一定的功能。通常一个机器人运行时要开启很多 node,如果一个 node 一个 node 的启动,比较麻烦。通过 launch文件以及 roslaunch 命令可以一次性启动多个 node,并且可以设置丰富的参数。
目前来看,官方 ros package 大部分都包含名为 launch 的文件夹,里面存放了 launch 文件。我们自己编写的 package 也应该尽量使用这种结构,方便“一键启动”。
2.Launch文件语法
launch文件采用xml格式。
例如:
<launch><node pkg="turtlrsim" name="sim1" type="turtlesim_node"/><node pkg="turtlrsim" name="sim2" type="turtlesim_node"/>
</launch>
<launch> : launch文件中的根元素采用<launch>标签定义
<node> :
<node pkg="package-name" name="node-name" type="executable-name" />pkg : 节点所在的功能包名称
type:节点的可执行文件的名称
name:节点运行时的名称
其他的可选属性:output、respawn、required、ns、args
重映射: <remap>
<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/> from:原命名
to:映射之后的命名
嵌套: <include>
包含其他launch文件,类似c语言的头文件包含<include file="$(dirname)/other.launch"/>file:包含的其他的launch文件路径
3. 一些launch的实现
3.1 新建功能包
catkin_create_pkg learning_launch
3.2 simple launch
新建一个名为“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>
这个需要用到learning_topic功能包>>>>https://wws.lanzoui.com/i5HUZs56ibi
通过连接可以下载所有的源码文件:
编译及运行
编译:在~/catkin_make的目录下启动终端,并运行catkin_make。
运行:roslaunch 功能包名 文件名
roslaunch learning_launch simple.launch
效果:两个节点运行在一个终端中:
3.3 turtlesim_parameter_config.launch
新建文件:
同样的,新建一个文件,名为“ turtlesim_parameter_config.launch”:
用到param、rosparam:
<launch><param name="/turtle_number" value="2"/>//设置海龟的数量两个,一个字典值<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">//设置节点,仿真器节点,turtlesim_node<param name="turtle_name1" value="Tom"/><param name="turtle_name2" value="Jerry"/>//设置海龟1和海龟2的名字<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>//加载参数文件param.yaml</node><node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/>//启动键盘控制节点</launch>
新建文件夹config、新建param.yaml文件:
param.yaml文件的内容:
A: 123
B: "hello"group:C: 456D: "hello"
查看一下参数:
rosparam list
3.4 start_tf_demo_c++.launch
海龟跟随案例,使用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>
3.5 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>
这篇关于第十七弹 launch启动文件的使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!