Files
ParkingRobot/docs/superpowers/handoffs/em-full-direction-visualization/phase-09.md
T

84 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# EM 完整方向段可视化修复 - Phase 09 交接
## 状态
自动验收完成但实车待验(2026-08-07)。本窗口完成了主计划 Task 11 和分阶段执行计划 Task 9 的文档、全量自动化与本地确定性 smoke;受监督实车清单未执行,`phase-09-vehicle.md` 未创建,整体验收不能视为完成。
## 目标与非目标
- 更新 MovementTest、EMPlanner、Web 三份 README,记录 full/rolling 开关、`s_end/T_end` 来源、速度与终端容差、图表语义、缩放、停止清理和 `OBSERVE_ONLY` 边界。
- 提交三份 README 后运行 Node DOM、可视化宿主、`trajectory-observation``em-all`、完整 build、执行器审计、`git diff --check` 和 60 秒本地 smoke。
- 未修改 Web/Painter 实现,未扩展规划功能,未进入 Phase 08 之前实现,未派生子智能体,未重新 brainstorming。
- 未执行实车观察;未把自动化或合成 smoke 证据写成实车验收。
## 入口事实
- 分支:`trajplanner`
- 入口 HEAD`26b6246360dd2ac7e3d54ba57207a753b9bc70a7`
- 上一阶段实现提交:`37c27bdb1b41502ad23783a041a42512b3a49648`
- 上一阶段交接提交:`26b6246360dd2ac7e3d54ba57207a753b9bc70a7`
- 祖先检查:`37c27bd``26b6246` 均为入口 HEAD 的可追溯祖先
- 本阶段文档实现提交:`88a66b8b2a1a4b548d5733d21e94f2fad73df1fe``docs: explain full-direction EM observation`
## 修改文件
- `ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/README.md`
- `ClumsyPilot/ParkrobTrajplanner/EMPlanner/README.md`
- `ClumsyPilot/TrajectoryPlanningVisualization/README.md`
## 文档事实
- `UseFullDirectionSegmentPlanning=true` 是 MovementTest 默认值,映射到 `EmPlanningScope.FullDirectionSegment`;每个活动方向段只发起一次冻结优化,随后重复发布同一轨迹与新鲜观察状态。
- `DistanceHorizonMeters``TimeHorizonSeconds` 只用于 `RollingHorizon` 截断;full 模式保留兼容字段但不使用它们截断。
- `s_end` 来自实际 Local G2 `PathS``T_end` 由可行加速度、巡航、jerk 限速停止和零速 hold 推导。
- 前进期望/硬上限为 `1.0 m/s`,倒车期望/硬上限为 `0.5 m/s`
- 真实边界成功需要终端停止、世界位置误差不超过 `0.03 m`、归一化 yaw 误差不超过 `5 deg``5 * PI / 180 rad`)。
- Web 是主观察界面;Native Painter 仅作为可选正确性/审计输出。
- README 记录了各图轴/单位、jerk `N-1` 规则、语义图层、边界标记和视口缩放;缩放只改变浏览器本地视口,不修改快照或向规划器发送参数。
- 关闭或断开浏览器不会停止观察;MovementTest 停止会回收 HTTP/SSE、端口和可选 Painter。
- MovementTest 不写底盘、转向、制动、电机或挡位命令,全程保持 `OBSERVE_ONLY`
## 自动化证据
| 命令 | 结果 |
| --- | --- |
| `npm test --prefix ClumsyPilot/tests/TrajectoryPlanningVisualizationWebDom` | 11/11 通过 |
| `dotnet run --project ClumsyPilot/tests/TrajectoryPlanningVisualizationVerificationHost/...` | `PASS trajectory-planning-visualization` |
| `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/... -- trajectory-observation` | `PASS trajectory-observation`,仅两个既有 obsolete 警告 |
| `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/... -- em-all` | 20 个组件全部 `PASS` |
| `dotnet build ClumsyPilot/ClumsyPilot.csproj -p:ExcludeLegacyAutoAvoidance=true` | 0 警告、0 错误 |
| `rg -n "SendXYThSpeed\|SendMotion\|DriveStop\|PredefinedDriveStop\|AccumulateSpeed\|SetGear\|SetBrake" ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest` | 无匹配,退出码 1 |
| `git diff --check` | 退出码 0,无新空白错误;仅仓库既有 LF/CRLF 提示 |
| 本地 smoke `--smoke-seconds 60` | 退出码 0,输出带 token 的 `http://127.0.0.1:1403/...`;结束后 `1403` 无监听 |
测试依赖 `jsdom` 使用 `npm ci` 按锁文件安装,运行后已删除生成的 `node_modules``package.json``package-lock.json` 未改动。
## 警告与已知偏差
- MovementTest UI 字段 `EnableNativePainterVisualization` 当前默认值为 `true`,而 `TrajectoryObservationSettings` 契约默认值为 `false`。文档已如实记录,并要求受监督车辆清单在实车会话前显式设为 `false`,除非另行审查。
- MovementTest UI 字段 `TimeHorizonSeconds` 当前默认值为 `20.0`,而设置契约默认值为 `2.0`full 模式推导 `T_end`,该值仅保留为滚动兼容输入。
- 未进行人工浏览器截图或真实 Painter 窗口检查;自动化证据来自 DOM 测试、C# 契约宿主和确定性 smoke 宿主。
- `trajectory-observation` 保留两个既有 obsolete 警告(`Lidar2dDetect2LegTray.LegWidth``MultiWheelChassis.GetSteerWheels()`),非本阶段引入。
## 保留的脏工作区与暂存内容
入口时已有的 `.gitignore``ClumsyPilot.csproj``EmPlannerConfiguration.cs`、PathSmoothing/CoarsePath 相关修改或删除、未跟踪目录及报告等全部保留,未回退或覆盖。本阶段未修改这些内容;提交 README 后暂存区为空。除本次 `phase-09.md` 外没有新增应跟踪文件。
## 未运行项与原因
- 受监督实车清单未运行:当前无可确认的受监督安全车辆环境。
- `phase-09-vehicle.md` 未创建:设计明确禁止用自动化或合成证据替代实车验收。
- 未进行人工浏览器/截图检查:smoke 仅作为确定性本机宿主证据。
## Phase 09 实车续验事实
下一窗口是 Phase 09 的实车续验窗口,不是新阶段:
- 仓库根目录:`D:\Users\Desktop\项目\prakrobot\ParkingRobot`
- 期望分支:`trajplanner`
- 启动时核对 `88a66b8b2a1a4b548d5733d21e94f2fad73df1fe` 与 Phase 09 handoff 提交均为祖先。
- 必读:本 handoff、主计划 Task 11 Step 4-6、分阶段执行计划 Task 9 Step 5-6;如相关代码在 handoff 后变化,先重跑受影响的自动化。
- 只允许创建 `docs/superpowers/handoffs/em-full-direction-visualization/phase-09-vehicle.md`,不得修改规划、Web、Painter、MovementTest 或 README。
- 按主计划八项清单执行;MovementTest 必须保持 `OBSERVE_ONLY`,不得通过操作真实底盘促成观察条件。
- 全部通过时状态写“完成”,提交消息 `docs: record EM visualization vehicle acceptance`;出现真实回归时状态写“阻塞”,提交消息 `docs: record blocked EM visualization vehicle acceptance`,并只输出同阶段恢复提示词。