Repository navigation
Conversation
There was a problem hiding this comment.
go2 replay realtime
Details
| Benchmark suite | Current: 6d4cfc9 | Previous: 576d547 | Ratio |
|---|---|---|---|
first frame wall |
9.619 s |
9.922 s |
0.97 |
first frame cpu |
19.62 s |
20.847 s |
0.94 |
run cpu |
32.694 s |
29.144 s |
1.12 |
run cpu (user) |
23.424 s |
21.535 s |
1.09 |
run cpu (system) |
9.27 s |
7.609 s |
1.22 |
peak memory |
2734.625 MB |
2715.977 MB |
1.01 |
peak threads |
401 threads |
409 threads |
0.98 |
disk read |
14.434 MB |
29.492 MB |
0.49 |
disk write |
812.289 MB |
753.289 MB |
1.08 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'go2 replay realtime'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.08.
| Benchmark suite | Current: 6d4cfc9 | Previous: 576d547 | Ratio |
|---|---|---|---|
run cpu |
32.694 s |
29.144 s |
1.12 |
run cpu (user) |
23.424 s |
21.535 s |
1.09 |
run cpu (system) |
9.27 s |
7.609 s |
1.22 |
This comment was automatically generated by workflow using github-action-benchmark.
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## pim/fix/g1-control-foundation #4305 +/- ##
=================================================================
- Coverage 82.43% 82.31% -0.12%
=================================================================
Files 1694 1700 +6
Lines 158953 160414 +1461
Branches 13316 13492 +176
=================================================================
+ Hits 131031 132052 +1021
- Misses 24248 24651 +403
- Partials 3674 3711 +37
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 11 files with indirect coverage changes 🚀 New features to boost your workflow:
|
|
| stages = _transition_stages(self._mode_override, target) | ||
| self._mode_queue = stages[1:] | ||
| self._mode_dwell = 0.0 | ||
| first = stages[0] | ||
| if first != self._mode_override: | ||
| self._needs_replan = True | ||
| self._mode_override = first |
There was a problem hiding this comment.
Repeated commands skip posture dwell
Requesting CRAWLING from standing selects KNEEL_TWO_LEGS and queues CRAWLING until the two-second dwell ends. Repeating CRAWLING during that dwell recalculates the transition from KNEEL_TWO_LEGS and selects CRAWLING immediately. This bypasses the pause intended to prevent a violent drop and must be fixed before merging.
Artifacts
Executable single-request and repeated-request pipeline reproduction
- This authored script runs the real mode-transition and policy-step logic with mocked ONNX sessions; it provides the executed source for both comparisons.
Pipeline output with one CRAWLING request
- The command completed with exit code 0 and showed KNEEL_TWO_LEGS still selected after 0.04s; the dwell held without a repeated request.
Pipeline output after repeating CRAWLING at 0.02s
- The command completed with exit code 0 and showed CRAWLING selected after 0.04s; the repeated request bypassed the dwell.
There was a problem hiding this comment.
Repeating a posture request now preserves the active kneeling pause, and changing the requested target also preserves that pause.
| if self._planner_future is not None and not self._planner_future.done(): | ||
| self._planner_future.cancel() | ||
| self._planner_future = None |
There was a problem hiding this comment.
If reset occurs during planner inference, cancelling and discarding its future does not stop the running job. The next plan queues behind it on the sole worker, but its one-second timeout starts at submission. Reactivating control can therefore raise a planner timeout before the new inference starts; this must be fixed before merging.
Artifacts
Source for the planner reset reproduction
- This authored Python harness runs the real pipeline and executor with a controllable fake planner, reproducing both reset timings.
Planner run with reset after inference finished
- The command completed with exit code 0 and the second plan produced a trajectory without timing out.
Planner run with reset during inference
- The command completed with exit code 0 after asserting that the queued second plan timed out before it started.
There was a problem hiding this comment.
Reset now retains running inference until it finishes and discards its result before starting another plan with a fresh deadline, while preserving the original timeout if the old inference gets stuck.
Comments Outside DiffThese findings sit on lines the diff does not cover, so they could not be posted inline. Each one leaves this list once its file changes.
|
ac5a769 to
bcafe13
Compare
There was a problem hiding this comment.
go2 replay realtime (arm64)
Details
| Benchmark suite | Current: 8ec3195 | Previous: c3f0add | Ratio |
|---|---|---|---|
peak memory |
1827.449 MB |
1762.234 MB |
1.04 |
peak threads |
368 threads |
359 threads |
1.03 |
network (transport) |
2736.335 MB |
2735.794 MB |
1.00 |
disk write |
1.758 MB |
1.699 MB |
1.03 |
instructions |
137.821 G |
137.654 G |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
What is this feature?
Add NVIDIA GEAR-SONIC v1.1 planner, encoder and decoder inference in
dimos/control/sonic/, including joint mappings, observation history, trajectory timing, explicit gait selection and streamed motion references. The default gait is slow walk; velocity commands do not automatically switch gaits. Squat and kneeling request no translation, neutral crawl input stops translation, and face-down mode 7 is excluded from the selectable menu.The model installer downloads pinned policy/configuration assets and 13 motion clips into the DimOS cache and verifies SHA-256 hashes. The ONNX Runtime wrapper configures CUDA sessions and checks JetPack compatibility. An explicit
cpu_simulation=Trueoption uses CPU sessions with four inference threads; the runnable G1 layer selects it for macOS simulation and rejects it for hardware. This layer also contains pipeline tests and dependency metadata.Layer 2 of the SONIC stack, based on #4304 and followed by #3557: 7 files, +2,650/-1. The standalone policy module, runnable blueprint and Jetson installer are in #3557.
The planner timeout stays with SONIC inference; shared motor faults use the G1 control helper from #4304. No sim2 or unmerged coordinator dependency.
Why do we need this?
Keep model execution and reference handling separately reviewable from hardware command delivery and the robot module. The inference layer accepts numeric references without requiring a headset integration.
How to Test
At
69195ae06, 73 inference/motor-fault tests and targeted mypy pass with only layers 1 and 2 present. Previous checkpoint evidence: all 43 cached model/configuration/clip assets verified offline. Asset verification requires the models to have been installed withdimos-sonic-modelsfirst. These checks do not establish crawl stability or hardware motion safety.Latest layer-only verification: 52 inference tests passed, plus targeted mypy and commit hooks. Tests cover explicit CPU inference, default CPU-only rejection and rejection of unintended CUDA-to-CPU fallback.
Which issue(s) does this PR close?
Part of #3557; no separate issue is closed.
Checklist
Stack update (2026-10-22)
Review and merge in order:
Controller app companion: jeff-hykin/dim-controller#1, separate repository.
Main at
42ca50dfefis merged through the original three branches without rewriting history. No sim2 or unmerged ControlCoordinator dependency was introduced. The native Pico/XRoboToolkit workaround is excluded.Previous checkpoint, before the Mac CPU fix: 224 focused Python checks passed (SONIC/WebXR/movement, gateway/G1 safety/clocks/sim adapter, composition and registry); one hardware-specific check was skipped. Targeted mypy and commit hooks passed. The companion UI passed 290 tests and production-bundle desktop/mobile browser checks using mocked gateway replies.
Mac CPU simulation is now supported and verified with the actual SONIC models in MuJoCo (walking, stopping and staying upright). Hardware still requires CUDA. Enterprise-Pico tracking and physical-robot acceptance remain pending; no robot deployment or actuation was performed.