feat(simulation): load combined rover collision
This commit is contained in:
@@ -19,8 +19,13 @@ TUS_VERSION: Final = "1.0.0"
|
||||
BUILD_REQUEST_SCHEMA: Final = "gaussian-pipeline.build-request/v1"
|
||||
JOB_SCHEMA: Final = "gaussian-pipeline.job/v1"
|
||||
LEGACY_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v1"
|
||||
RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v2"
|
||||
RESULT_SCHEMAS: Final = frozenset({LEGACY_RESULT_SCHEMA, RESULT_SCHEMA})
|
||||
LEGACY_ROVER_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v2"
|
||||
RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v3"
|
||||
RESULT_SCHEMAS: Final = frozenset({
|
||||
LEGACY_RESULT_SCHEMA,
|
||||
LEGACY_ROVER_RESULT_SCHEMA,
|
||||
RESULT_SCHEMA,
|
||||
})
|
||||
CAPABILITIES_SCHEMA: Final = "gaussian-pipeline.capabilities/v1"
|
||||
ARCHIVE_INGEST_REQUEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest-request/v1"
|
||||
ARCHIVE_INGEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest/v1"
|
||||
|
||||
@@ -671,6 +671,11 @@ def _world_manifest(project_id: str, artifacts: list[dict[str, Any]]) -> dict[st
|
||||
)
|
||||
return f"/api/v1/simulation-worlds/projects/{project_id}/artifacts/{encoded}"
|
||||
|
||||
collision_mesh_url = (
|
||||
url_for("rover-collision-mesh")
|
||||
or url_for("rover-terrain-mesh")
|
||||
or url_for("collision-mesh")
|
||||
)
|
||||
return {
|
||||
"schema_version": WORLD_MANIFEST_SCHEMA,
|
||||
"project_id": project_id,
|
||||
@@ -679,9 +684,8 @@ def _world_manifest(project_id: str, artifacts: list[dict[str, Any]]) -> dict[st
|
||||
"streamed_sog_url": url_for("stream-manifest"),
|
||||
},
|
||||
"collision": {
|
||||
"mesh_url": url_for("rover-terrain-mesh") or url_for("collision-mesh"),
|
||||
"available": (url_for("rover-terrain-mesh") or url_for("collision-mesh"))
|
||||
is not None,
|
||||
"mesh_url": collision_mesh_url,
|
||||
"available": collision_mesh_url is not None,
|
||||
},
|
||||
"transforms": {
|
||||
"world_from_visual": [1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1],
|
||||
|
||||
@@ -352,7 +352,11 @@ def test_gateway_rejects_symlink_source_and_token(tmp_path: Path) -> None:
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"result_schema",
|
||||
["gaussian-pipeline.build-result/v1", "gaussian-pipeline.build-result/v2"],
|
||||
[
|
||||
"gaussian-pipeline.build-result/v1",
|
||||
"gaussian-pipeline.build-result/v2",
|
||||
"gaussian-pipeline.build-result/v3",
|
||||
],
|
||||
)
|
||||
def test_gateway_submits_tracks_and_imports_digest_bound_artifact(
|
||||
tmp_path: Path,
|
||||
|
||||
@@ -225,7 +225,7 @@ def test_service_materializes_world_manifest_and_deletes_both_copies(tmp_path: P
|
||||
assert provider.deleted == ["gsp-20260826000000-deadbeef"]
|
||||
|
||||
|
||||
def test_world_manifest_prefers_seed_connected_rover_terrain() -> None:
|
||||
def test_world_manifest_prefers_combined_rover_collision_world() -> None:
|
||||
manifest = _world_manifest(
|
||||
"sim-" + "a" * 32,
|
||||
[
|
||||
@@ -237,12 +237,16 @@ def test_world_manifest_prefers_seed_connected_rover_terrain() -> None:
|
||||
"role": "rover-terrain-mesh",
|
||||
"logical_path": "rover/terrain.collision.glb",
|
||||
},
|
||||
{
|
||||
"role": "rover-collision-mesh",
|
||||
"logical_path": "rover/scene.collision.glb",
|
||||
},
|
||||
],
|
||||
)
|
||||
|
||||
assert manifest["collision"]["available"] is True
|
||||
assert manifest["collision"]["mesh_url"].endswith(
|
||||
"/artifacts/rover/terrain.collision.glb"
|
||||
"/artifacts/rover/scene.collision.glb"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user