Joint Dependent Mesh/BBox for Embodiment - #968
Conversation
Greptile SummaryThis PR introduces joint-dependent placement geometry and reusable collision-mesh artifacts.
Confidence Score: 3/5The PR should not merge until Franka and Droid placement geometry honors constructor-supplied initial joint poses; source-aware cache invalidation should also be strengthened. Franka and Droid can reset into a constructor-selected arm pose while their newly introduced bounding box and collision mesh are computed from a different joint mapping, causing incorrect placement geometry on a supported path. Files Needing Attention: isaaclab_arena/embodiments/embodiment_base.py, isaaclab_arena/embodiments/franka/franka.py, isaaclab_arena/embodiments/droid/droid.py, isaaclab_arena/utils/collision_mesh_store.py Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Config[Embodiment scene config] --> Source[PlacementGeometrySource]
Source --> Pose[USD articulation posing]
Pose --> BBox[Posed bounding box]
Pose --> Extract[Mesh extraction]
Source --> Store{Stored artifact valid?}
Store -->|yes| Mesh[Scaled collision mesh]
Store -->|no| Extract
Extract --> Cache[Local/published mesh store]
Cache --> Mesh
BBox --> Placement[Relation placement]
Mesh --> Placement
Reviews (1): Last reviewed commit: "add joint support for robots" | Re-trigger Greptile |
🤖 Isaac Lab-Arena Review BotSummaryThis PR makes an embodiment's placement bounding box and collision mesh reflect the robot as actually spawned — posed at its configured Design, Boundaries & ScopeMy one real question is scope, raised inline on Boundaries otherwise hold: the new FK/store code is generic USD/IO utility, no robot-specific logic leaks into core, and the embodiment geometry methods stay pure (no live Findings🟡 collision_mesh_store.py — question whether the published-library + disk-LRU persistence needs to ship now, or could be deferred behind the in-process cache (inline). Test CoverageExcellent. New tests follow the inner/outer VerdictMinor fixes needed — essentially ship-ready; please just weigh in on the persistence-layer scope question before merge. |
qianl-nv
left a comment
There was a problem hiding this comment.
I have some general questions on why we need the "local/Omniverse cache for pre-computed mesh" part.
- collecting the mesh for droid is only taking about 1s, it's hardly the bottlenet in the overall pipeline atm. we don't think we need to go done for the perf there using cache. Finding ways the speed up the mesh mode for Background (where we absolutely need it) is more important imo.
- for embodiment, what's blocking is actually the joint-angle-based bounding box collection. unless we are confident of shipping v0.3 with both background and embodiment using mesh mode (so far it has always take forever for solver), we need a working version of background in mesh mode + embodiment in bbox mode.
4e98441 to
204ab44
Compare
qianl-nv
left a comment
There was a problem hiding this comment.
For droid/franka let's just overwrite get_collision_mesh instead of creating a new get_collsion_meshes. The return should be one mesh, this should remove a lot of downstream changes.
Please rebase the MR onto qianl/feature/mesh-optimization
Update the commit message with solver/validation logging before/after this change for the droid kitchen example
Will do another pass after above modification.
204ab44 to
fb0fa80
Compare
qianl-nv
left a comment
There was a problem hiding this comment.
Some more nits.
Plz do one more pass in cleaning / simplying the util functions
qianl-nv
left a comment
There was a problem hiding this comment.
Thanks a lot for addressing all the comments. Looks a lot cleaner now.
Approved!
one super small nit, see if you can fix it when rebasing to main.
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
6359d9e to
d0dad62
Compare
Summary
Joint-dependent mesh/bbox for embodiments
Detailed description
Tests
placement_seed=17.on_relation,not_next_to,face_to, andno_overlapvalidation counts matched between modes.next_toremained comparable.Command to run:
With Droid mesh collision and solver logging enabled, five solves averaged:
Versus the previous Droid bbox configuration:
This is an end-to-end configuration comparison: Droid mesh collision was approximately 7.1% slower, while using fewer no-overlap pairs.