文章目录

  • 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篇相关推荐

  1. ROS学习之Arduino篇——读取并发布各种传感器数据

    本篇主要包括以下五部分内容: 1. 说明 2. 在rosserial_arduino中自定义数据类型 3. 使用Arduino读取传感器的数据 4. 更改代码 5. 测试 本篇将读取超声波雷达.电位计 ...

  2. 转‘ROS学习心得——安装篇——ROS安装’

    ROS学习心得--安装篇--ROS安装 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: ROS(Robot Operating System) ...

  3. ROS学习心得——安装篇——ROS安装

    ROS学习心得--安装篇--ROS安装 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: ROS(Robot Operating System) ...

  4. ROS学习心得——机器人篇——同一局域网下机器人与主机的通信

    ROS学习心得--机器人篇--同一局域网下机器人与主机的通信 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 关于这一章我将详细的介绍如何利用 ...

  5. 理解ROS服务和参数---ROS学习第6篇

    文章目录 1.ROS服务 2.使用rosservice 2.1 rosservice list 2.2 rosservice type 2.3 rosservice call 3. 使用rospara ...

  6. 理解ROS话题---ROS学习第5篇

    文章目录 1. 通过键盘控制turtle 2. ROS话题 2.1 使用rqt_graph 2.2 介绍rostopic 2.3 使用功能rostopic echo 2.4 使用rostopic li ...

  7. 编写简单的服务和客户端(C++)---ROS学习第10篇

    文章目录 1. 编写服务节点 2. 编写客户端节点 3. 构建节点 4. 运行可执行文件 1. 编写服务节点 这里,我们将创建简单的服务(Service)节点add_two_ints_server,该 ...

  8. 编写简单的发布者和订阅者(C++)---ROS学习第9篇

    文章目录 1.编写发布者节点 2. 编写订阅者节点 3.构建节点 4.运行节点 1.编写发布者节点 在之前创建的study/src目录下创建talker.cpp文件并粘贴以下内容进去 #include ...

  9. 创建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. ...

  10. 理解ROS节点---ROS学习第4篇

    文章目录 1.图概念速览 2.节点 3.客户端库 4.roscore 5.使用rosnode 6.使用rosrun 1.图概念速览 计算图(Computation Graph)是一个由ROS进程组成的 ...

最新文章

  1. java enum判断_Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
  2. 10双屏鼠标过不去_升级到2.0版本的双屏工作桌!家中工作高效还需利器辅助
  3. mysql之慢查询详解,mysqldumpslow的使用
  4. Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏
  5. centos下升级g++版本
  6. Simulink之理想开关
  7. 解决弹出的窗口window.open会被浏览器阻止的问题
  8. 记录zedboard无法识别com的解决思路
  9. 艾伟也谈项目管理,我的项目管理观点
  10. Windows程序设计的第一个实例
  11. 循环冗余校验(CRC,模2运算)
  12. 如何防止135端口入侵
  13. 中国历史上十大无名英雄
  14. Kaggle 时间序列教程
  15. html制作备案表格代码,如何在首页中插入备案编号HTML代码
  16. uva 10285 - Longest Run on a Snowboard(dp+记忆化搜索)
  17. 全国计算机大赛获奖奖品,国内含金量高的竞赛证书全汇总
  18. 阿里云OSS存储实例
  19. ClockGen,旧电脑的超频利器
  20. 机器学习算法之贝叶斯

热门文章

  1. 公文字体字号标准2020_党政机关公文格式(收藏)
  2. 009_storage.conf配置详情
  3. 007_logback配置
  4. 集合框架源码分析三(实现类篇ArrayList,LinkedList,HashMap)
  5. JavaWeb:HttpServletResponse和HttpServletRequest
  6. Java基础:IO流之File类
  7. Android CardView 开发过程中要注意的细节
  8. ping连接linux无法访问目标主机,无法访问目标主机是什么情况【解决方法】
  9. catia 桥接曲面圆角_4.3.7.1-Catia曲面之多桥接曲面_简单构面
  10. 电脑开不了不用U盘怎么装系统?