ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Rosnode ping rosout does not work on remote machine

asked 2016-01-26 07:33:23 -0600

Sietse gravatar image

updated 2016-01-26 11:16:43 -0600

gvdhoorn gravatar image

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?

edit retag flag offensive close merge delete

Comments

@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.

gvdhoorn gravatar image gvdhoorn  ( 2016-01-26 11:17:59 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2016-01-26 11:23:47 -0600

gvdhoorn gravatar image

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).

edit flag offensive delete link more

Comments

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!

Sietse gravatar image Sietse  ( 2016-02-01 04:18:19 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2016-01-26 07:33:23 -0600

Seen: 1,867 times

Last updated: Jan 26 '16