加载中…
个人资料
孤峰乔木
孤峰乔木
  • 博客等级:
  • 博客积分:0
  • 博客访问:39,184
  • 关注人气:24
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

ROS基础--os::spin()和ros::spinOnce()

(2017-08-17 19:25:50)
标签:

ros基础

分类: ros基础

ros::spin()和ros::spinOnce()

1. 功能:

集中处理本节点所有的回调函数。

 

2. 实现:

ros节点中,如果有订阅消息,则ros的socket连接控制进程会在后台接收订阅的消息,所有接收到的消息并不是立即处理,而是等到spin()或者spinOnce()执行时才集中处理。

 

3. 使用:

必须放在消息订阅函数之后,而且一定要放置其中一个,否则回调函数不会被执行。

 

4. 区别:

(1)ros::spin():一般放在main函数最后,或者return之前,因为此函数不会返回,所以其后的所有程序不会被执行;使用此接口的节点可以看成是消息驱动型,消息到来执行回调函数。

(2)ros::spinOnce():执行一次本接口,系统处理一次所有的回调函数,然后从此函数返回继续执行。所以一般配合while(ros::ok())使用,并需要自己设置调用频率,以及需要根据消息到达的频率设置消息队列大小以防止消息丢失。

 

5. 其余高级特性:

(1)Multi-threaded Spinning

(2)CallbackQueue::callAvailable() and callOne()

(3)Using Different Callback Queues

因为很少使用,所以暂时跳过。



更多ROS文章,可以关注微信公众号:ROS编程,每周不定期更新

ROS基础--os::spin()和ros::spinOnce()



0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有