Ask Your Question

How many message types can be published to a topic?

asked 2018-09-26 02:43:40 -0600

gsasikiran gravatar image

I have seen that messages can be transfered to topics. Can we send only one type of msg type? or any number of message types?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-09-26 02:47:00 -0600

gvdhoorn gravatar image

updated 2018-09-26 02:58:27 -0600

Topics are (in a way) strongly typed, so theoretically you can only send messages of a single type to them (namely, the type that was NodeHandle::advertise(..)d.

Edit: just tested this with three rostopic instances:

  1. pub /chatter std_msgs/String "data: 'piet'" -r1
  2. pub /chatter std_msgs/Int16 "data: 345" -r1
  3. echo /chatter

Result: the last publisher "wins", so the topic type registered appears to be std_msgs/int16. rostopic echo also prints 345.

The std_msgs/String publisher prints this:

[/rostopic_15588_1537948069134] [WARN] [1537948151.558332]: Could not process inbound connection: topic types do not match: [std_msgs/Int16] vs. [std_msgs/String]{'message_definition': 'int16 data\n', 'callerid': '/rostopic_17009_1537948151282', 'tcp_nodelay': '0', 'md5sum': '8524586e34fbd7cb1c08c5f5f1ca0e57', 'topic': '/chatter', 'type': 'std_msgs/Int16'}

Summarising: you can advertise(..) any type on a single topic, but the "last one" will "win" and connections between publishers and subscribers will error out as they expect a certain type but during handshaking they see another.

Note: rostopic is Python, I've not tested C++ but the behaviour should be similar.

edit flag offensive delete link more

Your Answer

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

Add Answer

Question Tools


Asked: 2018-09-26 02:43:40 -0600

Seen: 586 times

Last updated: Sep 26 '18