For the past few days I've been trying to find whether there is a tool that allows one to build a layer of business logic components on top of a ROS bot with basic functionality.

For example, say there is a basic autonomous drone running ROS, with capabilities to fly, avoid obstacles, navigate a plan etc. as "basic" capabilities. Is there a way to build on top of this drone, an extra layer of business logic components, that specializes the drone in some way i.e. now allows it to carry out some 'business goal" like "find the number of dogs from point x to y" (kind of like the concept of decorators).

I'm saying "an extra layer" because it would make sense to not incorporate the logic into the ROS computation graph as it should build on top of the basic capabilities rather than extend it directly.

So I guess I'm looking for a tool that can recognize the current computation graph of a hooked up bot and an API that allows one to make calls to different nodes/topics/services on the bot such that having written some business logic elsewhere I could incorporate to work with the bot through this API.

Does such a thing exist? Even if not - do you think it makes sense/would be good if it existed at least? I know we don't want to give software recommendations here but rather I just wish to find out if such a thing exists and more so if anyone with more of a background in robotics than me thinks it should.



1 Answer 1


What you're looking for is basically a regular program that includes the ROS libraries to make the appropriate service calls, publications, and/or subscriptions. ROS integration.

The program handles all your logic, then you write a publisher to send ROS commands to the drone.

If you want to get data back from the drone then write a subscriber (same link) to the drone's camera topic and you can do whatever image processing, etc. you want from the "business logic" application.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.