2017-05-17 33 views
0

我正在運行ros發佈者/訂閱者節點,它從/ image_pub主題接收單個圖像,執行一些處理並在/ results主題上發佈結果。 image_pub主題以20Hz發佈,但我的發佈者/訂閱者節點運行在12 hz(我發現它使用rostopic hz/results)。有什麼方法可以提高速度或告訴我的程序以20Hz運行。開始時它以20Hz運行。然後,我關掉了我的Linux午餐,回來並重新啓動了我的程序。現在它運行在12赫茲。我已經一次又一次地重新啓動它,但仍然運行在12赫茲。任何解決方案..?ROS發佈者速度

回答

0

如果您的圖像處理需要比1/20秒更長的時間,則無法達到20Hz。如果不是的話,那麼下面的主循環將做的工作

ros::Rate publish_rate(20); 
while(ros::ok()) 
{ 
    // do some processing 
    publisher.publish(image); 
    publish_rate.sleep(); 
} 

ros::Rate將確保進入睡眠狀態的時間才能達到20Hz的各適量。 還要確保在Release模式下編譯(catkin_make -DCMAKE_BUILD_TYPE=Release),因爲這樣會加快編碼的速度。

+0

是的你是對的,問題出在我的用戶回撥,我使用ORB功能,有時它檢測到大量的特徵點,使處理困難。所以現在我已經限制了功能的數量和更好的工作。謝謝您的幫助 :) – usmanarif