Skip to content

Ruthwik/feat/dimsim object annotations - #4208

Draft
ruthwikdasyam wants to merge 4 commits into
mainfrom
ruthwik/feat/dimsim-object-annotations
Draft

ruthwikdasyam wants to merge 4 commits into
mainfrom
ruthwik/feat/dimsim-object-annotations

Conversation

@ruthwikdasyam

@ruthwikdasyam ruthwikdasyam commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Contribution path

  • Small, safe change that does not need a tracking issue
  • Linked issue or discussion: DIM-XXX / #XXX / URL

Problem

Solution

How to Test

AI assistance

image

Checklist

  • I have read and approved the CLA.

Add an "Object labels + boxes" toggle to the DimSim viewer that snapshots
world-axis-aligned bounds and authored names for identified scene assets,
rendered in a separate overlay scene so physics and robot RGB/depth/LiDAR
captures are untouched.

Export the same snapshot as vision_msgs.Detection3DArray in the DimOS Z-up
"world" frame via SceneClient.get_object_detections() and
export_object_detections(). Each detection carries the stable asset id,
the authored label as a hypothesis with score 1.0, and an identity-oriented
bbox; the .bin export is one LCM wire payload, publishable with
LCMTransport("/detections_3d", Detection3DArray).
Include walls in the object snapshot: structure nodes named like
"wall-north" or "yard-wall-east" (and SceneClient.add_wall meshes) are
bounded under their node name, outside the assets group, so the overlay
and the Detection3DArray export cover 87 assets + 20 walls in the
apartment.

export_object_detections() writes a readable JSON view for ".json" paths
(id, label, center_xyz, size_xyz, orientation_xyzw per detection) and the
typed LCM payload otherwise.
Reference Detection3DArray export of the apartment scene as JSON:
107 entries (87 identified assets + 20 baked walls) with id, label,
center_xyz, size_xyz and orientation_xyzw in the ROS Z-up "world" frame.
@codecov

codecov Bot commented Sep 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

@@            Coverage Diff             @@
##             main    #4208      +/-   ##
==========================================
+ Coverage   79.53%   79.55%   +0.02%     
==========================================
  Files        1492     1494       +2     
  Lines      141368   141547     +179     
  Branches    12120    12128       +8     
==========================================
+ Hits       112436   112614     +178     
  Misses      25511    25511              
- Partials     3421     3422       +1     
Components Coverage Δ
Tests 95.36% <100.00%> (+<0.01%) ⬆️
Flag Coverage Δ
OS-ubuntu-24.04-arm 75.17% <100.00%> (+0.03%) ⬆️
OS-ubuntu-latest 75.99% <100.00%> (+0.03%) ⬆️
Py-3.10 75.77% <100.00%> (+0.03%) ⬆️
Py-3.11 75.97% <100.00%> (+0.03%) ⬆️
Py-3.12 75.98% <100.00%> (+0.03%) ⬆️
SelfHosted-Large 30.61% <30.72%> (-0.01%) ⬇️
SelfHosted-Linux 36.65% <30.72%> (-0.01%) ⬇️
SelfHosted-macOS 36.98% <30.72%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/simulation/dimsim/object_detections.py 100.00% <100.00%> (ø)
dimos/simulation/dimsim/scene_client.py 45.49% <100.00%> (+3.28%) ⬆️
dimos/simulation/dimsim/test_object_detections.py 100.00% <100.00%> (ø)

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Reads misc/DimSim/scenes/apartment/object_detections.json and renders the
107 boxes as an interactive matplotlib 3D plot (rotate/zoom/pan), with
--objects / --walls filters and a --save PNG mode.
@ruthwikdasyam
ruthwikdasyam force-pushed the ruthwik/feat/dimsim-object-annotations branch from 578e5dc to ae2a22d Compare September 17, 2026 23:51
ruthwikdasyam added a commit that referenced this pull request Sep 17, 2026
Replace the manifest-derived scene (real centres, invented 1 m squares)
with DimSim's own annotation snapshot from PR #4208: 107 objects and
walls with real extents, already in the ROS world frame odometry uses.
Copied verbatim (misc/DimSim/scenes/apartment/object_detections.json at
7fd0e2f); the live SceneClient.get_object_detections() emits the same
schema, so going live later is a one-line change in run().

load_scene() now reads that schema and filters geometrically instead of
by word list: boxes whose bottom clears the robot's 0.74 m capsule top
are overhead (door headers, wall cabinets, the TV); footprints contained
in another kept footprint are clutter (books on shelves, plates on
carts, bedding, a chair under its table). 107 -> 15 walls + 33 objects.
Room bounds come from the outer walls.

The second live run ended pressed against the real couch, 0.69 m before
my approximate box even began, and scored 0.54 because arrival measured
to the couch's centre, which is inside the couch. The grader now
measures to the goal box edge; that run re-scores 0.85 (test added).
The state gains goal_box so "reached" has something concrete to mean.

Step criteria drop compass words: the scene's wall labels put
"wall-east" at +y, which contradicts "+y = north" in the same prompt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.

1 participant