One query. Every format you need.
Results are unified across signal types — tables for SQL consumers, structured objects for programmatic processing, chart-ready data for visualization, and causality graphs for message tracing.
Why ROSQL?
Robot observability is hard. ROS2 systems generate a firehose of traces, logs, and sensor data across dozens of nodes, but general-purpose query languages have no awareness of topics, action graphs, or message causality. ROSQL closes that gap: write queries in the language of your robot, not your database.
Robotics-native syntax
First-class support for ROS2 nodes, actions, topics, named joints, and ParentSpanId-based message causality. No glue code.
Distributed tracing
Full OpenTelemetry-native tracing — not just within a robot's nodes, but across robots, fleet management systems, and external services. Trace a mission from dispatch to completion.
Cross-signal correlation
DURING() correlates events across traces, logs, metrics, and topics in a single query — something SQL has no primitive for.
Native framework support
First-class topic aliases for common ROS2 frameworks: FROM odom, FROM joint_states, FROM cmd_vel, FROM imu. Nav2 and MoveIt data without memorizing topic names.
Robot model understanding
Query by named joint, inspect URDF-derived limits with SHOW JOINTS, and measure actual-vs-planned deviation with JOINT DEVIATION and PATH DEVIATION.
Deep systems telemetry
Not just ROS2 — query CPU, memory, network, and custom metrics alongside robot data. Full OpenTelemetry compatibility means any OTel-instrumented service is a first-class citizen.
Deployment-aware scoping
Scope any query to a specific robot, version, environment, or session — FOR ROBOT 'arm-01' FOR VERSION 'v1.3.0'. Compare error rates across versions or flag regressions since your last deploy without timestamp math.
Causality graphs
TRACE 'id' walks the parent_span_id chain recursively — see exactly how a message propagated through your robot's nodes and across system boundaries.
Unit-aware filtering
Write physical quantities in any unit — fields['joint_angle'] > 30 deg, position WITHIN 500 m OF (lat, lon), fields['torque'] > 12 Nm. ROSQL auto-converts to SI for geospatial, kinematic, and sensor queries alike. No manual conversion.
Visual format hints
Every query returns a format_hint — Gantt, StackedLineChart, NodeGraph, and more — so your UI renders the right visualization automatically.
Complex questions, instant answers
From proximity checks to 3D joint replay — ask in plain English, query in ROSQL.
"Did robot amr-foo-1 move within 2 ft of a point in the last 24 hours?"
"Did the link left_shoulder ever exceed 30° since the last deploy?"
"What was the joint deviation on robot-123 vs robot-456 in the last hour?"
"Show me the 3D joint states in the 15 seconds before the error"
"Show me all the logs associated with a failed trace"
"Where was the bottleneck across all spans in this action?"
One query, multiple signals
Find every joint limit breach that happened while the battery was critically low — scoped to your robot, auto-bounded to the last deploy. ROSQL converts units, understands lifecycle anchors, and correlates topic streams in a single pass. No JOINs.
FROM joint_states
WHERE fields['position[2]'] > 30 deg
DURING(
FROM battery WHERE fields['percentage'] < 15
)
FOR ROBOT 'arm-01'
SINCE last deployment
Fleet-wide time-series, one line
Group by any field with FACET. Bucket into intervals with TIMESERIES. Results include a format_hint so your UI renders a stacked chart automatically.
SELECT cpu_usage FROM metrics
TIMESERIES 2 min FACET robot_id
SINCE 45 min ago
Sensor units — inline, auto-converted
Write physical quantities in whatever unit makes sense. ROSQL normalizes to SI before hitting the database — no manual conversion, no unit mismatch bugs.
fields['voltage'] < 11.5 V→ 11.5 VCatch battery sagfields['distance'] < 24 in→ 0.61 mProximity alertfields['joint_angle'] > 30 deg→ 0.524 radJoint limit warningfields['speed'] > 3.5 mph→ 1.56 m/sFlag velocity outliersArchitecture
Quick start
Linux · macOS (Intel & Apple Silicon) · Windows via cargo
- curl | sh
- Homebrew (macOS)
- cargo install
curl -fsSL https://rosql.org/install.sh | sh
Linux x86_64 / arm64 · macOS Intel & Apple Silicon. Installs to ~/.local/bin/.
brew install robotopsinc/tap/rosql
Intel & Apple Silicon. Supports brew upgrade rosql.
cargo install rosql --features server,duckdb
All platforms including Windows. Requires Rust stable — rustup.rs.
rosql query "FROM traces WHERE status = 'ERROR' LIMIT 5" \
--backend parquet \
--url s3://robotops-production-rosql-demo/data
Need fleet-scale telemetry?
ROSQL is created and used by Robot Ops, Inc. to power the Robot Ops observability platform — managed ingestion, storage, and dashboards with lifecycle anchors, fleet-wide anomaly detection, and ClickHouse performance.
Explore Robot Ops →