订阅远程的rospy发布者

huangapple 未分类评论57阅读模式
标题翻译

Subscribing to remote rospy publisher

问题

我使用rosjava作为订阅者(Subscriber),使用rospy作为发布者(Publisher)实现了发布/订阅功能。然而,我无法从rospy接收到任何消息。我在这里漏掉了什么吗?

在Java中的订阅者部分(假设IP为: 1.1.1.1):

public void start_on_init() {
   nodeConfiguration = NodeConfiguration.newPublic("1.1.1.1");
   nodeConfiguration.setMasterUri(new URI("http://localhost:11311/"));
   NodeMain listener = new SampleProcessor();
   NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault();
   nodeMainExecutor.execute(listener, nodeConfiguration);
}

class SampleProcessor extends AbstractNodeMain {
   // ...
   public void onStart(ConnectedNode connectedNode) {
      Subscriber<std_msgs.String> subscriber = connectedNode.newSubscriber("sample_topic", std_msgs.String._TYPE);
      subscriber.addMessageListener(new MessageListener<std_msgs.String>() {
         @Override
         public void onNewMessage(std_msgs.String message) {
            logger.info(message.getData());
   // ...

在Python中的发布者部分(假设IP为: 1.1.1.2):

sample_publisher = rospy.Publisher("sample_topic", String, queue_size=10)
sample_publisher.publish(some_json_data)

在运行Python脚本之前,通过shell脚本将ROS主节点URI导出为环境变量:

export ROS_MASTER_URI=http://1.1.1.1:11311
英文翻译

I implemented publish/subscribe using rosjava as subscriber and rospy as publisher. However, I do not receive any message from rospy. Did I miss anything here?

SUBSCRIBER IN JAVA (say ip is: 1.1.1.1)

public void start_on_init() {
   nodeConfiguration = NodeConfiguration.newPublic(&quot;1.1.1.1&quot;);
   nodeConfiguration.setMasterUri(new URI(&quot;http://localhost:11311/&quot;));
   NodeMain listener = new SampleProcessor();
   NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault();
   nodeMainExecutor.execute(listener, nodeConfiguration);
}

class SampleProcessor extends AbstractNodeMain {
   ...
   public void onStart(ConnectedNode connectedNode) {
      Subscriber&lt;std_msgs.String&gt; subscriber = connectedNode.newSubscriber(&quot;sample_topic&quot;, std_msgs.String._TYPE);
      subscriber.addMessageListener(new MessageListener&lt;std_msgs.String&gt;() {
	     @Override
	     public void onNewMessage(std_msgs.String message) {
	        logger.info(message.getData());
   ...

PUBLISHER IN PYTHON (say ip is: 1.1.1.2)

sample_publisher = rospy.Publisher(&quot;sample_topic&quot;, String , queue_size=10)
sample_publisher.publish(some_json_data)

Exported master uri as env variable before running python script using shell script

export ROS_MASTER_URI=http://1.1.1.1:11311

答案1

得分: -1

我认为只有一次机会节点不在同一空间。\nroscore运行在哪里?主节点机器的IP是否作为ROS_MASTER_URI导出到从节点机器?我认为您应该仔细研究ROS中的网络设置这里。\n\n 1: http://wiki.ros.org/ROS/Tutorials/MultipleMachines

英文翻译

I think there is only chance that nodes are not in same space.
Where is roscore running? Is master machine IP exported as ROS_MASTER_URI on slave machine? I think you should hardly study network setup in ROS here

huangapple
  • 本文由 发表于 2020年3月16日 14:13:49
  • 转载请务必保留本文链接:https://java.coder-hub.com/60701136.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定