Integrate Droid lightwheel kitchen example with robot placement#948
Integrate Droid lightwheel kitchen example with robot placement#948qianl-nv wants to merge 19 commits into
Conversation
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>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Signed-off-by: zhx06 <zihaox@nvidia.com>
Relation placement reset wrote only the robot root at the solver's unlifted z, leaving the stand at spawn and causing float when stand_height_m differs from the default. Map layout poses to all scene roots via layout_pose_to_scene_writes and apply stand-height lift for Droid on reset. Signed-off-by: Qian Lin <qianl@nvidia.com>
79fb19e to
9d391a8
Compare
* Clean up code comments * Fix bug in droid get_bounding_box offset handling
Merge placement-bbox and reset-alignment coverage into test_droid_stand_height.py so the suite uses one sim startup and drops redundant cases. Remove the overlapping companion-scene write test; the Droid reset write test covers multi-prim layout_pose_to_scene_writes. Signed-off-by: Qian Lin <qianl@nvidia.com>
Greptile SummaryThis PR integrates the Droid robot into the Lightwheel kitchen environment by adding a new YAML spec and extending the placement/reset pipeline to write both the robot root and its separate stand prim on each reset. The key mechanical change is
Confidence Score: 3/5The production placement code is logically correct, but the new kitchen reset alignment test will always crash before making any assertion, so the robot-z vs stand-z invariant it is meant to guard is never verified. The core stand-height offset and dual-prim reset logic is well-reasoned and consistent with the existing codebase. The broken test_droid_stand_height.py (_check_kitchen_reset_alignment) and test_placement_events.py (test_solve_and_place_objects_writes_droid_robot_and_stand) need attention before the test suite can provide meaningful coverage of the new reset path. Important Files Changed
Reviews (1): Last reviewed commit: "Consolidate Droid stand and placement te..." | Re-trigger Greptile |
🤖 Isaac Lab-Arena Review BotSummaryThis PR adds a Droid + Lightwheel-kitchen environment yaml and, to support it, makes the Droid embodiment place both the robot root and its separate stand on reset (via the Findings🟡 Warning: 🔵 Improvement: Test CoverageGood coverage overall: the consolidated VerdictMinor fixes needed — mainly routing the fixed-pose reset path through the same stand-aware write dispatch. |
Keep the original _test_droid_stand_height body and move placement bbox and kitchen reset checks into separate pytest entry points. Signed-off-by: Qian Lin <qianl@nvidia.com>
get_world_poses()[0] is already a torch.Tensor; accessing .torch raised AttributeError and prevented the kitchen reset check from running. Signed-off-by: Qian Lin <qianl@nvidia.com>
Extract write_scene_root_poses_to_sim so relation placement and fixed-pose embodiment resets both route AssetBase extras (e.g. Droid stand) through set_world_poses instead of write_root_pose_to_sim. Signed-off-by: Qian Lin <qianl@nvidia.com>
Configure stand mocks without write_root_pose_to_sim so unit tests exercise the AssetBase dispatch path used in production for the Droid stand. Signed-off-by: Qian Lin <qianl@nvidia.com>
Compare stand world quaternion to the robot root after relation placement reset so quaternion-order bugs between write_root_pose_to_sim and set_world_poses are caught, not just z alignment. Signed-off-by: Qian Lin <qianl@nvidia.com>
ee9f659 to
dedf07a
Compare
Summary
Add Droid kitchen env yaml with robot placement
Detailed description
droid_pick_and_place_lightwheel_kitchen.yamlwith Droid-on-floor/counter relations in the Lightwheel kitchen scene.layout_pose_to_scene_writes, adapted to the unifiedPlacementAsset/EmbodimentBasepose-reset path and main#945stand-height API.Command to run (start pi server first):
/isaac-sim/python.sh isaaclab_arena/evaluation/policy_runner.py --viz kit --policy_type isaaclab_arena_openpi.policy.pi0_remote_policy.Pi0RemotePolicy --num_episodes 2 --enable_cameras --record_viewport_video --output_base_dir output/kitchen_task --env_graph_spec_yaml isaaclab_arena_environments/droid_pick_and_place_lightwheel_kitchen.yaml
Intermediate results:
TODO: Enable mesh-based placement for background and embodiment