ROS2编程基础课程--日志
课程补充参考资料:https://download.csdn.net/download/zhangrelay/11751608
Logging and logger configuration
日志记录和日志记录器配置
Table of Contents 目录
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:
客户端库(rclcpp和rclpy)使用通用日志记录库来提供:
- Log calls with a variety of filters.
使用各种过滤器记录调用。
-
- Hierarchy of loggers.
记录器的层次结构。
- Loggers associated with nodes that automatically use the node’s name and namespace.
与自动使用节点名称和命名空间的节点关联的记录器。
- Console output.
控制台输出。
- File output and functionality akin to rosout for remote consumption of messages is forthcoming.
文件输出和功能类似于用于远程消费消息的rosout即将发布。
- Programmatic configuration of logger levels.
记录器级别的编程配置。
- 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: DEBUG, INFO, WARN, ERROR or FATAL, in ascending order.
日志消息与其相关联的严重性级别:DEBUG,INFO,WARN,ERROR或者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.
每个节点(如 rclcpp和rclpy)都有一个与之关联的记录器,它自动包含节点的名称和名称空间。如果节点的名称从外部重新映射到源代码中定义的名称以外的其他名称,则它将反映在记录器名称中。还可以创建使用特定名称的非节点记录器。
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 ++中:
- See the logging demo for example usage.
有关示例用法,请参考日志记录演示
- See the rclcpp documentation for an extensive list of functionality.
In Python: 在Python中:
- See the rclpy examples for example usage of a node’s logger.
有关节点记录器的示例用法,请参考rclpy示例。
- See the rclpy tests for example usage of keyword arguments (e.g. skip_first, once).
有关关键字参数的使用示例,请参考rclpy测试(例如skip_first,once)。
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文档。由于rclpy和rclcpp都使用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 RTPS、RTI Connext和ADLINK Opensplice)和编程语言客户端库(C ++和Python)。有关未来发展的计划,请参考路线图。
Functionality 功能 |
Link 链接 |
Fine print |
Discovery, transport and serialization over DDS 通过DDS进行发现,传输和序列化 |
|
|
Support for multiple DDS implementations, chosen at runtime 支持在运行时选择的多个DDS实现 |
Currently eProsima Fast RTPS, RTI Connext and ADLINK OpenSplice are fully supported. |
|
Common core client library that is wrapped by language-specific libraries 由特定语言的库封装的公共核心客户端库 |
|
|
Publish/subscribe over topics 发布/订阅主题 |
|
|
Clients and services 客户端和服务端 |
|
|
Set/retrieve parameters 设置/检索参数 |
|
|
ROS 1 - ROS 2 communication bridge ROS 1 - ROS 2通信桥接 |
Available for topics and services, not yet available for actions. |
|
Quality of service settings for handling non-ideal networks 处理非理想网络的服务质量设置 |
|
|
Inter- and intra-process communication using the same API 使用相同API的进程间和进程内通信 |
Currently only in C++. |
|
Composition of node components at compile-, link- or dlopen-time 编译、链接或dlopen时间节点组件的组成 |
Currently only in C++. |
|
Support for nodes with managed lifecycles 支持具有托管生命周期的节点 |
Currently only in C++. |
|
DDS-Security support DDS-Security支持 |
|
|
Command-line introspection tools using an extensible framework 使用可扩展框架的命令行自检工具 |
|
|
Launch system for coordinating multiple nodes 启动系统以协调多个节点 |
|
|
Namespace support for nodes and topics 命名空间支持节点和主题 |
|
|
Static remapping of ROS names 静态重新映射ROS名称 |
|
|
Demos of an all-ROS 2 mobile robot 全ROS 2移动机器人的演示 |
|
|
Preliminary support for real-time code 初步支持实时代码 |
Linux only. Not available for Fast RTPS. |
|
Preliminary support for “bare-metal” microcontrollers 对“bare-meta”微控制器的初步支持 |
|
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
- 点赞
- 收藏
- 关注作者
评论(0)