Commit
dd3ac6978e9051b56ed9ac071022ddb138f543b5
by liuhongshuofeat: 新增障碍物置信度评分 行人靠近报警
|
 | data/obstacle/obstacle.hpp |
 | CMakeLists.txt |
 | data/obstacle/obstacle_decider_attr.hpp |
 | data/config/cfg_func_sw.hpp |
 | data/config/cfg_region.hpp |
 | plan/prepare/prepare_objs.cpp |
 | sink/ros_sink_chassis_ctrl.cpp |
 | data/config/cfg_func_sw.cpp |
 | sink/ros_sink_chassis_ctrl.hpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | data/obstacle/perception_obstacle.hpp |
 | tasks/deciders/other_decider/alarm_decider.hpp |
 | data/obstacle/obstacle.cpp |
 | scenarios/stage.cpp |
 | data/config/cfg_region.cpp |
 | tasks/deciders/other_decider/alarm_decider.cpp |
Commit
ae82cd70389db148891fd4f0f8354dae82623fb4
by liuhongshuofeat: 预警时间间隔参数化
|
 | sink/ros_sink_chassis_ctrl.cpp |
 | data/config/cfg_func_sw.cpp |
 | data/config/cfg_func_sw.hpp |
Commit
f2465adad2f30214486ed6c3cc446b6e77660e9f
by haoxiangtaofix:内存问题修复测试
|
 | data/map/envelop/map_envelops.cpp |
Commit
8d8fc8fe71f58f96d192b653849d57121839fec6
by haoxiangtaofix:内存问题修复测试
|
 | data/map/envelop/map_envelops.cpp |
Commit
02eef33286fd2c1fd15c3630295167bbdca79308
by liuhongshuofeat: 合并冲突
|
 | data/config/cfg_region.cpp |
Commit
067a789e161bce5878bb983eebdd5bad63d66765
by wuyanjun110feat: 新增障碍物置信度评分 行人靠近报警
|
 | data/config/cfg_func_sw.hpp |
 | data/config/cfg_region.hpp |
 | data/obstacle/obstacle.hpp |
 | scenarios/stage.cpp |
 | data/obstacle/obstacle_decider_attr.hpp |
 | data/obstacle/obstacle.cpp |
 | tasks/deciders/other_decider/alarm_decider.hpp |
 | sink/ros_sink_chassis_ctrl.cpp |
 | CMakeLists.txt |
 | data/config/cfg_func_sw.cpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | sink/ros_sink_chassis_ctrl.hpp |
 | tasks/deciders/other_decider/alarm_decider.cpp |
 | data/obstacle/perception_obstacle.hpp |
 | data/config/cfg_region.cpp |
 | plan/prepare/prepare_objs.cpp |
Commit
aefad2d72b50d177f73b39b6f3f88b95699e6be7
by wuyanjun110feat: 预警时间间隔参数化
|
 | data/config/cfg_func_sw.cpp |
 | data/config/cfg_func_sw.hpp |
 | sink/ros_sink_chassis_ctrl.cpp |
Commit
f694b82452efc96843fefb947d35b12040e75007
by wuyanjun110feat: 合并冲突
|
 | data/config/cfg_region.cpp |
Commit
f17dd3022e07cf16f5602cd595b4e53c639163b3
by liuhongshuofeat: DeadLock新的停止点在1m以内车辆不启动
|
 | data/app/cmd/cmd_dead_lock_force_park.cpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
 | data/app/cmd/cmd_dead_lock.cpp |
Commit
f1f7bca7f335e3bb4f3e97eb16477ece7ac41509
by liuhongshuofix: DeadLock 使用历史纵向约束判断近距离停车锁存状态
|
 | tasks/deciders/long_decider/constrain_decider.cpp |
Commit
824daf8445e92722d6ce546b2e8a03a11c876376
by wuyanjun110fix: Align FSM超距退出3/4阶段时更新need_spreader_align_计数, 防止重回3阶段
|
 | data/app/fsm/task_fsm/task_align_fsm/task_align_fsm.cpp |
Commit
4f361ae47bc58a4dca72f5bed937aac4e62e5974
by wuyanjun110perf: OGM精细碰撞采样点分级去重, 控制序列化体积
精细碰撞开启时采样点不再全量保留: - 引导线路径带(半径12m, 1m粗块掩码)内按1/4 cell子格去重, 位置误差上界约3.5cm, 每cell至多16点 - 路径带外及无引导线时退化为每cell仅保留首点(等同旧抽稀密度) - 栅格写入逻辑不变, 仅瘦身采样点集; 精细开关关闭时行为不变 - 顺手收拢龙须/上下层四处重复写入分支为AddPoint
|
 | plan/prepare/prepare_ogm.cpp |
 | plan/prepare/prepare_ogm.hpp |
Commit
41119aa52d08f3d36a58e0f0bd5bd9e77c269c67
by wuyanjun110fix: Guardian锁站区域退出改为锚定车尾(带挂取挂车尾), 途径点单点前后扩展近似锁站区间, 防止车尾未过锁站障碍物提前退出
|
 | data/vehicle/lock_station_data.cpp |
Commit
211ee4a470c1d5d83dafe07ea65bb65fef432a7d
by wuyanjun110fix: Align FSM超距退出3/4阶段时更新need_spreader_align_计数, 防止重回3阶段
|
 | data/app/fsm/task_fsm/task_align_fsm/task_align_fsm.cpp |
Commit
037d24ad730656b6b84ce85ecd9ff179d1e6286f
by wuyanjun110perf: OGM精细碰撞采样点分级去重, 控制序列化体积
精细碰撞开启时采样点不再全量保留: - 引导线路径带(半径12m, 1m粗块掩码)内按1/4 cell子格去重, 位置误差上界约3.5cm, 每cell至多16点 - 路径带外及无引导线时退化为每cell仅保留首点(等同旧抽稀密度) - 栅格写入逻辑不变, 仅瘦身采样点集; 精细开关关闭时行为不变 - 顺手收拢龙须/上下层四处重复写入分支为AddPoint
|
 | plan/prepare/prepare_ogm.cpp |
 | plan/prepare/prepare_ogm.hpp |
Commit
50a557ba5ed0e80690bfb2284a4aed695e47745e
by wuyanjun110fix: Guardian锁站区域退出改为锚定车尾(带挂取挂车尾), 途径点单点前后扩展近似锁站区间, 防止车尾未过锁站障碍物提前退出
|
 | data/vehicle/lock_station_data.cpp |
Commit
95737210ab3b8548ebf8930d3c4267544256fd36
by tangwenqingchore: Keb: 忽略ssep_ec中缓存的real obstacles
|
 | tasks/plan/keb_utils.cpp |
Commit
c3d8a6c116c0a9e8f4ff69bf5904033acab647a1
by wuyanjun110fix: 恢复union region异步计算, latch结果消费即释放治理内存驻留
- CreateUnionRegion恢复std::async异步, polygons改move捕获少一份拷贝 - latch结果消费一次即move取走并shrink_to_fit释放, 不再常驻AsyncUnionRegionState - 重建路径不再预清union_region_/重建async_state, 异步未就绪时沿用上一帧轮廓
|
 | data/map/envelop/map_envelops.cpp |
Commit
d749b4221ec4750bc1d19a2308f5c31730545b71
by wuyanjun110perf: 回放同帧降频节流, 暂停/停在末帧时避免循环满频重复计算, 改参数仍0.5s内重算生效
|
 | replayer/logic.cpp |
Commit
46f793d6f300e33aa0d19b0a6c518d26f886bfd1
by wuyanjun110fix: 远程单次直线步进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 跳过判断同步替换恢复原语义.
|
 | data/app/fsm/motion_fsm/motion_remote_fsm/motion_remote_state.hpp |
 | plan/prepare/prepare_status.cpp |
 | plan/prepare/prepare_status.hpp |
Commit
74b035a35b095b2e5650e2eb298b03fd8d46b143
by wuyanjun110feat: 走廊边界按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共用
|
 | replayer/replayer_data_process/replayer_data_process.cpp |
 | data/boundary/driving_corridor.cpp |
 | data/config/cfg_lat_plan.cpp |
 | tasks/deciders/lat_decider/trailer_path_bounds_decider.cpp |
 | tasks/deciders/lat_decider/trailer_side_pass_decider.cpp |
 | tasks/deciders/lat_decider/side_pass_decider.cpp |
 | data/boundary/driving_corridor.hpp |
 | data/config/cfg_lat_plan.hpp |
 | tasks/deciders/lat_decider/path_bounds_decider.cpp |
Commit
8f7e94a46edce22ff96ee1be076fdc8031d6b153
by wuyanjun110fix: 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
|
 | data/app/fsm/task_fsm/task_fsm.cpp |
 | data/app/fsm/task_command_type.cpp |
 | data/app/fsm/task_fsm/task_park_fsm/park_fsm_transition/bulk_transition.cpp |
Commit
cf9bf06e62975a44420683b8d68b1a1c38d24ebb
by wuyanjun110fix: 恢复union region异步计算, latch结果消费即释放治理内存驻留
- CreateUnionRegion恢复std::async异步, polygons改move捕获少一份拷贝 - latch结果消费一次即move取走并shrink_to_fit释放, 不再常驻AsyncUnionRegionState - 重建路径不再预清union_region_/重建async_state, 异步未就绪时沿用上一帧轮廓
|
 | data/map/envelop/map_envelops.cpp |
Commit
49da4fba25e8910c876f430f1f1b28a8e67e0f63
by wuyanjun110perf: 回放同帧降频节流, 暂停/停在末帧时避免循环满频重复计算, 改参数仍0.5s内重算生效
|
 | replayer/logic.cpp |
Commit
72009854a7c4ddb6758552e58d1be9e0ca3e37d2
by wuyanjun110fix: 远程单次直线步进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 跳过判断同步替换恢复原语义.
|
 | data/app/fsm/motion_fsm/motion_remote_fsm/motion_remote_state.hpp |
 | plan/prepare/prepare_status.cpp |
 | plan/prepare/prepare_status.hpp |
Commit
a5afde418b758301551f63748ff5a58175d144cb
by wuyanjun110fix: 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
|
 | data/app/fsm/task_fsm/task_park_fsm/park_fsm_transition/bulk_transition.cpp |
 | data/app/fsm/task_command_type.cpp |
 | data/app/fsm/task_fsm/task_fsm.cpp |
Commit
24fd81a9d13c83e6652e19c559f8f82118f72887
by tangwenqingrefactor: SSEP: 移除ilqr集卡轨迹库功能
|
 | ssep/coarse_search/searcher_builders/imv_bidirectional_searcher_builder.cc |
 | ssep/coarse_search/searcher_builders/tractor_trailer_general_searcher_builder.cc |
 | ssep/coarse_search/searcher_builders/back_insertion_maneuver_searcher_builder.h |
 | ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.cc |
 | ssep/coarse_search/searcher_builders/u_turn_insertion_maneuver_searcher_builder.cc |
 | ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h |
 | ssep/coarse_search/searcher_builders/u_turn_insertion_maneuver_searcher_builder.h |
 | ssep/coarse_search/searcher_builders/rigid_truck_general_searcher_builder.cc |
 | ssep/coarse_search/motion_primitive_sampler/ilqr_motion_primitive_sampler.h |
 | ssep/coarse_search/searcher_builders/truck_multi_segment_parking_bidirectional_searcher_builder.cc |
 | ssep/coarse_search/motion_primitive_sampler/ilqr_motion_primitive_sampler.cc |
 | ssep/coarse_search/searcher_builders/back_insertion_maneuver_searcher_builder.cc |
 | ssep/coarse_search/searcher_builders/truck_reference_following_searcher_builder.cc |
 | ssep/coarse_search/searcher_builders/imv_general_searcher_builder.cc |
Commit
f7ecf7b1dee5d6720bc871d7301910b4d6fd3b39
by wuyanjun110fix: 空Path取点断言与退化lane segment构造CHECK线上崩溃, 改优雅降级
- Path::GetIndexFromS/GetSmoothPoint 空路径不再fatal, 返回默认值并记ERROR日志 - PncMapPath lane segment构造函数点数不足2时清空path_points_留无效path, 下游经IsAvailable安全降级, 不再CHECK崩进程
|
 | data/map/pnc_map/pnc_map_path.cpp |
 | data/common/path.cpp |
Commit
f8233babbba259246c3ed95227f6b9e2a070d600
by wuyanjun110fix: 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)+默认点
|
 | data/common/path.hpp |
 | data/common/path_point.cpp |
 | data/common/path.cpp |
Commit
6087fa2830942d05011e37f9971570f912f11c23
by wuyanjun110fix: 堆场内open space场景误报REGION_OUT_BRIDGE提前降安全阈值, 改按guide line查挂尾所在路段类型, 挂出堆场后再切换
|
 | plan/prepare/prepare_status.cpp |
Commit
42056f95c73509f3f58d61530894685e20a604d4
by wuyanjun110fix: 空Path取点断言与退化lane segment构造CHECK线上崩溃, 改优雅降级
- Path::GetIndexFromS/GetSmoothPoint 空路径不再fatal, 返回默认值并记ERROR日志 - PncMapPath lane segment构造函数点数不足2时清空path_points_留无效path, 下游经IsAvailable安全降级, 不再CHECK崩进程
|
 | data/common/path.cpp |
 | data/map/pnc_map/pnc_map_path.cpp |
Commit
511e2bf053a7c68b76ae177ef28fd9cf9e4ae056
by wuyanjun110fix: 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)+默认点
|
 | data/common/path.cpp |
 | data/common/path_point.cpp |
 | data/common/path.hpp |
Commit
6762d53f760e626f1471f94fdd2ee82ef093e505
by wuyanjun110fix: MatchPtByS 对超末端 s 解引用 end() 迭代器的未定义行为
lower_bound 落在 end() 时原代码用 *end() 参与外插, 读垃圾内存, 结果不可信 且可崩溃; 与 MatchPtByt 的同款历史修复对齐, 夹到末点返回, 并补 size<2 的 begin 分支越界保护。动态边界收窄的 arrive_t 反查每帧命中该分支, 既有 cloud_trajectory/trajectory_combiner 调用点同受益。
|
 | data/common/trajectory_point.cpp |
Commit
b9defc7cc8a6bd2c81866bf3e0ebfc67f944ffd5
by wuyanjun110feat: 障碍决策模块化, 运动状态迟滞+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。
|
 | tasks/plan/keb_utils.cpp |
 | data/dp_poly_path/trajectory_cost.cpp |
 | tasks/deciders/other_decider/obstacle_decider.cpp |
 | data/obstacle/decision/obstacle_decision.hpp |
 | data/obstacle/obstacle.hpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | data/obstacle/obstacle_decider_attr.hpp |
 | data/obstacle/decision/obstacle_decision.cpp |
Commit
4c6347125137a837135fd420306b5564fb539b50
by wuyanjun110feat: 动态障碍时间对齐边界收窄+会车旁路(灰度 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, 验证需显式开)。
|
 | tasks/deciders/lat_decider/side_pass_decider.cpp |
 | data/boundary/driving_corridor.cpp |
 | data/boundary/driving_corridor.hpp |
 | data/config/cfg_lat_plan.hpp |
 | tasks/deciders/lat_decider/trailer_side_pass_decider.cpp |
 | data/config/cfg_lat_plan.cpp |
 | replayer/replayer_data_process/replayer_data_process.cpp |
Commit
613bb76c1c04a61369d8cf718abbdd3ac5273f35
by wuyanjun110feat: side-pass trace 增加动态收窄漏斗与逐障碍投影明细
dyn_dbg 漏斗行(enabled→cand/bypass→arrive→hit→active→clamped, 哪层归零卡 哪层) + dyn_notes 逐障碍投影统计(预测 s/l 范围/swept/inter/被拒原因) + 断面级 dyn_* 收窄快照; dump 移到 GenerateBoundary 之后以带出收窄结果。 排查'为什么没收窄'先看这两处。
|
 | data/dp_poly_path/decision_trace.cpp |
 | data/dp_poly_path/decision_trace.hpp |
Commit
d06067513a0b5bde9107fa12fb1bfdd64afad47f
by tangwenqingfeat: SSEP: 集卡多段倒车场景前进后退使用不同曲率上限
|
 | ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc |
 | ssep/keb_optimizer/keb_problem.cc |
 | ssep/keb_optimizer/tractor_trailer_keb_optimizer.h |
 | ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h |
 | ssep/keb_optimizer/keb_problem.h |
 | ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc |
Commit
8188b089eb1d8bd51678d2586c3c21c9251f160d
by liuhongshuofix: 速度置信度的引入收敛到只影响行人靠近预警功能
|
 | data/obstacle/obstacle.hpp |
 | data/obstacle/obstacle.cpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | data/obstacle/perception_obstacle.hpp |
Commit
5e94cf0938c76aee4944c9521d1073f2e917a140
by wuyanjun110fix: Station2Align 补齐准入过滤, 防不该进align场景绕道从station复入
|
 | data/app/fsm/task_fsm/task_fsm.cpp |
Commit
f8e0b4f0d509e20cc24569fcda6a4e14fb765d12
by liuhongshuofix: 格式漂移更改 配置参数更改
|
 | CMakeLists.txt |
 | data/config/cfg_func_sw.hpp |
 | data/config/cfg_region.hpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | data/config/cfg_func_sw.cpp |
 | tasks/deciders/other_decider/alarm_decider.cpp |
 | tasks/deciders/other_decider/alarm_decider.hpp |
 | data/obstacle/obstacle_decider_attr.hpp |
 | sink/ros_sink_chassis_ctrl.cpp |
 | data/obstacle/obstacle.hpp |
Commit
5d4c8178edc1a0a13f8a08bd4e556f43e4ac96cf
by wuyanjun110feat: 绕行决策加固一轮(误绕行治理+类型策略+动作承诺+限速补全)
- 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 各升版本)
|
 | data/config/cfg_lat_plan.cpp |
 | data/config/cfg_safe_const.hpp |
 | data/obstacle/perception_obstacle.hpp |
 | tasks/deciders/long_decider/constrain_decider.hpp |
 | data/dp_poly_path/decision_trace.cpp |
 | data/boundary/driving_corridor.hpp |
 | data/config/cfg_func_sw.hpp |
 | data/constrain/longitude_constrain.hpp |
 | data/obstacle/decision/obstacle_decision.hpp |
 | data/config/cfg_lat_plan.hpp |
 | data/constrain/longitude_constrain.cpp |
 | data/dp_poly_path/trajectory_cost.cpp |
 | data/boundary/driving_corridor.cpp |
 | data/map/reference/reference_segment.cpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
 | data/config/cfg_func_sw.cpp |
 | data/obstacle/perception_obstacle.cpp |
 | data/config/cfg_safe_const.cpp |
 | hmi/draw/draw_perception.cpp |
 | data/common/sl_boundary.hpp |
 | data/obstacle/decision/obstacle_decision.cpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | data/obstacle/obstacle_decider_attr.hpp |
 | data/dp_poly_path/decision_trace.hpp |
Commit
72d3639900cb42c6d339f7bf69736eb8099f709b
by chenranfix: revering in straight line
|
 | data/plan/start_point_data.cpp |
Commit
abc6a188c290e2ade83d974d1c3bdedd7b295b70
by chenranfix: is_in_straight_lane = false during park state
|
 | plan/prepare/prepare_status.cpp |
Commit
57432d24b14d214084e3c0719893a693d3db7796
by wuyanjun110fix: 绕行DP转移预剪放宽, 治偏置起点+畸短首段致l=0直行走廊不可达误绕行
dl剪枝带用弦斜率avg_dl=Δl/seg_len当机动激进度代理, 在短基线上被天然放大; init锚车辆真实s防采样抖导致首段常畸短, 偏置起点回正弦斜率超带→l=0在DP图上 不可达(留默认inf非碰撞)→被迫朝障碍侧大拱误绕行。改: 短段按基线比例放宽带宽 (cap 5x), 回正方向(|cur_l|<|prev_l|)一律放行打破方向锁; 激进度仍由IsValidCurve兜底。 不动s锚定/采样。
|
 | data/dp_poly_path/dp_road_graph.cpp |
Commit
7f9cc76953b6e990b2a03616093dd9a9369432f7
by wuyanjun110feat: 绕行动作承诺加实际横向执行门槛(防空承诺固化误绕行)
- 进入承诺除 label 意图外, 增加自车已实际横向偏移(|ego_match l|>0.5, 与 DP KeepSidePassUntilCentered 同源、对齐 kKeepLThr)作为必要条件, 防 l≈0 纯意图被单帧抖动瞬时锁成 30s 承诺 - 退出新增"空承诺撤销": 已承诺但未实际横向执行且已不满足准入即释放, 零回摆风险; 已绕到一半(lateral_engaged)的仍走硬承诺完成 - ego_match 不可用时证据无效, 进入保守拒绝、已建承诺不误撤
|
 | data/obstacle/decision/obstacle_decision.cpp |
Commit
245dc82d4e357b7d33cabc7b091bdb2b7c2aeead
by wuyanjun110feat: 类型策略灰度默认开启(use_sidepass_type_policy 默认 true)
|
 | data/config/cfg_func_sw.cpp |
Commit
e448e4ce08f401dd7e70250707072e155614d092
by wuyanjun110feat: 直道正面逆向车走会车收窄让行, 不再 BLOCK 死等
会车 MEETING 原只挂在弯道/航向差大两门上, 直道正面对开车掉头后与参考线 反平行(r_diff≈0)且在直线, 两门都不触发, 掉进余宽判定两侧不足即 BLOCK 停等。在 LabelDecider !treat_as_static 块【先于】两门加会车短路: IsMeetingScenario(确认运动+逆向+车前/侧)一律走 MEETING——本体不 BLOCK/ 不写实体栅格, 只按预测轨迹收窄边界让行; 空间真不够时收窄切不出 gap, 纵向 ST/guardian 照常停, 安全不丢。灰度仍 dyn_clamp_meeting_bypass。
|
 | data/obstacle/obstacle_decider_attr.cpp |
Commit
40537f7ac3d275051064cfa1361a4a989672e8a6
by wuyanjun110chore: 会车收窄封顶 dyn_clamp_meeting_depth_cap 默认 0.8→0.9(收窄更紧)
|
 | data/config/cfg_lat_plan.cpp |
Commit
ac4a015c1d0fa9fff7faee5f20a363bfd4d0706b
by wuyanjun110fix: 补 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。
|
 | data/constrain/longitude_constrain.cpp |
 | data/constrain/longitude_constrain.hpp |
Commit
9152b3d115c2ef7450db98344b5e702217cd003a
by wuyanjun110fix: Station2Align 补齐准入过滤, 防不该进align场景绕道从station复入
|
 | data/app/fsm/task_fsm/task_fsm.cpp |
Commit
39bf5226ef6719b607a7d0542bf55d778e7d359d
by tangwenqingfeat: SSEP: 集卡多段倒车支持GPU搜索,搜索速度提升5-10倍
|
 | ssep/coarse_search/evaluator/composite_heuristic_computer.h |
 | ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.h |
 | ssep/coarse_search/gpu_context.cc |
 | ssep/gpu/device_types.h |
 | ssep/gpu/heuristic/reeds_shepp_kernel.cuh |
 | ssep/scenarios/tractor_trailer_single_segment_parking_planner.h |
 | ssep/coarse_search/evaluator/gpu_kinematic_heuristic_computer.h |
 | ssep/gpu/collision/collision_checker.cuh |
 | ssep/coarse_search/bounded_priority_queue.h |
 | ssep/coarse_search/batched_priority_queue.h |
 | ssep/coarse_search/evaluator/heuristic_feature_computer.h |
 | ssep/coarse_search/searcher_builders/tractor_trailer_multi_segment_parking_bidirectional_searcher_builder.cc |
 | ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc |
 | ssep/coarse_search/evaluator/evaluator.h |
 | ssep/coarse_search/gpu_context.h |
 | ssep/coarse_search/indexed_priority_queue.h |
 | ssep/gpu/heuristic/heuristic_batch_bridge.h |
 | ssep/coarse_search/evaluator/gpu_bidirectional_kinematic_heuristic_computer.h |
 | ssep/coarse_search/motion_primitive_sampler/composed_motion_primitive_sampler.h |
 | ssep/gpu/heuristic/dubins_kernel.cuh |
 | ssep/gpu/heuristic/heuristic_batch_bridge.cu |
 | ssep/coarse_search/searcher_builders/tractor_trailer_bidirectional_searcher_builder.cc |
 | ssep/scenarios/tractor_trailer_multi_segment_parking_planner.h |
Commit
aaf191484e4e3f33b0ca49fe3b1749ebf8d2e9b2
by tangwenqingfix: SSEP: 修复变道轨迹末端可能画龙的问题
|
 | ssep/scenarios/tractor_trailer_lane_change_planner.h |
Commit
58317cd215b7ab93b84dab9a684c06666a8dacec
by wuyanjun110feat: 会车逆向道窄时不借道让行(纯逻辑判场景+走廊左界渐变钳)
窄路正面会车时, 本车道被 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 降频。
|
 | data/obstacle/obstacle_decider_attr.hpp |
 | data/map/pnc_map/pnc_map_path.hpp |
 | data/config/cfg_func_sw.cpp |
 | data/obstacle/obstacle_decider_attr.cpp |
 | data/obstacle/decision/obstacle_decision.cpp |
 | data/boundary/driving_corridor.cpp |
 | data/obstacle/decision/obstacle_decision.hpp |
 | data/map/pnc_map/pnc_map_path.cpp |
 | data/config/cfg_func_sw.hpp |
Commit
51819254225b35991f7648de9c4d98c51f1e32b2
by wuyanjun110feat: 烟台车内/柱子/房子点云及下沉坑点适配
新增 107/108/110/111 四种点云类型: 前三者(车辆内部/柱子/房子点云)标记 为无效点云, 碰撞与侧避均不考虑; 下沉坑点(111)按路边点云同等逻辑处理, 参与侧避绕行(限速不因它降速, 但 gap/碰撞仍当墙, KEB 补画为障碍规避)。
|
 | data/obstacle/ogm.cpp |
 | data/obstacle/ogm.hpp |
 | tasks/plan/keb_utils.cpp |
 | hmi/draw/draw_perception.cpp |
 | data/boundary/driving_corridor.cpp |
Commit
336c09dfd3035a62ada742b79f001dbda066f0c3
by wuyanjun110fix: 会车让行逆向道几何改用 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 段硬缩到贴车身。
|
 | data/boundary/road_boundary.hpp |
 | data/obstacle/decision/obstacle_decision.cpp |
 | data/boundary/driving_corridor.cpp |
 | data/map/pnc_map/pnc_map_path.hpp |
 | data/boundary/road_boundary.cpp |
 | data/map/pnc_map/pnc_map_path.cpp |
 | data/obstacle/decision/obstacle_decision.hpp |
Commit
2bc76bf271b37cbd6e4fb2c4eb1b0e65228db1bf
by wuyanjun110feat: HMI快照按钮触发发SNAP录包(关掉决策结果保存)
- DecisionReaction 加一次性标志 hmi_req_record_snap_(不序列化/不入FromHis) - logic plan循环消费快照按钮标志并当场复位, 修从不复位每帧触发问题 - 快照按钮不再置 save_decision_result - RosSinkRecordTrigger 按钮标志与自动条件一并发 SNAP Trigger
|
 | node/logic.cpp |
 | data/decide/decide_reaction.cpp |
 | sink/ros_sink_record_trigger.cpp |
 | data/decide/decide_reaction.hpp |
Commit
bef81f367cafc8ae74ab8e77155a23d1478f14c7
by wuyanjun110feat: 窄会车主动贴右让行(走廊左界钳到对向车近侧)+修急停判定两处笔误
- 走廊 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°), 致同向并行车误急停/斜插漏拦
|
 | data/boundary/driving_corridor.cpp |
 | data/boundary/driving_corridor.hpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
 | common/util/express.cpp |
 | data/constrain/longitude_constrain.cpp |
 | data/config/cfg_lat_plan.cpp |
Commit
b3106e93ac9e3d2edae8c64ad2ea91fc7c15e877
by wuyanjun110perf: 窄会车贴右就近查改单调游标(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
|
 | data/boundary/driving_corridor.cpp |
Commit
bacd6f75095ebef05f68e0eaf0414f92cb592fee
by tangwenqingchore: SSEP: 解决集卡倒车距离障碍物较近时会倒着进的问题
|
 | ssep/scenarios/tractor_trailer_single_segment_parking_planner.h |
Commit
ed38742ac3653b98bffbf6039acd113a38e5c05d
by wuyanjun110feat: 新增镇石(ZHEN_SHI)站点地理围栏, IMV前进进出站复用西联场景
|
 | data/ssep/forward_ec.cpp |
 | data/config/cfg_region.cpp |
 | data/config/cfg_region.hpp |
Commit
c2113047bac08d73e9035f2f77f37a6270bc6e0e
by wuyanjun110feat: 新增镇石(ZHEN_SHI)站点地理围栏, IMV前进进出站复用西联场景
|
 | data/config/cfg_region.cpp |
 | data/config/cfg_region.hpp |
 | data/ssep/forward_ec.cpp |
Commit
1e0426b45af918c79f26461ff56f81c6830e8b3b
by wuyanjun110feat: HMI快照按钮触发发SNAP录包(关掉决策结果保存)
- DecisionReaction 加一次性标志 hmi_req_record_snap_(不序列化/不入FromHis) - logic plan循环消费快照按钮标志并当场复位, 修从不复位每帧触发问题 - 快照按钮不再置 save_decision_result - RosSinkRecordTrigger 按钮标志与自动条件一并发 SNAP Trigger
|
 | data/decide/decide_reaction.hpp |
 | node/logic.cpp |
 | data/decide/decide_reaction.cpp |
 | sink/ros_sink_record_trigger.cpp |
Commit
a93cf96e88f3a7a11105b1445a36733642ee3fe7
by wuyanjun110fix: 极限变道弯道tunnel沿参考线折线化, 补挂车offtracking裕量与急弯降级
极限变道的 tunnel 约束原本用单条长直线段近似弯曲车道, 弦误差为 L^2*kappa/8 (40m 直线在 R=100m 弯道上偏 2.0m), 而 end tunnel 的 HARD 管道半宽只有车道半宽 加 5cm(约2m), 弯道上管道与真实车道几乎不重叠, 起点/终点被墙关在外面, 导致 搜索必然失败。
- 折线化: 新增 AppendOffsetPolylineTunnel(沿参考线 2m 等 l 偏移折线) / AppendCrossLineTunnel(等 s 断面法向封口线) / CalcMaxCurvature(theta 差分 带符号曲率), 替换四处弦近似: ConstructStartTunnel 两条侧墙+横切线、 ConstructEndTunnel 左右管道+后端封口、ConstructObsTunnel、 GetRealObstacleTunnel。横向量统一为 SL 约定(左正右负), 与旧 GetParallelLine "线段方向右侧为正"、且纵向线反向构造致法向翻转的隐式约定等价 - 弯道裕量: end tunnel 补挂车 offtracking(L^2*kappa/2, 上限 1.2m, 按曲率符号 只放宽弯道内侧, 仅带挂车型); 后向管道长度按曲率收缩(kappa>0.01 起, 最短 8m) - 急弯兜底: kappa>0.02(R<50m) 且端约束为 HARD 且带挂时降级为 SOFT, IMV 不降级 - 顺带修: s 超出参考线长度时线段退化的隐患; SL 法向外推在 |l|*kappa 接近 1 时 跨过曲率中心翻折成幽灵墙, 按局部曲率钳制横向跨度; 曲率采样改用插值的 GetReferencePoint, 避免最近离散点致曲率被静默低估为 0
灰度 use_func_lc_tunnel_curvature_fit / use_func_lc_tunnel_curvature_margin, cfg_func_sw 序列化 version 15。replay 与实车均未验证。
|
 | data/config/cfg_func_sw.cpp |
 | data/ssep/ex_lane_change_ec.cpp |
 | data/config/cfg_func_sw.hpp |
Commit
92088627602c301bd21d516bfa3654bcba0cc818
by wuyanjun110fix: 极限变道弯道tunnel沿参考线折线化, 补挂车offtracking裕量与急弯降级
极限变道的 tunnel 约束原本用单条长直线段近似弯曲车道, 弦误差为 L^2*kappa/8 (40m 直线在 R=100m 弯道上偏 2.0m), 而 end tunnel 的 HARD 管道半宽只有车道半宽 加 5cm(约2m), 弯道上管道与真实车道几乎不重叠, 起点/终点被墙关在外面, 导致 搜索必然失败。
- 折线化: 新增 AppendOffsetPolylineTunnel(沿参考线 2m 等 l 偏移折线) / AppendCrossLineTunnel(等 s 断面法向封口线) / CalcMaxCurvature(theta 差分 带符号曲率), 替换四处弦近似: ConstructStartTunnel 两条侧墙+横切线、 ConstructEndTunnel 左右管道+后端封口、ConstructObsTunnel、 GetRealObstacleTunnel。横向量统一为 SL 约定(左正右负), 与旧 GetParallelLine "线段方向右侧为正"、且纵向线反向构造致法向翻转的隐式约定等价 - 弯道裕量: end tunnel 补挂车 offtracking(L^2*kappa/2, 上限 1.2m, 按曲率符号 只放宽弯道内侧, 仅带挂车型); 后向管道长度按曲率收缩(kappa>0.01 起, 最短 8m) - 急弯兜底: kappa>0.02(R<50m) 且端约束为 HARD 且带挂时降级为 SOFT, IMV 不降级 - 顺带修: s 超出参考线长度时线段退化的隐患; SL 法向外推在 |l|*kappa 接近 1 时 跨过曲率中心翻折成幽灵墙, 按局部曲率钳制横向跨度; 曲率采样改用插值的 GetReferencePoint, 避免最近离散点致曲率被静默低估为 0
灰度 use_func_lc_tunnel_curvature_fit / use_func_lc_tunnel_curvature_margin, cfg_func_sw 序列化 version 15。replay 与实车均未验证。
|
 | data/ssep/ex_lane_change_ec.cpp |
 | data/config/cfg_func_sw.cpp |
 | data/config/cfg_func_sw.hpp |
Commit
37e60d1fffdd460496b2b6249ed71c92517de4c9
by wuyanjun110feat: 逆向车道快速接近凸包停车防护(cluster兜底)
对向来车未被感知分类为obj、只输出TYPE_CLUSTER时, PNC纵向决策对它完全无反应: cluster不进interested因而无decider_attr, FromHis跳过它因而无历史, ST按静态建 且不进path_time_obstacles_, 唯一影响是写OGM当前占用->只限速不停车。对"点云少+ 速度快"的逆向来车, 等它进自车path时已无刹停距离。
cluster无id概念、前后帧id不对应, 因此判据做成不依赖id的标量时序: - 逆向车道链: 自车已驶入转弯lane(无逆向邻车道)时沿参考线回退到弯道前直道作 锚点, 再沿直道predecessor往上游延伸, 终止条件是"自车上游累计长度够不够", 不是级数/链总长(单条lane就可能几百米, 按总长封顶会一次都延伸不进去) - 冲突区: 自车走廊与对向道路判定带的重叠段, 不用两条中心线求交 —— 车体有 宽度, 中心线不相交时车照样扫过去 - 判据: cluster投影到逆向链自身量弧长(不碰guide的SL, 规避弯道投影问题), 帧级批量关联维持航迹, 两车占用冲突区的时间窗交叠即触发
防误停三道门: 路沿侧边界内缩、接近速度死区、航迹成熟度。 停止线保持2s防判据抖动导致点头; 车头横向切入对向道路超阈则整体释放 —— 进区 后再停等于横在对向道上挡路, 比抢过去更危险。
灰度use_reverse_approach_stop默认关, 12项参数均可rosparam调。 HMI"逆向车道接近"菜单画链/道路边界/判定带/冲突区/命中cluster, 状态行给出各道 门的通过情况。
|
 | data/constrain/longitude_constrain.cpp |
 | hmi/widget/pnc_mat_shared.cpp |
 | data/config/cfg_safe_const.cpp |
 | data/constrain/longitude_constrain.hpp |
 | data/config/cfg_hmi.cpp |
 | data/config/cfg_hmi.hpp |
 | data/constrain/long_target.cpp |
 | data/obstacle/reverse_lane_approach.cpp |
 | data/config/cfg_func_sw.cpp |
 | hmi/draw/draw_reverse_approach.cpp |
 | hmi/draw/draw_constrain.cpp |
 | hmi/draw/draw_all.cpp |
 | data/app/fsm/stop_reason.cpp |
 | data/plan_frame.hpp |
 | common/util/express.cpp |
 | hmi/draw/draw_reverse_approach.hpp |
 | data/plan_frame.cpp |
 | tasks/deciders/long_decider/constrain_decider.hpp |
 | hmi/node_hmi.cpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
 | data/config/cfg_func_sw.hpp |
 | data/config/cfg_safe_const.hpp |
 | data/obstacle/reverse_lane_approach.hpp |
Commit
b61c553c0f4ff9a36aedab5c5614f28b518af1c2
by wuyanjun110chore: 逆向车道接近防护灰度默认打开
hpp 类内初始化与 cpp 的 rosparam 默认值一并改 true —— 前者在回放 version<16 的老 dump 时生效, 只改后者会让老包回放仍是关的。
|
 | data/config/cfg_func_sw.hpp |
Commit
afa15f9f2342928ced17b1889a3035764b115244
by wuyanjun110fix: 窄会车限速HMI补绘制颜色, 原落到default暗红
|
 | hmi/draw/draw_constrain.cpp |
Commit
29aab4d28dc68f370f38bc4787b9fa5c55d256b9
by wuyanjun110feat: 红绿灯实时灯态停车, 含倒计时通行判断与红灯缓行
从 feat_traffic 移植实时灯态接入, 原逻辑只按地图判"路口有灯就停", 现改为按灯色放行: - 新增 TrafficLightData 与 ROS 源, 订阅 traffic_light_det - 按路口转向选相位判定停走, 补齐右转灯(未检出右转灯时维持放行) - HMI 诊断显示灯态与倒计时
倒计时(感知复用 conf 字段承载)相关: - 绿灯剩余不足以让车头驶出路口时提前停等; 已无法在停止线前停住 则继续通过, 避免明知停不住仍急刹 - 红灯将结束时压低接近速度缓行; 停止线约束保留, 不会闯红灯
移植修正: - FromMsg 补 clear(), 原实现跨帧累积会让历史绿灯命中 IsHaveStatus - ROS 源补 mutex, 与其余数据源一致 - 未移植 NeedTrafficLightStop 里的调试用 return true(会架空灰度开关)
灰度 use_func_traffic_light_countdown / use_func_traffic_light_creep 默认关; PlanFrame 序列化升至 version 6, 新字段按版本追加。
|
 | data/constrain/longitude_constrain.hpp |
 | hmi/widget/diagnose.cpp |
 | source/module.cpp |
 | data/config/cfg_topic.cpp |
 | data/vehicle/traffic_light_data.cpp |
 | data/config/cfg_topic.hpp |
 | common/util/express.cpp |
 | data/constrain/longitude_constrain.cpp |
 | data/constrain/disable_stop_range.cpp |
 | data/config/cfg_func_sw.hpp |
 | data/config/cfg_func_sw.cpp |
 | data/vehicle/traffic_light_data.hpp |
 | source/ros_source_traffic_light.cpp |
 | data/config/cfg_env_const.cpp |
 | data/plan_frame.hpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
 | source/ros_source_traffic_light.hpp |
 | data/config/cfg_env_const.hpp |
 | data/constrain/disable_stop_range.hpp |
 | hmi/draw/draw_constrain.cpp |
 | tasks/deciders/long_decider/constrain_decider.hpp |
Commit
9e7385a8a3484d64ba9b49974ca6230826de396e
by wuyanjun110style: 灯相位改指定初始化器, 防字段顺序变动时静默错位
|
 | data/vehicle/traffic_light_data.cpp |
Commit
23b1fbfac1ccccc0570406cec64bbe47367d9b69
by wuyanjun110feat: 地图标注红绿灯相位与倒计时, 挂动态层避免静态缓存不刷新
|
 | hmi/draw/draw_map.cpp |
 | hmi/draw/draw_map.hpp |
Commit
f7fe9b1838d7deb33e6534ab396cc6efefd484ad
by wuyanjun110build: Debug 调试信息拆到 .dwo, 链接改用 lld
-fstandalone-debug 让每个 .o 都带完整调试信息, 全量产出 819 个 .o 共 4.7GB、 可执行文件各 1.35GB, 结果 ccache 装不下一次全量(命中率仅 17%), 链接也很慢。 追加 -gsplit-dwarf 把调试信息拆到独立 .dwo, 不再进 .o 和最终二进制。两个 flag 各管一件事(前者决定类型完整性, 后者决定存放位置), 必须同时保留, 调试能力不变。 改动后 .o 总量降到 1.25GB, pnc_node 降到 768MB。
链接器在探测到 lld 时改用 lld, 链接阶段耗时占比从瓶颈降到 0.3%。lld 是独立包 不随 clang 一起装, 所以先问编译器能否使用再启用, 没装的机器回落系统默认链接器。
注意: .dwo 按相对路径记录, 调试器需从 build/ 目录启动才能定位。
|
 | CMakeLists.txt |
Commit
d7c66ed883d6c439a310ea0f7569991cf1bf51ef
by wuyanjun110fix: BETWEEN_YARD 条件增加前进方向判断, 倒车时不启用
|
 | scenarios/task_condition_evaluator.cpp |
Commit
4f9de105c49de6de1a32e3b706f16133628e6479
by tangwenqingfix: SSEP: 解决终点区域被加入close set导致无法搜到终点的问题
|
 | ssep/coarse_search/motion_primitive_sampler/dubins_path_motion_primitive_sampler.cc |
 | ssep/coarse_search/searcher_builders/rigid_truck_general_searcher_builder.cc |
 | ssep/coarse_search/motion_primitive_sampler/dubins_path.cc |
 | ssep/coarse_search/multi_stage_hybrid_astar_search_engine.cc |
Commit
a56b63fa3d80b8b6fb06b27af17a45be8dbe73dc
by tangwenqingfeat: SSEP: IMV新增基于pass point倒车点的多段搜索
|
 | ssep/data_structures/ssep_scenario_type.hpp |
 | ssep/maps/ogm_config_utils.cc |
 | ssep/scenarios/imv_multi_segment_parking_planner.h |
 | ssep/scenarios/scenario_planner_factory.h |
 | ssep/coarse_search/bidirectional_hybrid_astar_search_engine.h |
 | ssep/coarse_search/searcher_builders/imv_multi_segment_parking_bidirectional_searcher_builder.h |
 | ssep/protos/ssep_scenario_type.proto |
 | ssep/coarse_search/searcher_builders/imv_multi_segment_parking_bidirectional_searcher_builder.cc |
 | ssep/coarse_search/bidirectional_hybrid_astar_search_engine.cc |
Commit
b2f9bbd3d848b5a7587239e398db547471e9b00c
by wuyanjun110feat: 锁站方向判定增加终点在车后倒车分支
终点在车后且对齐余量超过 1m 时直接置为倒车方向, 避免落到 req_step_align 分支后按前进方向规划。
|
 | data/plan/path_direction_data.cpp |
Commit
555643794eb3726b03b06138afd7b43fecee2241
by wuyanjun110fix: 途径点匹配改按横向距离绝对值取最近中心线
引桥/岸桥/park/buffer/lane_change 五处筛选中心线时, min_l 初值为 DBL_MAX 却用带符号的 l() 比较, 实际选出的是横向偏移最负(最靠右)的那条, 而非横向 最近的。外层已按 fabs(l()) < 2.0 过滤, 内层比较与之矛盾。改为与 UpdateDestAttr / UpdateCurrentAttr 一致的 fabs 写法。
|
 | data/map/reference/center_line.cpp |
Commit
55345aae591d63ec186a92ce017ada334467c55c
by wuyanjun110fix: center_line 深度 review 一轮(判定修正+越界防护+去冗余拷贝+清死代码)
判定: - 变道左右邻的 distance 跨越数不同, 原 check_range 被右邻覆盖后左侧实线 检查也复用它, 拆成 left/right 各算各的 - 引桥途径点 s 只算不用, 结果取到最后一个而非最近的, 补上筛选 - seaside/lane_change 比较用 start_match.s() 却存 end_match.s(), 下一轮 比较基准错位, 统一回 start
越界与崩溃防护: - RelationOfRefByIdx 两个重载空容器时 size()-1 下溢, 后面 CHECK 必失败, 改优雅返回 INT32_MAX(46 处调用点已按此值处理) - UpdateSwitchAttr 开头补 empty() 早退, 原先 back() 无保护 - JudgeIsInBlackLane 查的是邻车道, 补 idx==0 查左邻的边界判断 - GetBlackLaneDistanceFromEgo 的 count 是变道相对关系可为负, idx+count 走 size_t 会下溢, 改 int64_t 中转后校验 - SwitchData::curr_lane_idx_/target_lane_idx_ 无类内初始化也不在构造列表, 补 SIZE_MAX
冗余拷贝(均为每帧热路径, CenterLine 含完整点列): - UpdateBlackLaneDistance 深拷贝整个 MltCenterLines - GetBlackLaneDistanceFromEgo 首次 at(idx) 拷贝立即被覆盖 - JudgeIsInBlackLane 按值拷贝邻车道
死代码: - 136 行注释掉的 lane_change 旧实现 - LaneChangePtIsInCurPath(条件括号错位致语义反转, 仅注释块内调用) - buffer 途径点在 center_line 侧的链路(赋值处早已注释, 无消费者); AppReaction::buffer_passing_pts_ 仍在用, 未动
|
 | data/map/reference/center_line.hpp |
 | data/plan/switch_data.hpp |
 | data/map/reference/center_line.cpp |
Commit
ec9340249732808b8bb0aff790e41a93e52afb95
by wuyanjun110build: Debug 调试信息拆到 .dwo, 链接改用 lld
-fstandalone-debug 让每个 .o 都带完整调试信息, 全量产出 819 个 .o 共 4.7GB、 可执行文件各 1.35GB, 结果 ccache 装不下一次全量(命中率仅 17%), 链接也很慢。 追加 -gsplit-dwarf 把调试信息拆到独立 .dwo, 不再进 .o 和最终二进制。两个 flag 各管一件事(前者决定类型完整性, 后者决定存放位置), 必须同时保留, 调试能力不变。 改动后 .o 总量降到 1.25GB, pnc_node 降到 768MB。
链接器在探测到 lld 时改用 lld, 链接阶段耗时占比从瓶颈降到 0.3%。lld 是独立包 不随 clang 一起装, 所以先问编译器能否使用再启用, 没装的机器回落系统默认链接器。
注意: .dwo 按相对路径记录, 调试器需从 build/ 目录启动才能定位。
|
 | CMakeLists.txt |
Commit
8a87ff88ceb619b57bc3fb2609e3e5d5731598a1
by wuyanjun110fix: BETWEEN_YARD 条件增加前进方向判断, 倒车时不启用
|
 | scenarios/task_condition_evaluator.cpp |
Commit
7268950b8f11da77e93c148cf9e661c396982533
by wuyanjun110feat: 锁站方向判定增加终点在车后倒车分支
终点在车后且对齐余量超过 1m 时直接置为倒车方向, 避免落到 req_step_align 分支后按前进方向规划。
|
 | data/plan/path_direction_data.cpp |
Commit
ffcbaf27b3966535b3120134e0ae867ba6af7098
by wuyanjun110fix: 途径点匹配改按横向距离绝对值取最近中心线
引桥/岸桥/park/buffer/lane_change 五处筛选中心线时, min_l 初值为 DBL_MAX 却用带符号的 l() 比较, 实际选出的是横向偏移最负(最靠右)的那条, 而非横向 最近的。外层已按 fabs(l()) < 2.0 过滤, 内层比较与之矛盾。改为与 UpdateDestAttr / UpdateCurrentAttr 一致的 fabs 写法。
|
 | data/map/reference/center_line.cpp |
Commit
07d92304fb54c78cba2b3372c5c505f2b6438d9d
by wuyanjun110fix: center_line 深度 review 一轮(判定修正+越界防护+去冗余拷贝+清死代码)
判定: - 变道左右邻的 distance 跨越数不同, 原 check_range 被右邻覆盖后左侧实线 检查也复用它, 拆成 left/right 各算各的 - 引桥途径点 s 只算不用, 结果取到最后一个而非最近的, 补上筛选 - seaside/lane_change 比较用 start_match.s() 却存 end_match.s(), 下一轮 比较基准错位, 统一回 start
越界与崩溃防护: - RelationOfRefByIdx 两个重载空容器时 size()-1 下溢, 后面 CHECK 必失败, 改优雅返回 INT32_MAX(46 处调用点已按此值处理) - UpdateSwitchAttr 开头补 empty() 早退, 原先 back() 无保护 - JudgeIsInBlackLane 查的是邻车道, 补 idx==0 查左邻的边界判断 - GetBlackLaneDistanceFromEgo 的 count 是变道相对关系可为负, idx+count 走 size_t 会下溢, 改 int64_t 中转后校验 - SwitchData::curr_lane_idx_/target_lane_idx_ 无类内初始化也不在构造列表, 补 SIZE_MAX
冗余拷贝(均为每帧热路径, CenterLine 含完整点列): - UpdateBlackLaneDistance 深拷贝整个 MltCenterLines - GetBlackLaneDistanceFromEgo 首次 at(idx) 拷贝立即被覆盖 - JudgeIsInBlackLane 按值拷贝邻车道
死代码: - 136 行注释掉的 lane_change 旧实现 - LaneChangePtIsInCurPath(条件括号错位致语义反转, 仅注释块内调用) - buffer 途径点在 center_line 侧的链路(赋值处早已注释, 无消费者); AppReaction::buffer_passing_pts_ 仍在用, 未动
|
 | data/plan/switch_data.hpp |
 | data/map/reference/center_line.hpp |
 | data/map/reference/center_line.cpp |
Commit
f52a80e3e066ada24ab08c9c3386d1f6dcc18f1a
by wuyanjun110feat: 添加车辆最大曲率计算函数,优化运动学处理
|
 | data/config/vehicle_kinematics.hpp |
 | math/dubins_curve/dubins_curve.hpp |
Commit
5b27175f0138069d8f6b7d25750b6511d52adb1a
by wuyanjun110feat: HMI 显示 road boundary 的 shift type
在 road boundary 左边界点旁标注每段的 shift type, 类型跳变处各标一个, 同类型连续断面不重复标。
文字画在 cv::flip 之后(flip 前画会上下颠倒), 沿用 DrawReverseApproach 的两段式: Draw 阶段只缓存 UTM 锚点, DrawText 做坐标变换并出字。
|
 | hmi/draw/draw_path_boundary.hpp |
 | hmi/widget/pnc_mat_shared.cpp |
 | hmi/draw/draw_path_boundary.cpp |
 | hmi/draw/draw_all.cpp |
Commit
6d93e3a9c729dba971bb8b40f0600f479bffc180
by wuyanjun110fix: 修复 TrajectoryPoints 三处按弧长插值的参数误用
MatchPtByt/MatchPtByS/MatchMultiPtsByMultiS 都把 [0,1] 的比例传给 InterpPtByLinearS, 而后者第三参是绝对弧长, 于是恒命中其 "p0.s() >= s - 0.01" 早退分支 —— 轨迹中段 s 是几十米量级、恒大于比例值, 插值从未真正生效, 取点一直 退化成按离散点向下取整。
- MatchPtByt: 把时间比例换算成对应弧长再传 - MatchPtByS / MatchMultiPtsByMultiS: 本就按 s 查, 直接传 s - MatchMultiPtsByMultiS: 顺带修解引用 end() 的 UB 与 l/u 写反(该函数无调用方) - InterpPtByLinearS: z_ 是被重载的字段(存挂车横摆角, 另有 10000 终止哨兵), 插值真正生效后不能再盲目 lerp —— 任一端越界或两端相差超过 pi 时取下界点
影响面较大: obstacle 预测采样、DP 动态代价、走廊 s<->t 反查、lattice 停车轨迹、 cloud_trajectory 都从"取整"变为"真插值", 数值会有变化, 目前只验证过变道场景。
|
 | data/common/trajectory_point.cpp |
Commit
d22a1c8ac945ee70b47bf11a0263366d995c84f9
by wuyanjun110fix: 修复 PJPO 变道横移走不完与跨两车道路径扭曲
一、变道横移走不完(车挪 1~3m 就停住, 路径起点段变直) 车的横移速率 ≈ init_dl × v(每帧只执行路径最前约 0.5m), 所以起点斜率一旦被压到 0, 路径形状再对车也不动。两处把它压到 0: - 起点 dl 在变道场景恢复硬约束(新增 soften_init_dl)。dcf2390c1 为治 side-pass 的起点 kappa kink 把 init_dl 软化, 但变道恰恰需要起点持续保持朝目标的横移 斜率, 软化后 QP 每帧把它拉回 0(kSoftInitPenalty 相对 l_ref 权重极低, 拉回几乎 无代价), 实测逐帧 0.113 -> 0.0137 -> 0.00065。 - kInitDlOutwardMax 的"向外"判据改为相对 path_reference_l。原按 init_l 符号判, 会把 PREPARE 段"正朝目标车道靠拢"误判成向外漂移(实测 ref_l=1.57/init_l=0.82/ init_dl=0.06), 起点斜率被夹死在 0.05。 另新增 BoostLaneChangeInitDl: QP 每帧的解从起点起 dl 就单调递减, 而车只执行起点 段, 构成一阶惯性环节(指数收敛、尾巴无限长), 只能在入口给定横移速率下限打破。
二、跨两车道路径扭曲(变一道正常, 变两道路径扭、控制跟不住而触发曲率限速) - 变道 dl 上限放宽到 0.8。单车道 S 曲线峰值仅 0.26, 跨两车道需 ~0.5, 恰好顶死 ±0.5 上限, QP 在约束边界上滑动导致解非光滑。用同一帧 dump 离线扫描, dl 拐点 数与触限程度严格对应: 0.3->7, 0.5->3, 0.8->1; 放宽后实际只用到 0.505。 - config_local 的 lane_change_weight.dl_weight 20->5000(不在本仓库, 需单独同步) 压 dl 峰值治"急": 峰值 0.42->0.30, 拐点 2->0, 收敛距离 18m->44.5m。
三、连带修复 - init_dl 为硬约束时补上夹进 dl 边界。piecewise_jerk_problem 把 dx[0] 上下界同设 为 init 值(硬等式), 与 dx 的 box 约束矛盾时 OSQP 直接 primal infeasible, 而变道 关闭了 all_soft 兜底, 会一路掉到 last_path fallback。 - 起点 dl/ddl 增加 Frenet 直传(参考线几何未变时从上一帧解按 s 取), 绕开 Cartesian 往返; 失败自动回退反算。 - PjpoConstraintOptions 序列化补 enable_all_soft_fallback(版本 2->3)。生产置 false 而结构体默认 true, 之前从不入档, 离线回放会多挂 all_soft 档致复现不可信。 - 新增离线工具 AnalyzeDlBoundEffect(扫 dl 上限/权重, 打印 opt_dl 曲线与拐点数)与 SidePassOutwardClampRegression(比对新旧向外判据并校验解是否退化)。
验证: 实车变道正常、曲率连续; side-pass 回归 72 例 0 退化, 其中 1 例判据差异是对 旧判据误夹的纠正(车朝走廊中点走却被当成向外漂移)。
|
 | tasks/deciders/lat_decider/switching_bounds_decider.cpp |
 | algorithm/plan/pjpo.hpp |
 | tasks/plan/pjpo_task.cpp |
 | Testing/pjpo_case_test.cpp |
 | algorithm/plan/pjpo.cpp |
 | data/plan/start_point_data.cpp |
Commit
494a4c03c12d713a4f2c572f39263f19537749f2
by wuyanjun110feat: 梁山港进料场景也使用通用牵引挂车泊车场景
原先仅出料(BulkOut)时设为 kTractorTrailerGeneral, 现进料(BulkIn)同样适用。
|
 | data/ssep/forward_ec.cpp |
Commit
6b68ccaa05a2dfddc975df3c86c4ab8b783fa6d2
by wuyanjun110feat: 云端轨迹下发各 lane 的剩余长度与总长度
Traj.msg 的 length_s/total_length_s 与 lane_ids 逐项对齐, 取值来自 第一条引导线的 line_infos: 自车所在 lane 只算未走完的部分, 其后的 lane 取引导线覆盖的全长; 变道备用引导线不下发长度。
|
 | data/plan/cloud_trajectory.hpp |
 | data/plan/cloud_trajectory.cpp |
Commit
110e813513452226d19c6b61ef6ade1f9018d9ca
by wuyanjun110fix: 修复 TrajectoryPoints 三处按弧长插值的参数误用
MatchPtByt/MatchPtByS/MatchMultiPtsByMultiS 都把 [0,1] 的比例传给 InterpPtByLinearS, 而后者第三参是绝对弧长, 于是恒命中其 "p0.s() >= s - 0.01" 早退分支 —— 轨迹中段 s 是几十米量级、恒大于比例值, 插值从未真正生效, 取点一直 退化成按离散点向下取整。
- MatchPtByt: 把时间比例换算成对应弧长再传 - MatchPtByS / MatchMultiPtsByMultiS: 本就按 s 查, 直接传 s - MatchMultiPtsByMultiS: 顺带修解引用 end() 的 UB 与 l/u 写反(该函数无调用方) - InterpPtByLinearS: z_ 是被重载的字段(存挂车横摆角, 另有 10000 终止哨兵), 插值真正生效后不能再盲目 lerp —— 任一端越界或两端相差超过 pi 时取下界点
影响面较大: obstacle 预测采样、DP 动态代价、走廊 s<->t 反查、lattice 停车轨迹、 cloud_trajectory 都从"取整"变为"真插值", 数值会有变化, 目前只验证过变道场景。
|
 | data/common/trajectory_point.cpp |
Commit
da4be3630541b4f5bdbf9c92a634bdf9edf092ca
by wuyanjun110fix: 修复 PJPO 变道横移走不完与跨两车道路径扭曲
一、变道横移走不完(车挪 1~3m 就停住, 路径起点段变直) 车的横移速率 ≈ init_dl × v(每帧只执行路径最前约 0.5m), 所以起点斜率一旦被压到 0, 路径形状再对车也不动。两处把它压到 0: - 起点 dl 在变道场景恢复硬约束(新增 soften_init_dl)。dcf2390c1 为治 side-pass 的起点 kappa kink 把 init_dl 软化, 但变道恰恰需要起点持续保持朝目标的横移 斜率, 软化后 QP 每帧把它拉回 0(kSoftInitPenalty 相对 l_ref 权重极低, 拉回几乎 无代价), 实测逐帧 0.113 -> 0.0137 -> 0.00065。 - kInitDlOutwardMax 的"向外"判据改为相对 path_reference_l。原按 init_l 符号判, 会把 PREPARE 段"正朝目标车道靠拢"误判成向外漂移(实测 ref_l=1.57/init_l=0.82/ init_dl=0.06), 起点斜率被夹死在 0.05。 另新增 BoostLaneChangeInitDl: QP 每帧的解从起点起 dl 就单调递减, 而车只执行起点 段, 构成一阶惯性环节(指数收敛、尾巴无限长), 只能在入口给定横移速率下限打破。
二、跨两车道路径扭曲(变一道正常, 变两道路径扭、控制跟不住而触发曲率限速) - 变道 dl 上限放宽到 0.8。单车道 S 曲线峰值仅 0.26, 跨两车道需 ~0.5, 恰好顶死 ±0.5 上限, QP 在约束边界上滑动导致解非光滑。用同一帧 dump 离线扫描, dl 拐点 数与触限程度严格对应: 0.3->7, 0.5->3, 0.8->1; 放宽后实际只用到 0.505。 - config_local 的 lane_change_weight.dl_weight 20->5000(不在本仓库, 需单独同步) 压 dl 峰值治"急": 峰值 0.42->0.30, 拐点 2->0, 收敛距离 18m->44.5m。
三、连带修复 - init_dl 为硬约束时补上夹进 dl 边界。piecewise_jerk_problem 把 dx[0] 上下界同设 为 init 值(硬等式), 与 dx 的 box 约束矛盾时 OSQP 直接 primal infeasible, 而变道 关闭了 all_soft 兜底, 会一路掉到 last_path fallback。 - 起点 dl/ddl 增加 Frenet 直传(参考线几何未变时从上一帧解按 s 取), 绕开 Cartesian 往返; 失败自动回退反算。 - PjpoConstraintOptions 序列化补 enable_all_soft_fallback(版本 2->3)。生产置 false 而结构体默认 true, 之前从不入档, 离线回放会多挂 all_soft 档致复现不可信。 - 新增离线工具 AnalyzeDlBoundEffect(扫 dl 上限/权重, 打印 opt_dl 曲线与拐点数)与 SidePassOutwardClampRegression(比对新旧向外判据并校验解是否退化)。
验证: 实车变道正常、曲率连续; side-pass 回归 72 例 0 退化, 其中 1 例判据差异是对 旧判据误夹的纠正(车朝走廊中点走却被当成向外漂移)。
|
 | algorithm/plan/pjpo.hpp |
 | data/plan/start_point_data.cpp |
 | tasks/deciders/lat_decider/switching_bounds_decider.cpp |
 | tasks/plan/pjpo_task.cpp |
 | Testing/pjpo_case_test.cpp |
 | algorithm/plan/pjpo.cpp |
Commit
8625a005fd68e71ee1e7bdf936f0c6edfc0d9b7e
by wuyanjun110feat: 云端轨迹下发各 lane 的剩余长度与总长度
Traj.msg 的 length_s/total_length_s 与 lane_ids 逐项对齐, 取值来自 第一条引导线的 line_infos: 自车所在 lane 只算未走完的部分, 其后的 lane 取引导线覆盖的全长; 变道备用引导线不下发长度。
|
 | data/plan/cloud_trajectory.hpp |
 | data/plan/cloud_trajectory.cpp |
Commit
30cbd506d639839b8df2171d9863099ea9492048
by wuyanjun110feat: HMI 显示 road boundary 的 shift type
在 road boundary 左边界点旁标注每段的 shift type, 类型跳变处各标一个, 同类型连续断面不重复标。
文字画在 cv::flip 之后(flip 前画会上下颠倒), 沿用 DrawReverseApproach 的两段式: Draw 阶段只缓存 UTM 锚点, DrawText 做坐标变换并出字。
|
 | hmi/draw/draw_path_boundary.cpp |
 | hmi/widget/pnc_mat_shared.cpp |
 | hmi/draw/draw_all.cpp |
 | hmi/draw/draw_path_boundary.hpp |
Commit
3359cfe5cd2ae8331fcf07d12735f02b624b095e
by wuyanjun110fix:修复合并的bug
|
 | hmi/draw/draw_all.cpp |
 | hmi/widget/pnc_mat_shared.cpp |
Commit
e616fd804dd4aad2831290b29e1549a66b725bf2
by tangwenqingchore: KEB: 集卡lane follow优化轨迹末状态使用软约束、调整参数
|
 | algorithm/plan/keb_optimizer.cpp |
 | offboard/keb_path_opt_cli/keb_scene_converter.cc |
 | offboard/keb_path_opt_cli/keb_simulator.cc |
 | ssep/keb_optimizer/tractor_trailer_keb_optimizer.cc |
 | algorithm/plan/keb_optimizer.hpp |
 | tasks/plan/keb_lane_follow_path_task.cpp |
 | ssep/keb_optimizer/tractor_trailer_keb_optimizer.h |
Commit
5c38a92c41b9a233368ed32efc2c458151835018
by wuyanjun110feat: 逆向车道接近支持 Replayer 回放诊断
|
 | hmi/draw/draw_reverse_approach.cpp |
 | data/plan_frame.cpp |
 | data/plan_frame.hpp |
 | data/obstacle/reverse_lane_approach.hpp |
 | hmi/replayer_hmi.cpp |
 | replayer/replayer_data_process/replayer_data_process.cpp |
 | hmi/draw/draw_reverse_approach.hpp |
 | data/obstacle/reverse_lane_approach.cpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
Commit
95407a6e3a73566bcde36b509d0f64e176ed2571
by wuyanjun110fix: 修正逆向车道防护区域构建
按 section real_lane_ids 过滤反向生成的重叠车道,统一初始候选和前驱链校验。
防护区域靠自车侧使用逆向车道左 lane boundary,按自车方向的左侧外沿使用逆向车道右 road boundary,避免正反向 road boundary 重叠造成区域越界。
冲突区域改为与自车走廊求交,并补充纵向 padding 与去重采样,避免垂直相交时 polygon 退化;同步更新 HMI 边界显示。
|
 | data/obstacle/reverse_lane_approach.cpp |
 | hmi/draw/draw_reverse_approach.cpp |
 | data/obstacle/reverse_lane_approach.hpp |
Commit
f8383017ad40e74bba23f8eedfd1ed144d3a18e1
by wuyanjun110feat: 增加堆高机侧向吊具高度防护
按堆高机与车身的横纵向位置及垂直朝向识别侧向作业场景。
场景内采用可配置的 5.5 米吊具高度阈值,并追加角度、横向距离和纵向容错配置及回放序列化。
|
 | config/config_car/plan.yaml |
 | tasks/deciders/long_decider/constrain_decider.hpp |
 | config/config_truck/plan.yaml |
 | data/config/cfg_safe_const.cpp |
 | tasks/deciders/long_decider/constrain_decider.cpp |
 | data/config/cfg_safe_const.hpp |
 | config/config_imv/plan.yaml |
Commit
ca4985937f3eda88a3813000f1dc4ce9e56ab031
by wuyanjun110feat: 显示障碍物朝向与速度方向
修正速度方向访问器,并为外部聚类障碍物初始化速度方向。
HMI 使用较浅、较短的箭头区分 heading 和速度方向,同时过滤场桥虚拟障碍物及聚类障碍物。
|
 | hmi/draw/draw_perception.cpp |
 | data/obstacle/perception_obstacle.cpp |
 | data/obstacle/perception_obstacle.hpp |
Commit
29b6b238475dd1893941953a4293910c95006f40
by wuyanjun110fix: 禁止跳过动态场桥临停约束
在 Range 中增加可跳过属性,并将属性传递到临停约束。\n\n区分动态场桥与静态场桥、未聚类障碍物,动态场桥始终保持停车且拒绝 SS 跳过请求,同时记录告警日志。\n\n修正出堆场场桥障碍物索引读取错误。
|
 | data/constrain/disable_stop_range.hpp |
 | data/constrain/disable_stop_range.cpp |
 | data/constrain/temporary_stop_data.cpp |
 | data/constrain/block_data.cpp |
 | data/constrain/block_data.hpp |
Commit
ad80465330e84bdcb0d01569eb179354d4cb00d1
by wuyanjun110feat: 支持真石 IMV 按途经点多段停车
真石 IMV 进场且携带搜索途经点时,切换到 IMV 多段停车规划器并构建 pass posture。
收紧途经点支持范围,避免真石 CAR/TT 意外启用随机途经点采样,同时保持其他港区原有逻辑不变。
|
 | data/ssep/forward_ec.cpp |