ROS学习之日志消息

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

1、ros调试信息,输出不同颜色字体

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 这种基本数据类型上使用插入操作符(<<),以及已经重载这个操作符的 复 合 数 据 类 型

#include <ros/ros.h>
#include <ros/console.h>

int main( int argc, char **argv )
{
  ros::init( argc, argv, "rosdebug" );
  ros::NodeHandle n;
  ros::Rate rate( 1 );

  while( ros::ok() ) {
    ROS_INFO_STREAM_ONCE("loop start");
    ROS_DEBUG_STREAM( "DEBUG message." );
    ROS_INFO_STREAM ( "INFO message."  );
    ROS_WARN_STREAM ( "WARN message."  );
    ROS_ERROR_STREAM( "ERROR message." );
    ROS_FATAL_STREAM( "FATAL message." );
    ROS_INFO_STREAM_NAMED( "named_msg", "INFO named message." );
    ROS_INFO_STREAM_THROTTLE( 2, "INFO throttle message." );
    ros::spinOnce();
    rate.sleep();
  }
  return 1;
}

0.2.2生成单次日志消息

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


1

2

3

4

5

6

7

8

9

// 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/kerngeeksund/p/11147471.html

时间: 2024-10-13 08:49:04

ROS学习之日志消息的相关文章

ROS学习笔记_消息与服务(三)

创建消息 1 [email protected]:~/catkin_ws_2$ roscd beginner_tutorials/ 2 [email protected]:~/catkin_ws_2/src/beginner_tutorials$ mkdir msg 3 [email protected]:~/catkin_ws_2/src/beginner_tutorials$ echo "int64 num" > msg/Num.msg 在beginner_tutorial包

ROS中的日志(log)消息

学会使用日志(log)系统,做ROS大型项目的主治医生 通过显示进程的运行状态是好的习惯,但需要确定这样做不会影响到软件的运行效率和输出的清晰度.ROS 日志 (log) 系统的功能就是让进程生成一些日志消息,显示在屏幕上.发送到特定 topic 或者储存在特定 log 文档中,以方便调试.记录.报警等.下面简单介绍如何生成和查看日志消息. 日志消息 在ROS中,有一个特殊的话题叫作/rosout,它承载着所有节点的所有日志消息./rosout消息的类型是rosgraph_msgs/Log: r

ROS学习(十二)—— 编写简单的消息发布器和订阅器(C++)

一.创建发布器节点 1 节点功能: 不断的在ROS网络中广播消息 2 创建节点 (1)打开工作空间目录 cd ~/catkin_ws/src/beginner_tutorials p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 创建一个发布器节点("talker"),它将不断的在ROS网络中广播消息. --> { } (2)创建src文件夹 mkdir -p ~/catkin_ws/src/beginner_tu

linux 学习 14 日志管理

第十四讲 日志管理 14.1 日志管理-简介 1.日志服务 ?在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致. ?rsyslogd的新特点: ?基于TCP网络协议传输日志信息; ?更安全的网络传输方式: ?有日志消息的及时分析框架: ?后台数据库: ?配置文件中可以写简单的逻辑判断: ?与sysl

Java学习-007-Log4J 日志记录配置文件详解及实例源代码

此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-30 13:54:02,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKE56sxqtQCfP  访问密码 63d8 有关 Log4J 日志文件中日志级别及文件配置的详细情况,在 Log4J 的配置文件(xml.properties)中有详细的介绍,敬请参阅!

ros学习摘要

参考:http://wiki.ros.org/cn/ROS/Tutorials 1.安装并配置ROS环境 1.1 安装ROS  :apt安装无权限 1.2管理环境 : ROS是依赖组合空间的概念,配置脚本环境. 安装ROS期间,你会看到提示说需要 source 多个setup.*sh文件中的某一个,或者甚至提示添加这条'source'命令到你的启动脚本里面. 检查配置的环境变量: export | grep ROS $ source /opt/ros/hydro/setup.bash 事先在.b

Linux学习之日志管理(二十一)

Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服务名称 连接符号 日志等级 日志记录位置 日志轮替 日志文件命名 logrotate配置文件 logrotate命令 日志管理 日志服务 在Centos6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件

ROS学习网址【原创】

ROS学习网址 http://www.ros.org/ http://www.ros.org/news/book/ http://wiki.ros.org/ http://blog.exbot.net/archives/2966 http://blog.csdn.net/bobsweetie/article/details/43638761 http://blog.exbot.net/archives/category/ros

ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 joint 使用

我们接着上文  ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用继续完成创建带四个可以转动轮子的双层小车. 一 建立可以转动的joint <span style="font-size:18px;"><?xml version="1.0"?> <robot name="sp1s"> <link name="base_link"> <v