[Documentation] [TitleIndex] [WordIndex

Overview

The application interface is made up of a combination of 3 files. A given application is specified by a .app file. The .app file will reference a .interface file and a .launch file.

When an application is launched on a platform, only the parts explicitly listed in the .interface file are made available off-board the robot.

Files

App files

An .app file is a yaml document which contains 4 top-level keys:

example.app

description:
  This is an example application
platform: turtlebot
launch: app_manager/example.launch
interface: app_manager/example.interface

Interface File

The .interface file is a yaml document which contains 3 top-level keys: namespace, subcribed_topics, and published_topics. The value of namespace is a namespace under which all all the topics must be located. For subscribed and published topics, each key is a dictionary keyed on topic with a value of the appropropriate type.

example.interface

namespace: application
subscribed_topics:
  foo: std_msgs/String
  bar: std_msgs/Int32
published_topics:
  baz: std_msgs/Float32

The interpretation of these topics is that they are relative to a namespace: application in this case. When launching the nodes, the app manager will perform the global remap: application:=/unique/path. To use this interface, an interfacing node will need to know the namespace where the interface is located. The value of this namespace should not be relevant to the interfacing node, as it should only subscribe/publish to topics inside the namespace.

Launch File

The launch file for the app is a standard ROS launch file.

TBD

Listing dependencies on 'capabilities' for both config matching, launching, and user confirmation (e.g. 'this app requests access to the teleop iterface.')


2024-03-23 12:21