Interface Mechanisms

Topic

Should the interface be an actionlib client/server? Or should it be some other kind of goal oriented approach? Concurrency?

Current Resolution

A mix of pubs/subs with action style request feedback but allows parallel requests.

The ROCON scheduler subscribes to an allocation topic. Any ROCON service or application sending messages to that topic is called a requester. Each requester assigns itself a Universally Unique Identifier (UUID) and subscribes to a feedback topic suffixed by its hexadecimal string representation, as shown below. The scheduler will provide status feedback on that topic.

  • default scheduler_msgs/SchedulerRequests topic names:

    • allocation: /rocon_scheduler

    • feedback: /rocon_scheduler_0123456789abcdef0123456789abcdef

Discussion

  • (Jack) Does actionlib actually allow multiple concurrent requests?

    • (Jack) Apparently not. New requests preempt old ones. We'll need to work out a different solution.

    • (Daniel) For quite some time I've wanted to write a similar module for queued, even parallelised jobs rather than pre-emptible jobs.

    • (Jack) A more-general actionlib implementation is worth doing, but ambitious for this one project. Have you a pointer to some work Marcus already did in that direction?

      • (Daniel) I'm not aware that Marcus has already done something here - will ask and return here with information if he has.

    • (Jack) The way this design is evolving will likely require C++ and Python class interfaces to manage the state transitions for both requesters and schedulers. It is not yet clear whether that mechanism can be generalized to handle other applications.

    • (Daniel) Ok, sounds reasonable.

  • (Jack) Since actionlib is not going to work and we need to keep moving forward, I'm proceeding with a topic-based approach. The basic idea is that the scheduler subscribes to a /rocon_scheduler topic of type scheduler_msgs/SchedulerRequests. Each requester assigns itself a Universally Unique Identifier and subscribes to a topic using the string representation of its unique ID, in the form /rocon_scheduler_01234567-89ab-cdef-0123-456789abcdef. The scheduler will provide status feedback on that topic via scheduler_msgs/SchedulerRequests messages. The details are still to be determined, see this overview

    • (Jack) ROS complains that '-' is not a valid character in a topic name. It actually runs, but we should avoid it and remove the dashes, leaving /rocon_scheduler_0123456789abcdef0123456789abcdef.

  • (Daniel) While thinking of satisfying a simple orchestration that we are looking at, I can't find anything missing here - I'd tentatively stamp this as the way to go for a first iteration.

  • (Jack) I made an initial guess at the various states of each resource request based on the actionlib goal states. They will likely change until there is a prototype implementation available.

    • (Daniel) As above, it looks like a reasonable plan for a first iteration so we can evaluate its appropriateness.

Wiki: rocon_concert/Reviews/simple_scheduler API proposal_API_Review/Interface Mechanisms (last edited 2013-12-03 19:14:50 by JackOQuin)