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

However, I see that the default clients use up to 4 TCP ports: MOTION = 11000, SYSTEM = 11001, STATE = 11002, IO = 11003. Of which MOTION and STATE are at least needed.

Could I just specify the same port for both robot_state and join_trajectory_action nodes?

I don't think so: while those nodes are clients (and in theory could connect to the same TCP port), there is currently no support for interleaving request-reply pairs (ie: there is no matching of incoming replies to outstanding requests).

Or would the replies to different commands get mixed up?

that would probably be what would happen, yes.

Or is there some other reason such as buffering and latency to keep the ports separate?

the intent of Simple Message was to make writing server programs as simple as possible, as they typically have to be implemented using the very limited runtime systems of (industrial) robot controllers (ie: proprietary languages, limited memory and cpu, primitive support for socket communication). (De)multiplexing message streams is certainly possible, but a non-trivial task in such constraint environments.