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"
|
BUILD_REQUEST_SCHEMA: Final = "gaussian-pipeline.build-request/v1"
|
||||||
JOB_SCHEMA: Final = "gaussian-pipeline.job/v1"
|
JOB_SCHEMA: Final = "gaussian-pipeline.job/v1"
|
||||||
LEGACY_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v1"
|
LEGACY_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v1"
|
||||||
RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v2"
|
LEGACY_ROVER_RESULT_SCHEMA: Final = "gaussian-pipeline.build-result/v2"
|
||||||
RESULT_SCHEMAS: Final = frozenset({LEGACY_RESULT_SCHEMA, RESULT_SCHEMA})
|
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"
|
CAPABILITIES_SCHEMA: Final = "gaussian-pipeline.capabilities/v1"
|
||||||
ARCHIVE_INGEST_REQUEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest-request/v1"
|
ARCHIVE_INGEST_REQUEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest-request/v1"
|
||||||
ARCHIVE_INGEST_SCHEMA: Final = "gaussian-pipeline.archive-ingest/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}"
|
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 {
|
return {
|
||||||
"schema_version": WORLD_MANIFEST_SCHEMA,
|
"schema_version": WORLD_MANIFEST_SCHEMA,
|
||||||
"project_id": project_id,
|
"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"),
|
"streamed_sog_url": url_for("stream-manifest"),
|
||||||
},
|
},
|
||||||
"collision": {
|
"collision": {
|
||||||
"mesh_url": url_for("rover-terrain-mesh") or url_for("collision-mesh"),
|
"mesh_url": collision_mesh_url,
|
||||||
"available": (url_for("rover-terrain-mesh") or url_for("collision-mesh"))
|
"available": collision_mesh_url is not None,
|
||||||
is not None,
|
|
||||||
},
|
},
|
||||||
"transforms": {
|
"transforms": {
|
||||||
"world_from_visual": [1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1],
|
"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(
|
@pytest.mark.parametrize(
|
||||||
"result_schema",
|
"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(
|
def test_gateway_submits_tracks_and_imports_digest_bound_artifact(
|
||||||
tmp_path: Path,
|
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"]
|
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(
|
manifest = _world_manifest(
|
||||||
"sim-" + "a" * 32,
|
"sim-" + "a" * 32,
|
||||||
[
|
[
|
||||||
@@ -237,12 +237,16 @@ def test_world_manifest_prefers_seed_connected_rover_terrain() -> None:
|
|||||||
"role": "rover-terrain-mesh",
|
"role": "rover-terrain-mesh",
|
||||||
"logical_path": "rover/terrain.collision.glb",
|
"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"]["available"] is True
|
||||||
assert manifest["collision"]["mesh_url"].endswith(
|
assert manifest["collision"]["mesh_url"].endswith(
|
||||||
"/artifacts/rover/terrain.collision.glb"
|
"/artifacts/rover/scene.collision.glb"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user