一、遇到的问题

最近在用 ROS 作开发,遇到了这个问题。

有个Topic,如果只是发布的话,则人畜无害,无事发生。

如果另一个节点订阅的话,则会持续输出以下警告信息:

[WARN] [1670378208.090744]: Inbound TCP/IP connection failed: 'int' object has no attribute 'peer_subscribe'

同时订阅的话题接收到的消息也是断断续续的。

二、解决方法

搜了好久,终于在网上扒到了一篇教程:这篇

按照这篇教程,在 1 前面加上 queue_size= 即可

改之前的代码:

pub=rospy.Publisher("/all_targets",AllTargets,1)

改后的代码:

pub=rospy.Publisher("/all_targets",AllTargets,queue_size=1)

之后就正常了

三、思考

这个问题主要是因为 rospy 中的 Publisher 函数与 roscpp 中的不太一样。因为我用习惯了 C++ ,所以就想当然地认为 Python 中的函数接口也是一样的。。。(太丢脸了呜呜呜呜呜~ 这么简单的错误浪费了我那么多的时间去排查,差点就要把所有代码推倒重写了 TvT)

rospy 中的 Publisher 函数的第三个参数是 subscribe_listener ,queue_size 是最后一个参数。因此需要指定数字1给的是 queue_size

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐