D-20261031-07|圓柱曲面支撐線段依法線方位¶
背景與驅動力¶
公版都市與叢林路段的頂面各由 32 片 0.5 m × 4 m 的細長三角形鋪成。輪胎每跨過兩片共面三角形的內部邊, 就被頂起 4~60 mm、俯仰最大 46°,雪地頂面只有兩片三角形則完全平穩(issue 001164)。CCD 開關、法線求解 順序政策、持續接觸政策與快速旋轉旗標對結果都沒有影響;地面節點合併(D-20261031-06)也不涵蓋同一節點 內的內部邊。
原生探針逐幀讀取流形後定位:跨邊那一幀,新三角形的接觸點落在內部邊上,離輪胎最低線 11~13 mm,
卻回報 0.1 mm 的穿入。vendored parry witness 在 Cylinder::local_support_feature_toward 把曲面線段與端蓋
一律以 GJK 見證點的方位角定向;見證點是圓柱離該邊最近的點,當內部邊的法線約束把方向投影成面法線後,
見證點仍停在朝向邊的方位,離面法線方向的支撐線整整一段弦長。線段被裁到邊上,回報的是支撐線在邊上的
深度,一個不存在的穿入,求解器便把車頂起。
考慮過的選項¶
- 甲:曲面線段依方向定方位角,端蓋才用見證點(採納)。 曲面線段就是朝
dir的支撐線,見證點方位角 只對端蓋的方形近似有意義(原註解的用意)。改動限於一個函式,法線沒被投影時兩種方位角相同、行為不變。 - 乙:跨流形暖啟動搬運。 研究中實作過:cluster 出現那一幀從 plain 流形種入暖啟動、依相對位移預測位置 配對。探針證實暖啟動不是成因(點本身位置與深度就是錯的),撤回不採。
- 丙:finalizer 把共面三角形重新三角化。 只減少內部邊、不根治,改列為後續減三角形最佳化。
決定¶
採甲。
sources/parry-witness/src/shape/polygonal_feature_map.rs:Cylinder與Cone的local_support_feature_toward在曲面分支改用feature_azimuth(dir, None),端蓋分支維持feature_azimuth(dir, Some(hint))。- 新增可攜回歸
regression/ccd2/tests/internal-edge-rolling.rs:輪胎尺寸圓柱沿共面細長條逐毫米查詢, 接觸點須在輪心正下方 1 mm 內、穿入等於實際值;受載圓柱以專案積分設定滾過細長條,抬升與衝量峰值 不得超過單片平板基準。 - kernel 離線鎖定重建,WASM 身分與 runtime 版本字串隨之更新;canonical 兩車黃金向量升為 revision-20,Node 與 Chromium 核對。
- 綁定層測試隨之校準:父代 kernel 場景 hash 釘值改為本 kernel 擷取值(暫時還原父代方位角可逐位元重現
父代七值,證明只差這一處);側躺圓柱反彈的角速度判準改為「每航向第一次反彈自旋 ≤ 5e-3 rad/s 且鏡像差
≤ 5e-3」(父代因見證點方位角誤差每航向帶 0.032 rad/s 假自旋、本 kernel ≤ 0.002,殘餘為浮點噪聲);
動態薄目標集合的幀末穿入只計在護板輪廓內的幀(繞出板緣時
contact回報的是與板角的重疊)。
後果與影響¶
- 合成細長條平板上的公版 speed 車:修正前 12 次事件、被拋起;修正後與單片平板相同。
- 圓柱對 trimesh 的接觸在法線被投影時才改變;其餘查詢逐位元同前。
- 場地碰撞閘 001051 暫列預期失敗的三格(A 直線貼牆 20°、B 地面 斜向 15°、B 地面 沿格線)在原判準下轉綠, 預期失敗標記移除;snowy-mixed8 600 幀不再觸發 bounded-step 細分,快照無損守門改只斷言發射與損毀覆蓋, 細分計數隨快照還原仍由 bounded-stall-world.spec.ts 以強制細分守門。
- 公版三場、完賽率基線與九組結算旅程需重量;pre_launch 無快照或帳本需保。
定案紀錄¶
2026-10-31 使用者裁決採乙(開發期優先根治)並授權改 kernel;研究以原生探針定位成因後採甲實作。