Files
ParkingRobot/docs/superpowers/handoffs/em-observation-web/phase-06.md
T

4.7 KiB
Raw Blame History

EM 观察网页可视化阶段 06 交接

状态:完成

阶段目标:完成集成计划 Task 4–5 的 EM 静态/动态数据可视化适配,在不启动网页会话、不改变 Painter 生命周期或插件发布的前提下,为冻结配置、地图/路径、运动学图表和周期交接提供可验证的不可变快照。

基线提交:a7dde0f5e4c37438f775b706e3886ace00fe0e04;启动检查确认 b0b79e5 是祖先,分支为 trajplanner

实现提交:

  • 0a1cbe9 feat: export EM observation configuration
  • a7dde0f feat: visualize EM rolling kinematics
  • cc6b0f1 fix: complete EM observation visualization contracts

修改文件:

  • ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationStaticSnapshotBuilder.cs
  • ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationKinematicChartBuilder.cs
  • ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationHandoffAnalyzer.cs
  • ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationDynamicSnapshotBuilder.cs
  • ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationVisualizationChecks.cs
  • ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationChecks.cs

新增或确认的接口:

  • TrajectoryObservationStaticSnapshotBuilder.Build(...) 按固定十组顺序导出冻结生效配置、车辆/地图和网页/换向确认字段;占据图为 row-major、LSB-first 紧凑 bitset,静态数据包含粗路径、完整 Local G2、方向段与换向标记。
  • TrajectoryObservationKinematicChartBuilder.Build(...) 固定导出 lsstcurvature-scurvature-tvelocity-tacceleration-tjerk-tyaw-rate-tjerk 仅有 N-1 个真实区间,LS 使用完整活动段的共享 ReferenceSST 保留局部 PathS
  • TrajectoryObservationHandoffAnalyzer.Analyze(...) 使用 EffectiveAtUtc + TimeFromStart 采样,保留世界位置、速度、加速度差;仅在任一投影失败时使 DeltaReferenceSMeters 不可用,不比较独立局部 PathS
  • TrajectoryObservationDynamicSnapshotBuilder.Build(...) 产生当前/上一轨迹、活动段/当前视界、八图、滚动或精确停车中文语义、真实终端 v/a、换向确认和交接状态;VisualizationCycleSummary 不含完整点数组。

验证命令与结果:

  1. REDdotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- trajectory-observation,退出码 1;首个有效断言为 static configuration group count expected 10 but was 4,证明原验证仅检查类型存在且静态导出未满足契约。
  2. dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- trajectory-observation,退出码 0,输出 PASS trajectory-observation
  3. dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- em-core-all,退出码 0,输出 PASS longitudinal-modelPASS longitudinal-integrationPASS trajectoryPASS em-planning-service
  4. dotnet run --project ClumsyPilot/tests/TrajectoryPlanningVisualizationVerificationHost/TrajectoryPlanningVisualizationVerificationHost.csproj,退出码 0,输出 PASS trajectory-planning-visualization
  5. rg -n "rolling publishes the two-second ST knot count|cycle 1 has nonzero terminal speed|jerk has N-1 intervals" ... 确认 rolling service 的 21 knot、非零末速断言和本阶段 jerk 20 区间断言均已纳入通过的入口。
  6. git diff --check 0a1cbe9^..cc6b0f1 -- <Task 45 路径>,退出码 0;已核对 0a1cbe9a7dde0fcc6b0f1 的精确文件树。

未运行的验证及原因:无。

已知警告或遗留问题:主项目构建仍报告两条既有 obsolete 警告,位于 MovementTests.TireFollowing.csLidar2dDetect2LegTray.LegWidthTireFollowing.csMultiWheelChassis.GetSteerWheels(),均不属于本阶段文件。一次并发启动三个验证宿主触发共享 DLL 写锁(CS2012/MSB3026);根因是并发构建,随后按串行方式重跑三条入口均通过,未修改代码规避该环境锁。

与原计划的偏差:原 Task 4–5 实现提交已存在但验证仅检查适配器类型可构造。本阶段以 TDD 增补真实行为断言并用 cc6b0f1 精确修正既有阶段文件;未扩大到 Task 6–7,也未启动网页会话、修改 Painter 生命周期或插件发布。

下一阶段注意事项:阶段 07 只执行集成计划 Task 6–7。应消费本阶段静态/动态快照构建器,添加网页发布熔断与可选 Painter 生命周期、插件 DLL 打包和操作文档;继续保持 OBSERVE_ONLY,不得把观察循环变为控制输出。