Skip to main content
Mission tracking allows you to observe and measure robot performance while executing tasks. Missions can represent picking objects, delivering items, cleaning areas, or any task-based workflow. This configuration controls how mission data is captured, processed, and stored.
Mission Tracking is an advanced feature available in certain editions. Contact us for questions and pricing.
Unlike most configuration kinds, MissionTracking is a global config—only one per scope. The only accepted id value is "all".

When to Use

  • Performance analytics: Track mission duration, success rates, and completion percentages
  • Custom mission data: Map robot data sources to mission metadata fields
  • Integration with proprietary systems: Capture missions reported via API or inferred from data changes
  • Multi-floor/multi-location: Configure coordinate systems and waypoint tolerances

Processing Types

TypeDescription
"api"Missions are created/updated via REST API calls or JSON-encoded data source messages
"derived"Missions are inferred from data source value changes (e.g., state transitions)
You can use both: processingType: ["api", "derived"]

Top-Level Fields

FieldTypeRequiredDescription
processingTypestring/arrayYes"api", "derived", or both.
autoClosePreviousMissionbooleanNoIf true (default), automatically closes open missions when a new one starts.
dataBackfillobjectNoConfiguration for backfilling data to missions.
attributesobjectNoMaps data source attributes to mission fields.
missionFieldsobjectNoDefault values and behaviors for mission fields.
stateDefinitionsobjectNoMaps state strings to status values.
executionobjectNoExecution behaviors (locks, modes, waypoints).
executorobjectNoWhere missions execute: "cloud" or "edge".

Attributes Mapping

Maps data source values to mission fields. Keys are attribute IDs; values are mapping configurations.

Attribute Mapping Fields

FieldTypeDescription
typestringMapping type (see below).
pathstringJSON path to extract from complex data sources.
valuesarrayFor "mission" type: values that indicate an active mission.
labelstringFor "data" type: key name in mission’s data object.
acceptBeforeStartnumberSeconds to look back for attribute updates when mission starts.
acceptAfterEndnumberSeconds to accept attribute updates after mission ends.
highwatermarknumberOnly accept values higher than this threshold.

Attribute Types

TypeDescription
"mission"Defines mission boundaries (for derived) or JSON API payloads (for API).
"label"Sets the mission display name.
"state"Sets the current mission state (e.g., “in-progress”, “completed”).
"status"Sets mission status: "ok", "error", or "warn".
"data"Adds metadata to the mission’s data object.
"percent"Sets completion percentage (0-1).
"startTs"Sets mission start timestamp (epoch milliseconds).
"endTs"Sets mission end timestamp.

Examples

Basic API-Based Tracking

kind: MissionTracking
apiVersion: v0.1
metadata:
  scope: account/<accountId>
  id: "all"
spec:
  processingType: "api"
  autoClosePreviousMission: true

Derived Mission Tracking

Infer missions from data source changes:
kind: MissionTracking
apiVersion: v0.1
metadata:
  scope: account/<accountId>
  id: "all"
spec:
  processingType: "derived"
  autoClosePreviousMission: true
  attributes:
    stateEvent:
      - type: "mission"
        path: "currentTask"
        values: ["delivery", "pickup", "cleaning"]
      - type: "data"
        path: "targetRoom"
        label: "Room"
    navigationStatus:
      type: "state"
      acceptBeforeStart: 20
    pathCompletion:
      type: "percent"
      acceptAfterEnd: 60
  missionFields:
    state:
      defaultInitialValue: "planning"
      defaultFinalValue: "completed"
  stateDefinitions:
    completed:
      defaultStatus: "ok"
    stuck:
      defaultStatus: "error"
    waiting:
      defaultStatus: "warn"

With Execution Configuration

kind: MissionTracking
apiVersion: v0.1
metadata:
  scope: account/<accountId>
  id: "all"
spec:
  processingType: ["api", "derived"]
  execution:
    modes:
      start: "executing-mode-tag"
      end: "idle-mode-tag"
    useLocks: true
    waypoints:
      distanceTolerance: 0.5
      angularTolerance: 0.1
  executor:
    type: "cloud"

Edge Executor Configuration

kind: MissionTracking
apiVersion: v0.1
metadata:
  scope: account/<accountId>
  id: "all"
spec:
  processingType: "api"
  executor:
    type: "edge"
    options:
      coordinateSystem: "map"

Execution Settings

FieldDescription
modes.startTag ID assigned when mission starts.
modes.endTag ID assigned when mission ends.
useLocksIf true, lock robot during mission execution.
waypoints.distanceToleranceDistance (meters) to consider waypoint reached.
waypoints.angularToleranceAngle (radians) to consider waypoint reached.

Data Backfill

Control which attributes can update missions retroactively:
dataBackfill:
  acceptAttributes:
    - "missionSummary"
    - "pathCompletion"