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...