Turn a vague concern into a test.
See which sampled conditions or controller settings fail the defined task, with the physical response and per-case reasons. Choose braking, mixed-surface mobility, gait transitions or standing.
OmniLink Services / Service 01
Give your engineering team a clearer next step. We assess robot behavior in OmniSim, compare a bounded change where the task includes tuning, and deliver the evidence and tests to run again.
One supported reference model and a fixed assessment scope. Custom model/controller integration is scoped separately. Simulation results; physical robot accuracy is unverified.
An engineering handover you can act on
Use simulation to prioritize your next controller change and hardware test. Keep the exact failing inputs, the evaluated configuration and a repeatable check for future releases.
See which sampled conditions or controller settings fail the defined task, with the physical response and per-case reasons. Choose braking, mixed-surface mobility, gait transitions or standing.
The legged templates compare predefined controller or posture settings, then check the selected candidate in fresh and held-out trials. Braking maps show operating-condition limits. Any untested condition remains unverified.
Receive the report, frozen scenarios, source, model, runtime and Windows rerun commands. Your team can reproduce a failure and check whether a later version preserves the measured behavior.
Choose one robot and one defined scope
Each $100 package has a fixed scope. The tasks and episode count depend on the selected module; these examples do not imply coverage of every behavior that model can perform.
64 episodes per robot assess slopes, contact friction and rigid loads. Husky also has a separate 93-episode mixed-surface repair protocol and the original braking study. Inspect the surface-cap comparison ↓
Inspect braking results ↓17 episodes reproduce the 15 s failure, verify the revised guard, and check seven prior plus four prespecified new timings.
Watch the Go2 comparison ↓14 episodes evaluate standing-posture trim, repeat the selected pair, and extend the observation to 48 and 60 seconds.
Watch the G1 comparison ↓Husky · Mixed-surface mobility · Updated evidence
A speed cap helped on the crossing, but left seven split-surface turns failing. We repaired the reference driver and mapped approach, then tested new friction levels and payloads with the original turn limits.
Native OmniSim footage at 1× speed. Full 24-second takes, the same fixed camera and full-frame scaling. Both use the same nominal 0.35 m/s cap. The measured route and wheel-control repair is shown from its approach through the stopped endpoint.
FAIL · PREVIOUS CAPPED DRIVER
1.095 mMaximum path error · μ 0.8 / 0.04 · 0 kg
PASS · MAP-AWARE REFERENCE REPAIR
0.254 mSame 0.30 m corridor, goal, heading and deadline
All seven published turning failures repaired. Each before/after endpoint was repeated twice in a fresh engine. 27/27 previously passing capped conditions pass the regression check. On new coefficients and loads, 11/12 candidate episodes pass. The protocol retains 1 candidate failure; every result is retained below.
Remaining limit: μ 0.30 with 17.5 kg. The approach briefly reaches 0.420247 m/s against the fixed 0.420000 m/s maximum. Its turn-path, endpoint and stopped-state checks pass, but the complete episode remains FAIL. We kept the criterion and controller unchanged. A fresh confirmation reproduced its trace and metrics exactly (outside the 93-episode protocol).
Receive the failure conditions, measured trajectories, a bounded reference repair and tests your team can repeat after its next change. Here the wheel control preserves longitudinal braking authority during saturated yaw correction. A known surface map shapes the approach and turn, with a lower 0.18 m/s post-trigger turn target; completion requires a stopped pose inside the target.
The frozen controller faces four new imposed low-side coefficients, μ 0.025 / 0.065 / 0.14 / 0.30, crossed with three new rigid payloads, 2.5 / 7.5 / 17.5 kg. Both variants run every combination. These inputs were declared before qualification and opened after the repair, confirmations and regression checks, with no subsequent tuning.
In the original flat, unloaded full-width μ 0.8 → 0.04 crossing, reducing the approach speed from 0.60 to 0.35 m/s changed forward braking excursion from 0.458 m (FAIL) to 0.156 m (PASS), under the same 0.25 m limit. Both command immediate braking. This is the earlier speed-policy comparison, a separate intervention from the turning repair above.
Watch the original braking and crossing-turn video · Read all 76 original outcomes. These artifacts are retained unchanged.
93 valid episodes: 14 matched repair endpoints, 28 fresh confirmations, 27 unique previously passing capped conditions and 24 new-input trials. Turning retains the 90° arc within 0.30 m, final position within 0.25 m, heading within 0.15 rad, 24-second observation and stopped final second. An added 0.30 m approach corridor applies to both variants. No original requirement was relaxed.
The 0.35 m/s cap is nominal. Peak measured speed over candidate episodes is 0.756 m/s, including approach transients. All speed, pose and wheel-command traces are included.
| Case | Stage | Reference | Task / surface | Low μ | kg | Driver | Verdict | Reason |
|---|---|---|---|---|---|---|---|---|
| case-000 | repair | case-037 | turn / split | 0.04 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-001 | repair | case-037 | turn / split | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-002 | repair | case-039 | turn / split | 0.1 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-003 | repair | case-039 | turn / split | 0.1 | 0 | traction-route | PASS | All criteria met |
| case-004 | repair | case-041 | turn / split | 0.2 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-005 | repair | case-041 | turn / split | 0.2 | 0 | traction-route | PASS | All criteria met |
| case-006 | repair | case-043 | turn / split | 0.04 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-007 | repair | case-043 | turn / split | 0.04 | 10 | traction-route | PASS | All criteria met |
| case-008 | repair | case-045 | turn / split | 0.1 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-009 | repair | case-045 | turn / split | 0.1 | 10 | traction-route | PASS | All criteria met |
| case-010 | repair | case-047 | turn / split | 0.2 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-011 | repair | case-047 | turn / split | 0.2 | 10 | traction-route | PASS | All criteria met |
| case-012 | repair | case-071 | turn / split | 0.12 | 5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-013 | repair | case-071 | turn / split | 0.12 | 5 | traction-route | PASS | All criteria met |
| case-014 | confirmation | case-000 | turn / split | 0.04 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-015 | confirmation | case-000 | turn / split | 0.04 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-016 | confirmation | case-001 | turn / split | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-017 | confirmation | case-001 | turn / split | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-018 | confirmation | case-002 | turn / split | 0.1 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-019 | confirmation | case-002 | turn / split | 0.1 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-020 | confirmation | case-003 | turn / split | 0.1 | 0 | traction-route | PASS | All criteria met |
| case-021 | confirmation | case-003 | turn / split | 0.1 | 0 | traction-route | PASS | All criteria met |
| case-022 | confirmation | case-004 | turn / split | 0.2 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-023 | confirmation | case-004 | turn / split | 0.2 | 0 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-024 | confirmation | case-005 | turn / split | 0.2 | 0 | traction-route | PASS | All criteria met |
| case-025 | confirmation | case-005 | turn / split | 0.2 | 0 | traction-route | PASS | All criteria met |
| case-026 | confirmation | case-006 | turn / split | 0.04 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-027 | confirmation | case-006 | turn / split | 0.04 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-028 | confirmation | case-007 | turn / split | 0.04 | 10 | traction-route | PASS | All criteria met |
| case-029 | confirmation | case-007 | turn / split | 0.04 | 10 | traction-route | PASS | All criteria met |
| case-030 | confirmation | case-008 | turn / split | 0.1 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-031 | confirmation | case-008 | turn / split | 0.1 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-032 | confirmation | case-009 | turn / split | 0.1 | 10 | traction-route | PASS | All criteria met |
| case-033 | confirmation | case-009 | turn / split | 0.1 | 10 | traction-route | PASS | All criteria met |
| case-034 | confirmation | case-010 | turn / split | 0.2 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-035 | confirmation | case-010 | turn / split | 0.2 | 10 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-036 | confirmation | case-011 | turn / split | 0.2 | 10 | traction-route | PASS | All criteria met |
| case-037 | confirmation | case-011 | turn / split | 0.2 | 10 | traction-route | PASS | All criteria met |
| case-038 | confirmation | case-012 | turn / split | 0.12 | 5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-039 | confirmation | case-012 | turn / split | 0.12 | 5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-040 | confirmation | case-013 | turn / split | 0.12 | 5 | traction-route | PASS | All criteria met |
| case-041 | confirmation | case-013 | turn / split | 0.12 | 5 | traction-route | PASS | All criteria met |
| case-042 | regression | case-001 | brake / crossing | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-043 | regression | case-003 | brake / crossing | 0.1 | 0 | traction-route | PASS | All criteria met |
| case-044 | regression | case-005 | brake / crossing | 0.2 | 0 | traction-route | PASS | All criteria met |
| case-045 | regression | case-007 | brake / crossing | 0.04 | 10 | traction-route | PASS | All criteria met |
| case-046 | regression | case-009 | brake / crossing | 0.1 | 10 | traction-route | PASS | All criteria met |
| case-047 | regression | case-011 | brake / crossing | 0.2 | 10 | traction-route | PASS | All criteria met |
| case-048 | regression | case-013 | brake / split | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-049 | regression | case-015 | brake / split | 0.1 | 0 | traction-route | PASS | All criteria met |
| case-050 | regression | case-017 | brake / split | 0.2 | 0 | traction-route | PASS | All criteria met |
| case-051 | regression | case-019 | brake / split | 0.04 | 10 | traction-route | PASS | All criteria met |
| case-052 | regression | case-021 | brake / split | 0.1 | 10 | traction-route | PASS | All criteria met |
| case-053 | regression | case-023 | brake / split | 0.2 | 10 | traction-route | PASS | All criteria met |
| case-054 | regression | case-025 | turn / crossing | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-055 | regression | case-027 | turn / crossing | 0.1 | 0 | traction-route | PASS | All criteria met |
| case-056 | regression | case-029 | turn / crossing | 0.2 | 0 | traction-route | PASS | All criteria met |
| case-057 | regression | case-031 | turn / crossing | 0.04 | 10 | traction-route | PASS | All criteria met |
| case-058 | regression | case-033 | turn / crossing | 0.1 | 10 | traction-route | PASS | All criteria met |
| case-059 | regression | case-035 | turn / crossing | 0.2 | 10 | traction-route | PASS | All criteria met |
| case-060 | regression | case-049 | brake / uniform-high | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-061 | regression | case-051 | brake / uniform-low | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-062 | regression | case-053 | turn / uniform-high | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-063 | regression | case-055 | turn / uniform-low | 0.04 | 0 | traction-route | PASS | All criteria met |
| case-064 | regression | case-065 | brake / crossing | 0.06 | 5 | traction-route | PASS | All criteria met |
| case-065 | regression | case-067 | turn / crossing | 0.06 | 5 | traction-route | PASS | All criteria met |
| case-066 | regression | case-069 | brake / split | 0.12 | 5 | traction-route | PASS | All criteria met |
| case-067 | regression | case-073 | brake / crossing | 0.15 | 15 | traction-route | PASS | All criteria met |
| case-068 | regression | case-075 | turn / crossing | 0.15 | 15 | traction-route | PASS | All criteria met |
| case-069 | holdout | — | turn / split | 0.025 | 2.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-070 | holdout | — | turn / split | 0.025 | 2.5 | traction-route | PASS | All criteria met |
| case-071 | holdout | — | turn / split | 0.025 | 7.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-072 | holdout | — | turn / split | 0.025 | 7.5 | traction-route | PASS | All criteria met |
| case-073 | holdout | — | turn / split | 0.025 | 17.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-074 | holdout | — | turn / split | 0.025 | 17.5 | traction-route | PASS | All criteria met |
| case-075 | holdout | — | turn / split | 0.065 | 2.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-076 | holdout | — | turn / split | 0.065 | 2.5 | traction-route | PASS | All criteria met |
| case-077 | holdout | — | turn / split | 0.065 | 7.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-078 | holdout | — | turn / split | 0.065 | 7.5 | traction-route | PASS | All criteria met |
| case-079 | holdout | — | turn / split | 0.065 | 17.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-080 | holdout | — | turn / split | 0.065 | 17.5 | traction-route | PASS | All criteria met |
| case-081 | holdout | — | turn / split | 0.14 | 2.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-082 | holdout | — | turn / split | 0.14 | 2.5 | traction-route | PASS | All criteria met |
| case-083 | holdout | — | turn / split | 0.14 | 7.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-084 | holdout | — | turn / split | 0.14 | 7.5 | traction-route | PASS | All criteria met |
| case-085 | holdout | — | turn / split | 0.14 | 17.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-086 | holdout | — | turn / split | 0.14 | 17.5 | traction-route | PASS | All criteria met |
| case-087 | holdout | — | turn / split | 0.3 | 2.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-088 | holdout | — | turn / split | 0.3 | 2.5 | traction-route | PASS | All criteria met |
| case-089 | holdout | — | turn / split | 0.3 | 7.5 | legacy | FAIL | turn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded |
| case-090 | holdout | — | turn / split | 0.3 | 7.5 | traction-route | PASS | All criteria met |
| case-091 | holdout | — | turn / split | 0.3 | 17.5 | legacy | FAIL | turn_corridor_exceeded, turn_goal_error_exceeded |
| case-092 | holdout | — | turn / split | 0.3 | 17.5 | traction-route | FAIL | approach_speed_not_qualified |
Physical parameters, stated assumptions. These are rigid contact patches with imposed friction coefficients. No braking delay, external push, pose/velocity write or altered physics. This does not model water, mud, deformable soil or calibrated real materials. Payloads are experimental fixtures, not manufacturer-rated capacities. The repair activates for split-surface left turns; other task branches retain the previous driver.
Measured 29 October 2026 on Windows, machine 9722d23d12a3. Newton 1.5.0 / MuJoCo 3.11 CPU, 16 ms observations and eight configured substeps. Independent-PC and physical-robot validation remain unverified.
The $100 Husky mixed-surface package provides this fixed repair assessment, report, full evidence and frozen rerun tests, alongside the original braking study. Use it to identify an operating restriction or judge a controller change before hardware testing. Your own controller, new materials, further optimization and hardware correlation need a separately agreed scope.
Prepared Windows kit checks: the actual delivery ZIP was freshly extracted, all 93 episodes offline regraded, and all 14 endpoints repeated twice in isolated fresh physics runs. All checked metrics matched within 0.005; a modified trace was rejected. Delivery-machine validation only.
Measured changes · Native simulation footage
These comparisons show particular reference configurations under matched conditions. They establish a bounded result in simulation; production controller integration and hardware correlation are separate work.
Quadruped · Unitree Go2 reference model
Turn a reproduced fall into a tested controller change. Give your team the failing input, the revised guard and fresh regression cases to keep.
Verified in this protocol: all 14 candidate trials passed, including four prespecified new timings. The previous guard failed all three 15 s reproductions. This is a bounded simulation result for the tested fixture and controller. Earlier study, including the original remaining failure ↗
Native OmniSim footage at 1× speed: scene time 14–30 s from fresh matched 32-second runs, with the same 15 s handover request. The initial settle adds about 1.5 s to the scene clock. Camera tracking and the fixed crop are matched; complete traces are below.
Before · FAIL
Fall at 17.23 sHandover tilt below 0.25 rad · same 1-tick blend
Selected configuration · PASS
No fall in 32 sHandover tilt below 0.12 rad · same 1-tick blend · 10.77 m forward progress
With the same 15 s request, the previous guard fell at 17.232 s. The updated guard completed the 32 s trial without a fall, stood for 5.712 s and then advanced 4.10 m during the return walk.
The updated guard waits for the gait support phase, four observed foot contacts and body tilt below 0.12 rad, tightened from 0.25 rad. Both sides retain the same one-tick blend, robot model, learned walk policy, gains and physics. The tighter limit applies at handover, not throughout walking.
17 valid episodes: two matched 15 s comparisons, four fresh endpoint confirmations, seven candidate regressions at 8, 9, 10, 11, 12, 13 and 14 s, and four prospective candidate checks at 6.25, 9.45, 12.35 and 14.75 s. The candidate was frozen before those new timings were evaluated. Flat reference floor, contact μ 2.0, no added payload or disturbances. The scheduled stand window is 6 s; safe entry may wait. Original fall, complete 32 s observation, two handovers and total progress requirements remain. Candidate checks additionally require at least 5 s actual standing, 3 s return walking and 0.5 m return progress. Requirements were fixed before discovery. The candidate was selected after development; fresh confirmations and the reported prospective checks followed. Previously exposed timings are regression checks. Four new fractional request times were prespecified before any qualification run, are not used for tuning, and run only after regressions pass. 17 valid protocol episodes: 14 PASS and 3 FAIL. These constructed counts are not a failure probability. No invalid campaign attempts.
| Case | Stage | Input | Verdict | First fall, s | Final height, m |
|---|---|---|---|---|---|
| case-000 | comparison | 15 s · previous | FAIL | 17.232 | 0.060 |
| case-001 | comparison | 15 s · updated | PASS | — | 0.277 |
| case-002 | confirmation | 15 s · previous | FAIL | 17.232 | 0.060 |
| case-003 | confirmation | 15 s · previous | FAIL | 17.232 | 0.060 |
| case-004 | confirmation | 15 s · updated | PASS | — | 0.277 |
| case-005 | confirmation | 15 s · updated | PASS | — | 0.277 |
| case-006 | regression | 8 s · updated | PASS | — | 0.302 |
| case-007 | regression | 9 s · updated | PASS | — | 0.297 |
| case-008 | regression | 10 s · updated | PASS | — | 0.278 |
| case-009 | regression | 11 s · updated | PASS | — | 0.294 |
| case-010 | regression | 12 s · updated | PASS | — | 0.263 |
| case-011 | regression | 13 s · updated | PASS | — | 0.303 |
| case-012 | regression | 14 s · updated | PASS | — | 0.278 |
| case-013 | holdout | 6.25 s · updated | PASS | — | 0.296 |
| case-014 | holdout | 9.45 s · updated | PASS | — | 0.278 |
| case-015 | holdout | 12.35 s · updated | PASS | — | 0.285 |
| case-016 | holdout | 14.75 s · updated | PASS | — | 0.281 |
Humanoid · Unitree G1 reference model
Separate an unstable reference pose from a workable standing configuration. Give your team a measured posture setting and a longer-duration regression test.
Native OmniSim footage, 1× speed. The excerpt shows simulation time 0–16 s of fresh matched 32-second trials. The longer standing checks are recorded in the downloadable traces.
Before · FAIL
Fall at 1.73 s0 rad ankle trim
Selected configuration · PASS
No fall in 32 sAnkle trim -0.1 rad · 0.761 m final pelvis height
The earlier configuration fell at 1.73 s. The selected stance stayed upright for the matched 32-second trial and the held-out 48- and 60-second observations.
The selected standing reference configuration changes ankle trim from 0 to -0.1 rad. Model, actuator gains and balance feedback remain the same. This is a standing task with physical foot support, without a weight-bearing harness.
Flat reference floor, contact μ 2.0, no added payload or disturbances. 6 grid episodes: ankle trims 0, −0.02, −0.04, −0.06, −0.08 and −0.10 rad. Four fresh confirmations. Four held-out episodes extend the observation to 48 and 60 s. After 1 s, roll or pitch above 0.8 rad or root height below 0.38 m is a failure. Final height must be at least 0.55 m, horizontal drift at most 0.25 m, and tilt at most 0.2 rad throughout the final 2 s; at least 90% of those samples must have only the two foot links in contact. Requirements were fixed before discovery. The candidate was selected after development; fresh confirmations and the reported prospective checks followed. Candidate selected from grid data before the longer-duration held-out checks. 14 valid protocol episodes: 6 PASS and 8 FAIL. These constructed counts are not a failure probability. No invalid campaign attempts.
| Case | Stage | Input | Verdict | First fall, s | Final height, m |
|---|---|---|---|---|---|
| case-000 | grid | 0 rad · 32 s | FAIL | 1.728 | 0.072 |
| case-001 | grid | -0.02 rad · 32 s | FAIL | 1.856 | 0.071 |
| case-002 | grid | -0.04 rad · 32 s | FAIL | 1.968 | 0.060 |
| case-003 | grid | -0.06 rad · 32 s | FAIL | 3.168 | 0.061 |
| case-004 | grid | -0.08 rad · 32 s | PASS | — | 0.758 |
| case-005 | grid | -0.1 rad · 32 s | PASS | — | 0.761 |
| case-006 | confirmation | 0 rad · 32 s | FAIL | 1.728 | 0.072 |
| case-007 | confirmation | 0 rad · 32 s | FAIL | 1.728 | 0.072 |
| case-008 | confirmation | -0.1 rad · 32 s | PASS | — | 0.761 |
| case-009 | confirmation | -0.1 rad · 32 s | PASS | — | 0.761 |
| case-010 | holdout | 0 rad · 48 s | FAIL | 1.728 | 0.072 |
| case-011 | holdout | -0.1 rad · 48 s | PASS | — | 0.761 |
| case-012 | holdout | 0 rad · 60 s | FAIL | 1.728 | 0.067 |
| case-013 | holdout | -0.1 rad · 60 s | PASS | — | 0.761 |
Measured 29 October 2026 on Windows 11 AMD64, machine 9722d23d12a3. Newton 1.5.0 / MuJoCo 3.11 CPU; 16 ms observations, eight substeps for Go2 and four for G1. Independent-PC compatibility is unverified. Full provenance ledger · Extracted Windows delivery checks. Both selected endpoints were repeated twice per kit, with matching labels and metrics on this machine.
The Go2 development checks rejected a phase-only guard that passed one transition but failed another. This update targets the 15 s failure by tightening the handover tilt limit from 0.25 to 0.12 rad, retaining the same contact checks and one-tick blend. All 14 candidate runs passed, including the four new fractional timings. The earlier study remains downloadable. G1 here is a physical standing task; OmniSim's separate G1 walking demonstrations use a weight-bearing balance harness.
Measured in OmniSim · 28 October 2026
No fault was injected into these campaigns. Braking was requested immediately. The failures emerged from the model, controller and physical test conditions.
Target speed 0.6 m/s. Experimental distance limit 0.25 m. 64 valid episodes: 41 PASS, 23 FAIL. These counts describe a constructed test set; they are not a failure probability.
FAIL · CONTACT μ 0.10
1.126 mForward excursion after STOP. Still moving at 0.295 m/s at the observation end.
PASS · CONTACT μ 0.20
0.166 mForward excursion after STOP. Settled in 0.528 s, within the distance and hold limits.
The 48-condition grid: 30 PASS, 9 qualified braking failures, 9 approach/hold failures. μ is the imposed tyre/surface contact coefficient. Sampled transitions bracket a boundary; they do not certify the conditions between samples.
| Slope / μ | 0.10 | 0.20 | 0.40 | 0.80 |
|---|---|---|---|---|
| 0° | PASS | PASS | PASS | PASS |
| 5° | BRAKE | PASS | PASS | PASS |
| 10° | APPROACH | BRAKE | PASS | PASS |
| 20° | APPROACH | APPROACH | BRAKE | PASS |
| Slope / μ | 0.10 | 0.20 | 0.40 | 0.80 |
|---|---|---|---|---|
| 0° | PASS | PASS | PASS | PASS |
| 5° | BRAKE | PASS | PASS | PASS |
| 10° | APPROACH | BRAKE | PASS | PASS |
| 20° | APPROACH | APPROACH | BRAKE | PASS |
| Slope / μ | 0.10 | 0.20 | 0.40 | 0.80 |
|---|---|---|---|---|
| 0° | PASS | PASS | PASS | PASS |
| 5° | BRAKE | PASS | PASS | PASS |
| 10° | APPROACH | BRAKE | PASS | PASS |
| 20° | APPROACH | APPROACH | BRAKE | PASS |
PASS = all task criteria met. BRAKE = target approach qualified, braking criteria failed. APPROACH = could not qualify the approach or hold; do not treat it as a measured braking distance. Every cell is one run. Full reasons are in the downloads.
| Case | Stage | Slope | μ | kg | Verdict | Forward excursion, m |
|---|---|---|---|---|---|---|
| case-000 | grid | 0° | 0.1000 | 0 | PASS | 0.1830 |
| case-001 | grid | 0° | 0.1000 | 10 | PASS | 0.1830 |
| case-002 | grid | 0° | 0.1000 | 20 | PASS | 0.1830 |
| case-003 | grid | 0° | 0.2000 | 0 | PASS | 0.0913 |
| case-004 | grid | 0° | 0.2000 | 10 | PASS | 0.0914 |
| case-005 | grid | 0° | 0.2000 | 20 | PASS | 0.0913 |
| case-006 | grid | 0° | 0.4000 | 0 | PASS | 0.0456 |
| case-007 | grid | 0° | 0.4000 | 10 | PASS | 0.0455 |
| case-008 | grid | 0° | 0.4000 | 20 | PASS | 0.0456 |
| case-009 | grid | 0° | 0.8000 | 0 | PASS | 0.0232 |
| case-010 | grid | 0° | 0.8000 | 10 | PASS | 0.0243 |
| case-011 | grid | 0° | 0.8000 | 20 | PASS | 0.0240 |
| case-012 | grid | 5° | 0.1000 | 0 | FAIL | 1.1260 |
| case-013 | grid | 5° | 0.1000 | 10 | FAIL | 1.1260 |
| case-014 | grid | 5° | 0.1000 | 20 | FAIL | 1.1263 |
| case-015 | grid | 5° | 0.2000 | 0 | PASS | 0.1659 |
| case-016 | grid | 5° | 0.2000 | 10 | PASS | 0.1661 |
| case-017 | grid | 5° | 0.2000 | 20 | PASS | 0.1668 |
| case-018 | grid | 5° | 0.4000 | 0 | PASS | 0.0612 |
| case-019 | grid | 5° | 0.4000 | 10 | PASS | 0.0616 |
| case-020 | grid | 5° | 0.4000 | 20 | PASS | 0.0620 |
| case-021 | grid | 5° | 0.8000 | 0 | PASS | 0.0291 |
| case-022 | grid | 5° | 0.8000 | 10 | PASS | 0.0310 |
| case-023 | grid | 5° | 0.8000 | 20 | PASS | 0.0320 |
| case-024 | grid | 10° | 0.1000 | 0 | FAIL | — |
| case-025 | grid | 10° | 0.1000 | 10 | FAIL | — |
| case-026 | grid | 10° | 0.1000 | 20 | FAIL | — |
| case-027 | grid | 10° | 0.2000 | 0 | FAIL | 0.7924 |
| case-028 | grid | 10° | 0.2000 | 10 | FAIL | 0.7929 |
| case-029 | grid | 10° | 0.2000 | 20 | FAIL | 0.7968 |
| case-030 | grid | 10° | 0.4000 | 0 | PASS | 0.0884 |
| case-031 | grid | 10° | 0.4000 | 10 | PASS | 0.0889 |
| case-032 | grid | 10° | 0.4000 | 20 | PASS | 0.0903 |
| case-033 | grid | 10° | 0.8000 | 0 | PASS | 0.0367 |
| case-034 | grid | 10° | 0.8000 | 10 | PASS | 0.0383 |
| case-035 | grid | 10° | 0.8000 | 20 | PASS | 0.0395 |
| case-036 | grid | 20° | 0.1000 | 0 | FAIL | — |
| case-037 | grid | 20° | 0.1000 | 10 | FAIL | — |
| case-038 | grid | 20° | 0.1000 | 20 | FAIL | — |
| case-039 | grid | 20° | 0.2000 | 0 | FAIL | — |
| case-040 | grid | 20° | 0.2000 | 10 | FAIL | — |
| case-041 | grid | 20° | 0.2000 | 20 | FAIL | — |
| case-042 | grid | 20° | 0.4000 | 0 | FAIL | 0.5703 |
| case-043 | grid | 20° | 0.4000 | 10 | FAIL | 0.5736 |
| case-044 | grid | 20° | 0.4000 | 20 | FAIL | 0.5821 |
| case-045 | grid | 20° | 0.8000 | 0 | PASS | 0.0582 |
| case-046 | grid | 20° | 0.8000 | 10 | PASS | 0.0614 |
| case-047 | grid | 20° | 0.8000 | 20 | PASS | 0.0679 |
| case-048 | refinement | 20° | 0.6000 | 0 | PASS | 0.0975 |
| case-049 | refinement | 20° | 0.6000 | 10 | PASS | 0.0985 |
| case-050 | refinement | 20° | 0.6000 | 20 | PASS | 0.1012 |
| case-051 | refinement | 20° | 0.5000 | 0 | PASS | 0.1579 |
| case-052 | refinement | 20° | 0.5000 | 10 | PASS | 0.1613 |
| case-053 | refinement | 20° | 0.5000 | 20 | PASS | 0.1671 |
| case-054 | refinement | 10° | 0.3000 | 0 | PASS | 0.1562 |
| case-055 | refinement | 10° | 0.3000 | 10 | PASS | 0.1567 |
| case-056 | refinement | 10° | 0.3000 | 20 | PASS | 0.1578 |
| case-057 | refinement | 10° | 0.2500 | 0 | FAIL | 0.2589 |
| case-058 | refinement | 10° | 0.2500 | 10 | FAIL | 0.2597 |
| case-059 | refinement | 10° | 0.2500 | 20 | FAIL | 0.2611 |
| case-060 | confirmation | 5° | 0.1000 | 0 | FAIL | 1.1260 |
| case-061 | confirmation | 5° | 0.1000 | 0 | FAIL | 1.1260 |
| case-062 | confirmation | 5° | 0.2000 | 0 | PASS | 0.1659 |
| case-063 | confirmation | 5° | 0.2000 | 0 | PASS | 0.1659 |
Target speed 0.4116 m/s. Experimental distance limit 0.117649 m. 64 valid episodes: 41 PASS, 23 FAIL. These counts describe a constructed test set; they are not a failure probability.
FAIL · CONTACT μ 0.10
0.650 mForward excursion after STOP. Still moving at 0.105 m/s at the observation end.
PASS · CONTACT μ 0.20
0.078 mForward excursion after STOP. Settled in 0.368 s, within the distance and hold limits.
The 48-condition grid: 30 PASS, 9 qualified braking failures, 9 approach/hold failures. μ is the imposed tyre/surface contact coefficient. Sampled transitions bracket a boundary; they do not certify the conditions between samples.
| Slope / μ | 0.10 | 0.20 | 0.40 | 0.80 |
|---|---|---|---|---|
| 0° | PASS | PASS | PASS | PASS |
| 5° | BRAKE | PASS | PASS | PASS |
| 10° | APPROACH | BRAKE | PASS | PASS |
| 20° | APPROACH | APPROACH | BRAKE | PASS |
| Slope / μ | 0.10 | 0.20 | 0.40 | 0.80 |
|---|---|---|---|---|
| 0° | PASS | PASS | PASS | PASS |
| 5° | BRAKE | PASS | PASS | PASS |
| 10° | APPROACH | BRAKE | PASS | PASS |
| 20° | APPROACH | APPROACH | BRAKE | PASS |
| Slope / μ | 0.10 | 0.20 | 0.40 | 0.80 |
|---|---|---|---|---|
| 0° | PASS | PASS | PASS | PASS |
| 5° | BRAKE | PASS | PASS | PASS |
| 10° | APPROACH | BRAKE | PASS | PASS |
| 20° | APPROACH | APPROACH | BRAKE | PASS |
PASS = all task criteria met. BRAKE = target approach qualified, braking criteria failed. APPROACH = could not qualify the approach or hold; do not treat it as a measured braking distance. Every cell is one run. Full reasons are in the downloads.
| Case | Stage | Slope | μ | kg | Verdict | Forward excursion, m |
|---|---|---|---|---|---|---|
| case-000 | grid | 0° | 0.1000 | 0 | PASS | 0.0861 |
| case-001 | grid | 0° | 0.1000 | 2 | PASS | 0.0860 |
| case-002 | grid | 0° | 0.1000 | 5 | PASS | 0.0860 |
| case-003 | grid | 0° | 0.2000 | 0 | PASS | 0.0439 |
| case-004 | grid | 0° | 0.2000 | 2 | PASS | 0.0445 |
| case-005 | grid | 0° | 0.2000 | 5 | PASS | 0.0452 |
| case-006 | grid | 0° | 0.4000 | 0 | PASS | 0.0418 |
| case-007 | grid | 0° | 0.4000 | 2 | PASS | 0.0422 |
| case-008 | grid | 0° | 0.4000 | 5 | PASS | 0.0429 |
| case-009 | grid | 0° | 0.8000 | 0 | PASS | 0.0418 |
| case-010 | grid | 0° | 0.8000 | 2 | PASS | 0.0422 |
| case-011 | grid | 0° | 0.8000 | 5 | PASS | 0.0429 |
| case-012 | grid | 5° | 0.1000 | 0 | FAIL | 0.6528 |
| case-013 | grid | 5° | 0.1000 | 2 | FAIL | 0.6503 |
| case-014 | grid | 5° | 0.1000 | 5 | FAIL | 0.6515 |
| case-015 | grid | 5° | 0.2000 | 0 | PASS | 0.0782 |
| case-016 | grid | 5° | 0.2000 | 2 | PASS | 0.0784 |
| case-017 | grid | 5° | 0.2000 | 5 | PASS | 0.0786 |
| case-018 | grid | 5° | 0.4000 | 0 | PASS | 0.0460 |
| case-019 | grid | 5° | 0.4000 | 2 | PASS | 0.0471 |
| case-020 | grid | 5° | 0.4000 | 5 | PASS | 0.0488 |
| case-021 | grid | 5° | 0.8000 | 0 | PASS | 0.0453 |
| case-022 | grid | 5° | 0.8000 | 2 | PASS | 0.0461 |
| case-023 | grid | 5° | 0.8000 | 5 | PASS | 0.0473 |
| case-024 | grid | 10° | 0.1000 | 0 | FAIL | — |
| case-025 | grid | 10° | 0.1000 | 2 | FAIL | — |
| case-026 | grid | 10° | 0.1000 | 5 | FAIL | — |
| case-027 | grid | 10° | 0.2000 | 0 | FAIL | 0.3755 |
| case-028 | grid | 10° | 0.2000 | 2 | FAIL | 0.3770 |
| case-029 | grid | 10° | 0.2000 | 5 | FAIL | 0.3808 |
| case-030 | grid | 10° | 0.4000 | 0 | PASS | 0.0533 |
| case-031 | grid | 10° | 0.4000 | 2 | PASS | 0.0554 |
| case-032 | grid | 10° | 0.4000 | 5 | PASS | 0.0582 |
| case-033 | grid | 10° | 0.8000 | 0 | PASS | 0.0493 |
| case-034 | grid | 10° | 0.8000 | 2 | PASS | 0.0505 |
| case-035 | grid | 10° | 0.8000 | 5 | PASS | 0.0522 |
| case-036 | grid | 20° | 0.1000 | 0 | FAIL | — |
| case-037 | grid | 20° | 0.1000 | 2 | FAIL | — |
| case-038 | grid | 20° | 0.1000 | 5 | FAIL | — |
| case-039 | grid | 20° | 0.2000 | 0 | FAIL | — |
| case-040 | grid | 20° | 0.2000 | 2 | FAIL | — |
| case-041 | grid | 20° | 0.2000 | 5 | FAIL | — |
| case-042 | grid | 20° | 0.4000 | 0 | FAIL | 0.2692 |
| case-043 | grid | 20° | 0.4000 | 2 | FAIL | 0.2735 |
| case-044 | grid | 20° | 0.4000 | 5 | FAIL | 0.2839 |
| case-045 | grid | 20° | 0.8000 | 0 | PASS | 0.0649 |
| case-046 | grid | 20° | 0.8000 | 2 | PASS | 0.0691 |
| case-047 | grid | 20° | 0.8000 | 5 | PASS | 0.0760 |
| case-048 | refinement | 20° | 0.6000 | 0 | PASS | 0.0694 |
| case-049 | refinement | 20° | 0.6000 | 2 | PASS | 0.0738 |
| case-050 | refinement | 20° | 0.6000 | 5 | PASS | 0.0791 |
| case-051 | refinement | 20° | 0.5000 | 0 | PASS | 0.0787 |
| case-052 | refinement | 20° | 0.5000 | 2 | PASS | 0.0886 |
| case-053 | refinement | 20° | 0.5000 | 5 | PASS | 0.0964 |
| case-054 | refinement | 10° | 0.3000 | 0 | PASS | 0.0743 |
| case-055 | refinement | 10° | 0.3000 | 2 | PASS | 0.0759 |
| case-056 | refinement | 10° | 0.3000 | 5 | PASS | 0.0753 |
| case-057 | refinement | 10° | 0.2500 | 0 | FAIL | 0.1226 |
| case-058 | refinement | 10° | 0.2500 | 2 | FAIL | 0.1231 |
| case-059 | refinement | 10° | 0.2500 | 5 | FAIL | 0.1240 |
| case-060 | confirmation | 5° | 0.1000 | 0 | FAIL | 0.6528 |
| case-061 | confirmation | 5° | 0.1000 | 0 | FAIL | 0.6528 |
| case-062 | confirmation | 5° | 0.2000 | 0 | PASS | 0.0782 |
| case-063 | confirmation | 5° | 0.2000 | 0 | PASS | 0.0782 |
Fresh confirmation runs reproduced one qualified failing/passing braking pair twice each. On this machine, all four labels matched and measured excursion differed by 0.0 m. Delivery acceptance allows up to 5 mm difference. This does not establish determinism on other machines or versions.


Windows 11 AMD64, machine 9722d23d12a3; AMD64 Family 25 Model 80, 16 logical cores. Newton 1.5.0 / MuJoCo 3.11 CPU, 16 ms samples and eight physics substeps. Independent-PC and physical robot validation remain unverified.
Examples use OmniSim's deterministic wheel reference controller, not Clearpath's production firmware. Husky accepted delivery v1.0.0; Jackal v1.1.0. The exported ledger records the original campaign SHA256 and unchanged comparison-trace SHA256 values. It is a public results extract; the customer kit includes the full case evidence and checksum inventory.
Clear scope before testing
These are experimental task requirements, not manufacturer specifications or rated payload capacities.
The braking template measures straight-line mobility and braking. The mixed-surface, Go2 and G1 templates above have their own fixed task scopes. Exhaustive edge-case coverage, fracture, fatigue, thermal behavior, safety certification, production-controller integration and hardware correlation are outside this $100 scope.
Husky and Jackal have accepted Windows deliveries. ROSbot, ROSbot XL, TurtleBot3 Burger, Waffle and Waffle Pi have wheel-task profiles and adapters; each still needs a qualifying campaign and extracted-package acceptance before delivery.
Importing another model does not make it an assessed robot. Go2 transition and G1 standing assessments are described above. Other robots, controllers, arms, legged tasks or drones need suitable task adapters, requirements and separate scope. ROSbot XL's current adapter uses cylinder-wheel skid steering, not lateral mecanum motion.
Open source · Run locally
OmniSim is the free, open-source robotics workshop for agents and simulator behind this service. Windows has the only prebuilt package; Linux is a source build.
Get the public OmniSim v9.2.7 Windows release or follow the public build instructions. Use a short, writable installation/source root with a working engine and Newton runtime, plus Python 3.10 or later. Stop if doctor reports a missing binary or physics failure.
The current public release does not include the assessment CLI. Download our Apache-2.0 source add-on into a fresh OmniSim copy. It adds the assessment runner, controller and example specs; it includes no engine or prepared customer runtime. Keep existing assessment work in its own copy.
# In a fresh, writable public OmniSim v9.2.7 root.
# The engine + Newton runtime must already be installed/built.
python -m omnisim doctor
if ($LASTEXITCODE -ne 0) { throw "Fix the OmniSim installation before continuing" }
python -m pip install psutil
Invoke-WebRequest https://www.omnilink-agents.com/services/robot-assessments/omnisim-assessment-source-20261028.zip -OutFile assessment-source.zip
$expected = "3d5fcd74afab708df9f240d29e7afef7c30f46168c78cc512d4206a24360c13a"
if ((Get-FileHash assessment-source.zip -Algorithm SHA256).Hash.ToLower() -ne $expected) { throw "Checksum mismatch" }
Expand-Archive assessment-source.zip -DestinationPath .
python assessment.py package-profile --robot jackalThese examples use Jackal with 2 kg at 5° downhill, at μ 0.10 and 0.20. Replace “jackal” with “husky” for the supplied 10 kg Husky examples. Use one worker to start. Every new run records its source, engine and runtime hashes.
# Use a new --out directory for every run.
python assessment.py run --spec projects/assessments/examples/jackal-case-013.json --out .tmp/jackal-fail-01
# Exit 1 means a valid simulated FAIL. Inspect verdict.json.
python assessment.py run --spec projects/assessments/examples/jackal-case-016.json --out .tmp/jackal-pass-01
# Exit 0 means PASS. Exit 2 means invalid/error; investigate it.
python assessment.py qualify --robot jackal --workers 1 --out .tmp/jackal-campaign-01The published results use the accepted delivery's pinned runtime. A different public installer/build/runtime can produce different measurements; treat your result as a new campaign. The add-on does not make an unbuilt source clone executable.
In another fresh writable public OmniSim v9.2.7 installation or built source checkout, use our legged assessment source add-on (SHA256). It adds the assessment code, support guard and example specs. Install the full public Unitree robot assets, policy/reference-controller files and engine resources; a minimal braking-only installation is insufficient. These files come from public OmniSim. Use Python 3.12 and a controller interpreter with NumPy and ONNX Runtime; python -m omnisim doctor checks the local setup. The prepared Windows packages include the dependencies. Reference-source compatibility check.
# In a separate fresh writable public OmniSim root:
python -m pip install psutil numpy onnxruntime
Invoke-WebRequest https://www.omnilink-agents.com/services/robot-assessments/legged/go2-v2/omnisim-legged-assessment-source-20261029.zip -OutFile legged-source.zip
if ((Get-FileHash legged-source.zip -Algorithm SHA256).Hash.ToLower() -ne "900ee08d316b99642084eac4fa40265d8c6a193d0b2fc87c9e042bf1c1558599") { throw "Checksum mismatch" }
Expand-Archive legged-source.zip -DestinationPath .
python -m omnisim doctor
python assessment.py legged-run --spec projects/assessments/legged/examples/go2-before.json --out .tmp/go2-before-01
python assessment.py legged-run --spec projects/assessments/legged/examples/go2-after.json --out .tmp/go2-after-01
# For G1, use g1-before.json and g1-after.json.
python legged-frozen-suite.py --robot go2 --out .tmp/go2-frozen-01Always use a new output directory. Exit 1 is a valid simulated FAIL, 2 is an invalid/error run. The public add-on can differ from a delivery's frozen source/runtime; treat these executions as new runs. The frozen-suite command repeats all 17 Go2 or 14 G1 published conditions, including expected failures; a changed label or ERROR returns exit 2. G1 standing is separate from its assisted walking demos.
Use a separate fresh writable installation or built checkout, with a working engine, Newton runtime and full public Husky model. The source add-on includes the repair, all 14 matched endpoint specs and the entire frozen suite; it contains no engine. Public reference-source check · SHA256.
# In a separate writable public OmniSim v9.2.7 root with full Husky assets:
python -m omnisim doctor
python -m pip install psutil
Invoke-WebRequest https://www.omnilink-agents.com/services/robot-assessments/mixed/husky-v2/omnisim-husky-mixed-repair-source-20261029.zip -OutFile mixed-repair-source.zip
if ((Get-FileHash mixed-repair-source.zip -Algorithm SHA256).Hash.ToLower() -ne "4bc6ee7f4239d4808a904036b72da740759b0601c8aaface543eb3a604d741bd") { throw "Checksum mismatch" }
Expand-Archive mixed-repair-source.zip -DestinationPath .
# The hardest published input: same nominal cap, previous driver versus repair
python assessment.py mixed-run --spec projects/assessments/mixed/examples/case-037-before.json --out .tmp/split-before-01
python assessment.py mixed-run --spec projects/assessments/mixed/examples/case-037-after.json --out .tmp/split-after-01
# All 93 fixed conditions, including expected robot failures:
python mixed-frozen-suite.py .tmp/split-frozen-01Use new output directories. Exit 1 means a valid simulated FAIL; exit 2 means invalid/error. The full suite exits 2 on an invalid or changed outcome. A different runtime is a new measurement. Extract evidence.zip and run python verify.py for checksums, fixture validation and independent offline regrading. Original braking-study source remains available for a separate copy.
Extract to a short writable Windows x64 folder, with the resolved root no longer than 100 characters and about 3 GB free. The customer package includes the runtime and embedded Python; no separate Git, Python or CUDA toolkit installation is required.
.\assessment.cmd verify
.\assessment.cmd accept --out runs\acceptance-01
.\assessment.cmd rerun case-013 --out runs\case-013-01
# Braking kits only: suite repeats discovery.verify checks the inventory and offline regrades every frozen episode: 64 for either braking kit, 17 for Go2, 14 for G1, or 93 for the current Husky mixed-surface repair protocol. accept runs four fresh endpoint confirmations for the earlier templates, or 28 for the current mixed-surface repair protocol, and compares outcomes and task metrics. A valid expected FAIL is a successful reproduction. In the wheeled braking kit, suite repeats discovery; its adaptive points may change. The legged kits provide verify, accept and frozen-case rerun. Use frozen case IDs with rerun to repeat exact inputs. These are fresh runs, not full-state checkpoint replay.
The standalone deterministic assessment makes no OmniLink or model-provider calls and needs no AI account. Connected OmniLink AI features remain separate and require an OmniKey and your own model-provider key.
Start with a model. Leave with evidence.
Send us the robot name, model version and behavior you want to assess. We confirm whether it fits a standard template before taking payment, then deliver the prepared report, evidence and Windows package. New controller development, policy training and custom integration require a separate quote.
Using a different model, your own controller, or another robot class? Include that in your request so we can define the additional work.
Per supported reference model/controller. Applicable taxes separate.
Opens a chat with the OmniLink team, a real person who usually replies within a day. Leave your email so we can confirm the scope. Prefer email? Email us instead. Scope is confirmed before payment. This service is separate from OmniLink agent subscriptions.
Before you order
The prepared assessment, measured report, full evidence, pinned runtime, acceptance checks and handover for one supported reference configuration. The Go2 and G1 templates include their bounded setting comparisons. The Husky mixed-surface module includes its fixed braking/turning protocol and speed-cap comparison and the split-surface reference repair. It does not buy unlimited optimization or a new production controller. You can use the open source to run your own experiments.
You receive that failure as part of the handover: the input, physical response and a rerunnable regression case. Any remaining failure is stated explicitly; a broader fix requires further work. A passing assessment covers the tested conditions and controller, and does not certify untested timings or hardware.
No. These results describe a particular simulated model, reference controller and test setup. Hardware calibration, production-controller integration and physical validation require additional work. The package is not a safety certification.
No. The braking package has a defined 48-condition grid, 12 local refinements and four confirmation runs. The Go2, G1 and mixed-surface scopes and episode counts are listed above. It identifies failures and brackets transitions within that scope. Conditions outside the tested grid and task are not covered.
Invalid or incomplete evidence is labeled ERROR, not FAIL. The delivery must pass extracted-package verification and acceptance. Extraction was tested on the delivery machine; independent-PC compatibility is not yet established.
This is an independent OmniLink service using robot models in OmniSim. Husky, Jackal, Go2 and G1 identify the modeled platforms; the assessment does not imply manufacturer endorsement.