feat(sim): add external simulation provider contract - #3375
Draft
Nabla7 wants to merge 39 commits into
Draft
Conversation
This reverts commit 5c89fc8.
- SimulationRequest model assets become optional so providers can resolve their own robot assets - SimulationBinding carries a provider rerun config that the ordinary G1 and Go2 blueprints merge into their own visualization - unitree-go2-basic resolves its platform through the simulation provider registry, mirroring the G1 GR00T blueprint
- SceneControl protocol with a shared load_scene_control resolver; DimSim stays built in, other simulators load from the dimos.simulation.scene_controls entry-point group - DIMOS_E2E_SIMULATOR selects the simulator (default pimsim) while the test bodies stay unchanged - The CLI harness maps pimsim onto --simulation mujoco with the pimsim provider and a scene package
Live inspection of the running Go2 office session showed a healthy global costmap (5,410 nonzero and 2,363 lethal cells forming the office walls), so the wall-crossing planner defect is downstream of occupancy. The Go2 planner ran with robot_width=None, meaning no obstacle inflation at all, unlike the G1 composition. - Share one classic costmap palette between G1 and Go2 instead of the unrelated Accent colormap - Add the GO2 physical config from the published 0.70 x 0.31 x 0.40 m envelope and pass explicit width and rotation diameter to the planner - Make the Go2 height-cost configuration explicit, mirroring the G1 overhead-margin pattern Pending live goal-driven validation of the replanning behavior.
…n-provider # Conflicts: # dimos/robot/unitree/g1/blueprints/basic/unitree_g1_groot_wbc.py
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
This adds a small external simulation-provider boundary to DimOS:
GlobalConfig.simulation_providerselects an installed provider.dimos.simulation.providersdefinesSimulationRequest,SimulationBinding, and entry-point discovery.--simulation-provider pimsimselects the external backend.Blueprint, simulated-hardware adapter identity/address, and Rerun configuration.Runtime trace
dimos --simulation mujoco --simulation-provider pimsim ... run unitree-g1-groot-wbcresolves ordinaryGlobalConfig.pimsimentry point fromdimos.simulation.providers.SimulationBinding.binding.backendwithControlCoordinator, mapping, navigation, and visualization.ModuleCoordinatordeploys those modules through the normal forkserver worker system.ControlCoordinatorexchanges high-rate joint commands/state with the simulated hardware adapter through the shared-memory ABI.PimSim is therefore not a second runtime around DimOS. It supplies simulator-facing DimOS modules and a binding; DimOS still owns composition, workers, lifecycle, transports, control, and application behavior.
Reference implementation and trace:
Review order
This branch deliberately keeps three prerequisites until their PRs merge:
After those merge, this PR's net review surface becomes four files:
dimos/core/global_config.pydimos/simulation/providers.pydimos/simulation/test_providers.pydimos/robot/unitree/g1/blueprints/basic/unitree_g1_groot_wbc.pyThe old shared branch was updated by a normal merge and scope-reduction commit; its history and existing links were not rewritten.
Validation
PimSimG1 + ControlCoordinator + mapping + navigation + standard visualizationThe xArm, Go2, manipulation UI, pick/place, G1 mapping overhaul, E2E parity, scene cooking, scene data, and macOS CLIP changes are preserved on separate focused branches and are intentionally outside this review.