ROS(ROS2) - ログ


 クラウディア


1. 概要
2. 種類(重大度)
3. 出力
4. 書式
5. 備考

1. 概要

 ここまでのページで、既に、ログを使っていますが・・・、改めて。

2. 種類

 「ROS」のログの種類には、下記のものがあります。
種類  備考 
UNKNOWN 0
DEBUG 10
INFO 20
WARN 30
ERROR 40
FATAL 50

 「UNKNOWN」というのは、わたしには、ちょっと目新しいものになります。
 他は、値の設定の大小が異なったりはするもののおおむね、今までにさわってきた、他のシステムと同様です。

3. 出力

 下記の書式になります。  「C++」で、書く場合。

RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "ログメッセージ", ...);
 「RCLCPP_ERROR」の「ERROR」の箇所は、ログの種類によって書き換えます。  ログメッセージの中に、「printf()」と同じ書式で、書式付きの出力ができ、後ろに書式に対応する引数をいれます。  「python」で書く場合。

self.get_logger().info('ログメッセージ' % (...))
 ログメッセージ内に、「C++」と同じ書式で、書式付きの出力ができます。  書式付きの出力を行わない場合は、「%」以降は、記述しません。  書式に対応する引数は、「%」の後ろに「()」で囲んで、「,」でつなげて記述します。

4. 書式

 ログ自身の書式は、デフォルトで。

[{severity} {time}] [{name}]: {message}
 となっています。  「severity」は種類(重大度)、「time」は出力日時、「name」は出力元のモジュール名、「message」がログメッセージになります。  これは、変更できます。  詳細は、ドキュメントを読むことになるかと思いますが。  デフォルトの出力日時は、「1735116567.012093777」てな感じで、人間が見ていて、いささかわかりにくい。  これを「YYYY-MM-DD HH:mm:ss.000」の形式へ変更するには、環境変数を設定します。

export RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity}] [{date_time_with_ms}] [{name}]: {message}"

5. 備考

 本ページは、下記のサイトを参考にさせていただきました。
Logging — ROS 2 Documentation: Rolling documentation」
「Logging and logger configuration — ROS 2 Documentation: Jazzy documentation」
「実習ROS 2 ROS 2 Logger #ROS2」
「ROS2 logging メモ
 参考サイトでは、わざわざロギング用のノードとかまで作成したりしていますが、そこまでしなくてもいいでしょう。

AbemaTV 無料体験