4.7 KiB
4.7 KiB
EM 观察网页可视化阶段 06 交接
状态:完成
阶段目标:完成集成计划 Task 4–5 的 EM 静态/动态数据可视化适配,在不启动网页会话、不改变 Painter 生命周期或插件发布的前提下,为冻结配置、地图/路径、运动学图表和周期交接提供可验证的不可变快照。
基线提交:a7dde0f5e4c37438f775b706e3886ace00fe0e04;启动检查确认 b0b79e5 是祖先,分支为 trajplanner。
实现提交:
0a1cbe9feat: export EM observation configurationa7dde0ffeat: visualize EM rolling kinematicscc6b0f1fix: complete EM observation visualization contracts
修改文件:
ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationStaticSnapshotBuilder.csClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationKinematicChartBuilder.csClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationHandoffAnalyzer.csClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationDynamicSnapshotBuilder.csClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationVisualizationChecks.csClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationChecks.cs
新增或确认的接口:
TrajectoryObservationStaticSnapshotBuilder.Build(...)按固定十组顺序导出冻结生效配置、车辆/地图和网页/换向确认字段;占据图为 row-major、LSB-first 紧凑 bitset,静态数据包含粗路径、完整 Local G2、方向段与换向标记。TrajectoryObservationKinematicChartBuilder.Build(...)固定导出ls、st、curvature-s、curvature-t、velocity-t、acceleration-t、jerk-t、yaw-rate-t;jerk 仅有N-1个真实区间,LS 使用完整活动段的共享ReferenceS,ST 保留局部PathS。TrajectoryObservationHandoffAnalyzer.Analyze(...)使用EffectiveAtUtc + TimeFromStart采样,保留世界位置、速度、加速度差;仅在任一投影失败时使DeltaReferenceSMeters不可用,不比较独立局部PathS。TrajectoryObservationDynamicSnapshotBuilder.Build(...)产生当前/上一轨迹、活动段/当前视界、八图、滚动或精确停车中文语义、真实终端v/a、换向确认和交接状态;VisualizationCycleSummary不含完整点数组。
验证命令与结果:
- RED:
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- trajectory-observation,退出码1;首个有效断言为static configuration group count expected 10 but was 4,证明原验证仅检查类型存在且静态导出未满足契约。 dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- trajectory-observation,退出码0,输出PASS trajectory-observation。dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- em-core-all,退出码0,输出PASS longitudinal-model、PASS longitudinal-integration、PASS trajectory、PASS em-planning-service。dotnet run --project ClumsyPilot/tests/TrajectoryPlanningVisualizationVerificationHost/TrajectoryPlanningVisualizationVerificationHost.csproj,退出码0,输出PASS trajectory-planning-visualization。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 区间断言均已纳入通过的入口。git diff --check 0a1cbe9^..cc6b0f1 -- <Task 4–5 路径>,退出码0;已核对0a1cbe9、a7dde0f、cc6b0f1的精确文件树。
未运行的验证及原因:无。
已知警告或遗留问题:主项目构建仍报告两条既有 obsolete 警告,位于 MovementTests.TireFollowing.cs 的 Lidar2dDetect2LegTray.LegWidth 和 TireFollowing.cs 的 MultiWheelChassis.GetSteerWheels(),均不属于本阶段文件。一次并发启动三个验证宿主触发共享 DLL 写锁(CS2012/MSB3026);根因是并发构建,随后按串行方式重跑三条入口均通过,未修改代码规避该环境锁。
与原计划的偏差:原 Task 4–5 实现提交已存在但验证仅检查适配器类型可构造。本阶段以 TDD 增补真实行为断言并用 cc6b0f1 精确修正既有阶段文件;未扩大到 Task 6–7,也未启动网页会话、修改 Painter 生命周期或插件发布。
下一阶段注意事项:阶段 07 只执行集成计划 Task 6–7。应消费本阶段静态/动态快照构建器,添加网页发布熔断与可选 Painter 生命周期、插件 DLL 打包和操作文档;继续保持 OBSERVE_ONLY,不得把观察循环变为控制输出。