feat(planning): consolidate recorded-route localization and spatial scene
Preserve the completed teach-and-repeat laboratory stage: reference preparation, cascaded acquisition, local tracking and recovery, recording lifecycle, replay qualification, and persistent Rerun scene controls. Document the open grid-picking regression and Rerun upgrade contract. No autonomous driving or loop-closure optimization is claimed.
This commit is contained in:
@@ -230,6 +230,13 @@ from k1link.web.runtime_readiness import (
|
||||
build_runtime_readiness,
|
||||
)
|
||||
from k1link.web.session_api import build_session_router
|
||||
from k1link.web.session_overview_api import build_session_overview_router
|
||||
from k1link.sessions.overview import SessionOverviewService
|
||||
from k1link.missions.sources import PlanningSources
|
||||
from k1link.missions.drafts import MissionDrafts
|
||||
from k1link.missions.registration_runs import RegistrationRuns
|
||||
from k1link.web.mission_registration_api import build_mission_registration_router
|
||||
from k1link.web.mission_planner_api import build_mission_planner_router
|
||||
from k1link.web.simulation_projects_api import build_simulation_projects_router
|
||||
from k1link.web.simulation_world_provider_api import build_simulation_world_provider_router
|
||||
from k1link.web.system_telemetry_api import build_system_telemetry_router
|
||||
@@ -463,6 +470,14 @@ session_recording_materializer = SessionRecordingMaterializer(
|
||||
exporters=plugin_environment.recording_exporters,
|
||||
artifact_gateway=session_artifact_gateway,
|
||||
)
|
||||
session_overview_service = SessionOverviewService(session_store, plugin_environment.overview_exporters)
|
||||
mission_drafts = MissionDrafts(session_store.data_dir / 'missions', PlanningSources(
|
||||
session_store, plugin_environment.planning_exporters, plugin_environment.submap_extractors,
|
||||
plugin_environment.scene_submap_extractors))
|
||||
mission_registration_runs = RegistrationRuns(mission_drafts)
|
||||
from k1link.missions.live_tests import PlanningLiveTests
|
||||
from k1link.web.planning_live_api import build_planning_live_router
|
||||
planning_live_tests = PlanningLiveTests(mission_drafts, plugin_environment.live_planning_sources, mission_registration_runs.lock)
|
||||
session_recorded_media_inspector = RecordedMediaInspector(
|
||||
session_store.data_dir / "recorded-media-preparations"
|
||||
)
|
||||
@@ -956,6 +971,9 @@ async def app_lifespan(application: FastAPI) -> AsyncIterator[None]:
|
||||
with suppress(asyncio.CancelledError):
|
||||
await publication_reconciler
|
||||
await asyncio.to_thread(session_recording_preparation_manager.close)
|
||||
await asyncio.to_thread(session_overview_service.close)
|
||||
await asyncio.to_thread(planning_live_tests.close)
|
||||
await asyncio.to_thread(mission_registration_runs.close)
|
||||
await asyncio.to_thread(lidar_local_surface_read_service.close)
|
||||
plugin_environment.close()
|
||||
|
||||
@@ -1128,6 +1146,11 @@ if session_artifact_gateway is not None and _ffmpeg is not None:
|
||||
for legacy_router in plugin_environment.legacy_routers:
|
||||
app.include_router(legacy_router)
|
||||
|
||||
app.include_router(build_session_overview_router(session_overview_service))
|
||||
app.include_router(build_mission_planner_router(mission_drafts))
|
||||
app.include_router(build_planning_live_router(planning_live_tests))
|
||||
app.include_router(build_mission_registration_router(mission_registration_runs, planning_live_tests))
|
||||
|
||||
app.include_router(
|
||||
build_session_router(
|
||||
session_store,
|
||||
|
||||
Reference in New Issue
Block a user