6.7 日志和异常
6.7.1 Log
ROS为开发者和用户提供了一套日志记录和输出系统,这套系统的实现方式是基于topic,也就是每个节点都会把一些日志信息发到一个统一的topic上去,这个topic就是/rosout
。
rosout
本身也是一个node,它专门负责进行日志的记录。我们在启动master的时候,系统就会附带启动rosout。
在roscpp中进行日志的输出,需要先include <ros/console.h>
,这个头文件包括了五个级别的日志输出接口,分别是:
- DEBUG
- INFO
- WARN
- ERROR
- FATAL
用法非常简单:
当然也可以在一些特定场景,特定条件下输出,不过对于普通开发者来说可能用不到这么复杂的功能。具体可参考:http://wiki.ros.org/roscpp/Overview/LoggingROS_DEBUG("The velocity is %f", vel); ROS_WARN("Warn: the use is deprecated."); ROS_FATAL("Cannot start this node."); ...
6.7.2 Exception
roscpp中有两种异常类型,当有以下两种错误时,就会抛出异常:
ros::InvalidNodeNameException
当无效的基础名称传给ros::init(),通常是名称中有/,就会触发
ros::InvalidNameExcaption
当无效名称传给了roscpp