Check if topic name already exists
Hi there,
How can I check if a topic name already exists with Python?
I think this can be a noob question, but I have not managed to find it...
Regards.
ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org |
Hi there,
How can I check if a topic name already exists with Python?
I think this can be a noob question, but I have not managed to find it...
Regards.
AFAIK there is not. The reason is that there is nothing such as "creating" a topic. Topics are implicitly considered as "existing" as soon as one node starts publishing on it. To this extent, if you really want to see if a ""topic exists"" you should create a subscriber and wait for a message to come. This is the best approximation you can get.
Also, this is a perfectly valid behavior for two nodes to emit on the same topic (see /tf for instance).
On a more general point of view, you should not do that when designing your node, please use meaningful names for your topic instead (aka in, out, position, velocity, etc.) even if they create name clash.
Making sure that a topic name is the duty of the roslaunch XML file and of the architect (the guy who write this file). It is not your role as a node designer.
surely, you mean create a subscriber, not a publisher, right?
What do you mean by create a subscriber and _wait_ for a message to come? I tried creating a subscriber but it doesn't know immediately once the topic is present. I find that it takes upwards of 30 seconds to know about the topic (if the subscriber is created before the publisher).
You could use rospy.get_published_topics() to get all the names of all the published topics. A simple comparison would then tell you if your particular topic is already being published.
Please start posting anonymously - your entry will be published after you log in or create a new account.
Asked: 2013-10-27 15:37:29 -0500
Seen: 5,893 times
Last updated: Oct 28 '13
Python PCL fails to install [closed]
python PointCloud2 read_points() problem
How to disable the output of one node
Segmentation fault (core dumped) OpenCV
How can I get real-time input from user?
ROS Python Module - Autocompletion doesn't work when self-compiled
ROS + Raspberry Pi + Motor Shield
This question is with good cause, as one could avoid subscribing to topics not being out there. I ran into the same problem in
roscpp
and there seems to be no solution, but subscribing to the topics having in mind and checking for incoming msgs.