1. 程式人生 > >ros Tim學習筆記

ros Tim學習筆記

最近在學習的過程中用到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&)

我們就可以在回撥函式中以一定頻率進行釋出或者訂閱.