使用rqt_console和roslaunch---ROS学习第7篇
文章目录
- 1. 准备工作
- 2.使用rqt_console和rqt_logger_level
- 2.1 日志记录器级别
- 2.2 使用roslaunch
- 2.3 launch文件
- 2.4 launch解析
- 2.5 使用roslaunch
本篇介绍在ROS中使用rqt_console和rqt_logger_level进行调试,以及使用roslaunch同时启动多个节点
1. 准备工作
本篇会用到rqt和turtlesim这两个软件包,需要先安装:
$ sudo apt-get install ros-noetic-rqt ros-noetic-rqt-common-plugins ros-noetic-turtlesim
这里是基于noetic版本。
2.使用rqt_console和rqt_logger_level
rqt_console连接到了ROS的日志框架,以显示节点的输出信息。rqt_logger_level允许我们在节点运行时改变输出信息的详细级别,包括Debug、Info、Warn和Error。
现在我们来看一下turtlesim在rqt_console中输出的信息,同时在使用turtlesim时切换rqt_logger_level中的日志级别。在启动turtlesim之前先在两个新终端中运行rqt_console和rqt_logger_level:
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
现在在另一个新终端中启动turtlesim
$ rosrun turtlesim turtlesim_node
默认的日志级别是Info,启动turtlesim后没有看到console中中有打印信息,我移动turtle碰墙后看到了Warn信息,如下:
可以通过在console中显示不同level的信息,比如:
还可以通过LoggerLevel的设置来输出不同level的信息
2.1 日志记录器级别
日志级别的优先级按以下顺序排列:
Fatal (致命)
Error (错误)
Warn (警告)
Info (信息)
Debug (调试)
Fatal是最高优先级,Debug是最低优先级。通过设置日志级别,你可以获得所有优先级级别,或只是更高级别的消息。比如,将日志级别设为Warn时,你会得到Warn、Error和Fatal这三个等级的日志消息。
现在按Ctrl+C退出turtlesim节点。接下来我们将使用roslaunch来启动多个turtlesim节点和一个模仿者节点,来让一个乌龟模仿另一个乌龟。
2.2 使用roslaunch
roslaunch可以用来启动定义在launch(启动)文件中的节点。
用法:
$ roslaunch [package] [filename.launch]
先切换到我们之前创建和构建的study软件包目录下,对应目录是~/catkin_ws/src/study,在此目录下创建launch目录下:
$ mkdir launch
$ cd launch
注意:存放launch文件的目录不一定非要命名为launch,事实上都不用非得放在目录中,roslaunch命令会自动查找经过的包并检测可用的启动文件。然而,这种推荐的标准做法被认为是“最佳实践”。
2.3 launch文件
现在一起创建一个名为study.launch的launch文件并复制粘贴以下内容进去:
<launch><group ns="turtlesim1"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group><group ns="turtlesim2"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group><node pkg="turtlesim" name="mimic" type="mimic"><remap from="input" to="turtlesim1/turtle1"/><remap from="output" to="turtlesim2/turtle1"/></node></launch>
2.4 launch解析
下面我们开始拆解launch XML文件
<launch>
首先用launch标签开头,以标明这是一个launch文件
<group ns="turtlesim1"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group><group ns="turtlesim2"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group>
此处创建了两个分组,并以命名空间(namespace)标签来区分,其中一个名为turtulesim1,另一个为turtlesim2,两个分组中都有相同的名为simde turtlesim节点。这样可以让我们同时启动两个turtesim模拟器,而不会产生命名冲突。
<node pkg="turtlesim" name="mimic" type="mimic"><remap from="input" to="turtlesim1/turtle1"/><remap from="output" to="turtlesim2/turtle1"/></node>
在这里启动模仿节点,话题的输入和输出分别重命名为turtlesim
1和turtlesim2,这样就可以让turtlesim2模仿turtlesim1了。
</launch>
这行使得launch文件的XML标签闭合。
2.5 使用roslaunch
现在通过launch命令运行launch文件
$ roslaunch study study.launch
现在将会会有两个turtlesim被启动,然后我们一个新终端发送命令
我们还可以用rqt_graph来更好地理解launch文件所做的事情。运行rqt_graph
到此,我们已经学会了rqt_console和roslaunch命令的使用。
使用rqt_console和roslaunch---ROS学习第7篇相关推荐
- ROS学习之Arduino篇——读取并发布各种传感器数据
本篇主要包括以下五部分内容: 1. 说明 2. 在rosserial_arduino中自定义数据类型 3. 使用Arduino读取传感器的数据 4. 更改代码 5. 测试 本篇将读取超声波雷达.电位计 ...
- 转‘ROS学习心得——安装篇——ROS安装’
ROS学习心得--安装篇--ROS安装 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: ROS(Robot Operating System) ...
- ROS学习心得——安装篇——ROS安装
ROS学习心得--安装篇--ROS安装 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: ROS(Robot Operating System) ...
- ROS学习心得——机器人篇——同一局域网下机器人与主机的通信
ROS学习心得--机器人篇--同一局域网下机器人与主机的通信 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 关于这一章我将详细的介绍如何利用 ...
- 理解ROS服务和参数---ROS学习第6篇
文章目录 1.ROS服务 2.使用rosservice 2.1 rosservice list 2.2 rosservice type 2.3 rosservice call 3. 使用rospara ...
- 理解ROS话题---ROS学习第5篇
文章目录 1. 通过键盘控制turtle 2. ROS话题 2.1 使用rqt_graph 2.2 介绍rostopic 2.3 使用功能rostopic echo 2.4 使用rostopic li ...
- 编写简单的服务和客户端(C++)---ROS学习第10篇
文章目录 1. 编写服务节点 2. 编写客户端节点 3. 构建节点 4. 运行可执行文件 1. 编写服务节点 这里,我们将创建简单的服务(Service)节点add_two_ints_server,该 ...
- 编写简单的发布者和订阅者(C++)---ROS学习第9篇
文章目录 1.编写发布者节点 2. 编写订阅者节点 3.构建节点 4.运行节点 1.编写发布者节点 在之前创建的study/src目录下创建talker.cpp文件并粘贴以下内容进去 #include ...
- 创建ROS消息和服务---ROS学习第8篇
文章目录 1. msg和srv介绍 2. 使用msg 2.1 创建msg 2.2 使用rosmsg 3. 使用srv 3.1 创建srv 3.2 使用rossrv 4. msg和srv的一般步骤 5. ...
- 理解ROS节点---ROS学习第4篇
文章目录 1.图概念速览 2.节点 3.客户端库 4.roscore 5.使用rosnode 6.使用rosrun 1.图概念速览 计算图(Computation Graph)是一个由ROS进程组成的 ...
最新文章
- java enum判断_Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
- 10双屏鼠标过不去_升级到2.0版本的双屏工作桌!家中工作高效还需利器辅助
- mysql之慢查询详解,mysqldumpslow的使用
- Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏
- centos下升级g++版本
- Simulink之理想开关
- 解决弹出的窗口window.open会被浏览器阻止的问题
- 记录zedboard无法识别com的解决思路
- 艾伟也谈项目管理,我的项目管理观点
- Windows程序设计的第一个实例
- 循环冗余校验(CRC,模2运算)
- 如何防止135端口入侵
- 中国历史上十大无名英雄
- Kaggle 时间序列教程
- html制作备案表格代码,如何在首页中插入备案编号HTML代码
- uva 10285 - Longest Run on a Snowboard(dp+记忆化搜索)
- 全国计算机大赛获奖奖品,国内含金量高的竞赛证书全汇总
- 阿里云OSS存储实例
- ClockGen,旧电脑的超频利器
- 机器学习算法之贝叶斯
热门文章
- 公文字体字号标准2020_党政机关公文格式(收藏)
- 009_storage.conf配置详情
- 007_logback配置
- 集合框架源码分析三(实现类篇ArrayList,LinkedList,HashMap)
- JavaWeb:HttpServletResponse和HttpServletRequest
- Java基础:IO流之File类
- Android CardView 开发过程中要注意的细节
- ping连接linux无法访问目标主机,无法访问目标主机是什么情况【解决方法】
- catia 桥接曲面圆角_4.3.7.1-Catia曲面之多桥接曲面_简单构面
- 电脑开不了不用U盘怎么装系统?