Ask Your Question
0

Using industrial_robot_client / simple_message with a single port

asked 2019-10-03 05:08:31 -0600

jpa gravatar image

I'm trying to interface a Thermo CRS F3 robot arm, which runs RAPL-3 language and has a serial port for communication. I initially started with rosserial, but then found out that the simple_message protocol is better suited for my purpose.

Because I'm already confused about all the new stuff, I'd like to get started with the default streaming client in industrial_robot_client before trying to customize it. I think I can connect a TCP port to the serial port using socat/ncat, and then implement the simple_message protocol on the robot side.

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? Or would the replies to different commands get mixed up? Or is there some other reason such as buffering and latency to keep the ports separate?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2019-10-04 07:51:29 -0600

gvdhoorn gravatar image

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.

edit flag offensive delete link more

Comments

Ok, thanks for the info! I'll see whether I'll just use two serial ports or if I'll add some custom framing on top for interleaving.

jpa gravatar imagejpa ( 2019-10-04 09:49:22 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2019-10-03 04:40:04 -0600

Seen: 20 times

Last updated: Oct 04