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,641 times
Last updated: Oct 28 '13
Topic not subscribed to properly [closed]
create ROS workspace - command not found
Very slow update of global variables - python
print UInt8MultiArray values in python
ROS 1 Correct way to declare Python dependencies
Why is the static_transform_broadcaster_node (tf2_ros) not built as an executable
roslaunch python api access node class
Why does not std_msgs/header generate an error?
how to make end effector look at object?
roswtf: node subscriptions arenot connected (same machine) [closed]
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.