ROS学习之日志消息

摘要:
ROS日志系统的核心思想是使程序生成一些短文本字符流,这些短文本字符是日志消息。ROS_…_ STREAM_ THROTTLE宏的每个实例在第一次执行时都会生成一条日志消息,随后的执行将被忽略,直到经过指定的时间间隔。

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来通过图形界面进行配置

免责声明:文章转载自《ROS学习之日志消息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL中一次插入多条数据Google Drive 里的文件下载的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vc++编程之在程序中加入网址链接

       在vc++对话框编程中,我们处于某种需要(介绍自己的软件或者自己的博客)可以在对话框上增加一个网址链接,用户只要一点击,就进入了相应的网页,我在此演示下如何完成。     1 打开编译器,我们新建一个基于对话框的工程(其他形式的也可以),我们以对话框为例,在资源视图中去除原有的静态文本控件,然后为对话框添加一个静态文本框(注:其他控件也可以...

Arduino IDE for ESP8266教程(四)网页控制灯 简单页面

修改ssid和passwd,将程序烧写到8266上,等待串口返回连接成功的消息,连接成功之后可以看到返回有一个ip地址,使用浏览器方位这个ip地址就可以看到这个消息: 连接路由器后,返回IP地址 192.168.1.104 手机连上同个路由器,输入192.168.1.104,得到(下图为示意图,IP地址更换即可) 这就是handleMain中返回给浏览...

Skimap_ros 利用RGBD创建Octomap(一)

1. 奥比中光astra RGBD相机安装 1.1 安装依赖 $ sudo apt-get install build-essential freeglut3 freeglut3-dev 1.2 检查udev版本,需要libudev.so.1,如果没有则添加 #check udev version, Orbbec Driver need libudev...

Kafka 权限管理实战(最全整理)

一、概述 1、Kafka的权限分类 1)、身份认证(Authentication):对client 与服务器的连接进行身份认证,brokers和zookeeper之间的连接进行Authentication(producer 和 consumer)、其他 brokers、tools与 brokers 之间连接的认证。 2)、权限控制(Authorizatio...

百度竞价门再跟踪:违规医疗广告数量仍大幅增加

网易科技讯 2月18日消息,网易科技日前收到一份署名为反流氓软件联盟的《百度医疗医药广告统计报告》(以下简称报告),据该调研报告中显示,在百度医疗医药竞价排名广告违规被媒体曝光后,这类广告数量随后有所减少,不过在风波平息后,此类广告数量又大幅增加,并且现在仍有大量违规医疗广告。 医疗类广告数量高达遭曝光时两倍 百度在2008年11月因受到媒体曝光影响...

Xamarin Mono For Android 4.6.07004 完整离线安装破解版(C#开发Android、IOS工具)

Xamarin Mono For Android 常见问题解决方法/工具/教程大全:http://www.wuleba.com/tag/Mono 2013-05-24 附加消息,吾乐吧软件站提醒大家: Xamarin 4.6.07004 压缩包里面的 Xamarin iOS 插件最新版(mtvs-1.1.200.0)“不能”破解,请不要安装最新这个。与此同时...