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,623 times
Last updated: Oct 28 '13
Unsuitable PythonLibs building catkin (Mac OS X 10.9.3)
service does not exist - app_manager rapp, hydro, python, turtlebot
rostest & Python - Multiple Test Fixtures In Single File
How do you kill the "zombie" node in ROS2 on local?
Python problems installing ROS on OS X 10.9
Read rosbag in python at timestamp
Cannot import custom python module in custom python pkg
ROS node bridge for publish special topics over the internet
[ROS2] creating integration tests for python nodes
Use callback groups to allow an Action to trigger a service of the same Node
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.