美文网首页工作生活
ros::spin() 和 ros::spinOnce() 区别

ros::spin() 和 ros::spinOnce() 区别

作者: Young1217 | 来源:发表于2019-07-02 00:52 被阅读0次

以下内容来自 ros::spin() 和 ros::spinOnce() 区别及详解

这俩兄弟学名叫ROS消息回调处理函数。它俩通常会出现在ROS的主循环中,程序需要不断调用ros::spin() 或 ros::spinOnce(),两者区别在于前者调用后不会再返回,也就是你的主程序到这儿就不往下执行了,而后者在调用后还可以继续执行之后的程序。

其实看函数名也能理解个差不多,一个是一直调用;另一个是只调用一次,如果还想再调用,就需要加上循环了。
这里一定要记住,ros::spin()函数一般不会出现在循环中,因为程序执行到spin()后就不调用其他语句了,也就是说该循环没有任何意义,还有就是spin()函数后面一定不能有其他语句(return 0 除外),有也是白搭,不会执行的。ros::spinOnce()的用法相对来说很灵活,但往往需要考虑调用消息的时机,调用频率,以及消息池的大小,这些都要根据现实情况协调好,不然会造成数据丢包或者延迟的错误。


图片.png
图片.png
图片.png
图片.png

相关文章

网友评论

    本文标题:ros::spin() 和 ros::spinOnce() 区别

    本文链接:https://www.haomeiwen.com/subject/voaocctx.html