The source of topics in someone else's package
I'm going through this package, and in particular this file in which I found three topics whose "source packages" and meaning are unknown to me:
/right_constraint_index
,/left_constraint_index
, and/lsr/angle
I would like to be able to run this package (roslaunch
seems to be working according to the instructions in the README), but I don't know how to resolve the above three topics.
I'm new to ROS and the only means of finding the "source" of these topics (nodes that publish to them) is by going through the package's dependencies. But that didn't help. I obviously googled them and searched for their parent packages on ros.org -- but to no avail. Also, I tried to get in touch with the author of the package but, again, no luck there.
Hence, I turn to you with the question: what do you think is their origin?
But more generally: what are the standard methods of identifying mysterious topics found when going through somebody else's code?
As a side note: I have an idea that these three topics are a means of parametrizing the behavior of the robot during the run (so that one might find the right values of the parameters that correspond to the best local solution), but I wasn't able to verify it.
EDIT: to summarize the discussion in the comments below, my question boils down to:
Is there is a "standard topic repository" that I can use to better understand the use of topics in somebody else's code?
and the short answer is: no, there isn't. You're dependent on the authors and the documentation provided with the code.
If with "the source of topics" you mean: where are the publishers defined that publish to them, or the subscribers that subscribe, then you'll have to read the source, yes.
If you are asking something else, please clarify, as I have a hard time figuring out what you're asking.
My question boils down to the following: "If I don't know what kind of information the node expects through these unknown topics, what methods of finding this out can I follow?" In other languages / libraries, if I encounter a function that I don't know, I can read the documentation, or...
...if there is none, I can go through its implementation. In the example above, this approach doesn't apply.
If, however, I was able to find packages that use topics named as those above, I could figure out whether this is what the node expects. And if so, I would use those packages to supply...
...the node with the required information.
Is my reasoning wrong?
re: read documentation: I would say that is exactly the same in this case. Many ROS pkgs document the types and semantics of the topics they use/expect. See abb_driver as an example.
But just as with other software: you're dependent on the authors ..
.. to have provided you with that documentation. If they didn't, then you can't use that.
re: go through its implementation: I'm not sure how ROS nodes are different here. It's all C++/Python/some other language. Provided you know those languages, you could read the sources.
re: use topics names: no, this is not something you can do. Topic names do not encode sufficiently the types of info that flow across the topic. I can create a
/chatter
topic that carriesgeometry_msgs/PoseStamped
, while the ROS tutorials usestd_msgs/String
. You'll have to look at .... the type of the topic to see whether things are compatible. And here again you will be somewhat dependent on the authors of the node(s): if they used primitive types like
Int32
andFloat64
, then those msgs carry almost no semantic meaning. If however they used something like ..