OmniLink Services / Service 01

Find the failure.
Prove the improvement.

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.

4reference robot models
4defined assessment modules
Evidencereport, data & reruns
$100USD · one-time + applicable tax

An engineering handover you can act on

Know what fails.
Know what to try next.

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.

01 / FIND THE LIMIT

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.

02 / EVALUATE A CHANGE

Make the next decision with evidence.

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.

03 / KEEP THE CHECK

Catch the same failure next time.

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

Four reference models.
More useful questions.

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.

QUADRUPED / GO2

Can it change gait without falling?

17 episodes reproduce the 15 s failure, verify the revised guard, and check seven prior plus four prespecified new timings.

Watch the Go2 comparison ↓
HUMANOID / G1

Which reference stance holds?

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

Find the failure.
Verify the repair.

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 m

Maximum path error · μ 0.8 / 0.04 · 0 kg

PASS · MAP-AWARE REFERENCE REPAIR

0.254 m

Same 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).

A repair you can inspect and rerun.

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.

Full measured Husky approach and split-surface turn, with independently recomputed path error before and after the repair.
Same robot, physical patches, payload, motor limits and nominal speed cap. The combined route, wheel control and lower turn-speed target is the intervention. Pre-alignment changes pose and heading at the trigger; the full approaches are shown. This assumes localization and a known surface boundary; it is not a friction estimator or validated OEM firmware.
All seven formerly failing split-surface inputs and their matched repaired outcomes.
All task requirements apply to every bar: path, final position and heading, completed task, stopped state, approach and stability. Matched variants have identical compiled physical models.

Test beyond the cases used to develop it.

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.

Every prospective friction and payload combination for the previous and repaired Husky drivers, including failures.
24 prospective episodes. Sampled simulation results describe these constructed conditions; they are not a field failure probability or a continuous safe operating envelope.
The original mixed-surface braking comparison is still included

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.

Original measured braking excursion before and after the approach speed cap.

Watch the original braking and crossing-turn video · Read all 76 original outcomes. These artifacts are retained unchanged.

Scope, requirements and all 93 episodes

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.

CaseStageReferenceTask / surfaceLow μkgDriverVerdictReason
case-000repaircase-037turn / split0.040legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-001repaircase-037turn / split0.040traction-routePASSAll criteria met
case-002repaircase-039turn / split0.10legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-003repaircase-039turn / split0.10traction-routePASSAll criteria met
case-004repaircase-041turn / split0.20legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-005repaircase-041turn / split0.20traction-routePASSAll criteria met
case-006repaircase-043turn / split0.0410legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-007repaircase-043turn / split0.0410traction-routePASSAll criteria met
case-008repaircase-045turn / split0.110legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-009repaircase-045turn / split0.110traction-routePASSAll criteria met
case-010repaircase-047turn / split0.210legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-011repaircase-047turn / split0.210traction-routePASSAll criteria met
case-012repaircase-071turn / split0.125legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-013repaircase-071turn / split0.125traction-routePASSAll criteria met
case-014confirmationcase-000turn / split0.040legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-015confirmationcase-000turn / split0.040legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-016confirmationcase-001turn / split0.040traction-routePASSAll criteria met
case-017confirmationcase-001turn / split0.040traction-routePASSAll criteria met
case-018confirmationcase-002turn / split0.10legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-019confirmationcase-002turn / split0.10legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-020confirmationcase-003turn / split0.10traction-routePASSAll criteria met
case-021confirmationcase-003turn / split0.10traction-routePASSAll criteria met
case-022confirmationcase-004turn / split0.20legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-023confirmationcase-004turn / split0.20legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-024confirmationcase-005turn / split0.20traction-routePASSAll criteria met
case-025confirmationcase-005turn / split0.20traction-routePASSAll criteria met
case-026confirmationcase-006turn / split0.0410legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-027confirmationcase-006turn / split0.0410legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-028confirmationcase-007turn / split0.0410traction-routePASSAll criteria met
case-029confirmationcase-007turn / split0.0410traction-routePASSAll criteria met
case-030confirmationcase-008turn / split0.110legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-031confirmationcase-008turn / split0.110legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-032confirmationcase-009turn / split0.110traction-routePASSAll criteria met
case-033confirmationcase-009turn / split0.110traction-routePASSAll criteria met
case-034confirmationcase-010turn / split0.210legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-035confirmationcase-010turn / split0.210legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-036confirmationcase-011turn / split0.210traction-routePASSAll criteria met
case-037confirmationcase-011turn / split0.210traction-routePASSAll criteria met
case-038confirmationcase-012turn / split0.125legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-039confirmationcase-012turn / split0.125legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-040confirmationcase-013turn / split0.125traction-routePASSAll criteria met
case-041confirmationcase-013turn / split0.125traction-routePASSAll criteria met
case-042regressioncase-001brake / crossing0.040traction-routePASSAll criteria met
case-043regressioncase-003brake / crossing0.10traction-routePASSAll criteria met
case-044regressioncase-005brake / crossing0.20traction-routePASSAll criteria met
case-045regressioncase-007brake / crossing0.0410traction-routePASSAll criteria met
case-046regressioncase-009brake / crossing0.110traction-routePASSAll criteria met
case-047regressioncase-011brake / crossing0.210traction-routePASSAll criteria met
case-048regressioncase-013brake / split0.040traction-routePASSAll criteria met
case-049regressioncase-015brake / split0.10traction-routePASSAll criteria met
case-050regressioncase-017brake / split0.20traction-routePASSAll criteria met
case-051regressioncase-019brake / split0.0410traction-routePASSAll criteria met
case-052regressioncase-021brake / split0.110traction-routePASSAll criteria met
case-053regressioncase-023brake / split0.210traction-routePASSAll criteria met
case-054regressioncase-025turn / crossing0.040traction-routePASSAll criteria met
case-055regressioncase-027turn / crossing0.10traction-routePASSAll criteria met
case-056regressioncase-029turn / crossing0.20traction-routePASSAll criteria met
case-057regressioncase-031turn / crossing0.0410traction-routePASSAll criteria met
case-058regressioncase-033turn / crossing0.110traction-routePASSAll criteria met
case-059regressioncase-035turn / crossing0.210traction-routePASSAll criteria met
case-060regressioncase-049brake / uniform-high0.040traction-routePASSAll criteria met
case-061regressioncase-051brake / uniform-low0.040traction-routePASSAll criteria met
case-062regressioncase-053turn / uniform-high0.040traction-routePASSAll criteria met
case-063regressioncase-055turn / uniform-low0.040traction-routePASSAll criteria met
case-064regressioncase-065brake / crossing0.065traction-routePASSAll criteria met
case-065regressioncase-067turn / crossing0.065traction-routePASSAll criteria met
case-066regressioncase-069brake / split0.125traction-routePASSAll criteria met
case-067regressioncase-073brake / crossing0.1515traction-routePASSAll criteria met
case-068regressioncase-075turn / crossing0.1515traction-routePASSAll criteria met
case-069holdout—turn / split0.0252.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-070holdout—turn / split0.0252.5traction-routePASSAll criteria met
case-071holdout—turn / split0.0257.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-072holdout—turn / split0.0257.5traction-routePASSAll criteria met
case-073holdout—turn / split0.02517.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-074holdout—turn / split0.02517.5traction-routePASSAll criteria met
case-075holdout—turn / split0.0652.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-076holdout—turn / split0.0652.5traction-routePASSAll criteria met
case-077holdout—turn / split0.0657.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-078holdout—turn / split0.0657.5traction-routePASSAll criteria met
case-079holdout—turn / split0.06517.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-080holdout—turn / split0.06517.5traction-routePASSAll criteria met
case-081holdout—turn / split0.142.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-082holdout—turn / split0.142.5traction-routePASSAll criteria met
case-083holdout—turn / split0.147.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-084holdout—turn / split0.147.5traction-routePASSAll criteria met
case-085holdout—turn / split0.1417.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-086holdout—turn / split0.1417.5traction-routePASSAll criteria met
case-087holdout—turn / split0.32.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-088holdout—turn / split0.32.5traction-routePASSAll criteria met
case-089holdout—turn / split0.37.5legacyFAILturn_not_completed, turn_corridor_exceeded, turn_goal_error_exceeded, turn_heading_error_exceeded
case-090holdout—turn / split0.37.5traction-routePASSAll criteria met
case-091holdout—turn / split0.317.5legacyFAILturn_corridor_exceeded, turn_goal_error_exceeded
case-092holdout—turn / split0.317.5traction-routeFAILapproach_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

Watch the difference.
Inspect what changed.

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

Repair the handover.
Check it at new timings.

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 s

Handover tilt below 0.25 rad · same 1-tick blend

Selected configuration · PASS

No fall in 32 s

Handover 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.

Measured Go2 body tilt in the selected before and after trials.
Coral: before. Green: selected configuration. Body tilt is one readout; the verdict also checks task completion, height and support. These are reference-controller simulation results, not manufacturer firmware or physical-robot performance.
Scope, selection and all 17 episodes

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.

CaseStageInputVerdictFirst fall, sFinal height, m
case-000comparison15 s · previousFAIL17.2320.060
case-001comparison15 s · updatedPASS—0.277
case-002confirmation15 s · previousFAIL17.2320.060
case-003confirmation15 s · previousFAIL17.2320.060
case-004confirmation15 s · updatedPASS—0.277
case-005confirmation15 s · updatedPASS—0.277
case-006regression8 s · updatedPASS—0.302
case-007regression9 s · updatedPASS—0.297
case-008regression10 s · updatedPASS—0.278
case-009regression11 s · updatedPASS—0.294
case-010regression12 s · updatedPASS—0.263
case-011regression13 s · updatedPASS—0.303
case-012regression14 s · updatedPASS—0.278
case-013holdout6.25 s · updatedPASS—0.296
case-014holdout9.45 s · updatedPASS—0.278
case-015holdout12.35 s · updatedPASS—0.285
case-016holdout14.75 s · updatedPASS—0.281

Humanoid · Unitree G1 reference model

Find a stance that holds.

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 s

0 rad ankle trim

Selected configuration · PASS

No fall in 32 s

Ankle 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.

Measured G1 body tilt in the selected before and after trials.
Coral: before. Green: selected configuration. Body tilt is one readout; the verdict also checks task completion, height and support. These are reference-controller simulation results, not manufacturer firmware or physical-robot performance.
Scope, selection and all 14 episodes

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.

CaseStageInputVerdictFirst fall, sFinal height, m
case-000grid0 rad · 32 sFAIL1.7280.072
case-001grid-0.02 rad · 32 sFAIL1.8560.071
case-002grid-0.04 rad · 32 sFAIL1.9680.060
case-003grid-0.06 rad · 32 sFAIL3.1680.061
case-004grid-0.08 rad · 32 sPASS—0.758
case-005grid-0.1 rad · 32 sPASS—0.761
case-006confirmation0 rad · 32 sFAIL1.7280.072
case-007confirmation0 rad · 32 sFAIL1.7280.072
case-008confirmation-0.1 rad · 32 sPASS—0.761
case-009confirmation-0.1 rad · 32 sPASS—0.761
case-010holdout0 rad · 48 sFAIL1.7280.072
case-011holdout-0.1 rad · 48 sPASS—0.761
case-012holdout0 rad · 60 sFAIL1.7280.067
case-013holdout-0.1 rad · 60 sPASS—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

Wheeled braking.
Map the sampled limits.

No fault was injected into these campaigns. Braking was requested immediately. The failures emerged from the model, controller and physical test conditions.

Husky · Accepted delivery v1.0.0

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 m

Forward excursion after STOP. Still moving at 0.295 m/s at the observation end.

PASS · CONTACT μ 0.20

0.166 m

Forward excursion after STOP. Settled in 0.528 s, within the distance and hold limits.

Husky forward excursion after STOP: friction 0.10 fails and 0.20 passes the experimental limit at 5 degrees downhill with 10 kg payload.
Same robot, 5° downhill, 10 kg rigid payload, immediate braking. Cases 013 and 016. The failing curve ends while the robot is moving; its endpoint is not an eventual stopping distance. Increasing contact friction changes the operating condition; it is not a controller repair.
μ 0.10 · FAILμ 0.20 · PASSExperimental distance limit

Where the sampled conditions pass.

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.

0 kg payload · Husky
Slope / μ0.100.200.400.80
0°PASSPASSPASSPASS
5°BRAKEPASSPASSPASS
10°APPROACHBRAKEPASSPASS
20°APPROACHAPPROACHBRAKEPASS
10 kg payload · Husky
Slope / μ0.100.200.400.80
0°PASSPASSPASSPASS
5°BRAKEPASSPASSPASS
10°APPROACHBRAKEPASSPASS
20°APPROACHAPPROACHBRAKEPASS
20 kg payload · Husky
Slope / μ0.100.200.400.80
0°PASSPASSPASSPASS
5°BRAKEPASSPASSPASS
10°APPROACHBRAKEPASSPASS
20°APPROACHAPPROACHBRAKEPASS

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.

Inspect all 64 episodes
All 64 episodes. A dash means no qualified stopping measurement; consult reasons in the JSON.
CaseStageSlopeμkgVerdictForward excursion, m
case-000grid0°0.10000PASS0.1830
case-001grid0°0.100010PASS0.1830
case-002grid0°0.100020PASS0.1830
case-003grid0°0.20000PASS0.0913
case-004grid0°0.200010PASS0.0914
case-005grid0°0.200020PASS0.0913
case-006grid0°0.40000PASS0.0456
case-007grid0°0.400010PASS0.0455
case-008grid0°0.400020PASS0.0456
case-009grid0°0.80000PASS0.0232
case-010grid0°0.800010PASS0.0243
case-011grid0°0.800020PASS0.0240
case-012grid5°0.10000FAIL1.1260
case-013grid5°0.100010FAIL1.1260
case-014grid5°0.100020FAIL1.1263
case-015grid5°0.20000PASS0.1659
case-016grid5°0.200010PASS0.1661
case-017grid5°0.200020PASS0.1668
case-018grid5°0.40000PASS0.0612
case-019grid5°0.400010PASS0.0616
case-020grid5°0.400020PASS0.0620
case-021grid5°0.80000PASS0.0291
case-022grid5°0.800010PASS0.0310
case-023grid5°0.800020PASS0.0320
case-024grid10°0.10000FAIL—
case-025grid10°0.100010FAIL—
case-026grid10°0.100020FAIL—
case-027grid10°0.20000FAIL0.7924
case-028grid10°0.200010FAIL0.7929
case-029grid10°0.200020FAIL0.7968
case-030grid10°0.40000PASS0.0884
case-031grid10°0.400010PASS0.0889
case-032grid10°0.400020PASS0.0903
case-033grid10°0.80000PASS0.0367
case-034grid10°0.800010PASS0.0383
case-035grid10°0.800020PASS0.0395
case-036grid20°0.10000FAIL—
case-037grid20°0.100010FAIL—
case-038grid20°0.100020FAIL—
case-039grid20°0.20000FAIL—
case-040grid20°0.200010FAIL—
case-041grid20°0.200020FAIL—
case-042grid20°0.40000FAIL0.5703
case-043grid20°0.400010FAIL0.5736
case-044grid20°0.400020FAIL0.5821
case-045grid20°0.80000PASS0.0582
case-046grid20°0.800010PASS0.0614
case-047grid20°0.800020PASS0.0679
case-048refinement20°0.60000PASS0.0975
case-049refinement20°0.600010PASS0.0985
case-050refinement20°0.600020PASS0.1012
case-051refinement20°0.50000PASS0.1579
case-052refinement20°0.500010PASS0.1613
case-053refinement20°0.500020PASS0.1671
case-054refinement10°0.30000PASS0.1562
case-055refinement10°0.300010PASS0.1567
case-056refinement10°0.300020PASS0.1578
case-057refinement10°0.25000FAIL0.2589
case-058refinement10°0.250010FAIL0.2597
case-059refinement10°0.250020FAIL0.2611
case-060confirmation5°0.10000FAIL1.1260
case-061confirmation5°0.10000FAIL1.1260
case-062confirmation5°0.20000PASS0.1659
case-063confirmation5°0.20000PASS0.1659

Jackal · Accepted delivery v1.1.0

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 m

Forward excursion after STOP. Still moving at 0.105 m/s at the observation end.

PASS · CONTACT μ 0.20

0.078 m

Forward excursion after STOP. Settled in 0.368 s, within the distance and hold limits.

Jackal forward excursion after STOP: friction 0.10 fails and 0.20 passes the experimental limit at 5 degrees downhill with 2 kg payload.
Same robot, 5° downhill, 2 kg rigid payload, immediate braking. Cases 013 and 016. The failing curve ends while the robot is moving; its endpoint is not an eventual stopping distance. Increasing contact friction changes the operating condition; it is not a controller repair.
μ 0.10 · FAILμ 0.20 · PASSExperimental distance limit

Where the sampled conditions pass.

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.

0 kg payload · Jackal
Slope / μ0.100.200.400.80
0°PASSPASSPASSPASS
5°BRAKEPASSPASSPASS
10°APPROACHBRAKEPASSPASS
20°APPROACHAPPROACHBRAKEPASS
2 kg payload · Jackal
Slope / μ0.100.200.400.80
0°PASSPASSPASSPASS
5°BRAKEPASSPASSPASS
10°APPROACHBRAKEPASSPASS
20°APPROACHAPPROACHBRAKEPASS
5 kg payload · Jackal
Slope / μ0.100.200.400.80
0°PASSPASSPASSPASS
5°BRAKEPASSPASSPASS
10°APPROACHBRAKEPASSPASS
20°APPROACHAPPROACHBRAKEPASS

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.

Inspect all 64 episodes
All 64 episodes. A dash means no qualified stopping measurement; consult reasons in the JSON.
CaseStageSlopeμkgVerdictForward excursion, m
case-000grid0°0.10000PASS0.0861
case-001grid0°0.10002PASS0.0860
case-002grid0°0.10005PASS0.0860
case-003grid0°0.20000PASS0.0439
case-004grid0°0.20002PASS0.0445
case-005grid0°0.20005PASS0.0452
case-006grid0°0.40000PASS0.0418
case-007grid0°0.40002PASS0.0422
case-008grid0°0.40005PASS0.0429
case-009grid0°0.80000PASS0.0418
case-010grid0°0.80002PASS0.0422
case-011grid0°0.80005PASS0.0429
case-012grid5°0.10000FAIL0.6528
case-013grid5°0.10002FAIL0.6503
case-014grid5°0.10005FAIL0.6515
case-015grid5°0.20000PASS0.0782
case-016grid5°0.20002PASS0.0784
case-017grid5°0.20005PASS0.0786
case-018grid5°0.40000PASS0.0460
case-019grid5°0.40002PASS0.0471
case-020grid5°0.40005PASS0.0488
case-021grid5°0.80000PASS0.0453
case-022grid5°0.80002PASS0.0461
case-023grid5°0.80005PASS0.0473
case-024grid10°0.10000FAIL—
case-025grid10°0.10002FAIL—
case-026grid10°0.10005FAIL—
case-027grid10°0.20000FAIL0.3755
case-028grid10°0.20002FAIL0.3770
case-029grid10°0.20005FAIL0.3808
case-030grid10°0.40000PASS0.0533
case-031grid10°0.40002PASS0.0554
case-032grid10°0.40005PASS0.0582
case-033grid10°0.80000PASS0.0493
case-034grid10°0.80002PASS0.0505
case-035grid10°0.80005PASS0.0522
case-036grid20°0.10000FAIL—
case-037grid20°0.10002FAIL—
case-038grid20°0.10005FAIL—
case-039grid20°0.20000FAIL—
case-040grid20°0.20002FAIL—
case-041grid20°0.20005FAIL—
case-042grid20°0.40000FAIL0.2692
case-043grid20°0.40002FAIL0.2735
case-044grid20°0.40005FAIL0.2839
case-045grid20°0.80000PASS0.0649
case-046grid20°0.80002PASS0.0691
case-047grid20°0.80005PASS0.0760
case-048refinement20°0.60000PASS0.0694
case-049refinement20°0.60002PASS0.0738
case-050refinement20°0.60005PASS0.0791
case-051refinement20°0.50000PASS0.0787
case-052refinement20°0.50002PASS0.0886
case-053refinement20°0.50005PASS0.0964
case-054refinement10°0.30000PASS0.0743
case-055refinement10°0.30002PASS0.0759
case-056refinement10°0.30005PASS0.0753
case-057refinement10°0.25000FAIL0.1226
case-058refinement10°0.25002FAIL0.1231
case-059refinement10°0.25005FAIL0.1240
case-060confirmation5°0.10000FAIL0.6528
case-061confirmation5°0.10000FAIL0.6528
case-062confirmation5°0.20000PASS0.0782
case-063confirmation5°0.20000PASS0.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.

Husky in OmniSim at the STOP request in low friction, case 060.
Husky confirmation case 060, at STOP: 5° downhill, μ 0.10, unloaded. Native simulator capture from the accepted campaign.
Final observation frame of the failing Husky confirmation, which is still moving.
The same case at the final observation. The robot is still moving. This is the end of the observation window, not a stopped-state image.
Measurement provenance & downloadable ledger

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

A bounded assessment.
An inspectable result.

These are experimental task requirements, not manufacturer specifications or rated payload capacities.

The physical conditions

  • Downhill slopes: 0°, 5°, 10° and 20°.
  • Tyre/surface contact μ: 0.10, 0.20, 0.40 and 0.80. This coefficient is imposed on the model, not measured from a physical surface.
  • Husky payload fixtures: 0, 10 and 20 kg. Jackal: 0, 2 and 5 kg.
  • A rigidly mounted 0.30 × 0.25 × 0.20 m box, centered 0.35 m above Husky's chassis frame or 0.2254 m above Jackal's.
  • Physical incline, payload mass and inertia verified in the compiled solver model. Wheel-motor velocity commands drive the robot.

The pass criteria

  • Acquire and hold the target speed before STOP: Husky 0.6 m/s; Jackal 0.4116 m/s.
  • Forward excursion after STOP ≤0.25 m for Husky; ≤0.117649 m for Jackal.
  • Settle to ≤0.025 m/s within 1.5 s; hold at least 0.4 s and remain settled through the observation.
  • Observe for at least 2.5 s after STOP. Rollback ≤0.05 m; task validity and stability checks must also pass.
  • Immediate braking throughout. Failures before a qualified approach are labeled separately.

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.

Robot availability and how we extend it

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

Inspect the method.
Run the test yourself.

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.

1. Get public OmniSim and the assessment source add-on.

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 jackal

2. Run a failure, a passing condition, then a campaign.

These 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-01

The 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.

Run the Go2 or G1 reference task from public OmniSim.

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-01

Always 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.

Run the split-surface repair in public OmniSim.

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-01

Use 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.

3. Or receive the prepared $100 Windows package.

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.

One defined scope.
A result your team can use.

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.

Robot assessment

$100USD · one-time

Per supported reference model/controller. Applicable taxes separate.

  • Task-specific campaign and report
  • Complete case evidence and source
  • Pinned offline Windows x64 runtime
  • Verification, acceptance and rerun commands
  • One consolidated clarification round within 14 days
Request an assessment ↗

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

Questions, answered.

What does the $100 pay for if the source is open?

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.

What if a candidate still fails?

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.

Does this prove my physical robot will stop safely?

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.

Have you tested every edge case?

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.

What if the simulation fails to run?

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.

Are the robot manufacturers endorsing this service?

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.