danvi/dim1486/generalize dan perception stack - #3723
Conversation
…he window's cell range - one fancy-index lookup per snapshot's points and one rectangle memset after it
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #3723 +/- ##
==========================================
+ Coverage 77.46% 77.55% +0.09%
==========================================
Files 1302 1315 +13
Lines 123061 124789 +1728
Branches 10772 11283 +511
==========================================
+ Hits 95330 96782 +1452
+ Misses 24924 24864 -60
- Partials 2807 3143 +336
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 155 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Greptile SummaryThis change broadens perception-memory localization across depth-camera and registered point-cloud rigs, adds persistent object identities, batches detector scoring, and expands recording CLI configuration. Two localization reliability problems remain. Short embedded recordings can yield no semantic frame to inspect, so objects in one- or two-frame windows are never sent to detection. Separately, a frame that temporarily lacks usable 3D geometry is permanently skipped when the same identity store is reused, even after geometry becomes available. T-Rex validation blockedThe short-recording check could not run to completion because the Python runtime was missing repository dependencies. The final import failure was for the Confidence Score: 3/5Not safe to merge without addressing the two localization failure paths, because valid objects can be omitted from results. One failure was reproduced by executing two localization calls against a reused identity store and demonstrating recovery after delaying ingestion. The short-recording failure is directly supported by the selection path, but its runtime harness was blocked by missing Python packages. Files Needing Attention:
What T-Rex did
Reviews (1): Last reviewed commit: "ship go2_short.db.rig.json inside the go..." | Re-trigger Greptile |
leshy
left a comment
There was a problem hiding this comment.
basically escaped mem2 immediately, first comments first view to push back on this, might have more stuff
test_detection3dpc pinned obb.center and obb.extent to values from when from_2d projected through a bare pinhole matrix and ignored camera_info.D. The camera under test is go2_front_camera_720p, declared equidistant. project_pixels now applies that model, shifting projected pixels by a median of 20 px and moving the suitcase OBB center 18 mm in y, just past the 0.1 window. Tolerances and the file's other assertions are unchanged.
…ocalize call in runtime
Generealize perception stack
This PR builds, improves, and adds new functionality based on the foundation of these previous PRs:
#3496
#3422
How to test and what to expect
refference machine:
Lenovo Legion laptop, AMD Ruyzen AI 7, 32GB RAM, NVIDIA RTX 5070 Laptop edition (8 GB)
Caller - operator/agent decide the localization parameters at runtime
every localize call can have own tuning parameters supplied
At the moment we have ROOM policy, and default table policy, think xArm gripper.
This accounts for different environment and rig. We can control a detection score to take only the best candidates, and an acceptance floor, you can control segmentation, etc. Check
localize.pyxArm
This uses the deault location for xArm dataset, already on main, xarm6_worldbelief_20260729_203624_161992.db.
You do not need to specify the --dataset <location_to_recording_bag_.db>
time uv run python -m dimos.perception.memory.tool_localize "roll of black tape" "book" "pen" "red marker" "yellow sticky notes" pc_xArm_all_multi.rrd --from 427 --duration 76 --multi && uv run dimos-viewer pc_xArm_all_multi.rrdG1
You will need a g1 recording for this, check this PR, it's on main already, #3527
time uv run python -m dimos.perception.memory.tool_localize "paper box" "plant in a pot" "shoes" "wooden crate" "office chair" "bag" g1_sf_120_180_localize.rrd --dataset data/g1_sf_office.db --from 120 --duration 60 --multi && uv run dimos-viewer g1_sf_120_180_localize.rrdGo2
Run on the default go2_short.db
time uv run python -m dimos.perception.memory.tool_localize "table" "white robot" "potted plants" "wooden doors" "coke bottle" "fanta bottle" "sprite bottle" "lays chips" "pillow" "green plant" "plant pot" go2_short_00_60.rrd --dataset data/go2_short.db --from 0 --duration 60 --multi && uv run dimos-viewer go2_short_00_60.rrdImportant
Use localize() API for testing and building