ROS2编程基础课程--日志

举报
zhangrelay 发表于 2021/07/15 01:48:05 2021/07/15
【摘要】 课程补充参考资料:https://download.csdn.net/download/zhangrelay/11751608 Logging and logger configuration  日志记录和日志记录器配置 Table of Contents 目录 Overview 概叙 Logger concepts 日志记...

课程补充参考资料:https://download.csdn.net/download/zhangrelay/11751608


Logging and logger configuration 

日志记录和日志记录器配置

Table of Contents 目录

Overview 

Logger concepts 日志记录器概念

Logging usage 日志记录用法

Logger configuration 日志记录器配置

Command line configuration of the default severity level 默认严重性级别的命令行配置

Programmatic configuration of individual loggers 单个记录器的编程配置

Console output configuration 控制台输出配置

Overview 概述 

The logging functionality currently supported is: 目前支持的日志记录功能是:

 

  • Client libraries (rclcpp and rclpy) using a common logging library to provide: 

客户端库(rclcpprclpy)使用通用日志记录库来提供:

  1. Log calls with a variety of filters. 

使用各种过滤器记录调用

    1. Hierarchy of loggers. 

记录器的层次结构。

  1. Loggers associated with nodes that automatically use the node’s name and namespace. 

与自动使用节点名称和命名空间的节点关联的记录器。

  • Console output. 

控制台输出。

  1. File output and functionality akin to rosout for remote consumption of messages is forthcoming. 

文件输出和功能类似于用于远程消费消息的rosout即将发布。

 

  • Programmatic configuration of logger levels. 

记录器级别的编程配置。

  1. Launch-time configuration of the default logger level is supported; config files and external configuration at run-time is forthcoming. 

支持默认记录器级别的启动时配置; 即将在运行时配置文件和外部配置。

 

 

 

[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim

[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

[WARN] [turtlesim]: Oh no! I hit the wall! (Clamping from [x=11.112445, y=5.544445])

[WARN] [turtlesim]: Oh no! I hit the wall! (Clamping from [x=11.120889, y=5.544445])

Logger concepts 日志记录器概念

Log messages have a severity level associated with them: DEBUGINFOWARNERROR or FATAL, in ascending order. 

日志消息与相关联的严重性级别:DEBUGINFOWARNERROR或者FATAL,按升序排列。

A logger will only process log messages with severity at or higher than a specified level chosen for the logger. 

记录器仅处理严重性等于或高于为日志记录器选择的指定级别的日志消息。

Each node (in rclcpp and rclpy) has a logger associated with it that automatically includes the node’s name and namespace. If the node’s name is externally remapped to something other than what is defined in the source code, it will be reflected in the logger name. Non-node loggers can also be created that use a specific name. 

每个节点( rclcpprclpy)都有一个与之关联的记录器,它自动包含节点的名称和名称空间。如果节点的名称从外部重新映射到源代码中定义的名称以外的其他名称,则它将反映在记录器名称中。还可以创建使用特定名称的非节点记录器。

Logger names represent a hierarchy. If the level of a logger named “abc.def” is unset, it will defer to the level of its parent named “abc”, and if that level is also unset, the default logger level will be used. When the level of logger “abc” is changed, all of its descendants (e.g. “abc.def”, “abc.ghi.jkl”) will have their level impacted unless their level has been explicitly set. 

日志记录器名称表示层次结构。如果未设置名为“abc.def”的记录器的级别,它将推迟到其名为“abc”的父级别,如果该级别也未设置,则将使用默认记录器级别。当记录器“abc”的级别改变时,其所有后代(例如“abc.def”,“abc.ghi.jkl”)将对其级别产生影响,除非已明确设置其级别。

Logging usage 日志记录用法

In C++: 在C ++中:

有关示例用法,请参考日志记录演示

有关功能的详尽列表,请参考rclcpp文档

In Python: 在Python中:

有关节点记录器的示例用法,请参考rclpy示例

  • See the rclpy tests for example usage of keyword arguments (e.g. skip_firstonce). 

有关关键字参数的使用示例,请参考rclpy测试(例如skip_firstonce)。

 

Logger configuration 日志记录器配置

Command line configuration of the default severity level 

默认严重性级别的命令行配置

As of the Bouncy ROS 2 release, the default severity level for loggers can be configured from the command line with the following, for example (the level string is not case sensitive):  

从Bouncy ROS 2及以后的版本开始,可以从命令行配置记录器的默认严重性级别,例如

(级别字符串不区分大小写)

ros2 run demo_nodes_cpp listener _log_level:=debug

 

This will affect all loggers that have not explicitly been configured to use a particular severity level. Configuration of specific loggers from the command line is forthcoming. 

这将影响未明确配置为使用特定严重性级别的所有记录器。即将从命令行配置特定记录器。

Programmatic configuration of individual loggers 

各个记录器的编程配置

Logger configuration is still under development. For now, the severity level of individual loggers can be configured programmatically with, e.g.: 

记录器配置仍在开发中。目前,可以通过编程方式配置各个记录器的严重性级别,例如:

In C++: 在C ++中:

rcutils_logging_set_logger_level("logger_name", RCUTILS_LOG_SEVERITY_DEBUG);

 

In Python: 在Python中:

logger.set_level(rclpy.logging.LoggingSeverity.DEBUG)

rclpy.logging.set_logger_level('logger_name', rclpy.logging.LoggingSeverity.DEBUG)

 

The logging demo provides an example of manually exposing a service so that loggers can be configured externally; in the future we expect runtime configuration capabilities of loggers to be exposed automatically. 

所述日志记录演示提供的手动开发服务,使得记录器可从外部配置; 在未来,希望记录器的运行时配置功能能够自动公开。

Console output configuration 

控制台输出配置

By default, console output will be formatted to include the message severity, logger name, and the message. Information such as the file name, function name and line number of the log call are also available. Custom console output format can be configured with the RCUTILS_CONSOLE_OUTPUT_FORMAT environment variable: see the rcutils documentation for details. As rclpy and rclcpp both use rcutils for logging, this will effect all Python and C++ nodes. 

默认情况下,控制台输出将被格式化为包括消息严重性,记录器名称和消息。还可以使用日志调用的文件名,函数名和行号等信息。可以使用RCUTILS_CONSOLE_OUTPUT_FORMAT环境变量配置自定义控制台输出格式:有关详细信息,参考rcutils文档。由于rclpyrclcpp都使用rcutils了日志记录,这将影响所有的Python和C ++节点。

Features Status 功能状态

The features listed below are available in the current ROS 2 release. Unless otherwise specified, the features are available for all supported platforms (Ubuntu 18.04, OS X 10.12.x, Windows 10), DDS implementations (eProsima Fast RTPS, RTI Connext and ADLINK Opensplice) and programming language client libraries (C++ and Python). For planned future development, see the Roadmap. 

下面列出的功能可在当前的ROS 2版本中找到。除非另有说明,否则这些功能适用于所有支持的平台(Ubuntu 18.04,OS X 10.12.x,Windows 10),DDS实现版本(eProsima Fast RTPSRTI Connext和ADLINK Opensplice)和编程语言客户端库(C ++和Python)。有关未来发展的计划,请参考路线图

Functionality 功能

Link 链接

Fine print

Discovery, transport and serialization over DDS 通过DDS进行发现,传输和序列化

Article

 

Support for multiple DDS implementations, chosen at runtime 

支持在运行时选择的多个DDS实现

Tutorials

Currently eProsima Fast RTPS, RTI Connext and ADLINK OpenSplice are fully supported.

Common core client library that is wrapped by language-specific libraries 

由特定语言的库封装的公共核心客户端库

Details

 

Publish/subscribe over topics 

发布/订阅主题

Sample codeArticle

 

Clients and services 

客户和服务

Sample code

 

Set/retrieve parameters 

设置/检索参数

Sample code

 

ROS 1 - ROS 2 communication bridge 

ROS 1 - ROS 2通信桥接

Tutorial

Available for topics and services, not yet available for actions.

Quality of service settings for handling non-ideal networks 

处理非理想网络的服务质量设置

Demo

 

Inter- and intra-process communication using the same API 

使用相同API的进程间和进程内通信

Demo

Currently only in C++.

Composition of node components at compile-, link- or dlopen-time 

编译链接或dlopen时间节点组件的组成

Demo

Currently only in C++.

Support for nodes with managed lifecycles 

支持具有托管生命周期的节点

Demo

Currently only in C++.

DDS-Security support 

DDS-Security支持

Demo

 

Command-line introspection tools using an extensible framework 

使用可扩展框架的命令行自检工具

Tutorial

 

Launch system for coordinating multiple nodes 

启动系统以协调多个节点

Tutorial

 

Namespace support for nodes and topics 

命名空间支持节点和主题

Article

 

Static remapping of ROS names 

静态重新映射ROS名称

Tutorial

 

Demos of an all-ROS 2 mobile robot 

全ROS 2移动机器人的演示

Demo

 

Preliminary support for real-time code 

初步支持实时代码

Demodemo

Linux only. Not available for Fast RTPS.

Preliminary support for “bare-metal” microcontrollers 

对“bare-meta”微控制器的初步支持

Wiki

 

Beside features of the platform the most impact of ROS comes from its available packages. The following are a few high profile packages which are available in the latest release: 

除了平台的功能外,ROS的最大影响来自其可用的包。以下是最新版本中提供的一些高级别功能的软件包:

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/100773099

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。