ROS學習之 cpp時間

2021-07-15 04:55:36 字數 1785 閱讀 7019

ros有內建的時間和時間間隔原始型別,rsolib程式包提供了ros::time和ros::duration類

time是乙個具體的時刻(上午9:30)而duration是一段時間(5個小時)duration可以是負值.

time和duration有相同的表示。

int32 sec

int32 nsec

ros可以為節點提供乙個模擬的時鐘。使用者應該使用roscpp的時間函式獲取當前時間。

1)獲取當前時間

ros::time::now() 返回乙個ros::time例項。

2)建立time和duration例項

通過給定具體的浮點數,來初始化例項物件:

ros::time a_little_after_the_beginning(0.001);

ros::duration five_seconds(5.0);

或者通過兩個整數:

ros::time a_little_after_the_beginning(0, 1000000);

ros::duration five_seconds(5, 0);

3)轉化time和duration例項

time和duration物件可以被轉化成相應的浮點秒數:

double secs =ros::time::now().tosec();

ros::duration d(0.5);

secs = d.tosec();

4)time和duration計算

與其它原始資料型別一樣,可以對time和duration進行算術操作。

幾個小例子:

1 hour + 1 hour = 2 hours (duration + duration = duration)

2 hours - 1 hour = 1 hour (duration - duration = duration)

today + 1 day = tomorrow (time + duration = time)

today - tomorrow = -1 day (time - time = duration)

today + tomorrow = error (time + time is undefined)

在ros**中的表示:

ros::duration two_hours = ros::duration(60*60) + ros::duration(60*60);

ros::duration one_hour = ros::duration(2*60*60) - ros::duration(60*60);

ros::time tomorrow = ros::time::now() + ros::duration(24*60*60);

ros::duration negative_one_day = ros::time::now() - tomorrow;

bool ros::duration::sleep()  睡眠一段具體的時間間隔

ros::duration(0.5).sleep(); // sleep for half a second

ros::rate roslib提供了ros::rate類來保持一定的頻率來控制迴圈

ros::rate r(10); // 10 hz

while (ros::ok())

注:通常建議使用timer來代替rate

如果在模擬時間中,想要獲取實際的壁鐘時間,roslib提供了wall版本的time構造器。

如:ros::walltime  ros::wallduration ros::wallrate

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日誌記錄

參考 rosconsole wiki ros有基於話題的輸出訊息機制,被稱作rosout.可以從節點輸出記錄資訊.這些記錄訊息是使用者可讀的字串訊息,顯示了乙個節點的狀態資訊.也可以使用rqt console gui應用來瀏覽這些資訊 roscpp使用rosconsole程式包來提供客戶端api.這...

ROS學習之 cpp引數伺服器

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