一、遇到的问题
最近在用 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