ros Tim學習筆記
阿新 • • 發佈:2019-01-24
最近在學習的過程中用到ROS Time的機會比較多,藉此機會做個筆記.
參考(1):創客製造
(1)使用ros::Time::Now獲取當前時間,計算程式/演算法執行時間
startTime=ros::Time::Now() //程式開始
{程式演算法中....}
endTime=ros::Time::Now();
double process_time=(endTime-starTime).toSec();
toSec()成員函式講執行時間轉換為單位秒.
(2)使用ros::Duration設定一段時間
ros::Duration time(0.5); //一段0.5秒的時間
(3)使用Timer代替ros::rate
通常情況下我們可以採用ros::rate設定一定的頻率來迴圈(簡單的釋出或者訂閱),用法如下;
ros::Rate loop_rate(10); // 10 hz
while (ros::ok())
{
... do some work ...
loop_rate.sleep();
}
以上程式表示以10hz的頻率迴圈執行
wiki上建議用timer(定時器)來代替ros::rate,簡單用法用下:
a.建立定時器:
ros::Timer timer = n.createTimer(ros::Duration(0.1), timerCallback); ros::Timer timer2 = n.createTimer(ros::Duration(1.0), callback2);
b.在回撥函式中處理:
void timerCallback(const ros::TimerEvent& e);
void callback2(const ros::TimerEvent&)
我們就可以在回撥函式中以一定頻率進行釋出或者訂閱.