docs: record blocked EM full-direction phase 02 handoff
This commit is contained in:
@@ -102,3 +102,28 @@ dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerifi
|
||||
这说明阶段 02 的 schedule 消费路径尚未完成:`SequentialLongitudinalOptimizer.CreateExactStopSeed` 仍按旧的固定网格 seed 假设生成候选,未能生成与自适应 `input.KnotSchedule` 和实际 PathS 速度包络同时严格一致的 exact-stop seed。继续通过调整 fixture、增大 knot 数、放宽资源上限、回退滚动模式或改变阶段 03 静止起步逻辑都不安全且不符合计划。
|
||||
|
||||
恢复前需要对 seed 策略作出明确技术决定:允许阶段 02 在其已授权的 `SequentialLongitudinalOptimizer.cs`、`LongitudinalConstraintBuilder.cs`、`LongitudinalSolutionValidator.cs` 和允许测试文件内,设计并实现一个由 `input.KnotSchedule.ReferencePathS/ReferenceSpeedMetersPerSecond` 驱动、严格满足动态/速度包络/终端稳定尾的 full-scope exact-stop 初始候选;或由用户批准替代的等价最小策略。恢复窗口必须只处理该策略,不得进入阶段 03。
|
||||
|
||||
## 第三次恢复续行记录:可行动力学 reference 的架构阻塞
|
||||
|
||||
本恢复窗口重新执行了系统化根因调查并新增了 `LongitudinalModelChecks.VerifiesFullDirectionScheduleCarriesAFeasibleReferenceCandidate`。它要求完整方向段 schedule 显式携带与非均匀 knot 一致、满足真实 PathS 包络和 exact-stop hold 的 `ReferenceCandidate`,并验证改变发布周期不改变优化 knot 或 hold 边界。
|
||||
|
||||
首个有效 RED 是缺少 `ReferenceCandidate` 与 `TerminalHoldStartIndex` 的编译错误。实现这两个 schedule 契约后,最新有效失败可稳定复现为:
|
||||
|
||||
```powershell
|
||||
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- longitudinal-model
|
||||
```
|
||||
|
||||
失败断言:`adaptive schedule constructs a strict reference candidate`。诊断显示尝试的完整段 jerk reference 在真实 PathS 速度包络处被拒绝,例如 `S=0.4730000000000003, U=0.09, limit=0.08987114317838311`。这不是静止起步、终端世界位姿、MovementTest、Web 或 Painter 问题。
|
||||
|
||||
已排除的原因与尝试:
|
||||
|
||||
- 不是 scripted QP 分类夹具;此前已用真实 OSQP 复现无严格 warm start 时的不可行/超时。
|
||||
- 不是发布周期耦合;此前 `longitudinal-integration` 已证明 0.10/0.05 发布密度独立于优化 knot。
|
||||
- 不是单个 jerk 参数;已尝试最大 jerk 巡航后制动、全程三角 jerk、提前降速并接最大 jerk 停车,均在空间包络处失败。
|
||||
- 不能把 `PathSpeedLimitBuilder` 的停车包络从“最大正加速度”改为零加速度基线:既有 `VerifiesFinitePathSIndexedSpeedEnvelope` 立即失败,证明那会破坏已定义的保守停车模型契约。
|
||||
|
||||
根因是当前 Phase 02 schedule 只持有 `S/U` 参考,却同时要求一个严格 `S/U/A/J` candidate;而 `PathSpeedLimitBuilder` 的保守空间停止包络与任一单相/手工拼接 jerk profile 不等价。旧 `TryCreateExactJerkSeed` 也只在优化器内事后修补非均匀 schedule,不能作为 schedule 的可行性证明。继续调节 profile、容差、knot 数、资源上限或测试夹具会掩盖这一契约缺口。
|
||||
|
||||
安全影响:没有执行器、底盘、转向、制动、电机或档位写入被添加或调用;但在没有严格 candidate 的情况下,完整方向段不得发布为成功。
|
||||
|
||||
精确恢复范围:仅在 Phase 02 已授权 Longitudinal 文件内定义一个由完整 `PathSpeedLimit` 与非均匀 `KnotTimes` 联合求解的 deterministic feasibility projection(其输出为严格 `S/U/A/J` reference candidate),再由 schedule/optimizer/validator 共用该结果。该 projection 必须保留 `PathSpeedLimitBuilder` 的既有保守包络契约,不能改为零加速度包络;必须显式携带停车 hold 起点;不得实现 Phase 03 的静止起步、NoProgress 或终端世界位姿门禁。恢复前应先为该 projection 写独立 RED,而不是继续调节现有单相 profile。
|
||||
|
||||
Reference in New Issue
Block a user