Skip to content

Antim/sim integration merged#1390

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

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

Conversation

@leshy
Copy link
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
Contributor Author

leshy commented Mar 1, 2026

@greptileai go for it

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 1, 2026

Greptile Summary

Integrates Antim Labs DimSim simulator into dimos by adding a modular bridge architecture that manages a Deno subprocess for sensor data streaming and a lightweight TF publisher for coordinate transforms.

Key Changes:

  • New DimSimBridge NativeModule wraps Deno CLI subprocess, auto-detects global/local installation
  • DimSimTF module subscribes to odometry via LCM and publishes transform chain (world → base_link → sensors) plus camera intrinsics
  • sim_basic blueprint provides visualization support (foxglove, rerun, websocket) with platform-specific transports
  • sim_nav blueprint extends basic with full navigation stack (voxel mapping, cost mapping, A* planning, frontier exploration)
  • Sensor data flows directly through LCM (no Python encode/decode), improving performance

Confidence Score: 4/5

  • Safe to merge with one minor parameter usage suggestion
  • Well-structured integration following existing patterns (NativeModule, Module base classes). Good error handling for missing dependencies. Only minor issue: unused duration parameter in move() method.
  • No files require special attention - all changes are straightforward additions

Important Files Changed

Filename Overview
dimos/robot/sim/blueprints/basic/sim_basic.py Implements basic DimSim blueprint with visualization support (foxglove, rerun), platform-specific transports, and websocket visualization
dimos/robot/sim/blueprints/nav/sim_nav.py Extends sim_basic with navigation capabilities: voxel mapping, cost mapping, A* planning, and frontier exploration
dimos/robot/sim/bridge.py NativeModule wrapper managing DimSim bridge subprocess, auto-detects Deno/dimsim CLI, publishes sensor data to LCM
dimos/robot/sim/tf_module.py TF publisher for DimSim: subscribes to odom, publishes transform chain, camera info at 1Hz; move() method has unused duration parameter

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[DimSim Bridge<br/>Deno Subprocess] -->|publishes to LCM| B[LCM Bus]
    B -->|odom, lidar, images| C[TF Module]
    B -->|sensor data| D[Visualization<br/>foxglove/rerun/websocket]
    C -->|publishes| E[Transform Chain<br/>world → base_link → sensors]
    C -->|publishes| F[Camera Info<br/>1 Hz]
    G[Navigation Stack<br/>mapping, planning, exploration] -->|cmd_vel| B
    B -->|cmd_vel| A
    
    H[sim_basic Blueprint] -.includes.- A
    H -.includes.- C
    H -.includes.- D
    I[sim_nav Blueprint] -.extends.- H
    I -.includes.- G
Loading

Last reviewed commit: 15526d4

Copy link
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
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.

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.

2 participants