一文搞懂ROS2的spin_some, spin和ROS的spinOnce

目录

写在前面

1. ROS里的spin和spinOnce

1.1 回调机制浅析

1.2 为什么订阅话题时要指定queue_size?

1.3 设置queue_size的小技巧

1.4 spin和spinOnce用法总结:

2. ROS2里的spin_some和spin

2.1 揣摩一下spin和spin_some的官方注释

2.2 spin_some的一点小不同

最后的话


写在前面

ROS2有spin_some, spin,而ROS有spinOnce,spin,他们有什么区别和联系呢?

如果你学过ROS,那么只用看第一部分。

如果你直接学ROS2,也建议按顺序看,加深理解。

1. ROS里的spin和spinOnce

如果你刚接触ROS,很可能看过这份很详细的ROS官方教程,它提到spin和spinOnce的基本用法。但是,我估计,极大可能,看完你还是不明白两者有什么区别,又该如何去用。

ROS/Tutorials/WritingPublisherSubscriber(c++) - ROS Wikihttp://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c++%29别着急,我们把相关内容提取出来,品一品。

ros::spinOnce()

Calling ros::spinOnce() here is not necessary for this simple program, because we are not receiving any callbacks. However, if you were to add a subscription into this application, and did not have ros::spinOnce() here, your callbacks would never get called. So, add it for good measure.

上面这段话,摘自publisher的节点代码注释。

大意是,作为一个纯粹的、简单的publisher程序,不需要使用spinOnce(),因为它不执行任何回调。但是,如果想在这个程序里增加订阅功能,而不使用spinOnce(), 回调将不会产生。

ros::spin() 

ros::spin() enters a loop, calling message callbacks as fast as possible. Don't worry though, if there's nothing for it to do it won't use much CPU. ros::spin() will exit once ros::ok() returns false, which means ros::shutdown() has been called, eit

  • 14
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值