ROSメッセージログ(C ++)

1.ログレベル

同様のログメッセージは、5つの異なる重要度マクロの定義、およびアンドロイド、以下の基本的なマクロの重症度にログインします。

ROS_DEBUG_STREAM、ROS_INFO_STREAM、ROS_WARN_STREAM、ROS_ERROR_STREAM、ROS_FATAL_STREAM(高低深刻な手続きレベルの並べ替え、に従って)
    C ++ 代码:

    の#include <ROS / ros.h> int型のmain(int型 ARGC、チャー ** ARGV){ 
        ROS :: INIT(ARGC、ARGV、" hello_ros " )。
        ROS :: NodeHandle NH; 
        ROS_DEBUG_STREAM(" ログDEBUG " ); 
        ROS_INFO_STREAM(" ログINFO " ); 
        ROS_WARN_STREAM(" ログWARN " ); 
        ROS_ERROR_STREAM(" ログERROR " ); 
        ROS_FATAL_STREAM(FATALログ

    






" ); 

    }

実行中の結果から、あなたはなぜ、DEBUGが印刷されないことがわかりますか?穏やかな、4お答えします

2.サイクル単一のログ

最初は、ジャーナルループ反復で印刷されますログに代わって、マクロベースの後ろ_ONCEを追加します。

    C ++ 代码:

    の#include <ROS / ros.h> int型のmain(int型 ARGC、チャー ** ARGV){ 
        ROS :: INIT(ARGC、ARGV、" hello_ros " )。
        ROS :: NodeHandle NH; 以下のためにint型 i = 0 ; iは< 10 I ++; ){ 
            ROS_INFO_STREAM_ONCEは(" 情報I =ログイン" << i)を、もし(I> = 2 ){ 
                ROS_INFO_STREAM_ONCE(" 情報I =ログイン" << i)を、

    



        


            


            } 

        } 

    }

3.周波数ログイン

バック追加_THROTTLEマクロ基地周波数は、単位時間当たりの時間量は、2つのログの出現との間の最小時間間隔を示しROS_INFO_STREAM_THROTTLE(間隔、メッセージ)、秒間隔の第1のパラメータの代表にログインなります


 

4.オープン、クローズログ

1 DEBUGログ情報に言及したが、C ++プログラムのため、デフォルトのログレベルは、INFO、DEBUGログすべてが無視されている、そして、どのようにDEBUGレベルを開くためにしている問題は、それを記録し、出力されませんか?

rosserviceコール/ノード名/ set_logger_level ros.package- 名レベル
C
++ 代码: の#include <ROS / ros.h> int型のmain(int型 ARGC、チャー ** ARGV){     ROS :: INIT(ARGC、ARGV、" hello_ros " );     ROS :: NodeHandle NH;     一方、(ROS :: OK()){         ROS_DEBUG_STREAM(" ログDEBUG " )。         ROS_INFO_STREAM(" ログINFO " );         ROS_WARN_STREAM(" ログWARN " );         ROS_ERROR_STREAM("エラーログ" );         ROS_FATAL_STREAM(" FATALログ" );     } } 次にブート上位ノード、及び端末呼rosservice実行 / hello_ros / set_logger_level ros.hello DEBUGを

転送します。https://www.jianshu.com/p/b360728ad6d1

おすすめ

転載: www.cnblogs.com/long5683/p/10939682.html