ROS學習之日誌訊息

2022-07-20 15:45:14 字數 2828 閱讀 8279

ros學習之日誌訊息

ros日誌系統的核心思想,就是使程式生成一些簡短的文字字元流,這些字元流便是日誌訊息。

0.1嚴重級別

ros中,日誌訊息分為五個不同的嚴重級別,也可簡稱為嚴重性或者級別。按照嚴重性程度遞增,這些級別有

debug

info

warn

error

fatal

0.2生成日誌訊息

0.2.1簡單日誌訊息

生成簡單的日誌訊息,總共有五個基本的 c++巨集用來產生日誌訊息,其中每個巨集對應乙個嚴重級別:

ros_debug_stream(message);

ros_info_stream(message);

ros_warn_stream(message);

ros_error_stream(message);

ros_fatal_stream(message);

其實這個巨集的定義就把格式輸出包含到裡面,其中各個巨集的引數 message 可以處理 c++中標準輸出流(ostream)中的各種表示式,比如 std::cout。這包括在 int 或者 double 這種基本資料型別上使用插入操作符(<<),以及已經過載這個操作符的 復 合 數 據 類 型

0.2.2生成單次日誌訊息

生成單次訊息,其實就是在程式中加入了乙個靜態區域性變數來檢測,進入一次後就把變數改為false則下次檢測到後則不輸出該資訊。

// don't do this directly. use ros_..._stream_once instead.

}

ros_debug_stream_once(message);

ros_info_stream_once (message);

ros_warn_stream_once (message);

ros_error_stream_once (message);

ros_fatal_stream_once (message);

0.2.3生成頻率受控日誌訊息

引數 interval 是 double 型別的,它表示以秒為單位的時間量,這是相鄰日誌訊息出現的最小時間間隔。 ros_..._stream_throttle巨集的每乙個例項在第一次執行時都會生成日誌訊息(與不帶_throttle 字尾版本巨集的日誌訊息相同),隨後的執行都會被忽略,直到經過了指定的時間間隔。每個巨集的例項的時間被單獨跟蹤,方法是使用乙個區域性靜態變數來儲存上一次生成日誌的時間。

ros_debug_stream_throttle(interval, message);

ros_info_stream_throttle(interval, message);

ros_warn_stream_throttle(interval, message);

ros_error_stream_throttle(interval, messge);

ros_fatal_stream_throttle(interval, message);

0.3檢視日誌訊息

0.3.1控制台輸出日誌

0.3.2rosout輸出日誌

除了在控制台上顯示,每乙個日誌訊息都被發布到話題/rosout 上。該話題的訊息型別是 rosgraph_msgs/log

我們可以通過rostopic echo /rosout 來檢視訊息,也可以通過乙個節點來訂閱日誌話題還可以通過指令rqt_console來通過圖形介面來顯示日誌訊息。

0.3.3日誌檔案

日誌訊息的第三個,也是最後乙個目的地,是由 rosout 節點生成的日誌檔案。作為/rosout 話題**函式的一部分,該節點可以將日誌訊息作為一行寫入到乙個日誌檔案,檔名類似於:~/.ros/log/run_id/rosout.log

有時日誌過多時需要我們清除系統日誌,利用指令rosclean check如果日誌正在消耗過多的硬碟空間,可以通過下面的命令刪除所有已經存在的日誌:rosclean purge

0.4日誌啟用和禁用

0.4.1通過命令列設定日誌級別

設定乙個節點的日誌級別,可以使用與以下類似的命令:rosservice call /node-name/set_logger_level     ros.package-name     level條命令呼叫 set_logger_level 服務,該服務由各個節點自動提供。

node-name 是你期望設定日誌級別的節點名稱

package-name 正如你猜測的一樣,是擁有這個節點的功能包的名稱

level 引數是 debug、info、warn、error、fatal 中的乙個89字串,即為節點設定的日誌級別。

例如,為了在示例程式中啟用 debug 級別的訊息,我們可以使用下面這條命令:

rosservice call /count_and_log/set_logger_level ros.agitr debug

注意,由於這條命令直接與節點進行互動,我們不能在節點啟動之前使用它。如果一切正常,這個對 rosservice 的呼叫將輸出乙個空行。

0.4.2通過圖形介面設定日誌級別

可以嘗試以下命令:rqt_logger_level來通過圖形介面進行配置

ROS學習筆記3 日誌訊息

1 日誌訊息 ros日誌系統的核心思想就是使程式生成一些簡單的文字字元流。這些日誌訊息分為五個不同的嚴重級別 debug info warn error fatal其中,debug最為常見,fatal是嚴重錯誤,導致程式無法執行。其它則在這兩者之間。日誌訊息的生成 總共有5個基本的c 巨集來產生日誌...

springboot學習筆記之日誌

日誌 springboot預設日誌級別 info spring配置檔案中的logging.file和logging.path的區別 如果專案目錄為 d develop idea workspace project,則在windows情況下指定日誌logging.file為 logs info.log...

Ros學習筆記(四)建立Ros訊息

學習如何使用.msg檔案建立使用者自定義的訊息,並且在節點中使用這些自定義訊息,這包含乙個關於要傳輸的資料型別的標準。首先在chapter2 turtleial包中建立乙個msg資料夾,在資料夾中建立乙個chapter2 msg.msg檔案,並新增以下命令列 int32 a int32 b int3...