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 | ros @ Robotics Stack Exchange |
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.
Asked: 2013-10-27 15:37:29 -0500
Seen: 6,573 times
Last updated: Oct 28 '13
Python nodes and re-usable modules
why does this laser detector not work
ImportError: No module named wx
How to Publish Array Data for Multiple Servos on Arduino
writing a publisher and subscriber and unsure how to finish it
ROS NodeHandles : nh_ vs nh_priv_
UR5+velocity control: runaway robot after getting closer to goal pose
How to request a service with complex service type(in python)?
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.