问题背景:在机器人的工控机上运行Master,通过在自己的电脑的./bashrc文件 添加
export ROS_MASTER_URI=http://192.xxx.xxx.xxx:11311
以及分别配置/etc/hosts文件。这里不再赘述。总之可以实现多机通讯,我电脑的master是机器人的工控机上。
现象:我的ros py代码的话题订阅端的rospy.spin无法阻塞。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from std_msgs.msg import String
def doMsg(msg):
rospy.loginfo("I heard:%s",msg.data)
if __name__ == "__main__":
# 初始化ros节点
rospy.init_node("listener_p")
# 实例化 订阅者 对象
sub = rospy.Subscriber("chatter",String,doMsg,queue_size=10)
# 设置循环回调函数
rospy.spin()
先在笔记本开启话题订阅端,再在终端运行
rostopic pub -r 2 /chatter std_msgs/String "data: 'hello world'"
结果是,话题订阅端的终端不会打印“hello world”.
解决办法:
把程序都运行在工控机则,则没问题了。