Skip to main content

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

FieldTypeRequiredDescription
labelstringNoDisplay label for the data source.
unitstringNoUnit of measurement (e.g., "m/s", "%").
scalenumberNoMultiplier applied before storing. Useful for normalizing percentages (0-100 → 0-1).
precisionnumberNoDecimal places for numeric values.
typestringNoForce interpretation as "array" or "json". Auto-detected if not set.
timelineobjectNoTime-series storage configuration.
sourceobjectYesData capture method. Only one source type per definition.

Timeline Configuration

FieldTypeDescription
disabledbooleanIf true, data is not stored in time-series database.
fieldTypestringData 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"
FieldDescription
transformExpression that computes the value.
filterExpression 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: "/"