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: Limited Availability — Contact support to enable traffic management features.
Traffic management enables coordination of robot fleets by defining zones in your maps and assigning traffic rules. This is essential for multi-robot deployments where robots need to navigate shared spaces safely—preventing collisions, managing access to narrow corridors, and coordinating docking areas.
InOrbit provides two configuration kinds for traffic management:
- TrafficZoneType: Defines categories of zones with traffic rules and visual styles
- TrafficZone: Defines individual zones on maps with specific geometry
When to Use
- Single-occupancy areas: Narrow corridors, charging stations, or workstations where only one robot should operate at a time
- No-go zones: Areas robots must avoid entirely (e.g., restricted areas, emergency exits)
- Dynamic behaviors: Trigger actions when robots enter or leave zones (e.g., adjust speed, activate lighting)
- External integration: Use the Traffic Management API to query and control zones from external systems
Key Concepts
Built-in Traffic Rules
Two traffic rules are available out of the box:
| Rule | Description |
|---|
nogo | Robots are not permitted to enter the zone |
soz | Single-Occupancy Zone—only one robot allowed at a time |
Contact support for custom traffic rules.
Zone Events
Zones can trigger robot actions based on these events:
| Event | Trigger |
|---|
onEnter | Robot enters the zone |
onExit | Robot leaves the zone |
onOccupied | First robot enters (zone becomes occupied) |
onEmpty | Last robot leaves (zone becomes empty) |
onState | Zone state changes to a specific value |
Zone State
Zones have an internal state that can be:
- Modified by traffic controllers (
free, occupied)
- Updated via the REST API
- Used to trigger conditional styling
Traffic Zone Types
Zone types define the behavior and appearance of zone categories.
Example: Charging Zone Type
apiVersion: v0.1
kind: TrafficZoneType
metadata:
scope: account/<accountId>
id: charging
spec:
label: Charging Zone
rules:
- soz
- type: nogo
options:
priorityTags:
tagId: 10
style:
color: "#66c2a5"
conditionalStyle:
occupied:
color: "#e5c494"
events:
- type: action
actionId: turnOnLights
targetId: room001
event: onEnter
Zone Type Fields
| Field | Type | Required | Description |
|---|
label | string | Yes | Human-readable name |
rules | array | No | Traffic rules to enforce |
style | object | No | Default visual appearance |
conditionalStyle | object | No | Style overrides based on zone state |
events | array | No | Actions triggered by zone events |
Traffic Rules
Rules can be specified as strings or objects with options:
rules:
- soz # Simple rule
- type: nogo # Rule with options
options:
priorityTags:
tagId: 10 # Robots with this tag can override the rule
Style Configuration
style:
color: "#66c2a5" # Zone color (hex)
conditionalStyle:
occupied: # Applied when state is "occupied"
color: "#e5c494"
free: # Applied when state is "free"
color: "#a6d854"
Traffic Zones
Individual zones define specific areas on location maps.
Example: Basic Zone
apiVersion: v0.1
kind: TrafficZone
metadata:
scope: tag/<accountId>/<locationId>
id: chargingZone001
spec:
label: South-West Charger
type: charging
frameId: map
geometry:
polygon:
- x: 0
y: 0
- x: 1
y: 0
- x: 1
y: 1
- x: 0
y: 1
bufferDistance: 0.5
events:
- type: action
actionId: beepbeep
event: onEnter
Example: Zone with Robot Selector
Restrict which robots the zone applies to:
apiVersion: v0.1
kind: TrafficZone
metadata:
scope: tag/<accountId>/<locationId>
id: chargingZone001
spec:
label: South-West Charger
type: charging
frameId: map
robots:
robot:
tagIds: ["cleanerRobots"]
ignoreTagIds: ["maintenance"]
namePattern: "vacuum.*"
geometry:
polygon:
- { x: 0, y: 0 }
- { x: 1, y: 0 }
- { x: 1, y: 1 }
- { x: 0, y: 1 }
Zone Fields
| Field | Type | Required | Description |
|---|
label | string | Yes | Human-readable name |
type | string | Yes | Zone type ID (must match a TrafficZoneType) |
frameId | string | Yes | Map frame identifier |
geometry | object | Yes | Zone boundaries |
robots | object | No | Robot selector to filter affected robots |
events | array | No | Zone-specific event triggers |
Geometry Configuration
geometry:
polygon: # List of vertices
- x: 0
y: 0
- x: 1
y: 0
- x: 1
y: 1
- x: 0
y: 1
bufferDistance: 0.5 # Optional: expand zone by this distance (meters)
Use the Navigation widget’s zone editor (Layers > Zones) to draw zones visually instead of manually specifying coordinates.
Robot Selector
Restrict which robots are considered for zone events and occupancy:
| Field | Type | Description |
|---|
robotId | string | Single robot ID |
robotIds | string[] | List of robot IDs |
tagIds | string[] | Robot must have all these tags |
ignoreTagIds | string[] | Exclude robots with any of these tags |
namePattern | string | Regex pattern for robot name |
All conditions are ANDed—a robot must satisfy all specified conditions.
Event Configuration
events:
- type: action # Event type (only "action" supported)
event: onEnter # Trigger event
actionId: slow-down # Action to execute
targetId: robot001 # Optional: run on specific robot/device
arguments: # Optional: action arguments
speed: 0.5
Use Cases Without Rules
Even without traffic rules, zones are useful for:
- Visual monitoring: Zones change appearance when occupied, helping operators track robot positions
- Mission logic: Use zone functions in expressions:
isRobotInZone('dropZone') and not isZoneOccupied('armReachArea')
- External integration: Query zone state via REST API for WMS, fleet manager, or other system integration