Skip to main content

Activity Types

An activity type defines a simulated behavior that may be invoked by a planner, separate from the autonomous behavior of the mission model itself. Activity types may define parameters, which are filled with arguments by a planner and provided to the activity upon execution. Activity types may also define validations for the purpose of informing a planner when the parameters they have provided may be problematic.

For example, here is a simple activity type from the examples in the template mission model:

PlanDev automatically generates parameter serialization boilerplate for every activity type defined in the mission model's package-info.java. Moreover, the generated Model base class provides helper methods for spawning each type of activity as children from other activities.

Activity Type Annotations​

In order for PlanDev to detect an activity type, its class must be annotated with the @ActivityType tag. An activity type is declared with its name using the following annotation:

@ActivityType("CollectData")

By doing so, the PlanDev annotation processor can discover all activity types declared in the mission model, and validate that activity type names are unique.

Activity Type Metadata​

Metadata of activities are structured such that the PlanDev annotation processor can extract this metadata given particular keywords. Currently, the annotation processor recognizes the following tags: contact, subsystem, brief_description, and verbose_description. These metadata tags are placed in a Javadoc style comment block above the activity type to which they refer. For example:

/**
* @subsystem Data
* @contact camargo
* @brief_description A data management activity that deletes old files
*/
@ActivityType("DeleteOldFiles")