在编写ROS程序时,让发布者只发一次消息,怎样让订阅者一定收到(细节操作!!!)

本文探讨了在ROS中实现仅发布一次消息的方法,包括使用`ros::Duration`的局限和两种高效实践:一是利用`ros::spinOnce()`,二是通过直接在`publish`前发送消息。重点在于提供简洁且符合ROS编程习惯的解决方案。
摘要由CSDN通过智能技术生成

需对ros有一定基础的朋友才有用。

随着对ros的深入学习,最近在写程序时需要发布者只发一次消息,或者说我只想让订阅者只订阅一次消息。
我用了ros::Duration这个接口,但发现它并没有达到我预想的效果,于是后面发现了下面两个解决方法:

法一:
在这里插入图片描述
在发布者中加入上述代码,这里不介绍原理,如果需要可以看看源码。但它的使用方法并不让我满意,具体原因就是它执行到ros::spin()的时候就停住了,当然,其实可以改用ros::spinOnce(),无疑是一个较好的方法,但个人认为这不是一个美观的代码。
所以我找到了下面这个方法:
在这里插入图片描述
发一次写一次,十分方便,及得写在pub.publish前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值