Documentation Index
Fetch the complete documentation index at: https://inorbitinc.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Status: Early Access — These features may not be available in all accounts.
Mission definitions allow you to configure reusable missions that robots in your fleet can execute. A mission is a sequence of steps—navigating to waypoints, executing actions, waiting for conditions, and updating mission data—that can be triggered on-demand or scheduled.
This configuration works together with mission tracking to monitor mission progress, whether missions are defined through InOrbit or executed by proprietary robot software and reported via APIs.
When to Use
- Automate repetitive tasks: Define delivery routes, cleaning paths, or patrol missions once and dispatch them repeatedly
- Orchestrate multi-step workflows: Combine navigation, actions, and waits into complex sequences
- Coordinate across robots: Use selectors to target specific robots or tags, and target other robots within mission steps
Key Concepts
Mission Steps
Missions consist of sequential steps, each performing one of these operations:
| Step Type | Field | Description |
|---|
| Navigate to waypoint | waypoint | Go to coordinates or a named waypoint |
| Execute action | runAction | Trigger a robot action (defined in ActionDefinitions) |
| Update data | data | Set mission metadata (key-value pairs) |
| Wait for condition | waitUntil | Pause until an expression evaluates to true |
| Simple wait | timeoutSecs | Pause for a fixed number of seconds |
| Conditional branch | if | Execute different steps based on a condition |
Every step can include:
label: Human-readable description shown in mission widgets
timeoutSecs: Maximum wait time before the step times out
completeTask: Mark a named task as complete (for progress tracking)
Robot Selector
Use selector to restrict which robots can execute a mission:
| Field | Type | Description |
|---|
tagIds | string[] | Robot must have all these tags |
robotIds | string[] | Robot must be in this list |
robotId | string | Single robot ID |
namePatterns | string[] | Robot name must match one of these regex patterns |
All conditions are ANDed—a robot must satisfy all specified conditions.
Cross-Robot Targeting
Some steps (runAction, waitUntil, data) can target a different robot using the target field:
runAction:
actionId: acknowledge-delivery
target:
robotId: control-station-01
Examples
Basic Delivery Mission
apiVersion: v0.1
kind: MissionDefinition
metadata:
scope: account/<accountId>
id: delivery-mission
spec:
label: Delivery Mission
steps:
- label: "Setup mission data"
data:
itemType: "bottle"
weight: 1.23
containerNumber: 1
- label: "Go to drop off location"
waypoint:
x: 1.10
y: 20.98
theta: 1.23
frameId: "map"
timeoutSecs: 300
- label: "Wait 5 seconds"
timeoutSecs: 5
- label: "Open lid"
runAction:
actionId: script-open-lid
arguments:
ledColor: "#ff00ee"
lidNumber:
_data: "containerNumber" # Reference mission data
- label: "Wait for lid to be closed"
waitUntil:
expression: getValue("lid_open") == 0
timeoutSecs: 60
completeTask: "Pickup"
- label: "Go to dock"
waypoint: "dock" # Named waypoint reference
completeTask: "Delivery"
selector:
robot:
tagIds: ["delivery_bot"]
Mission with Expression Evaluation
Evaluate expressions and optionally target specific robots:
apiVersion: v0.1
kind: MissionDefinition
metadata:
scope: account/<accountId>
id: data-collection-mission
spec:
label: Data Collection Mission
steps:
- data:
Greetings: helloWorld
Mode DataSource for r2d2:
expression: getValue("mode_ds")
target:
robotId: r2d2
Mode Datasource for Wall-e:
expression: getValue("mode_ds")
Schema Reference
Top-Level Fields
| Field | Type | Required | Description |
|---|
label | string | Yes | Human-readable mission name |
steps | array | Yes | Sequence of mission steps |
selector | object | No | Restricts which robots can execute |
Step Fields
| Field | Type | Description |
|---|
label | string | Step description |
timeoutSecs | number | Maximum wait time in seconds |
completeTask | string | Task name to mark complete |
waypoint | object|string | Navigation target (coordinates or named waypoint) |
runAction | object | Action to execute |
data | object | Mission metadata to set |
waitUntil | object | Condition to wait for |
if | object | Conditional branching with then and else |
Waypoint Object
waypoint:
x: 1.0 # X coordinate
y: 2.0 # Y coordinate
theta: 0.5 # Orientation (radians)
frameId: "map" # Optional frame ID (for multi-floor)
Or reference a named waypoint:
waypoint: "dock" # References a SpatialAnnotation waypoint
Run Action Object
runAction:
actionId: my-action # Required: ActionDefinition ID
arguments: # Optional: action arguments
param1: "value"
param2:
_data: "missionField" # Reference mission data
_arguments: "dispatchArg" # Reference dispatch arguments
target: # Optional: run on different robot
robotId: other-robot
Wait Until Object
waitUntil:
expression: getValue("sensor") > 100 # Expression to evaluate
timeoutSecs: 60 # Optional timeout
target: # Optional: evaluate on different robot
robotId: other-robot
Selector Object
selector:
robot:
tagIds: ["picker-robots", "firmware-023"]
robotIds: ["picker001", "picker002"]
robotId: "picker001"
namePatterns: ["picker.*"]