Engineering a robot is a systems problem.
RoboAgent treats it as one. Eight pillars — each built from first principles for ROS2 and the realities of physical hardware.
A typed knowledge graph of your robot.
RoboAgent compiles your workspace into the Robotics Knowledge Graph (RKG): a typed graph of nodes, topics, services, actions, parameters, TF frames, URDF links, and hardware interfaces. The agent doesn't grep. It walks the graph.
- Symbolic launch IR with conditions kept symbolic
- QoS compatibility resolved publisher-to-subscriber
- URDF inertia + joint validation
- colcon topological build order with stale-build detection
# ask the graph, not the filesystem
rkg.query("which node publishes /odom and at what QoS?")
→ ekf_localization_node @ Reliable, KEEP_LAST 10, deadline 50msLive, reasoned graph — not a screenshot.
Every node, topic, service, and action — with frequency, latency, and QoS overlays. Hover an edge to see DDS RxO compatibility flagged before runtime bites.
- Force-directed live graph
- Frequency / latency / drop overlays
- QoS compatibility matrix at the edge
- Bag and live system both supported
From bag to bug, in under a minute.
Drop a rosbag2 or MCAP. RoboAgent indexes it in DuckDB, runs heuristics across topics, TF, diagnostics, and rosout — then ranks root causes with citations and one-click jumps to the offending file.
- TF discontinuity & drift detection
- Sensor timing and clock drift analysis
- Late-joining subscriber on volatile durability
- Cross-correlation /cmd_vel ↔ /odom and others
# bag → bug $ roboagent debug --bag ./bag_2026_05_08 ✓ indexed 4.7M messages · 84 topics · 19 nodes ► /tf discontinuity 0.18m at t=22.4s (base_link → odom) ► /imu/data publishing at 38Hz, declared 100Hz (deadline missed) ► nav2_params.inflation_radius (0.35) < footprint diag (0.42) suggest: open nav2_params.yaml:48
Sim-in-the-loop. Closed loop. Headless.
The agent doesn't ship a fix until it passes your scenario in Gazebo or Ignition. Containerized worlds, declarative scenarios, success criteria as YAML.
- Headless Gazebo / Ignition orchestration
- Declarative scenarios + success criteria
- Automatic bag capture per run
- CI mode: scenarios run on every PR
# scenario.yml robot: amr_v3 world: warehouse goal: reach (12.0, 4.5) within 60s metrics: - max_velocity < 1.5 m/s - tf_drift < 0.05 m - no costmap inflation breaches
Firmware and ROS2 in one context window.
STM32, ESP32, Zephyr, FreeRTOS, PlatformIO. Pin maps, peripheral codegen, RTOS analysis — and most importantly, cross-domain reasoning across the micro-ROS bridge.
- STM32CubeMX (.ioc) and Zephyr (Kconfig) parsed
- RTOS stack high-water-mark and priority inversion
- Saleae / Sigrok bus capture annotation
- micro-ROS QoS reasoning across firmware ↔ ROS2
Agents that propose, simulate, observe, iterate.
Bounded autonomy. The agent runs a closed loop: propose a fix, run it in sim, observe telemetry, refine. Hard caps on tool calls, token budget, and human approval gates for irreversible actions.
- Plan → tool call → observe → reflect state machine
- Hard human-confirmation gate for deploy.*
- Static safety scan for bypass / disable patterns
- Audit log of every tool call, model, and prompt hash
Telemetry that explains itself.
Diagnostics, rosout, and your own metrics piped into a parsed, queryable stream. Anomalies are highlighted; the agent is one click away from explaining them.
- /diagnostics tree with severity filters
- rosout structured & semantic
- Custom metrics via Prometheus / OpenTelemetry
- Replayable bag-attached telemetry windows
From commit to robot, with a watchdog.
Cross-compile for Jetson Orin, Pi, or industrial x86. Push over SSH, Greengrass, or Foxglove bridge. A watchdog on the robot rolls back if a safety event fires.
- Per-target build profiles (arch, flags, base image)
- Signed deploy tokens, mTLS to robot agent
- Canary one-robot first, then fleet-wide
- Auto-rollback on collision / e-stop
