ROS學習之 cpp日誌記錄

2021-07-15 04:38:15 字數 2167 閱讀 9837

參考: rosconsole  wiki:

ros有基於話題的輸出訊息機制,被稱作rosout.可以從節點輸出記錄資訊.

這些記錄訊息是使用者可讀的字串訊息,顯示了乙個節點的狀態資訊.

也可以使用rqt_console gui應用來瀏覽這些資訊

roscpp使用rosconsole程式包來提供客戶端api.這些api以一系列的ros_巨集

rosconsole提供4種不同的記錄輸出語句,以5種不同的冗長等級,這些都支援printf和流式格式化.

基本版本:簡單列印輸出一條訊息

#include

ros_debug(...); ros_debug_stream(args);

這會輸出到乙個名叫ros.pkg_name的檔案

命名版本:指定輸出的檔案名字

#include

ros_debug_named("m_name",...); ros_debug_stream_named("m_name",args);

這會輸出到乙個名叫ros.pkg_name.m_name的檔案

條件版本:指定輸出的條件,只有當條件true時才會列印.

#include

ros_debug_cond(x < 0, "uh oh, x = %d, this is bad", x);

ros_debug_stream_cond(x < 0, "uh oh, x = " << x << ", this is bad");

條件加命名版本:上面的組合

#include

ros_debug_cond_named(x < 0, "test_only", "uh oh, x = %d, this is bad", x);

ros_debug_stream_cond_named(x < 0, "test_only", "uh oh, x = " << x << ", this is bad");

一次列印版本: 只列印一次

#include

for (int i = 0; i < 10; ++i)

throttle版本:週期列印,以period引數為週期

while (true)

延時throttle版本:週期列印,以period引數為週期且延遲乙個週期,即地乙個週期什麼也不列印

while (!ros::service::waitforservice("add_two_ints", ros::duration(0.1)) && ros::ok())

過濾版本:以ros::console::filterbase類物件指標作為引數,滿足過濾器的才列印

ros_debug_filter(filter, ...)

ros_debug_stream_filter(filter, args)

ros_debug_filter_named(filter, name, ...)

ros_debug_stream_filter_named(filter, name, args)

5種不同的冗長等級: debug,info,warn.error,fatal.預設的是info級.

記錄訊息有4個預設的終點,取決於冗長等級.

1. stdout debug和info訊息會到達stdout. roslaunch/xml/node標籤的output="log|screen"(optional)

2. stderr warn,error,fatal訊息將到達stderr

3. 節點記錄檔案 ~/.ros/log目錄下 使用roslaunch-logs檢視當前的記錄檔案目錄

4. /rosout 話題

debug    info    warn    error    fatal

stdour                 v            v         -            -            -

stderr                   -            -         v           v            v

log file                v             v        v           v           v

/rosout                v             v        v           v           v

這個**只適用於roscpp.

ROS學習之 cpp訊息

parameters rosdistro jade rosversion 1.11.16 和所有ros客戶端庫相同,roscpp使用msg檔案來生成c 模式如下 package name msg foo.msg package name foo 相同地,srv檔案也生成c 模式如下 package ...

ROS學習之 cpp時間

ros有內建的時間和時間間隔原始型別,rsolib程式包提供了ros time和ros duration類 time是乙個具體的時刻 上午9 30 而duration是一段時間 5個小時 duration可以是負值.time和duration有相同的表示。int32 sec int32 nsec r...

ROS學習之 cpp引數伺服器

wiki鏈結 wiki.ros.org roscpp overview parameter 20server ros的引數伺服器可以儲存字串,整型,浮點型,布林型,列表,字典,iso8601資料,64基編碼資料.字典資料要有字串鍵.roscpp的引數api支援所有這些,儘管在使用中常使用string...