Skip to content

Antim/sim integration merged#1390

Open
leshy wants to merge 20 commits intodevfrom
antim/sim-integration-merged
Open

Antim/sim integration merged#1390
leshy wants to merge 20 commits intodevfrom
antim/sim-integration-merged

Conversation

@leshy
Copy link
Copy Markdown
Contributor

@leshy leshy commented Mar 1, 2026

No description provided.

Add native DimSim bridge and nav blueprint for browser-based 3D
simulation with LCM transport. Uses globally installed dimsim
CLI (https://jsr.io/@antim/dimsim).

- DimSimBridge (NativeModule) manages the dimsim subprocess
- DimSimTF publishes transform tree from odom
- sim-nav blueprint wires bridge + TF + voxel mapping + A* + frontier exploration

Usage: dimos run sim-nav

TODO:
- General eval workflow integration
- Test headless integration
@leshy leshy force-pushed the antim/sim-integration-merged branch from 82073b9 to 15526d4 Compare March 1, 2026 16:43
@leshy
Copy link
Copy Markdown
Contributor Author

leshy commented Mar 1, 2026

@greptileai go for it

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment on lines +172 to +174
def move(self, twist: Twist, duration: float = 0.0) -> bool:
"""Send movement command to the simulator via cmd_vel."""
self.cmd_vel.publish(twist)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

duration parameter is unused. Other move() implementations in the codebase (unitree, drone) use this to execute timed movements.

@dimensionalOS dimensionalOS deleted a comment from greptile-apps bot Mar 2, 2026
},
}

match global_config.viewer_backend:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest we should be moving to a config that is not created at import time. To facilitate that in future, maybe this should all be wrapped into a function? Then if we remove the global_config variable in future this API wouldn't need to change.

Viswa4599 and others added 4 commits March 4, 2026 22:35
- Remove out-of-order odom drop in tf_module — server-side physics
  publishes at 50Hz from a single source, timestamp filtering caused
  jitter by dropping near-identical timestamps over UDP multicast

Sensor rates:
- Odom:  50 Hz
- Lidar: 10 Hz, 15,000 points, 4m range
- RGB:    2 Hz, 960×432 JPEG
- Depth:  2 Hz, 960×432 16UC1

Usage:
  dimos run sim-nav                                        # normal
  DIMSIM_HEADLESS=1 DIMSIM_RENDER=gpu dimos run sim-nav    # headless

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Viswa4599
Copy link
Copy Markdown
Collaborator

Viswa4599 commented Mar 10, 2026

TODO

  • CI tests for dimsim integration
  • Integrate eval stack

leshy and others added 3 commits March 10, 2026 17:04
…prints

- bridge.py: download compiled binary from GitHub Releases (no Deno dependency),
  auto-symlink to ~/.local/bin, support DIMSIM_CONNECT_ONLY and DIMSIM_CHANNELS
  env vars for parallel eval instances
- New e2e test: test_dimsim_nav.py — 6 smoke tests for sim-nav sensor pipeline
  (color, depth, odom, lidar, cmd_vel control, odom rate). Runs in CI with CPU
  rendering, force-kills port 8090 on setup/teardown to prevent leaks
- Eval tests: EVALS_DIR now reads from ~/.dimsim/evals/ (installed by dimsim
  setup) instead of reaching into DimSim source tree. Added force-kill cleanup
  to both sequential and parallel eval fixtures
- New sim blueprints: sim-agentic, sim-eval, sim-parallel-eval, sim-spatial,
  sim-temporal-memory
- Simulation developer docs at docs/development/simulation.md
…merged

# Conflicts:
#	dimos/robot/all_blueprints.py
Copilot AI review requested due to automatic review settings March 28, 2026 01:58

This comment was marked as resolved.

Viswa4599 and others added 9 commits March 27, 2026 22:07
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…wn, untrack generated artifacts

- Fix global_config.viewer_backend → global_config.viewer (AttributeError)
- Add @rpc decorator to DimSimBridge.start() override
- Update self.config.executable after binary download in _maybe_build()
- Add start_new_session=True to all test subprocess.Popen calls
- Implement duration-based motion in DimSimTF.move()
- Fix docstring filenames to match actual test file names
- Untrack assets/temporal_memory/ and add to .gitignore
…it__.py files

- Replace all removed shorthand aliases with ClassName.blueprint() pattern
  (CostMapper, VoxelGridMapper, ReplanningAStarPlanner, WavefrontFrontierExplorer,
  SpatialMemory, WebsocketVisModule, RerunBridgeModule, FoxgloveBridge)
- Replace deleted dimos.agents.agent with MCP agent (McpServer + McpClient)
- Replace dimos.perception.experimental.temporal_memory shorthand with direct import
- Fix spec.Camera/Pointcloud import path (dimos.spec.perception)
- Fix CameraInfo import (module vs class)
- Fix LCM() constructor (remove autoconf param)
- Fix rerun bridge import (RerunBridgeModule + _resolve_viewer_mode)
- Remove all __init__.py files (not allowed in dimos)
- Fix all_blueprints.py sorting and add dim-sim-bridge/dim-sim-tf modules
- Add skipif_in_ci back to test_dimsim_nav (requires dimsim binary)
- Remove `from __future__ import annotations` from bridge.py and tf_module.py
  (broke Module port creation from type annotations)
- Convert DimSimBridgeConfig from @DataClass to pydantic model
  (parent NativeModuleConfig is pydantic)
- Fix all msg imports: use `from dimos.msgs.*.X import X`
  (module-level imports returned modules, not classes)
- Replace `None` with named `_suppress` function in rerun visual_override
  (pydantic requires callable, lambdas not picklable)
- Add missing PatrollingModule to sim_agentic blueprint
- Fix os.killpg PermissionError on macOS in test teardown
- Add venv bin to PATH in e2e test subprocess env
Fix update flow: prefer compiled binary over PATH in _resolve_paths(),
always sync self.config.executable after version check, create symlink
before running setup. Add eval creation section to simulation.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix update flow: prefer compiled binary over PATH in _resolve_paths(),
always sync self.config.executable after version check, create symlink
before running setup. Add eval creation section to simulation.md.
Remove skipif_in_ci from test_dimsim_nav only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Viswa4599
Copy link
Copy Markdown
Collaborator

@leshy summary of changes:

  • Merged dev
  • Added docs in docs/simulation.md. Will keep updating
  • Built eval framework and primitives on our end, you can run evals and build your own (eg: list all objects in a sim and choose one to go to). More on that in the docs. This is still very early, have to add more primitives.
  • Added sometests in e2e. Smoke test for sim-nav and tests to run an eval through dimos (skipped for now in ci)

To try the tests out :

python -m pytest dimos/e2e_tests/test_dimsim_nav.py -v -s  -o "addopts=" -m slow
python -m pytest dimos/e2e_tests/test_dimsim_eval.py -v -s -o "addopts=" -m slow
python -m pytest dimos/e2e_tests/test_dimsim_eval_parallel.py -v -s -o "addopts=" -m slow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants