ROS学习之日志消息

ROS日志系统的核心思想,就是使程序生成一些简短的文本字符流,这些字符流便是日志消息。

0.1严重级别

ROS中,日志消息分为五个不同的严重级别,也可简称为严重性或者级别。按照严重性程度递增,这些级别有
       DEBUG
       INFO
       WARN
       ERROR
       FATAL

0.2生成日志消息

0.2.1简单日志消息

生成简单的日志消息,总共有五个基本的 C++宏用来产生日志消息,其中每个宏对应一个严重级别:
     ROS_DEBUG_STREAM(message);
     ROS_INFO_STREAM(message);
     ROS_WARN_STREAM(message);
     ROS_ERROR_STREAM(message);
     ROS_FATAL_STREAM(message);

其实这个宏的定义就把格式输出包含到里面,其中各个宏的参数 message 可以处理 C++中标准输出流(ostream)中的各种表达式,比如 std::cout。这包括在 int 或者 double 这种基本数据类型上使用插入操作符(<<),以及已经重载这个操作符的 复 合 数 据 类 型

0.2.2生成单次日志消息

生成单次消息,其实就是在程序中加入了一个静态局部变量来检测,进入一次后就把变量改为false则下次检测到后则不输出该信息。

 // Don't do this directly. Use ROS_..._STREAM_ONCE instead.
{
static bool first_time = true ;
if (first_time) {
ROS_INFO_STREAM( "Here's some important information"
<<" that will only appear once.");
first_time = false;
}
}

ROS_DEBUG_STREAM_ONCE(message);
     ROS_INFO_STREAM_ONCE (message);
     ROS_WARN_STREAM_ONCE (message);
     ROS_ERROR_STREAM_ONCE (message);
     ROS_FATAL_STREAM_ONCE (message);

0.2.3生成频率受控日志消息

参数 interval 是 double 类型的,它表示以秒为单位的时间量,这是相邻日志消息出现的最小时间间隔。 ROS_..._STREAM_THROTTLE宏的每一个实例在第一次执行时都会生成日志消息(与不带_THROTTLE 后缀版本宏的日志消息相同),随后的执行都会被忽略,直到经过了指定的时间间隔。每个宏的实例的时间被单独跟踪,方法是使用一个局部静态变量来存储上一次生成日志的时间。

ROS_DEBUG_STREAM_THROTTLE(interval, message);
     ROS_INFO_STREAM_THROTTLE(interval, message);
     ROS_WARN_STREAM_THROTTLE(interval, message);
     ROS_ERROR_STREAM_THROTTLE(interval, messge);
     ROS_FATAL_STREAM_THROTTLE(interval, message);

0.3查看日志消息

0.3.1控制台输出日志

0.3.2rosout输出日志

    除了在控制台上显示,每一个日志消息都被发布到话题/rosout 上。该话题的消息类型是 rosgraph_msgs/Log

我们可以通过rostopic echo /rosout 来查看消息,也可以通过一个节点来订阅日志话题还可以通过指令rqt_console来通过图形界面来显示日志消息。

0.3.3日志文件

   日志消息的第三个,也是最后一个目的地,是由 rosout 节点生成的日志文件。作为/rosout 话题回调函数的一部分,该节点可以将日志消息作为一行写入到一个日志文件,文件名类似于:~/.ros/log/run_id/rosout.log

有时日志过多时需要我们清除系统日志,利用指令rosclean check如果日志正在消耗过多的硬盘空间,可以通过下面的命令删除所有已经存在的日志:rosclean purge

0.4日志启用和禁用

0.4.1通过命令行设置日志级别

设置一个节点的日志级别,可以使用与以下类似的命令:rosservice call /node-name/set_logger_level     ros.package-name     level条命令调用 set_logger_level 服务,该服务由各个节点自动提供。
        node-name 是你期望设置日志级别的节点名称
        package-name 正如你猜测的一样,是拥有这个节点的功能包的名称

level 参数是 DEBUG、INFO、WARN、ERROR、FATAL 中的一个89字符串,即为节点设置的日志级别。
       例如,为了在示例程序中启用 DEBUG 级别的消息,我们可以使用下面这条命令:
       rosservice call /count_and_log/set_logger_level ros.agitr DEBUG
       注意,由于这条命令直接与节点进行交互,我们不能在节点启动之前使用它。如果一切正常,这个对 rosservice 的调用将输出一个空行。

0.4.2通过图形界面设置日志级别
       可以尝试以下命令:rqt_logger_level来通过图形界面进行配置

转载于:https://www.cnblogs.com/flyingjun/p/8831455.html

ROS学习之日志消息相关推荐

  1. ROS学习十、无人机通信模块mavros(1)常用的mavros消息类型

    ROS学习十.无人机通信模块mavros(1)常用的mavros消息类型 前言 数传 全局位置 IMU惯导 本地位置 飞控命令 设置飞行位点.速度.加速度 系统状态 系统时间 其它 前言 mavros ...

  2. 周末ROS学习沙龙第一期——ROS历史、安装、消息话题节点服务等概念、SLAM导航框架及参数、小车上运行SLAM

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

  3. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

  4. ros学习(2-2):ros节点创建(python)

    参考 Python创建简单的ROS节点: 用Python实现ROS节点(这里也说明了用Python写ROS功能包也是需要CMakelists.txt的) https://blog.csdn.net/s ...

  5. ROS学习----依据ROS入门教程,整理的ROS命令

    文章目录 ROS命令学习 文件系统介绍 ROS文件系统工具命令:rospack,rosstack roscd,rosls 创建ROS程序包命令:roscreate,catkin程序包结构,catkin ...

  6. 自动驾驶(六十五)---------ROS学习笔记(1)

    ROS是面向机器人的开源的元操作系统,它能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能实现.进程间消息传递和程序包管理等.此外,它还提供相关工具和库,用于获取.编译.编辑代码以 ...

  7. ROS学习记录(一)

    这段时间准备学习ROS,写个博客记录下,方便查阅. 这些知识大部分都是ROS官网教程的复现. 1.创建ROS工作空间 运行命令: mkdir -p ~/catkin_ws/src (创建一个文件夹) ...

  8. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 1.日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论 ...

  9. ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行

    ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...

最新文章

  1. 华为机试第九题python
  2. spring--(4)级联属性赋值
  3. matlab pareto 升级版
  4. 怎么设置qq信息同步服务器,QQ输入法如何设置网络同步
  5. python3.7下载包的命令_LINUX下安装Python3.7、Pycharm[Linux命令记录]
  6. Sun公司开源游戏服务器Project Darkstar Server——(Sun game server , 简称 sgs)学习笔记(二):多人游戏...
  7. 525. Contiguous Array两位求和为1的对数
  8. 深入研读Cache存储的计算
  9. 产品的细节能决定成败吗?
  10. 如何在线向虚拟机中安装redis单机版的详细步骤
  11. windows server 2008 远程终端激活
  12. 遗传算法(geatpy)
  13. 微信公众号迁移公证书好办吗,真实经历!公众平台迁移见证需要什么材料,流程及费用详解
  14. ansys怎么使用anand模型_ansys粘塑性分析-Anand模型.pdf
  15. 商城购物APP——YiGo
  16. 基于MATLAB的运动模糊图像处理
  17. 在Windows10系统中同步Internet 时间
  18. MM 固定汇率的使用在MIRO的问题
  19. PPT处理控件Aspose.Slides功能演示:使用 C# 在 PowerPoint 演示文稿中创建 SmartArt
  20. Android Google Face API 增强现实教程

热门文章

  1. mysql数据库优化韩顺平_韩顺平 Mysql数据库优化(一) 优化概述
  2. 关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存
  3. C语言 共享库(动态库)制作
  4. 内存区域的划分和分配
  5. 第九章 PX4-pixhawk-姿态估计解析
  6. [NOTE] Web For Pentester靶场练习笔记
  7. 问题:python3关于json文件多余一行后发生的错误
  8. [BUUCTF-pwn]——others_shellcode
  9. c++11-noexcept
  10. ajax接口调节,前端用ajax调接口怎么破啊?