ROS 日誌消息(C++)

1.日誌級別node

日誌消息分爲五個不一樣的嚴重級別宏,與Android的Log定義的嚴重級別相似,以下基礎宏:spa

ROS_DEBUG_STREAM、ROS_INFO_STREAM、ROS_WARN_STREAM、ROS_ERROR_STREAM、ROS_FATAL_STREAM(按照嚴重程序級別排序,低到高)
C++代碼: #include <ros/ros.h>

    int main(int argc, char** argv){ ros::init(argc, argv, "hello_ros"); ros::NodeHandle nh; ROS_DEBUG_STREAM("Log DEBUG"); ROS_INFO_STREAM("Log INFO"); ROS_WARN_STREAM("Log WARN"); ROS_ERROR_STREAM("Log ERROR"); ROS_FATAL_STREAM("Log FATAL"); }

從運行結果來看,你會發現DEBUG沒有打印出來,Why?淡定,4會解答日誌

2.循環單第二天志code

基礎宏後面添加_ONCE,表明日誌在循環迭代中只有第一次纔會打印日誌:blog

C++代碼: #include <ros/ros.h>

    int main(int argc, char** argv){ ros::init(argc, argv, "hello_ros"); ros::NodeHandle nh; for(int i = 0; i < 10; i++){ ROS_INFO_STREAM_ONCE("Log info i = " << i); if(i >= 2){ ROS_INFO_STREAM_ONCE("Log info i = " << i); } } }

3.頻率日誌
排序

基礎宏後面添加_THROTTLE就變爲了頻率日誌,入ROS_INFO_STREAM_THROTTLE(interval, message),第一個參數interval表明以秒爲單位的時間量,時間量指的是兩個日誌出現的最小時間間隔it


 

4.打開、關閉日誌class

1中提到DEBUG日誌信息沒有輸出,緣由是C++程序默認的日誌級別爲INFO,全部DEBUG日誌被忽略掉了,那問題來了,如何打開DEBUG級別日誌呢?基礎

rosservice call /node-name/set_logger_level ros.package-name level
C
++代碼: #include <ros/ros.h> int main(int argc, char** argv){     ros::init(argc, argv, "hello_ros");     ros::NodeHandle nh;     while(ros::ok()){         ROS_DEBUG_STREAM("Log DEBUG");         ROS_INFO_STREAM("Log INFO");         ROS_WARN_STREAM("Log WARN");         ROS_ERROR_STREAM("Log ERROR");         ROS_FATAL_STREAM("Log FATAL");     } } 啓動上面節點,而後終端運行rosservice call /hello_ros/set_logger_level ros.hello DEBUG

轉自:https://www.jianshu.com/p/b360728ad6d1循環

相關文章
相關標籤/搜索