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

Revision history [back]

click to hide/show revision 1
initial version

I can't enable all ports unfortunately, would enabling some of them allow ROS to work?

no, unfortunately not.

There are various Q&As about this here on ROS Answers. The keywords are "ephemeral ports".

In short: ROS nodes can (and will) use any port from the ephemeral range, both UDP and TCP (depending on how subscribers are configured).

The only "static port" (in the sense that you can control it) is the port at which the XMLRPC server listens for connections. That would be what you configure with the ROS_MASTER_URI environment variable.

For networks like the one you describe, overlaying a virtual network (via VPN or some other mechanism) is typically easiest and robust. There are various peer-to-peer VPN solutions which could work. One would be tinc, there are other, commercial options available as well. ROS Discourse has a few announcements you could look for.

connections can only be established from robot to server

I guess this means: they can only be initiated. If you'd really only had one directional connections, nothing would work.

I can't enable all ports unfortunately, would enabling some of them allow ROS to work?

no, unfortunately not.

There are various Q&As about this here on ROS Answers. The keywords are "ephemeral ports".

In short: ROS nodes can (and will) use any port from the ephemeral range, both UDP and TCP (depending on how subscribers are configured).

The only "static port" (in the sense that you can control it) is the port at which the XMLRPC server listens for connections. That would be what you configure with the ROS_MASTER_URI environment variable.

For networks like the one you describe, overlaying a virtual network (via VPN or some other mechanism) is typically easiest and robust. There are various peer-to-peer VPN solutions which could work. work (these don't use a central server, but connect hosts directly). One would be tinc, (OSS), there are other, commercial options available as well. ROS Discourse has a few announcements you could look for.

connections can only be established from robot to server

I guess this means: they can only be initiated. If you'd really only had one directional connections, nothing would work.

I can't enable all ports unfortunately, would enabling some of them allow ROS to work?

no, unfortunately not.

There are various Q&As about this here on ROS Answers. The keywords are "ephemeral ports".

In short: ROS nodes can (and will) use any port from the ephemeral range, both UDP and TCP (depending on how subscribers are configured).

The only "static port" (in the sense that you can control it) is the port at which the XMLRPC XML RPC server listens for connections. That would be what you configure with the ROS_MASTER_URI environment variable.

This is also what makes rostopic list and rostopic info work, as those mostly use the XML RPC server.

roswtf complaining about connections not being there or it unable to connect to nodes running remotely is a result of connections not being allowed.

For networks like the one you describe, overlaying a virtual network (via VPN or some other mechanism) is typically easiest and robust. There are various peer-to-peer VPN solutions which could work (these don't use a central server, but connect hosts directly). One would be tinc (OSS), there are other, commercial options available as well. ROS Discourse has a few announcements you could look for.

connections can only be established from robot to server

I guess this means: they can only be initiated. If you'd really only had one directional connections, nothing would work.

I tried also running a test with turtle_tf2 doing roslaunch turtle_tf2 turtle_tf2_demo.launch on the robot side, this is the output from it:

all of your troubles here have nothing to do with your network configuration, but with OpenGL and/or your X server not working and your workspace setup not being correct.