Skip to content

App Manager Integration #2

Description

@stonier

Proposal for how workflow between capability server and rapp manager might happen.

Rapp Manager Initialisation

  • Query the capability server

Query the capability server to get information about the capabilities it provides. If we're assuming that capabilities are static as part of a bootstrap constant, then the rapp manager probably only needs to do this at startup and cache/save the information.

  • Prune list of both local and installable apps

Check against capabilities and prune apps which can't be run because they lack capabilities. Again, if we're assuming static capabilities, this can be done at startup to save having to do it every time list_apps is called.

Start Rapp

  • Check rapp is in the pruned list when /start_app is called, [1] [2]
  • Rapp manager reads the rapp definition for preferred, required, optional capabilities [1] [2]

Am envisioning three kinds of capability specifications as listed above. The preferred should always come listed with a fallback. I think this would get predominately used with semantic capabilities. One or two simple example rapps might be useful in the rocon_apps package (it's probably better thought of as rocon_tutorial_apps).

  • Rapp manager makes requests to start capabilities on the capability server
  • Rapp manager starts the app with capability server remapping [1]

Some information should get to the rapp somehow. Remapping the capability server for the rapp so that it can make it's own queries and decisions would be a good minimum point. I'm not sure we can intelligently do any remapping for the rapp since the rapp doesn't provide its own private interface specification, so let it work things out for itself.

  • Stop app process should work in reverse in all the expected ways

Variations

The rapp manager only does single rapp management right now. With capabilities, capability counts, locks or sharing priveleges, we could feasibly do multiple apps which would be great.

Demonstrables

Integrating stuff next week, should focus on what we might want to show. Options:

  • Portability: same app on two robots utilising the same capability via different capability providers.
  • Tuning your app: using semantics to choose capability more intelligently.
  • Simplified Bringup/Teardown : graphical tool which helps bring up capabilities in a modular way and set application meaningful parameters (the rest hide of course in the capability provider).

The first one I could integrate here on two robots - navigation would be the best example. The second one would probably take more work to make it meaningful. The last would be quite useful for robotics researchers and developers in general I think. It would also mean we could delay integration into the app manager until after roscon.

Any other ideas? I'll have a couple of days next week to work on integration for the demo, which is right after roscon.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions