ROS 学习笔记3. launch文件的使用
launch文件的使用
- 一、launch文件启动小海龟demo
- 二、launch文件的各个标签的属性
- 1.launch标签属性
- 2.node标签属性
- 3.include标签属性
- 4.remap标签属性
- 5.param标签属性
- 6.rosparam标签属性
- 6.1 rosparam参数加载
- 6.2 rosparam参数导出
- 6.3 rosparam参数删除
- 7.group标签属性
- 8.arg标签属性
- 8.1arg使用参数默认值
- 8.2arg使用动态传参
一、launch文件启动小海龟demo
launch文件同时启动小海龟节点和键盘控制节点
创建功能包依赖于std_msgs rospy roscpp turtlesim
launch文件编写start_turtle.launch
:
<launch><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><!--键盘控制节点 --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>
启动launch文件
roslaunch launch01_basic start_turtle.launch
二、launch文件的各个标签的属性
1.launch标签属性
deprecated属性用以启用文件说明。
<launch deprecated="此文件已经过时,不建议使用!"><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><!--键盘控制节点 --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>
2.node标签属性
pkg=“包名”
节点所属的包
type=“nodeType”
节点类型(与之相同名称的可执行文件)
name=“nodeName”
节点名称(在 ROS 网络拓扑中节点的名称)
args=“xxx xxx xxx” (可选)
将参数传递给节点
machine=“机器名”
在指定机器上启动节点
respawn=“true | false” (可选)
如果节点退出,是否自动重启
respawn_delay=" N" (可选)
如果 respawn 为 true, 那么延迟 N 秒后启动节点
required=“true | false” (可选)
该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch
ns=“xxx” (可选)
在指定命名空间 xxx 中启动节点
clear_params=“true | false” (可选)
在启动前,删除节点的私有空间的所有参数
output=“log | screen” (可选)
日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log
3.include标签属性
包含另一个xml格式的文件,实现功能的复用。
file=“$(find 包名)/launch/xxx.launch”
要包含的文件路径
ns=“xxx” (可选)
在指定命名空间导入文件
案例:
start_turtle_use.launch
<!-- 需要复用startle_turtle.launch -->
<launch><!-- 包含 --><include file="$(find launch01_basic)/launch/start_turtle.launch"/><!-- 后面写其他节点 -->
</launch>
roslaunch launch01_basic start_turtle_use.launch
4.remap标签属性
用于话题重命名
from=“xxx”
原始话题名称
to=“yyy”
目标名称
案例:
首先运行第一步的同时启动小乌龟和键盘的launch文件:
roslaunch launch01_basic start_turtle.launch
用rostopic list
查看当前的话题名称:
可以发现小乌龟订阅的速度话题时/turtle1/cmd_vel。此时我们开启另一个键盘控制的功能包:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
并重新rostopic list观察当前的话题名称。
可以发现,新的键盘控制功能包发布的话题名称是cmd_vel
,并不是/turtle1/cmd_vel
,所以小海龟订阅不到。remap的功能就是可以要订阅的话题改名字。如下launch文件:
<launch><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"><remap from="/turtle1/cmd_vel" to="cmd_vel"/></node><!--键盘控制节点 --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>
此时小海龟可以订阅teleop_twist_keyboard.py
键盘发布的cmd_vel
话题。
5.param标签属性
param标签主要用于在参数服务器上设置参数。有两种格式:
格式1:设置在launch中,node外
格式2:设置在node中。
name=“命名空间/参数名”
参数名称,可以包含命名空间
value=“xxx” (可选)
定义参数值,如果此处省略,必须指定外部文件作为参数源
type=“str | int | double | bool | yaml” (可选)
指定参数类型,如果未指定,roslaunch 会尝试确定参数类型,规则如下:
如果包含 ‘.’ 的数字解析未浮点型,否则为整型
“true” 和 “false” 是 bool 值(不区分大小写)
其他是字符串
向参数服务器中设置参数paramA,类型为int,数值为100
向参数服务器中设置参数paramB,类型为double,数值为3.14
<launch deprecated="此文件已经过时,不建议使用!"><param name="paramA" type="int" value="100" /><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"><remap from="/turtle1/cmd_vel" to="cmd_vel"/><param name="paramB" type="double" value="3.14"/></node><!--键盘控制节点 --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>
两者的差异刚好就是节点的名称。这个差异又叫私有命名空间。
6.rosparam标签属性
rosparam标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,rosparam标签在node标签中时被视为私有。
格式1:设置在launch中,node外
格式2:设置在node中。
command=“load | dump | delete” (可选,默认 load)
加载、导出或删除参数
file=“$(find xxxxx)/xxx/yyy…”
加载或导出到的 yaml 文件
param=“参数名称”
ns=“命名空间” (可选)
读取yaml文件,将参数送到参数服务器中,yaml文件如下:
params.yaml
bg_R: 100
bg_G: 125
bg_B: 500
6.1 rosparam参数加载
一个在launch中加载,一个在node中加载。
<launch deprecated="此文件已经过时,不建议使用!"><param name="paramA" type="int" value="100" /><!-- rosparam使用:操作参数服务器数据 --><rosparam command="load" file="$(find launch01_basic)/launch/params.yaml"/><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"><remap from="/turtle1/cmd_vel" to="cmd_vel"/><param name="paramB" type="double" value="3.14"/><rosparam command="load" file="$(find launch01_basic)/launch/params.yaml"/></node><!--键盘控制节点 --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>
6.2 rosparam参数导出
将参数服务器中的数据都导出到一个yaml文件。
新建一个dump.launch
文件,先启动start_turtle.launch,再启动roslaunch launch01_basic dump.launch
。
<launch ><rosparam command="dump" file="$(find launch01_basic)/launch/params_out.yaml"/>
</launch>
可以发现params_out.yaml
文件已经被导出。
background_b: 255
background_g: 86
background_r: 69
bg_B: 500
bg_G: 125
bg_R: 100
my_turtle: {bg_B: 500, bg_G: 125, bg_R: 100, paramB: 3.14}
paramA: 100
rosdistro: 'kinetic'
roslaunch:uris: {host_chen_hp_envy_te01_1xxx__43731: 'http://chen-HP-ENVY-TE01-1xxx:43731/',host_chen_hp_envy_te01_1xxx__45643: 'http://chen-HP-ENVY-TE01-1xxx:45643/'}
rosversion: '1.12.17'
run_id: 0d3fbfae-d9e1-11ec-8b1d-80e82cf982d4
6.3 rosparam参数删除
<launch ><rosparam command="dump" file="$(find launch01_basic)/launch/params_out.yaml"/><!-- 删除参数 --><rosparam command="delete" param="bg_B"/>
</launch>
7.group标签属性
标签可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间
ns=“名称空间” (可选)
clear_params=“true | false” (可选)
启动前,是否删除组名称空间的所有参数(慎用…此功能危险)
turtle.launch
<launch><!-- 启动两对乌龟GUI与键盘控制节点 --><group ns="first"><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></group><group ns="second"><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></group></launch>
roslaunch launch01_basic turtle.launch
rosnode list
成功对相同的节点进行了分组。
8.arg标签属性
arg标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性
name=“参数名称”
default=“默认值” (可选)
value=“数值” (可选)
不可以与 default 并存
doc=“描述”
参数说明
8.1arg使用参数默认值
<launch><!-- 需求:演示arg的使用,需要设置多个参数,这些参数使用的时同一个值,怎么设置? --><arg name="car_length" default="0.55"/><param name="A" value="$(arg car_length)"/><param name="B" value="$(arg car_length)"/><param name="C" value="$(arg car_length)"/><param name="D" value="$(arg car_length)"/>
</launch>
roslaunch launch01_basic arg.launch
8.2arg使用动态传参
roslaunch launch01_basic arg.launch car_length:=0.6
ROS 学习笔记3. launch文件的使用相关推荐
- ROS学习笔记-roslaunch文件的编写用sh脚本控制launch文件启动顺序
转载自:https://mp.weixin.qq.com/s?__biz=MzUyMTkxODQyOQ==&mid=2247484719&idx=1&sn=27b3a01c29 ...
- ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行
ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...
- ROS 学习笔记(二):自定义消息msg+Publisher+Subscriber 示例运行
ROS 学习笔记(二):自定义消息msg+Publisher+Subscriber 示例运行 一.自定义消息: 1.新建msg文件夹,创建定义Person.msg 文件 mkdir -p ~/catk ...
- ROS学习笔记(八): ROS通信架构
ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...
- ROS学习笔记七:使用rqt_console和roslaunch
ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...
- ROS学习笔记二:探索ROS文件系统
ROS学习笔记二:探索ROS文件系统 ROS针对自己文件的特性,具有一些自己的工具命令,当针对ROS文件进行操作的时候是非常方便的.这些命令和ubuntu系统原有的命令相似但却不同,单独针对ROS文件 ...
- ROS学习笔记之小乌龟跟随
ROS学习笔记之小乌龟跟随 说明:整个案例是跟着赵虚左老师的视频和文档资料学习的,特此感谢赵虚左老师和Autolabor官方 文档地址 视频地址 学习案例之前的预备知识:TF坐标变换 大体实现流程: ...
- ros学习笔记12——python实现发布和接收ros topic
ros学习笔记12--python实现发布和接收ros topic 一.简单demo 1.工作空间是存放工程开发的相关文件的文件夹 2.创作工作空间指令 3 .创建功能包 4. 创建Topic的订阅发 ...
- ROS学习笔记之——移动机器人的导航
之前博客<ROS学习笔记之--激光雷达SLAM建图>已经介绍过如何通过激光雷达SLAM建图了,本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMC ...
最新文章
- iOS 状态栏的图标
- 2个网页跳来跳去_怎么写最优化的网页标题标签(Title Tag)?
- JavaScript eval() 函数
- Zookeeper 客户端源码吐血总结
- 【转】基于XML-RPC的BloggerAPI学习
- 基于xml技术的操作
- eclipse 使用 maven 无法编译 jsp 文件的问题
- 跟老板参加饭局,席间老板叫我去加菜,我该怎么做?
- DHCP服务、NFS、vsftp服务的简单搭建
- Python strip lstrip rstrip使用方法(字符串处理空格)
- 网易经典评论(一)创业
- 将格林尼治时间转日期格式
- dell台式机安装centos7网卡设置
- 编一程序,从键盘输入圆的半径,计算并输出圆的正内接六边形的面积和占圆面积百分比
- React.SetStateAction<never[]>
- 写论文比较有用的网站
- Docker 安装和使用日常命令全覆盖
- 为什么区分LHS和RHS?
- python实践报告总结_关于开发Python项目的心得总结
- pr安装无法启动 计算机丢失,为什么pr安装成功却无法启动?
热门文章
- 医咖会免费SPSS教程学习笔记—Cohen’s kappa系数
- PC按键精灵读取txt文本出现乱码怎么办?按键精灵手机助手读取txt文本中文变问号怎么办?
- 无法通过终端(远程桌面)服务启动MATLAB的解决办法
- [iOS越狱开发]安装command line tools for Xcodew
- [软件更新]SRS Audio Sandbox v1.9.0.4 汉化版
- 蒲公英wifi怎么卸载干净_蒲公英WiFi广告怎么彻底删除
- discuz X2数据字典
- 全球及中国不锈钢市场投资前景与发展走势研究报告2022版
- unrecognized or represents more than one time zone
- QQ邮箱取消免费扩容;苹果搜索引擎“胎死腹中”,核心成员已回归谷歌麾下;Xcode 14导致应用体积大增|极客头条