日志分类
ROS日志分为两种情况,一种是传统打印方式,即进程直接通过fwrite打印到对应fd输出,基础进程都是这么打印的,比如roslaunch/roscore,rosmaster,以及rosout进程自身的日志(注意是“自身”)
第二种情况是利用了TOPIC机制,普通节点将日志消息通过topic(也是叫"/rosout")发布给rosout进程,然后rosout进程再将收到的日志打印到文件中;且普通节点对日志具体怎么发布出去的不感知,通过集成rosconsole库即可,rosconsole库提供了一系列日志打印的函数宏供普通节点使用(类似于linux的syslog C端和S端,syslog.h中接口是C端,syslogd进程是S端)
关于rosout打印日志的讲解:
https://blog.csdn.net/shiyue0010/article/details/51946164
rosout进程的源代码路径:tools/rosout/rosout.cpp
因为rosout的双重身份,所以其日志也分为两个:
同时,针对第二种打印场景,ROS还提供了可视化界面rqt_console和rqt_logger_level,详见:
http://wiki.ros.org/cn/ROS/Tutorials/UsingRqtconsoleRoslaunch
只有rosout.log中的打印日志能通过rqt_console来显示
rosconsole库的源代码路径:tools/rosconsole/src/rosconsole