ROS(Robot Operating System)を使う
安曇野の森から > ROS(Robot Operating System)を使う > ログ表示
ROSには以下3つのログ出力先が用意されています。
ログはログ出力しているノードを起動したターミナルへ表示されます。また、ログはGUIツールのrqt_consoleを使っても読むことが出来ます。
ローンチファイルからノードを起動した場合、ディフォルトではログが表示されませんので注意が必要です。
ログはターミナルへ表示されると共に/rosoutトピックにもメッセージタイプrosgraph_msgs/Logのメッセージとして発行されます。
ターミナルへ表示させる場合、そのターミナルで起動したノードのログのみが表示されますが、/rosoutトピックへは全てのノードのログが一緒に発行されます。
ログはログファイルrosout.logへも出力されます。ログファイルの詳細は以下リンクを参照してください。
ログファイル
ログ表示には以下の5つのレベルがあります。以下リストで下に行くほど重要度が高くなります。
ディフォルトのログ表示レベルはINFO以上(INFO, WARN, ERROR, FATALが表示される)です。 ログ表示レベルを変えるには以下のコマンドを使用します。
ノード名にはログ表示レベルを設定したいノードの名前をいれます。パッケージ名には、そのノードを所有しているパッケージの名前を入れます。
最後の「level」は設定したいレベルを文字列(「DEBUG」、「INFO」、「WARN」、「ERROR」、「FATAL」の内一つ)で指定します。
このコマンドはコマンドで指定するノードの起動後でないと使えませんので注意が必要です。
以下の5つのマクロはprintf()と同じように表示フォーマットを指定してログを表示します。
ただし、使える表示フォーマットはprintf()と完全に同じではなく制限があるようです。少なくとも改行(\n)は使えませんでした。
フォーマット文字列の形式はprintf()と同じです。
以下の5つのマクロは標準出力ストリームにログを表示します。
以降のROS_xxxx_STREAM()系ログ表示にはメッセージにC++のストリームファーマットが
使えます。
また、環境変数ROSCONSOLE_FORMATを設定することによってコンソールに出力される
フォーマットを変更することが出来ます。
以下の5つのマクロは最初にマクロが呼ばれた時だけログを表示します。
以下の5つのマクロは最初にマクロが呼ばれた時点でログを表示し、次以降はマクロが
呼ばれた時点で指定されたインターバル時間を経過していたらログを表示します。
インターバルはdoubleで表された秒数です。優先度の高いプロセスが動いている時には、
設定されたインターバル以上の時間がかかる場合があります。
ログは以下のディレクトリにあるログファイルrosout.logへも出力されます。
上記ディレクトリ中の「ランID」はPCのMACアドレスと現在時間から自動生成されます。
現在の「ランID」は以下のコマンドで表示させることが出来ます。
ログファイル容量は以下のコマンドで表示させることが出来ます。
また、全てのログファイルを削除するには以下のコマンドが使えます。