How many message types can be published to a topic?
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?
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?
How many message types can be published to a topic? 1.
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:
pub /chatter std_msgs/String "data: 'piet'" -r1
pub /chatter std_msgs/Int16 "data: 345" -r1
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.
Please start posting anonymously - your entry will be published after you log in or create a new account.
Asked: 2018-09-26 02:43:40 -0500
Seen: 2,078 times
Last updated: Sep 26 '18