0
$\begingroup$

Rosanswers logo

Hello list,

I have a regular PC and an embedded ARM board, both with ubuntu 14.04 on indigo, no firewalls. PC 1 has 2 network cards, one for internet access and one for a local net (via router with wifi). On PC one I start roscore, and tell the other (behind the router) were to find this master. On the remote machine:

rosnode list : works
rostopic list: works
rosnode ping rosout: error:
rosnode: node is [/rosout]
ERROR: Unknown host [fwn04-nb4-16-202] for node [/rosout]

If I start some rosnodes on the remote machine they seem to work, but I CANNOT echo a topic on that remote machine. I justs keeps waiting on the topic. However on the master i CAN echo that topic from the remote machine.

Pinging and netcat tests work from both sides, I have set ROS_IP on both machines and also set the name/address in /etc/hosts

I set the master uri to

ROS_MASTER_URI=http://129.125.16.202:11311

and this can be resolved on the remote machine both by /etc/hosts AND dns to

fwn-nb4-16-202.phys.rug.nl

Is there anything that I am forgetting?

Regards, Sietse

PS. If I do the same between PC one and another regular PC that is also on the phys.rug.nl net, everything works....


Edit: I notice something else. If I do not set a remote master, the environment gives me:

ROS_MASTER_URI=http://localhost:11311

And roscore then says:

ROS_MASTER_URI=http://fwn-nb4-48-148:11311/

Note that the domainname (which is fwn.rug.nl) is missing. This still could be ok.

But I find is suspisious that when, on a remote PC, I do "rosnode info rosout" It says:

ERROR: Communication with node[http://fwn-nb4-48-148:46685/] failed!

And now the lack of the domainname is indeed an error.

Is there an error here somewhere?


Originally posted by Sietse on ROS Answers with karma: 168 on 2016-01-26

Post score: 0


Original comments

Comment by gvdhoorn on 2016-01-26:
@Sietse: please don't use answers to post updates. I've merged your update into your original question, but please keep it in mind for future questions. Please use the edit link/button.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Quick solution: don't rely on DNS, and set ROS_IP on all involved PCs to the IP of the interface you use to communicate with remote machines. Then make sure to only use IPs in your ROS_MASTER_URI as well.

Possibly better solution: configure DNS and local domain lookup on all involved machines. This could take some time to set up, and might actually be robust against (dynamic) IP changes. In that case, set ROS_HOSTNAME only, not ROS_IP, and configure your ROS_MASTER_URI to use the same values. In your specific case however, hostnames seem to have a relation to IP addresses, negating the advantage of insulating you from unexpected IP changes (as the hostname would also change).

PS: especially on corporate and academic networks, I prefer to create a stand-alone network for running ROS node graphs across multiple machines. That way you are in complete control of every networking aspect, and you also don't run ROS Masters on public IPs (there are obviously firewalls, but still).


Originally posted by gvdhoorn with karma: 86574 on 2016-01-26

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by Sietse on 2016-02-01:
Using ip-addresses everywhere solved it. All addresses are in the 192.168.1.0/24 range, the range for my interface to the robot(s). With a robot (incl. laser) running on the arm-board, i can use rviz on the main host and arbotix_gui on either the main host of the arm-board. Thanks alot!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.