版本:
- ubuntu 16.04 Kinetic (这个版本之后支持了python,之前只支持c++)
介绍:
运行ros程序时,控制台日志输出输出是很重要的调试工具,ros可以通过全局变量的方式任意修改ros节点控制台输出流的格式,例如:
export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}'
把上述指令加入到~/.bashrc
文件中(或者其他shell配置文件),即可自动配置为该格式,这样启动的程序就是自己想要的输出了。
关键字说明:
关键字 | 输出示例 |
---|---|
severity | ERROR |
message | hello world 0 |
time | 1284058208.824620563 (如果没有可用的模拟时间,它只显示wall time) 1284058208.824620563, 1234567890.123456789 (如果有模拟时间,则首先显示wall time,然后显示模拟时间) |
walltime | 1284058208.824620563 (该特性在Python中一直可用,在c++中只有在ros console version 1.12.6后才可用) |
thread | 0xcd63d0 |
logger | ros.roscpp_tutorials |
file | /wg/bvu/jfaust/ros/stacks/ros_tutorials/roscpp_tutorials/talker/talker.cpp |
line | 92 |
function | main |
node | /talker |
- 个人常用配置:
export ROSCONSOLE_FORMAT='[${severity}][${walltime}]-[${node}-${line}]-[${thread}]:${message}'
后续版本的更新
从Noetic版本开始,新增了关键字time和walltime的格式说明符format string
,用来修改时间格式(之前的版本为时间戳,不方便查看)。
export ROSCONSOLE_FORMAT='${time:format string}'
或者
export ROSCONSOLE_FORMAT='${walltime:format string}'
格式说明符 | 输出示例 |
---|---|
%Y-%m-%d %H:%M:%S | 2020-04-29 20:02:1 |
%y-%b-%d %I:%M:%S%p | 20-Apr-29 08:20:40PM |
%x %r | 04/29/20 08:31:30 PM |
以上格式说明符表不是全排列,可以按照自己的需求,自由组合。通过将format string
替换为对应的格式说明符即可,例如${walltime:%Y-%m-%d %H:%M:%S}
。
ROS2控制台日志输出格式
- 系统变量
RCUTILS_CONSOLE_OUTPUT_FORMAT
file_name, 程序完整路径
function_name, 函数名
line_number, 代码行号
message, 具体日志信息
name, 节点名
severity, 日志级别, e.g. INFO
time, 时间戳,单位秒
time_as_nanoseconds, 时间戳,单位纳秒
-
例子:
export RCUTILS_CONSOLE_OUTPUT_FORMAT='[{severity}][{time}]-[{name}-{line_number}]: {message}'
-
参考链接:https://docs.ros2.org/latest/api/rcutils/logging_8h.html#a27340ac73188b1cf8d9cb96d86c76694