| name | scene-gaussian-map-alignment |
| description | Align scene Gaussian/splat, USD/mesh, and robot map assets into an honest digital-twin evidence workflow. Use when a new Gaussian scene arrives, when B1/Map12-style assets need to be connected, when map anchors are being projected into a 3D scene, or when an agent must decide whether an alignment is candidate, verified, runtime-proven, or planner-backed. |
Scene Gaussian Map Alignment
Use this when a bundle combines a 3D Gaussian/splat/PLY/USD/OBJ scene, a robot
map such as Nav2 YAML plus occupancy PGM, semantic anchors from
navigation_memory.json, or an Isaac/operator-console report that must label
evidence honestly.
Boundary
Keep stable, repeatable work in scripts. The skill owns the judgment that changes
from scene to scene:
- Stable scripts parse headers, bounds, map metadata, semantic-memory JSON,
transforms, smoke artifacts, images, and HTML reports.
- The skill decides the evidence tier, asks for missing assets, chooses which
anchors are credible, names blockers, and prevents overclaiming.
- Do not hide scene-specific assumptions in a script default. If an assumption
will vary with the next Gaussian scene, write it in the skill/report as an
explicit decision.
Evidence Tiers
Use these labels consistently:
blocked: geometry, map files, semantic anchors, or coordinate evidence are
missing.
candidate: bbox fit, scale/translate, manual placement, or another heuristic
alignment exists.
verified: named physical/semantic anchors match across map and scene with
residuals recorded.
runtime_proven: Isaac or robot-view smoke renders/navigates through
candidate waypoints and writes view evidence.
planner_backed: a real planner/Nav2-equivalent path proof exists.
Never skip tiers in wording. A runtime smoke can prove that rendered robot views
exist at candidate poses; it does not by itself prove Nav2 planner parity.
Workflow
-
Inventory every asset before aligning: Gaussian/splat/PLY files and whether
they are rendered or only inspected, USD/OBJ/mesh world bounds, Nav2 YAML,
occupancy grid, semantic memory, map-bundle context, anchor ids, and any
segmentation/object manifest/correspondence/calibration evidence.
-
Run the deterministic tools that apply to the available assets:
python scripts/maps/export_agibot_map_bundle.py \
--source-map-dir <map-root> \
--output-dir assets/maps/<bundle-name>
.venv-isaaclab/bin/python scripts/isaac_lab_cleanup/check_b1_map12_readiness.py \
--b1-root <scene-root> \
--map12-root <map-root> \
--output output/<run>/readiness.json
.venv-isaaclab/bin/python scripts/isaac_lab_cleanup/run_b1_map12_navigation_smoke.py \
--b1-root <scene-root> \
--map12-root <map-root> \
--output-dir output/<run> \
--accept-nvidia-eula
.venv-isaaclab/bin/python scripts/isaac_lab_cleanup/check_b1_map12_readiness.py \
--b1-root <scene-root> \
--map12-root <map-root> \
--navigation-artifact output/<run>/navigation_smoke.json \
--require-navigation-success \
--output output/<run>/readiness_with_navigation.json
python scripts/isaac_lab_cleanup/render_b1_map12_navigation_report.py \
--run-dir output/<run>
-
Classify what the run actually proved: bbox fit is candidate; matched
anchors with residuals are verified; rendered robot views at candidate
poses are runtime_proven; planner path evidence is planner_backed.
-
Summarize the evidence without changing the artifacts:
python skills/scene-gaussian-map-alignment/scripts/summarize_alignment_evidence.py \
--readiness-artifact output/<run>/readiness_with_navigation.json \
--navigation-artifact output/<run>/navigation_smoke.json \
--output output/<run>/alignment_evidence_summary.json
-
Write the lightweight alignment manifest. This is the fusion contract for
future runs; it is not a fused USD/Gaussian scene:
python skills/scene-gaussian-map-alignment/scripts/summarize_alignment_evidence.py \
manifest \
--readiness-artifact output/<run>/readiness_with_navigation.json \
--navigation-artifact output/<run>/navigation_smoke.json \
--evidence-summary output/<run>/alignment_evidence_summary.json \
--map-bundle assets/maps/<bundle-name> \
--output output/<run>/alignment_manifest.json
-
Report the open blockers and next promotion step. Prefer one precise blocker
over broad language like "alignment done".
Honest Labels
- Do not claim Gaussian fusion unless the renderer consumed the Gaussian/splat
asset; header/bounds inspection is only inventory evidence.
- Do not claim
semantic_anchors_are_usd_truth=true without segmentation,
object manifest, or anchor correspondences that bind map anchors to USD/scene
objects.
- Do not claim manipulation support without object/receptacle binding plus a
pick/place proof.
- A "verify image" is a rendered camera view from a candidate pose. It helps
inspect gross placement and visibility, but it is not ground-truth alignment,
semantic binding, or planner proof.
- If Map 12 semantics are used only as navigation-memory anchors, call them
robot_map_12_navigation_memory_overlay or an equivalent overlay source, not
USD truth.
Output
When handing off results, include:
- alignment tier and transform source;
- whether Gaussian assets were rendered or only inspected;
- semantic source and semantic/USD binding status;
- navigation evidence status and whether it is planner-backed;
- artifact paths such as
readiness.json, navigation_smoke.json,
readiness_with_navigation.json, alignment_evidence_summary.json,
alignment_manifest.json, report.html, and any map bundle;
- the exact next step needed to promote the evidence tier.
Acceptance
After changing this skill, related scripts, or map/Isaac report contracts, run:
./scripts/dev/run_pytest_standalone.sh \
tests/contract/maps/test_b1_map12_digital_twin_readiness.py \
tests/contract/maps/test_b1_map12_navigation_report.py \
tests/contract/maps/test_agibot_map_bundle_export.py \
tests/contract/skills/test_scene_gaussian_map_alignment_skill.py \
tests/contract/skills/test_skill_manifests.py \
-q