Navigation verification for ROS 2 Nav2
A bad nav change should fail the build. Not the warehouse.
SimSentry is a downloadable verification pack for your Nav2 stack: simulated warehouse scenarios, hard pass/fail gates, JUnit reports, and a one-command replay for every failure — wired into the CI you already run.
We built the scenario library and the CI plumbing you'd otherwise build and maintain yourself.
$ pip install simsentry $ simsentry run --suite starter --suite limits Running 19 scenario(s)… ── [17/19] wh_nav_bas_017 → failed ── max_speed_mps: FAIL: max speed 0.261 m/s > limit 0.18 m/s [polling] Replay this failure: simsentry replay --bundle output/replays/wh_nav_bas_017 min_clearance_m: PASS: min clearance 0.716m ≥ required 0.10m [polling] ... 18/19 scenarios passed JUnit report: output/simsentry_results.xml $ echo $? 1
Three steps to a gated pull request
1 · Describe your robot.
Two TurtleBot3 profiles ship ready to run. For your own robot, point simsentry.yaml at a URDF and your Nav2 parameters — no forks, no custom ROS packages.
2 · Run the suite.
simsentry run launches Gazebo and Nav2 headless, drives every scenario, and checks five gate types: collisions, forbidden-zone entry, minimum clearance, speed limit, and goal reached.
3 · Gate the PR.
The result is a JUnit report your CI already understands. Any failed gate fails the build — and carries the exact command to replay the failure locally.
Five gates, tri-state verdicts
Every scenario evaluates hard thresholds — pass, fail, or skip. A gate that can't be measured reports SKIP, never a silent pass.
Collisions
contact-sensor events from the full contact stream, not sampled.
Forbidden zones
entry events into keep-out areas, counted in the world frame.
Minimum clearance
closest approach to any obstacle, from the laser scan.
Speed limit
peak velocity from odometry against the scenario's cap.
Goal reached
did Nav2 actually complete the navigation task?
Every failure is reproducible
Each scenario run writes a replay bundle: the scenario seed, the generated world and map, the Nav2 configuration, logs, and the measured verdicts. One command re-runs exactly what failed. Reports regenerate from bundles byte-for-byte — the evidence doesn't depend on the machine that produced it.
Built for the pipeline you already have
CI templates included.
Copy-paste workflows for GitHub Actions and GitLab CI, plus a portable bash runner for everything else.
Bring your own robot.
Differential-drive robot on Nav2? Drop in your URDF and Nav2 parameters via simsentry.yaml. The scenario library is robot-agnostic — one suite verifies any robot you configure.
Two engines, one suite.
The free tier runs Gazebo on any CPU-only CI runner. Pro adds NVIDIA Isaac Sim as a first-class peer engine — same scenarios, same gates, same reports.
Where SimSentry sits in your toolchain
SimSentry doesn't replace your simulator or your observability stack — it's the verdict layer between them and your merge button.
A generous free tier. A Pro tier for where regressions actually happen.
The free starter pack is MIT-licensed and genuinely useful — static-obstacle warehouse scenarios with full gate evaluation. Pro adds the scenarios that catch real-world regressions: moving actors, more coverage, a generator for unlimited new scenarios, and Isaac Sim.
| Starter — free (MIT) | Pro | |
|---|---|---|
| Warehouse scenarios | 19 | 52 (adds 33 advanced) |
| Warehouse archetypes | tight aisles, mixed flow, wide industrial | same three, deeper coverage |
| Floor surfaces | 6 friction surfaces | 6 friction surfaces |
| Gate types | all 5 | all 5 |
| Dynamic actors | — (static obstacles) | moving actors, 3 behavior patterns |
| Scenario generator | — | unlimited new scenarios from the warehouse taxonomy |
| Simulation engines | Gazebo | Gazebo + NVIDIA Isaac Sim |
| Metrics | odometry + scan sampling, full contact stream | + full-frequency rosbag speed and clearance |
| Reports | JUnit XML | + HTML and JSON evidence reports |
| Replay bundles | ✓ | ✓ + recorded rosbags |
| CI templates | GitHub Actions, GitLab, bash | GitHub Actions, GitLab, bash |
| Bring your own robot | URDF → Gazebo | + URDF → USD for Isaac Sim |
| Parallel execution | ✓ | ✓ + vectorized Isaac batching on GPU hosts |
| Support | GitHub issues | email, 2-business-day first response |
--reps N runs a scenario N times and gates on the worst result, so flaky passes don't sneak through.Pricing
MIT-licensed. 19 scenarios, 3 warehouse archetypes, 6 surfaces, all 5 gates, replay bundles, CI templates, bring-your-own-robot.
For one engineer. Everything in Starter, plus 33 advanced scenarios, dynamic actors, the scenario generator, full-frequency rosbag metrics, HTML/JSON evidence reports, Isaac Sim support, email support, and all updates while licensed.
Everything in Indie, for up to 10 engineers in one company. Costs less per year than one GPU-year of enterprise sim licensing.
More than 10 engineers, multiple legal entities, procurement-friendly terms — PO and invoice, priority support, a separate agreement.
When a license expires, every scenario and report you already have keeps working. The generator, updates, and support stop until you renew.
Where SimSentry fits in your safety case
The EU Machinery Regulation 2023/1230 applies from 20 January 2027 and, for the first time, explicitly brings software, software updates, and evolving autonomous behavior into machinery risk assessment (Recital 32). SimSentry produces automated, replayable CI evidence that your navigation behavior didn't regress across a software change — documentation that supports your risk-assessment file and your change-management discipline.
The machinery safety standard for driverless industrial trucks, ISO 3691-4, assigns its required performance levels to the protective stop — personnel detection, braking, emergency stop. Navigation and steering carry no safety rating: navigation quality is left to you as an engineering problem. That is exactly the layer SimSentry verifies.
SimSentry is a development and CI verification tool, not a safety-rated product. It does not perform or replace risk assessment, conformity assessment, or functional-safety certification, and simulation results — including passing verdicts — are not evidence that a robot is safe to operate in the physical world.
Questions engineers actually ask
Why wouldn't I just extend nav2_system_tests?
Does it work with my robot?
simsentry.yaml. The scenario library is robot-agnostic, so the same suite verifies whatever robot you configure.