March 2018
Intermediate to advanced
1396 pages
42h 14m
English
Conditional messages are printed only when a given condition is satisfied. To use them, we have the ROS_<LEVEL>[_STREAM]_COND[_NAMED] functions; note that they can be named messages as well (see the example2 node for more examples and combinations):
ROS_INFO_STREAM_COND(
val< 0.,
"My conditional INFO stream message; val (" <<val<< ") < 0"
);
Filtered messages are similar to conditional messages in essence, but they allow us to specify a user-defined filter that extends ros::console::FilterBase; we must pass a pointer to such a filter in the first argument of a macro with the format ROS_<LEVEL>[_STREAM]_FILTER[_NAMED]. The following example is taken from the example2 node:
structMyLowerFilter : public ros::console::FilterBase ...