ROS: spin與spinOnce

區別與聯繫

ros::spin()和ros::spinOnce()都是用來集中處理本節點所有的回調函數,一般在節點存在訂閱消失時,需要用到,區別在於執行ros::spin()後,程序不再往下執行,執行ros::spinOnce()後程序依然可以往下執行。

使用方法:

spin

spin一般放在主程序的最後

spinOnce

spinOnce一般放在while (ros::ok())循環中,配合loop_rate.sleep()用於處理回調函數調用的頻率,對於有些傳輸特別快的消息,尤其需要注意合理控制消息池大小和ros::spinOnce()執行頻率; 比如消息送達頻率爲10Hz, ros::spinOnce()的調用頻率爲5Hz,那麼消息池的大小就一定要大於2,才能保證數據不丟失,無延遲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章