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.
Data source definitions specify how data from robots is captured, processed, and stored as attributes. These attributes power status monitoring, incident detection, dashboard visualizations, and KPI calculations throughout InOrbit.
When to Use
- Custom telemetry: Capture application-specific data beyond standard ROS topics
- Computed values: Derive new metrics from existing data using expressions
- System monitoring: Track CPU, memory, disk, and network usage
- External data: Ingest data from files or custom key-value messages
Spec Fields
| Field | Type | Required | Description |
|---|
label | string | No | Display label for the data source. |
unit | string | No | Unit of measurement (e.g., "m/s", "%"). |
scale | number | No | Multiplier applied before storing. Useful for normalizing percentages (0-100 → 0-1). |
precision | number | No | Decimal places for numeric values. |
type | string | No | Force interpretation as "array" or "json". Auto-detected if not set. |
timeline | object | No | Time-series storage configuration. |
source | object | Yes | Data capture method. Only one source type per definition. |
Timeline Configuration
| Field | Type | Description |
|---|
disabled | boolean | If true, data is not stored in time-series database. |
fieldType | string | Data type: "number", "string", etc. Required for non-numeric data. |
Source Types
keyValue
Receives data from key-value pair messages. The most common method uses ROS messages on /inorbit/custom_data/0 in the format "key=value".
source:
keyValue:
key: "battery_level"
topic: "/inorbit/custom_data/0" # optional, this is the default
derived
Computes values from other data sources using expressions.
source:
derived:
transform: "getValue('temperature') * 1.8 + 32"
filter: "getValue('temperature') != null"
language: "safe" # "safe" (default) or "full"
| Field | Description |
|---|
transform | Expression that computes the value. |
filter | Expression that must be true for the value to update. |
language | "safe" limits to safe operations; "full" allows all JavaScript. |
rosDiagnostics
Captures data from ROS /diagnostics messages.
source:
rosDiagnostics:
namespace: "/motors/left_wheel"
key: "Temperature"
networkUsage
Monitors network interface bandwidth.
source:
networkUsage:
interface: "eth0"
diskUsage
Monitors disk partition usage (returns 0-1 fraction).
source:
diskUsage:
partition: "/dev/sda1"
textFile
Reads and monitors a text file for changes.
source:
textFile:
path: "/var/log/robot.log"
imageFile
Reads and monitors an image file for changes.
source:
imageFile:
path: "/tmp/snapshot.jpg"
network
Advanced network interface metrics.
source:
network:
interface: "wlan0"
mappingKey: "rx_bytes"
optionKey: "rate"
Examples
ROS Diagnostics Data Source
kind: DataSourceDefinition
apiVersion: v0.1
metadata:
scope: account/<accountId>
id: "dockingStatus"
spec:
label: "Docking Status"
source:
rosDiagnostics:
namespace: "/Navigation/Docking"
key: "Docking Status"
Key-Value with Custom Topic
kind: DataSourceDefinition
apiVersion: v0.1
metadata:
scope: account/<accountId>
id: "missionProgress"
spec:
label: "Mission Progress"
unit: "%"
scale: 0.01 # Convert 0-100 to 0-1
source:
keyValue:
key: "mission_progress"
Derived Temperature Conversion
kind: DataSourceDefinition
apiVersion: v0.1
metadata:
scope: account/<accountId>
id: "temperatureFahrenheit"
spec:
label: "Temperature"
unit: "°F"
precision: 1
source:
derived:
transform: "getValue('temperatureCelsius') * 1.8 + 32"
filter: "getValue('temperatureCelsius') != null"
System Monitoring
kind: DataSourceDefinition
apiVersion: v0.1
metadata:
scope: account/<accountId>
id: "diskUsageRoot"
spec:
label: "Disk Usage"
unit: "%"
scale: 100 # Convert 0-1 to 0-100
source:
diskUsage:
partition: "/"