Changes

Summary

  1. fix:内存问题修复测试 (details)
  2. fix:内存问题修复测试 (details)
  3. feat: SSEP: 调整集卡多段倒车拉直逻辑 (details)
  4. fix: Keb: 调整避障参数,解决距离障碍物距离太近的问题 (details)
  5. fix: SSEP: remove strcat (details)
  6. fix: destination distance exception (details)
  7. block: 过滤本车自己上报的堆高机作业区(stackerWork_*_本车ID) (details)
  8. block: 过滤本车自己上报的堆高机作业区(stackerWork_*_本车ID) (details)
  9. ssep: 进场景计划区域合并起点框时校验面积, 防止区域轮廓被 sanitize 丢弃后只剩起点框 (details)
  10. boundary: 路口边界改用多边形 SL 投影, 修复异形路口边界错误(灰度默认关) (details)
  11. fix:出堆场 直接open sapce上码头面搜索起点不合适的bug (details)
  12. ssep: 删除路口终点位姿的车头点框内回退校验 (details)
  13. feat:删除打印的日志 (details)
  14. fix: 禁用前向搜索设置中的 theta 功能 (details)
  15. fix: imv wbca smooth mode bug (details)
  16. ssep: 进场景计划区域合并起点框时校验面积, 防止区域轮廓被 sanitize 丢弃后只剩起点框 (details)
  17. fix:出堆场 直接open sapce上码头面搜索起点不合适的bug (details)
  18. ssep: 删除路口终点位姿的车头点框内回退校验 (details)
  19. feat:删除打印的日志 (details)
  20. fix: 禁用前向搜索设置中的 theta 功能 (details)
  21. fix: wbca direct link mode bug (details)
  22. fix: wbca velocity profile bug (details)
  23. fix: wbca velocity profile bug (details)
  24. feat: 适配云端access line (details)
  25. boundary: OGM 真值入栅格+贴边位编码, 修无障碍走廊边界内缩 (details)
  26. feat: 云端pnc config适配access line转换, 补HMI绘制与收包打印 (details)
  27. fix: 修正云端访问线路的yard_id赋值 (details)
  28. fix: Keb: 修复Warm start频繁失败的问题 (details)
  29. fix: 修正云端配置中access line的yard_id赋值 (details)
  30. fix: Align FSM超距退出3/4阶段时更新need_spreader_align_计数, 防止重回3阶段 (details)
  31. perf: OGM精细碰撞采样点分级去重, 控制序列化体积 (details)
  32. fix: Guardian锁站区域退出改为锚定车尾(带挂取挂车尾), 途径点单点前后扩展近似锁站区间, 防止车尾未过锁站障碍物提前退出 (details)
  33. fix: Align FSM超距退出3/4阶段时更新need_spreader_align_计数, 防止重回3阶段 (details)
  34. perf: OGM精细碰撞采样点分级去重, 控制序列化体积 (details)
  35. fix: Guardian锁站区域退出改为锚定车尾(带挂取挂车尾), 途径点单点前后扩展近似锁站区间, 防止车尾未过锁站障碍物提前退出 (details)
  36. fix: 恢复union region异步计算, latch结果消费即释放治理内存驻留 (details)
  37. perf: 回放同帧降频节流, 暂停/停在末帧时避免循环满频重复计算, 改参数仍0.5s内重算生效 (details)
  38. fix: 远程单次直线步进END后不退出循环重回MOVE (details)
  39. feat: 走廊边界按gap端点来源差异化内缩(corridor_buffer_*), 钳制保DP路径可行 (details)
  40. fix: park子状态机收普通任务卡死PARK_MOVE无法退出 (details)
  41. fix: 空Path取点断言与退化lane segment构造CHECK线上崩溃, 改优雅降级 (details)
  42. fix: Path/DiscretizedPath 空与单点场景既有隐患修复 (details)
  43. fix: 堆场内open space场景误报REGION_OUT_BRIDGE提前降安全阈值, 改按guide line查挂尾所在路段类型, 挂出堆场后再切换 (details)
  44. fix: MatchPtByS 对超末端 s 解引用 end() 迭代器的未定义行为 (details)
  45. feat: 障碍决策模块化, 运动状态迟滞+label消抖+准入谓词单一源 (details)
  46. feat: 动态障碍时间对齐边界收窄+会车旁路(灰度 use_dynamic_bound_clamp) (details)
  47. feat: side-pass trace 增加动态收窄漏斗与逐障碍投影明细 (details)
  48. fix: Station2Align 补齐准入过滤, 防不该进align场景绕道从station复入 (details)
  49. feat: 绕行决策加固一轮(误绕行治理+类型策略+动作承诺+限速补全) (details)
  50. fix: 绕行DP转移预剪放宽, 治偏置起点+畸短首段致l=0直行走廊不可达误绕行 (details)
  51. feat: 绕行动作承诺加实际横向执行门槛(防空承诺固化误绕行) (details)
  52. feat: 类型策略灰度默认开启(use_sidepass_type_policy 默认 true) (details)
  53. feat: 直道正面逆向车走会车收窄让行, 不再 BLOCK 死等 (details)
  54. chore: 会车收窄封顶 dyn_clamp_meeting_depth_cap 默认 0.8→0.9(收窄更紧) (details)
  55. fix: 补 NARROW_MEETING_SPEED_LIMIT 登记, 修 CreateNarrowMeetingConstrain 断言崩溃 (details)
  56. feat: 会车逆向道窄时不借道让行(纯逻辑判场景+走廊左界渐变钳) (details)
  57. feat: 烟台车内/柱子/房子点云及下沉坑点适配 (details)
  58. fix: 会车让行逆向道几何改用 guide 系断面, 钳制线改为逆向道近边界 (details)
  59. feat: HMI快照按钮触发发SNAP录包(关掉决策结果保存) (details)
  60. feat: 窄会车主动贴右让行(走廊左界钳到对向车近侧)+修急停判定两处笔误 (details)
  61. perf: 窄会车贴右就近查改单调游标(O(n²)→均摊O(n)), 诊断日志降频 (details)
  62. feat: 新增镇石(ZHEN_SHI)站点地理围栏, IMV前进进出站复用西联场景 (details)
Commit f2465adad2f30214486ed6c3cc446b6e77660e9f by haoxiangtao
fix:内存问题修复测试
The file was modifieddata/map/envelop/map_envelops.cpp
Commit 8d8fc8fe71f58f96d192b653849d57121839fec6 by haoxiangtao
fix:内存问题修复测试
The file was modifieddata/map/envelop/map_envelops.cpp
Commit 21a0e06624f66dc6703d77bd676c5703caf4fc77 by tangwenqing
feat: SSEP: 调整集卡多段倒车拉直逻辑

The file was modifiedssep/scenarios/tractor_trailer_multi_segment_parking_planner.h
Commit 4d3241f90aeda494cce7064f1ee3afdfa6991103 by tangwenqing
fix: Keb: 调整避障参数,解决距离障碍物距离太近的问题

The file was modifiedtasks/plan/keb_lane_follow_path_task.cpp
The file was modifiedoffboard/keb_path_opt_cli/keb_scene_converter.cc
Commit 705d55953bfa28c60e7c32205a25fce0642c4088 by tangwenqing
fix: SSEP: remove strcat

The file was modifiedssep/scenarios/tractor_trailer_multi_segment_parking_planner.h
Commit 4b940c29b51dd847bea5729ac85f01c9b5837b2d by chenran
fix: destination distance exception
The file was modifieddata/map/pnc_map/routing_extension/routing_data.cpp
Commit c87ab5c742c1ab47bbb67327191b68d32269ec0e by wuyanjun110
block: 过滤本车自己上报的堆高机作业区(stackerWork_*_本车ID)
The file was modifieddata/obstacle/block.cpp
Commit 72cb8313bcdb67e98625e34abb90fc48dac09efb by wuyanjun110
block: 过滤本车自己上报的堆高机作业区(stackerWork_*_本车ID)
The file was modifieddata/obstacle/block.cpp
Commit 2c663fc2e3eb7ba04d86a73d6c074e7ef2fd6b61 by wuyanjun110
ssep: 进场景计划区域合并起点框时校验面积, 防止区域轮廓被 sanitize 丢弃后只剩起点框
The file was modifieddata/ssep/into_yard_junction_ec.cpp
Commit a156a6dbb9763d6fb15daf0e957a4dce81d11ac2 by wuyanjun110
boundary: 路口边界改用多边形 SL 投影, 修复异形路口边界错误(灰度默认关)

旧逻辑逐点垂线射线与手工过滤的多边形边集求交, 对凹形/异形路口取
最近交点语义错误, 门边剔除脆弱, 单点失败兜底值无限传播。

新增 PolygonSLProjector: 将路口多边形/envelope 轮廓离散投影到
guide line SL 系逐格聚合左右边界。要点:
- 门区(出入口 ±gate_window)样本一律不采信, 防异形门口的门柱顶点
  把 l≈0 砸进门口格子(实车日志实证)
- 横跨 guide line 且交叉点落在门区内的门边整条剔除
- max_slope=3.0 限坡磨尖刺, 不削直角外凸的可行驶区
- max_lateral=50 覆盖大路口敞开区, 避免人为截断走廊
- 出入口不与车道宽度混合, 门口宽度台阶是放宽方向, 与旧逻辑一致

顺手修复 Path::GetProjection s_range 窗口两处隐藏 bug(上界 fmax
应为 fmin; 平方距离误与 50.0 比较), 新增显式窗口投影接口
GetProjectionInRange(不回退全线扫描)。

开关 use_func_junction_boundary_sl_projection 默认关闭; 开启时
每帧输出 [sl_bd] 新旧对比与边界表摘要日志, 供灰度期 replay 排查,
默认打开后随旧射线路径一并清理。

单测 pnc_polygon_sl_projector_test(-DPNC_BUILD_TESTS=ON) 覆盖
矩形/凹形/直角外凸/门柱坑/单侧无约束/退化输入与窗口投影。
The file was addeddata/boundary/polygon_sl_projector.cpp
The file was modifieddata/common/path.cpp
The file was addeddata/boundary/polygon_sl_projector_test.cpp
The file was modifieddata/boundary/road_boundary.cpp
The file was modifieddata/config/cfg_func_sw.hpp
The file was modifiedCMakeLists.txt
The file was modifieddata/config/cfg_func_sw.cpp
The file was modifieddata/boundary/road_boundary.hpp
The file was modifieddata/common/path.hpp
The file was addeddata/boundary/polygon_sl_projector.hpp
Commit 9b202b39519038925ea10704abad7c572fc8c21a by wuyanjun110
fix:出堆场 直接open sapce上码头面搜索起点不合适的bug
The file was modifieddata/map/reference/reference_line.cpp
The file was modifieddata/map/reference/reference_line.hpp
The file was modifieddata/ssep/open_space_ec.cpp
Commit 0528362a8f7311d237c27a23d17b41227443cddb by wuyanjun110
ssep: 删除路口终点位姿的车头点框内回退校验

终点区域已扩大且终点支持动态调整, 该直矩形点包含校验失去保护意义,
且在出口车道大曲率时误杀(回退到停止线得到未拉直的终点位姿)。
The file was modifieddata/ssep/normal_junction_ec.cpp
Commit fb51a26b1bdd53e3f14d69ad32617986390f2833 by wuyanjun110
feat:删除打印的日志
The file was modifiedssep/maps/ogm.cc
Commit a8c764bfaa62b8a6fd5f3ae8525f2f040260ff66 by wuyanjun110
fix: 禁用前向搜索设置中的 theta 功能
The file was modifieddata/config/cfg_func_sw.cpp
Commit 753c91b3c2828e366752290b615b03dd2503db2b by chenran
fix: imv wbca smooth mode bug
The file was modifiedalgorithm/wbca/imv_wbca_manager.cpp
Commit db9852088a8685659c5d2a514467f0c3a043a94d by wuyanjun110
ssep: 进场景计划区域合并起点框时校验面积, 防止区域轮廓被 sanitize 丢弃后只剩起点框
The file was modifieddata/ssep/into_yard_junction_ec.cpp
Commit 334f7e6b591f70224a2ce59a9bf77c8e5f92ec64 by wuyanjun110
fix:出堆场 直接open sapce上码头面搜索起点不合适的bug
The file was modifieddata/map/reference/reference_line.cpp
The file was modifieddata/map/reference/reference_line.hpp
The file was modifieddata/ssep/open_space_ec.cpp
Commit 2b8475bdb14b662acfee2cb39481684d3113ae6a by wuyanjun110
ssep: 删除路口终点位姿的车头点框内回退校验

终点区域已扩大且终点支持动态调整, 该直矩形点包含校验失去保护意义,
且在出口车道大曲率时误杀(回退到停止线得到未拉直的终点位姿)。
The file was modifieddata/ssep/normal_junction_ec.cpp
Commit 8328dcf4d1ffd9899770b804a78dc318a6700d42 by wuyanjun110
feat:删除打印的日志
The file was modifiedssep/maps/ogm.cc
Commit dce71e2b8c063039797da73999b2986ad4e6f52d by wuyanjun110
fix: 禁用前向搜索设置中的 theta 功能
The file was modifieddata/config/cfg_func_sw.cpp
Commit 7a2e36942a4c2b3bf93b0d98d1a6340e31595aeb by chenran
fix: wbca direct link mode bug
The file was modifiedalgorithm/wbca/wbca_manager.cpp
The file was modifiedalgorithm/wbca/wbca_manager.hpp
The file was modifiedalgorithm/wbca/imv_wbca_manager.cpp
Commit 7aae25bd393db481ed8f8640a5caec04821f7546 by chenran
fix: wbca velocity profile bug
The file was modifiedalgorithm/wbca/linear_velocity_generator.cpp
Commit f85431cb05e0e7c164cf3be366a708c89e795640 by chenran
fix: wbca velocity profile bug
The file was modifiedalgorithm/wbca/linear_velocity_generator.cpp
Commit 360e40ff32048f35c5c75bcd9f4be93ab6768510 by tangwenqing
feat: 适配云端access line

The file was modifieddata/vehicle/cloud_pnc_config.hpp
The file was modifieddata/ssep/ssep_ec.hpp
The file was modifieddata/ssep/ssep_ec.cpp
Commit 213b9b1ba2fdfd2c2cca12ee810cd90698c7167a by wuyanjun110
boundary: OGM 真值入栅格+贴边位编码, 修无障碍走廊边界内缩

旧的贴边点云改标 200 方案用无符号距离带, 边界内侧真障碍点云也被吞成
道路(限速被豁免+不发绕行+HMI 显示错), 且写入时销毁真源。改为:

- 点云一律写真实灰度(253/255); BuildOgm 构建有符号边界带 mask(外侧
  0.75m+内侧 2 格离散容差), ConstructDistanceMap 给占用像素打
  kOccInBandBit 高位, 低 7 位保真源, 消费端各自解释: 限速豁免
  in_band 亦豁免; DP 软罚按真源档(贴边点云 underlying 1.0m > 几何墙
  road 0.3m, 观测优先于几何), in_band 只豁免硬判; gap 分型贴边点云
  归 ROAD 不发绕行
- Gap::Source 扩 7 值与 OccSource 数值一一对齐, side 判定改
  IsBoundarySource(ROAD||DITCH), HMI DP 窗 7 桶分色, trace 数值语义
  同步(旧 dump 不兼容)
- 修无障碍下走廊边界内缩(路口张开区不跟随/直线段锯齿/加点反而外扩):
  挖窗豁免 ROAD(墙斜连线平坦垂距区被误判局部极小整片挖占用);
  墙折线宽度突变阶梯化(斜连线贴线带啃噬 ~0.2*Δl);
  扫描端点带 0.3m 内纯几何墙豁免(封边由扫描范围表达, 消像素基线锯齿);
  EMA 匹配容差 0.6→0.35(防历史系统性偏差持续混入不收敛)
- HMI DP 窗加 shift 边界白点线(gap 端点对比定位内缩来源)
The file was modifiedhmi/widget/dp_decision_detail.hpp
The file was modifieddata/dp_poly_path/decision_trace.hpp
The file was modifiedhmi/widget/dp_decision_detail.cpp
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifieddata/obstacle/ogm.cpp
The file was modifieddata/obstacle/ogm.hpp
The file was modifieddata/boundary/driving_corridor.hpp
The file was modifieddata/dp_poly_path/trajectory_cost.cpp
Commit 86128a399f44d1f70d71b1cb91cd19c8ec03043d by wuyanjun110
feat: 云端pnc config适配access line转换, 补HMI绘制与收包打印
The file was modifiedhmi/draw/draw_map.cpp
The file was modifiedsource/ros_source_pnc_config.hpp
The file was modifieddata/vehicle/cloud_pnc_config.hpp
The file was modifiedsource/ros_source_pnc_config.cpp
The file was modifieddata/vehicle/cloud_pnc_config.cpp
Commit 03260cb307241474583031ba804545e680c3466c by wuyanjun110
fix: 修正云端访问线路的yard_id赋值
The file was modifieddata/vehicle/cloud_pnc_config.cpp
Commit e2f0c15e9a21b38099c5448c01e4b4e244f4d386 by tangwenqing
fix: Keb: 修复Warm start频繁失败的问题

The file was modifiedalgorithm/plan/keb_optimizer.cpp
Commit 44d902e0bf0b25cdb826c586914fcaf8958e3900 by wuyanjun110
fix: 修正云端配置中access line的yard_id赋值
The file was modifieddata/vehicle/cloud_pnc_config.cpp
Commit 824daf8445e92722d6ce546b2e8a03a11c876376 by wuyanjun110
fix: Align FSM超距退出3/4阶段时更新need_spreader_align_计数, 防止重回3阶段
The file was modifieddata/app/fsm/task_fsm/task_align_fsm/task_align_fsm.cpp
Commit 4f361ae47bc58a4dca72f5bed937aac4e62e5974 by wuyanjun110
perf: OGM精细碰撞采样点分级去重, 控制序列化体积

精细碰撞开启时采样点不再全量保留:
- 引导线路径带(半径12m, 1m粗块掩码)内按1/4 cell子格去重,
  位置误差上界约3.5cm, 每cell至多16点
- 路径带外及无引导线时退化为每cell仅保留首点(等同旧抽稀密度)
- 栅格写入逻辑不变, 仅瘦身采样点集; 精细开关关闭时行为不变
- 顺手收拢龙须/上下层四处重复写入分支为AddPoint
The file was modifiedplan/prepare/prepare_ogm.hpp
The file was modifiedplan/prepare/prepare_ogm.cpp
Commit 41119aa52d08f3d36a58e0f0bd5bd9e77c269c67 by wuyanjun110
fix: Guardian锁站区域退出改为锚定车尾(带挂取挂车尾), 途径点单点前后扩展近似锁站区间, 防止车尾未过锁站障碍物提前退出
The file was modifieddata/vehicle/lock_station_data.cpp
Commit 211ee4a470c1d5d83dafe07ea65bb65fef432a7d by wuyanjun110
fix: Align FSM超距退出3/4阶段时更新need_spreader_align_计数, 防止重回3阶段
The file was modifieddata/app/fsm/task_fsm/task_align_fsm/task_align_fsm.cpp
Commit 037d24ad730656b6b84ce85ecd9ff179d1e6286f by wuyanjun110
perf: OGM精细碰撞采样点分级去重, 控制序列化体积

精细碰撞开启时采样点不再全量保留:
- 引导线路径带(半径12m, 1m粗块掩码)内按1/4 cell子格去重,
  位置误差上界约3.5cm, 每cell至多16点
- 路径带外及无引导线时退化为每cell仅保留首点(等同旧抽稀密度)
- 栅格写入逻辑不变, 仅瘦身采样点集; 精细开关关闭时行为不变
- 顺手收拢龙须/上下层四处重复写入分支为AddPoint
The file was modifiedplan/prepare/prepare_ogm.cpp
The file was modifiedplan/prepare/prepare_ogm.hpp
Commit 50a557ba5ed0e80690bfb2284a4aed695e47745e by wuyanjun110
fix: Guardian锁站区域退出改为锚定车尾(带挂取挂车尾), 途径点单点前后扩展近似锁站区间, 防止车尾未过锁站障碍物提前退出
The file was modifieddata/vehicle/lock_station_data.cpp
Commit c3d8a6c116c0a9e8f4ff69bf5904033acab647a1 by wuyanjun110
fix: 恢复union region异步计算, latch结果消费即释放治理内存驻留

- CreateUnionRegion恢复std::async异步, polygons改move捕获少一份拷贝
- latch结果消费一次即move取走并shrink_to_fit释放, 不再常驻AsyncUnionRegionState
- 重建路径不再预清union_region_/重建async_state, 异步未就绪时沿用上一帧轮廓
The file was modifieddata/map/envelop/map_envelops.cpp
Commit d749b4221ec4750bc1d19a2308f5c31730545b71 by wuyanjun110
perf: 回放同帧降频节流, 暂停/停在末帧时避免循环满频重复计算, 改参数仍0.5s内重算生效
The file was modifiedreplayer/logic.cpp
Commit 46f793d6f300e33aa0d19b0a6c518d26f886bfd1 by wuyanjun110
fix: 远程单次直线步进END后不退出循环重回MOVE

UpdateFSMState 每周期被调两次(pilot_update 一次, 失败 stage 经
ResetSuccessorTasks 仍强制执行的 MOTION_FSM_TASK 一次), fsm_interface
的 last_motion_sub_state_type 被第二次快照拍平, REMOTE_MOVE->REMOTE_END
边沿被吞, is_need_increase_remote_idx_ 永不置位, cur_remote_idx_ 不推进,
finishReqRemoteCtrl 不触发, REMOTE_END 停 remote_align_stop_sec 后经
RemoteInit 无条件重回 REMOTE_MOVE 直至超时.

prepare 改为自持上周期 remote 子状态判 END 进入沿, 不再依赖
fsm_interface 的 last_*; REMOTE_STOP 跳过判断同步替换恢复原语义.
The file was modifiedplan/prepare/prepare_status.cpp
The file was modifiedplan/prepare/prepare_status.hpp
The file was modifieddata/app/fsm/motion_fsm/motion_remote_fsm/motion_remote_state.hpp
Commit 74b035a35b095b2e5650e2eb298b03fd8d46b143 by wuyanjun110
feat: 走廊边界按gap端点来源差异化内缩(corridor_buffer_*), 钳制保DP路径可行

- GenerateBoundary: 选中gap端点按来源查buffer内缩(道路/沟点小, 点云/实体/预测框大),
  钳制到容得下DP路径(车中心±半宽+0.3 slack, 覆盖WBCA Dilated每侧0.2m侵蚀), 只缩不反转;
  贴障/起步时要求的预留自适应压到实际余量, 不做近自车渐变(避免越接近障碍预留越衰减);
  DP无路径降级帧不内缩, 保持原始边界
- 新增raw_path_bound(未内缩原始端点): path_bounds/trailer_path_bounds_decider的
  区域相等性判定(bound==shift宽)改读raw, 防内缩翻转is_in_obstacle_region分支
- cfg_lat_plan新增6个corridor_buffer_*参数(rosparam, 序列化v5), 类内初始化0兜底
  老dump反序列化(v<5跳过字段落0=不内缩=复现老行为)
- BuildGaps拆出BuildGapAt(单gap构建), 免每断面整表分类; 挂车半宽提TrailerAwareHalfWidths
  与GetSpeedLimitsAndDistances共用
The file was modifiedtasks/deciders/lat_decider/trailer_side_pass_decider.cpp
The file was modifieddata/config/cfg_lat_plan.cpp
The file was modifieddata/config/cfg_lat_plan.hpp
The file was modifiedtasks/deciders/lat_decider/path_bounds_decider.cpp
The file was modifiedreplayer/replayer_data_process/replayer_data_process.cpp
The file was modifiedtasks/deciders/lat_decider/trailer_path_bounds_decider.cpp
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifieddata/boundary/driving_corridor.hpp
The file was modifiedtasks/deciders/lat_decider/side_pass_decider.cpp
Commit 8f7e94a46edce22ff96ee1be076fdc8031d6b153 by wuyanjun110
fix: park子状态机收普通任务卡死PARK_MOVE无法退出

bulk分支(FSM_TYPE_B)在PARK_LOCK收到无散货途径点的普通任务时,
Lock2Init/Init2Move仅凭routing标志放行进入PARK_MOVE, 而该态下
Move2Adjust(需bulk_in点)与Park_Bulk2Travel(需bulk_out点)恒假,
只能靠再次取消任务解锁(实车卡死近4小时):
- Lock2Init/Init2Move补散货途径点检查, 普通任务不再进入死区
- Park_Bulk2Travel新增逃生: 新任务无任何散货途径点且地图可用时退回TRAVEL

同修停车场分支(FSM_TYPE_A)同类隐患: Park_Park2Travel对PARK_MOVE
放行新routing逃生, 但带双卡死判据(switch恒KEEP+停留超20s),
正常进位途中刷新停车任务不受影响

另补EnumType2String缺失的E_TASK_FSM/E_MOTION_FSM映射,
日志不再把正常事件误打成E_NO_STATE
The file was modifieddata/app/fsm/task_command_type.cpp
The file was modifieddata/app/fsm/task_fsm/task_park_fsm/park_fsm_transition/bulk_transition.cpp
The file was modifieddata/app/fsm/task_fsm/task_fsm.cpp
Commit f7ecf7b1dee5d6720bc871d7301910b4d6fd3b39 by wuyanjun110
fix: 空Path取点断言与退化lane segment构造CHECK线上崩溃, 改优雅降级

- Path::GetIndexFromS/GetSmoothPoint 空路径不再fatal, 返回默认值并记ERROR日志
- PncMapPath lane segment构造函数点数不足2时清空path_points_留无效path,
  下游经IsAvailable安全降级, 不再CHECK崩进程
The file was modifieddata/common/path.cpp
The file was modifieddata/map/pnc_map/pnc_map_path.cpp
Commit f8233babbba259246c3ed95227f6b9e2a070d600 by wuyanjun110
fix: Path/DiscretizedPath 空与单点场景既有隐患修复

- Path::Reset 补清 length_/num_sample_points_, 防复位后陈旧值残留
- path.hpp 给 num_sample_points_/length_ 加类内默认值, 防默认构造读未初始化垃圾
- Path::InitPoints 单点路径不再越界访问 path_pts_[-1]
- DiscretizedPath::GetPathPtFromS/GetPathPtIdxFromS 空容器 front() UB 改空判降级,
  Evaluate/EvaluateReverse 的 CHECK(!empty()) fatal 同步改 LOG(ERROR)+默认点
The file was modifieddata/common/path.hpp
The file was modifieddata/common/path.cpp
The file was modifieddata/common/path_point.cpp
Commit 6087fa2830942d05011e37f9971570f912f11c23 by wuyanjun110
fix: 堆场内open space场景误报REGION_OUT_BRIDGE提前降安全阈值, 改按guide line查挂尾所在路段类型, 挂出堆场后再切换
The file was modifiedplan/prepare/prepare_status.cpp
Commit 6762d53f760e626f1471f94fdd2ee82ef093e505 by wuyanjun110
fix: MatchPtByS 对超末端 s 解引用 end() 迭代器的未定义行为

lower_bound 落在 end() 时原代码用 *end() 参与外插, 读垃圾内存, 结果不可信
且可崩溃; 与 MatchPtByt 的同款历史修复对齐, 夹到末点返回, 并补 size<2 的
begin 分支越界保护。动态边界收窄的 arrive_t 反查每帧命中该分支, 既有
cloud_trajectory/trajectory_combiner 调用点同受益。
The file was modifieddata/common/trajectory_point.cpp
Commit b9defc7cc8a6bd2c81866bf3e0ebfc67f944ffd5 by wuyanjun110
feat: 障碍决策模块化, 运动状态迟滞+label消抖+准入谓词单一源

新增 data/obstacle/decision/: ObstacleDecider 循环体收敛为 obstacle_decision::
Update(决策态继承→运动状态估计→Base/Label 决策→label 消抖)。

- 运动状态估计治动静误判误绕行: 感知 is_static 是 1km/h 单帧阈值, 测速置零
  即翻转, 走静态标签分支引发误绕行。改用 his_states 15帧均值速度 + 3s 窗
  净位移证据(≥0.8m, 滤 bbox 遮挡抖动) + 非对称迟滞(判动3帧/判静10帧);
  UNDETERMINED 回落感知 is_static, 真静障首帧即走静态通道。
- direction 修复: 投影失败返 0 误判 REVERSE(同向车被当对向画反向延伸/污染
  长决策)。改 +0.3/-0.15 非对称死区, 死区内保持上帧值。
- label 消抖: 收紧立即生效, 放松需连续 5 帧确认。
- 决策态继承走 Update 内 InheritDecisionState 而非 Obstacles::FromHis:
  后者全 stage 无条件跑, 会在不调度 OBSTACLE_DECIDER 的 stage 残留旧值。
- 准入谓词统一: IsDpDynamicCandidate/IsCorridorGridObstacle 单一事实源,
  DP 动态盒与 KEB 走廊消费端只调用不自判。
- ObstacleHisStates 加 velocity_filter_available(): MeanFilter 空缓存取均值
  LOG_ASSERT 直接崩, 且该滤波器不参与序列化(回放载入恒空), 消费前必查。
- debug_str 增加运动状态标记(U_/S_/M_)。attr 序列化升 v3。
The file was modifieddata/obstacle/obstacle.hpp
The file was addeddata/obstacle/decision/obstacle_decision.cpp
The file was modifieddata/dp_poly_path/trajectory_cost.cpp
The file was addeddata/obstacle/decision/obstacle_decision.hpp
The file was modifiedtasks/plan/keb_utils.cpp
The file was modifiedtasks/deciders/other_decider/obstacle_decider.cpp
The file was modifieddata/obstacle/obstacle_decider_attr.cpp
The file was modifieddata/obstacle/obstacle_decider_attr.hpp
Commit 4c6347125137a837135fd420306b5564fb539b50 by wuyanjun110
feat: 动态障碍时间对齐边界收窄+会车旁路(灰度 use_dynamic_bound_clamp)

DP 有时间参数化的动态碰撞 cost 但 path_bound 只由静态化 OGM 切出, 动态避让
仅经 ref_l 软引导进 WBCA, 平滑权重把绕行量拉回。GenerateBoundary 在静态内缩
后追加动态收窄:

- 同向车时间对齐投影: 自车到达时刻按上帧轨迹反查(与 DP 同口径), 回放/首帧
  退化匀速映射(下限步速 1.5m/s, 防起步覆盖塌缩); 预测横向漂移限幅采信在
  当前实测 l ± min(0.5·t, 1m), 防邻道预测线漂移把直道路径挤偏。
- 对向车会车旁路(dyn_clamp_meeting_bypass): 常被弯道/航向门打成 IGNORE 但
  会车交互仍在, REVERSE+FRONT/SIDE+确认运动独立于 label 进收窄(不进 DP 盒
  不改绕行决策); 弃时间对齐用 6s 扫掠包络(低速会车两车到达时刻天然错开),
  豁免横向限幅(弯道对向车 Frenet 横移是真实几何), 收窄深度封顶半富余。
- 安全阀: 只收窄不翻转绕行侧, 下限=DP路径±半宽+slack, 车前 5m 起步豁免,
  K=3/M=5 帧锁存消抖(锁存迁移不受单帧降级门控, 防会车中途边界抖动)。
- 障碍 SL 半宽取 fabs: GetSLBoundary start/end 顺序未归一化, 裸减得负宽会
  把占用区间整段丢弃(根治待源头归一, 见审计记录)。
- 观测: 障碍 debug_str 追加 _D<C|B><H><A>:<n> 漏斗标记(幂等, 防回放重算
  累积); trailer 走廊共用对象但不参与收窄不触碰锁存。
- 灰度默认关(rosparam use_dynamic_bound_clamp, 验证需显式开)。
The file was modifiedtasks/deciders/lat_decider/side_pass_decider.cpp
The file was modifiedreplayer/replayer_data_process/replayer_data_process.cpp
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifieddata/boundary/driving_corridor.hpp
The file was modifiedtasks/deciders/lat_decider/trailer_side_pass_decider.cpp
The file was modifieddata/config/cfg_lat_plan.hpp
The file was modifieddata/config/cfg_lat_plan.cpp
Commit 613bb76c1c04a61369d8cf718abbdd3ac5273f35 by wuyanjun110
feat: side-pass trace 增加动态收窄漏斗与逐障碍投影明细

dyn_dbg 漏斗行(enabled→cand/bypass→arrive→hit→active→clamped, 哪层归零卡
哪层) + dyn_notes 逐障碍投影统计(预测 s/l 范围/swept/inter/被拒原因) +
断面级 dyn_* 收窄快照; dump 移到 GenerateBoundary 之后以带出收窄结果。
排查'为什么没收窄'先看这两处。
The file was modifieddata/dp_poly_path/decision_trace.hpp
The file was modifieddata/dp_poly_path/decision_trace.cpp
Commit 5e94cf0938c76aee4944c9521d1073f2e917a140 by wuyanjun110
fix: Station2Align 补齐准入过滤, 防不该进align场景绕道从station复入
The file was modifieddata/app/fsm/task_fsm/task_fsm.cpp
Commit 5d4c8178edc1a0a13f8a08bd4e556f43e4ac96cf by wuyanjun110
feat: 绕行决策加固一轮(误绕行治理+类型策略+动作承诺+限速补全)

- DP 动态碰撞时域修复: num=5.0/0.5 却按 0.1 步进致实际只看 1s, 收成
  编译期单源 kDynEvalDtS/kDynHorizonS(5s), 让 DP 及早为对向车主动让行
- 动态障碍边界时间对齐收窄 + 会车 MEETING label 化 + 投影策略集中
  (对向扫掠包络/收窄深度封顶 dyn_clamp_meeting_depth_cap 可调) + trace 观测
- 狭窄会车识别: 收窄后可用宽度不足→降速+缩跟车距离(narrow_meeting)
- 误绕行治理:
  * 跟踪成熟度门(reserved_int_1 未初始化 + age), 修 age>0 放过新 track 的洞
  * 动态障碍足迹掩膜: 动车漏聚类只剩 OGM 点云时不切 gap(仅横向, 纵向照常)
  * 类型策略 SidePassPolicy: 车辆类居中跟车等/VRU 居中停让/靠边绕/场桥不碰,
    VRU 靠边无条件绕(解耦动静), 车辆类居中抛锚超时逃生口
  * 动作承诺: 一旦绕行锁到动作完成(甩到车后/VRU挡前硬退出/超时), 承诺期
    旁路各软门, 防超车并排时半途回摆; 进入侧连续 N 帧确认防单帧误判固化
- 走廊限速失真治理(零新栅格): 静态非绕行障碍横向余量按 frenet 补进限速;
  同向并行/超车贴身降速(空间足够不降速), 复用 PARALLEL_OBSTACLE_SPEED_LIMIT
- SL 约定全仓统一(start_l=左缘/end_l=右缘)+语义访问器
- 所有功能使能开关集中到 CfgFuncSw, 数值调参留各域 config;
  序列化迁移用占位模式保旧 dump 对齐(CfgFuncSw/CfgLatPlan/CfgSafeConst/
  ObstacleDeciderAttr/PerceptionObstacle 各升版本)
The file was modifieddata/obstacle/obstacle_decider_attr.cpp
The file was modifieddata/obstacle/perception_obstacle.cpp
The file was modifieddata/config/cfg_safe_const.cpp
The file was modifieddata/config/cfg_func_sw.cpp
The file was modifieddata/config/cfg_lat_plan.cpp
The file was modifieddata/boundary/driving_corridor.hpp
The file was modifieddata/config/cfg_safe_const.hpp
The file was modifieddata/obstacle/perception_obstacle.hpp
The file was modifiedtasks/deciders/long_decider/constrain_decider.cpp
The file was modifieddata/obstacle/decision/obstacle_decision.cpp
The file was modifieddata/dp_poly_path/trajectory_cost.cpp
The file was modifieddata/common/sl_boundary.hpp
The file was modifieddata/constrain/longitude_constrain.hpp
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifiedhmi/draw/draw_perception.cpp
The file was modifieddata/map/reference/reference_segment.cpp
The file was modifieddata/config/cfg_func_sw.hpp
The file was modifieddata/dp_poly_path/decision_trace.hpp
The file was modifieddata/constrain/longitude_constrain.cpp
The file was modifieddata/obstacle/obstacle_decider_attr.hpp
The file was modifiedtasks/deciders/long_decider/constrain_decider.hpp
The file was modifieddata/obstacle/decision/obstacle_decision.hpp
The file was modifieddata/config/cfg_lat_plan.hpp
The file was modifieddata/dp_poly_path/decision_trace.cpp
Commit 57432d24b14d214084e3c0719893a693d3db7796 by wuyanjun110
fix: 绕行DP转移预剪放宽, 治偏置起点+畸短首段致l=0直行走廊不可达误绕行

dl剪枝带用弦斜率avg_dl=Δl/seg_len当机动激进度代理, 在短基线上被天然放大;
init锚车辆真实s防采样抖导致首段常畸短, 偏置起点回正弦斜率超带→l=0在DP图上
不可达(留默认inf非碰撞)→被迫朝障碍侧大拱误绕行。改: 短段按基线比例放宽带宽
(cap 5x), 回正方向(|cur_l|<|prev_l|)一律放行打破方向锁; 激进度仍由IsValidCurve兜底。
不动s锚定/采样。
The file was modifieddata/dp_poly_path/dp_road_graph.cpp
Commit 7f9cc76953b6e990b2a03616093dd9a9369432f7 by wuyanjun110
feat: 绕行动作承诺加实际横向执行门槛(防空承诺固化误绕行)

- 进入承诺除 label 意图外, 增加自车已实际横向偏移(|ego_match l|>0.5,
  与 DP KeepSidePassUntilCentered 同源、对齐 kKeepLThr)作为必要条件,
  防 l≈0 纯意图被单帧抖动瞬时锁成 30s 承诺
- 退出新增"空承诺撤销": 已承诺但未实际横向执行且已不满足准入即释放,
  零回摆风险; 已绕到一半(lateral_engaged)的仍走硬承诺完成
- ego_match 不可用时证据无效, 进入保守拒绝、已建承诺不误撤
The file was modifieddata/obstacle/decision/obstacle_decision.cpp
Commit 245dc82d4e357b7d33cabc7b091bdb2b7c2aeead by wuyanjun110
feat: 类型策略灰度默认开启(use_sidepass_type_policy 默认 true)
The file was modifieddata/config/cfg_func_sw.cpp
Commit e448e4ce08f401dd7e70250707072e155614d092 by wuyanjun110
feat: 直道正面逆向车走会车收窄让行, 不再 BLOCK 死等

会车 MEETING 原只挂在弯道/航向差大两门上, 直道正面对开车掉头后与参考线
反平行(r_diff≈0)且在直线, 两门都不触发, 掉进余宽判定两侧不足即 BLOCK
停等。在 LabelDecider !treat_as_static 块【先于】两门加会车短路:
IsMeetingScenario(确认运动+逆向+车前/侧)一律走 MEETING——本体不 BLOCK/
不写实体栅格, 只按预测轨迹收窄边界让行; 空间真不够时收窄切不出 gap,
纵向 ST/guardian 照常停, 安全不丢。灰度仍 dyn_clamp_meeting_bypass。
The file was modifieddata/obstacle/obstacle_decider_attr.cpp
Commit 40537f7ac3d275051064cfa1361a4a989672e8a6 by wuyanjun110
chore: 会车收窄封顶 dyn_clamp_meeting_depth_cap 默认 0.8→0.9(收窄更紧)
The file was modifieddata/config/cfg_lat_plan.cpp
Commit ac4a015c1d0fa9fff7faee5f20a363bfd4d0706b by wuyanjun110
fix: 补 NARROW_MEETING_SPEED_LIMIT 登记, 修 CreateNarrowMeetingConstrain 断言崩溃

NARROW_MEETING_SPEED_LIMIT 实装时只登记了 IsSpeedLimitType, 漏了
LongitudeSpeedLimitConstrain::Initialize 的类型断言白名单。窄会车识别一旦
触发 CreateNarrowMeetingConstrain 就 LOG_ASSERT 崩溃(Signal 6)。补三处:
断言白名单 / TraceBack switch 分组(同 PARALLEL 走减速曲线) / ToString case
(原走 default 显示 UNKNOWN)。走软限速, 未加 IsHardConstrainType。
The file was modifieddata/constrain/longitude_constrain.cpp
The file was modifieddata/constrain/longitude_constrain.hpp
Commit 58317cd215b7ab93b84dab9a684c06666a8dacec by wuyanjun110
feat: 会车逆向道窄时不借道让行(纯逻辑判场景+走廊左界渐变钳)

窄路正面会车时, 本车道被 OGM 点堵住需绕行, 原会向左借进逆向道, 与对向
来车正面冲突。改为在决策层纯逻辑判场景, 执行侧钳走廊左界, 不动 DP 搜索。

参考线预计算逆向车道几何(PncMapPath::InitWidth):
- 新增 ReverseLaneGeo{valid,num,near_bound_l,far_bound_l,gap}, 逐采样点
  存左/右逆向道近远边界与缝宽(可为负), 复用原有 GetToRoadBoundaryDistance
  /GetProjection 结果不重复查图; 不序列化。
- 访问器 GetReverseLaneGeo(s, is_left, out)。

场景判定(obstacle_decision::IsMeetingBorrowYieldScenario, 帧级):
对向逆向车快速逼近(速度取 his_states 15 帧均值, 不用裸 speed_km_h——感知
单帧测速置零会误撤让行门, 是危险方向的失效) + 逆向道过窄 → 宁让不借。

执行(DrivingCorridor::Init) 三层门控:
1. 场景成立;
2. 已承诺左借(ego 中心越过车道左边线)则不钳——中途拉回比走完更危险,
   让它尽快清空逆向道; 让行只拦尚未起步的借行;
3. 本车道确实被堵才钳——用 his 走廊 drivable_seg 判(原始 OGM 堵塞, 与本帧
   钳制无关, 不震荡); 本车道畅通则完全不动边界。
命中后左界按 ego 左边缘锚点沿 12m 线性渐变钳到 lane_left_l, 避免硬钳导致
方向盘猛打; 车道被堵死→无 gap→复用纵向停, 不硬挤右侧。

停住的对向车写入栅格(IsCorridorGridObstacle):
对方停下后让行解除放行绕道, 若它不在图里就是"图上空、实际有车"。故确认
静止+逆向+heading 对齐者写图, 能否通过交真实几何判定。heading 对齐判定
(30°+3 帧防抖)从 meeting_fallback 分支提到动静分支之外, 否则静态车只能
读到上帧陈旧值。

其他:
- 逆向车绕行策略直接 ALLOW: pulled_over 相对自车参考线判, 会把侵入自车道
  的逆向车误判为"居中"→跟一辆迎面来的车。
- 走廊左钳与堵塞判据统一用 TrailerAwareHalfWidths(挂车感知/左右非对称),
  该函数上移至 Init 之前, 保持各处 footprint 口径一致。
- GetBoundaryFromS 内是 CHECK(!empty()), 新增调用在断面循环之前, 加空守卫。
- 灰度 use_meeting_borrow_yield_(cfg_func_sw v14), 观测日志 LOG_EVERY_N 降频。
The file was modifieddata/config/cfg_func_sw.hpp
The file was modifieddata/map/pnc_map/pnc_map_path.hpp
The file was modifieddata/obstacle/decision/obstacle_decision.hpp
The file was modifieddata/obstacle/obstacle_decider_attr.cpp
The file was modifieddata/config/cfg_func_sw.cpp
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifieddata/obstacle/obstacle_decider_attr.hpp
The file was modifieddata/obstacle/decision/obstacle_decision.cpp
The file was modifieddata/map/pnc_map/pnc_map_path.cpp
Commit 51819254225b35991f7648de9c4d98c51f1e32b2 by wuyanjun110
feat: 烟台车内/柱子/房子点云及下沉坑点适配

新增 107/108/110/111 四种点云类型: 前三者(车辆内部/柱子/房子点云)标记
为无效点云, 碰撞与侧避均不考虑; 下沉坑点(111)按路边点云同等逻辑处理,
参与侧避绕行(限速不因它降速, 但 gap/碰撞仍当墙, KEB 补画为障碍规避)。
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifiedtasks/plan/keb_utils.cpp
The file was modifiedhmi/draw/draw_perception.cpp
The file was modifieddata/obstacle/ogm.cpp
The file was modifieddata/obstacle/ogm.hpp
Commit 336c09dfd3035a62ada742b79f001dbda066f0c3 by wuyanjun110
fix: 会车让行逆向道几何改用 guide 系断面, 钳制线改为逆向道近边界

坐标系纠错:
障碍物 sl_boundary 由 GenerateRefSlBoundary(guide_line) 生成, 是 guide 系,
原实现却拿它的 s 去查 reference_line().pnc_map_path() 的 ref 系逆向道表,
两系不重合时取到错误断面; 且硬编码主参考线, standby 断面直接查错线。
改为在 GenerateRoadBoundary 建表时用 point_info.s() 从该断面对应的那条
参考线取, 存进 BoundaryPt, 与 lane_left_l 同源, 消费侧全在 guide 系查。
顺带补 rev_s<0 早退(GetBoundaryFromS 对负 s 退化返回最远断面)。

钳制线纠错:
原钳到自车道左边线, 而"不借道"的硬线是逆向道近边界, 二者之间的本方向
其余车道与道间缝隙被白白没收; 本方向多车道时还会拦住合法的同向换道绕行。
改为 lane_left_l + reverse_lane_gap(自车道边线到逆向道近边界的距离),
承诺判据线同步取同一条, 否则同向换道会被误判成"已借逆向道"而撤销钳制。
地图两 road 重叠(gap<0)时该线比车道边线更靠右, 反而堵住侵入漏洞。

只搬差值(宽度、缝隙)不搬 near/far 绝对量: 差值的参考系零点相消, 绝对量
搬进 guide 系必须先减 point_info.l()。

SSEP 断面排除:
该段无对应参考线, lane_left_l 停在"半车宽+0.15"兜底值而本身是 left_l=10
的开阔区; meeting_yield 是帧级开关而 guide line 多段拼接, 不排除会把开阔
的 SSEP 段硬缩到贴车身。
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifieddata/obstacle/decision/obstacle_decision.cpp
The file was modifieddata/map/pnc_map/pnc_map_path.hpp
The file was modifieddata/obstacle/decision/obstacle_decision.hpp
The file was modifieddata/boundary/road_boundary.cpp
The file was modifieddata/boundary/road_boundary.hpp
The file was modifieddata/map/pnc_map/pnc_map_path.cpp
Commit 2bc76bf271b37cbd6e4fb2c4eb1b0e65228db1bf by wuyanjun110
feat: HMI快照按钮触发发SNAP录包(关掉决策结果保存)

- DecisionReaction 加一次性标志 hmi_req_record_snap_(不序列化/不入FromHis)
- logic plan循环消费快照按钮标志并当场复位, 修从不复位每帧触发问题
- 快照按钮不再置 save_decision_result
- RosSinkRecordTrigger 按钮标志与自动条件一并发 SNAP Trigger
The file was modifieddata/decide/decide_reaction.hpp
The file was modifiedsink/ros_sink_record_trigger.cpp
The file was modifieddata/decide/decide_reaction.cpp
The file was modifiednode/logic.cpp
Commit bef81f367cafc8ae74ab8e77155a23d1478f14c7 by wuyanjun110
feat: 窄会车主动贴右让行(走廊左界钳到对向车近侧)+修急停判定两处笔误

- 走廊 Init 注入 narrow_hug: 距会车点 kHugLeadS 内把左界钳到"对向车近侧-余量",
  逼 DP/PJPO 贴右, 横向让出空间给对向车; 读 his 帧结果同时喂 DP 与 PJPO
- 判窄改用交互过滤前的几何净空(raw_l_intervals), 不再要求收窄锁存 active,
  避免"对向车已压上路径才判窄"(该刹车非靠边)的时机错位
- 逐断面存对向车近侧 l(narrow_hug_near_l_), 贴对向车而非道路右界免疫弯道 SL 畸变
- GenerateBoundary 贴右时右侧障碍源保留最小膨胀(kNarrowRightObsKeep), 防啃 og 点
- 缩跟车距离加距会车点门(kNarrowFollowLeadS), 与贴右提前量口径一致
- side_margin 默认 0.4→0.6
- 修 constrain_decider 两处: fabs(end_l()<=3.0) 括号错位; 横向切入判定
  M_2_PI(36°)误用应为 M_PI_2(90°), 致同向并行车误急停/斜插漏拦
The file was modifieddata/config/cfg_lat_plan.cpp
The file was modifieddata/boundary/driving_corridor.cpp
The file was modifieddata/boundary/driving_corridor.hpp
The file was modifiedcommon/util/express.cpp
The file was modifieddata/constrain/longitude_constrain.cpp
The file was modifiedtasks/deciders/long_decider/constrain_decider.cpp
Commit b3106e93ac9e3d2edae8c64ad2ea91fc7c15e877 by wuyanjun110
perf: 窄会车贴右就近查改单调游标(O(n²)→均摊O(n)), 诊断日志降频

- Init 内 his_hug/his_pb 逐断面线性扫描改只前进的单调游标: 二者沿行驶方向
  单调且与本帧 while 同向, start_s 单调推进→最近邻单调推进, 均摊 O(n);
  仅采信半个 interval 内最近点, 阈值语义与原线性扫描一致
- [narrow_hug]/[narrow_hug_dbg]/[narrow_meet] 三条诊断日志频率降到 EVERY_N 50
The file was modifieddata/boundary/driving_corridor.cpp
Commit ed38742ac3653b98bffbf6039acd113a38e5c05d by wuyanjun110
feat: 新增镇石(ZHEN_SHI)站点地理围栏, IMV前进进出站复用西联场景
The file was modifieddata/ssep/forward_ec.cpp
The file was modifieddata/config/cfg_region.hpp
The file was modifieddata/config/cfg_region.cpp