ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

8465132

8465132 我重新按代码核对了。下面只讲刚交付的“航向结束版”数值以这版 [planner.yaml](C:/Users/35341/Documents/Codex/2026-10-05/new-chat/outputs/urinay_local_planner/config/planner.yaml) 为准。先记住车辆按route_order顺序走每一段只判断什么时候进入下一段。起点直道 start_straight ↓ 识别并确认大半圆入口 大半圆 big_semicircle ↓ 接近终点航向合格前方空白 无锥桶段 coneless ↓ 接近模板终点航向合格 出口小直道 exit_straight ↓ 接近直道终点发现左转趋势 直角 right_angle ↓ 进入本段后累计左转达到85° 连接直道 corner_to_curve ↓ 识别并确认普通弯入口 普通小弯 small_curve ↓ 接近圆弧终点航向合格 返回起点 return_start ↓ 回到起点且满足计圈条件 停车完成启动时先积累可靠路径才允许起步。目前要求同时满足参数当前值含义startup_accumulation_time0.80 秒至少积累这么长时间startup_min_scans10至少收到10帧扫描startup_min_confirmed_cones4至少4个确认锥桶startup_min_selected_gates2至少2个选中门startup_min_path_length1.50 米中线至少这么长同时要求搜索有效、没有进入恢复模式。积累期间移动超过startup_max_motion: 0.08米或转动超过startup_max_yaw_deg: 3.0度会重新积累。① 起点直道 → 大半圆看前面的赛道形状。起点直道按锥桶中线走。当识别到符合下一段半径、方向的圆弧入口并且入口连续稳定就切到大半圆。这里有两种识别来源已经确认的圆弧几何模型或者正常双侧搜索得到的锥桶门中点拟合。主要参数是参数当前值对切换的作用route.start_straight.min_distance0.0 米本段走够此距离后才允许识别下一段route.start_straight.max_distance20.0 米超过此行程还没确认入口停车route.big_semicircle.radius1.85 米要找的圆弧半径也决定后面的固定圆弧route.big_semicircle.angle_deg180.0°这段执行左转半圆fixed_track_curve_turn_deg12.0°门中点搜索路径至少出现这样的同向弯曲趋势fixed_track_fit_tolerance0.22 米门中点与指定圆弧的拟合容差fixed_track_entry_max_distance4.0 米最远接受多远的弯道入口fixed_track_entry_lateral_tolerance0.55 米入口允许偏离参考前进方向多远fixed_track_candidate_match_distance0.45 米连续帧识别出的入口位置允许变化多大fixed_track_curve_confirm_frames2 帧入口连续稳定2帧后切段连续入口的方向一致性还使用fixed_track_exit_heading_deg: 34.0。门中点拟合分支还要求至少3个当前锥桶支持的门以及足够的圆弧覆盖门宽依据track_width: 1.50和fixed_track_assist_gate_width_tolerance: 0.30判断。几何模型分支则受geometry_enabled、geometry_inner_radius/outer_radius、geometry_inlier_tolerance、geometry_min_side_cones、geometry_min_arc_span_deg、geometry_confirmation_frames影响。这些是前面的几何识别参数先不用和切段确认帧数一起调。这里的12°是“前方路径弯了多少”不是车已经转了12°。提前识别入口后固定路径中会保留通往入口的接近段。② 大半圆 → 无锥桶段末端、航向、空白区一起判断。目前必须同时满足固定路径剩余长度 ≤0.40 米。车辆到固定终点的距离 ≤0.40 米。车头与终点方向的误差 ≤34°。沿指定方向的累计转角足够。指定前方区域里没有当前锥桶。上述条件连续满足2帧。对应参数参数当前值作用fixed_track_exit_distance0.40 米同时约束“剩余路径”和“距终点”fixed_track_exit_heading_deg34.0°终点朝向容差同时用于检查累计转角fixed_track_gap_min_x0.35 米空白区前后范围的近端fixed_track_gap_max_x2.0 米空白区前后范围的远端fixed_track_gap_half_width1.0 米空白区左右各1米fixed_track_gap_confirm_frames2连续空白确认帧数当前累计转角下限计算为18034146°但转到146°不会单独触发切换终点距离等条件也必须满足。空白区没有锥桶指的是上述局部区域不要求整幅雷达都看不到锥桶。③ 无锥桶段 → 出口小直道看模板是否接近走完。无锥桶段按你的固定模板行驶左转22.5° → 直线2.232米 → 右转45° → 直线2.232米 → 左转22.5°模板形状由下面三个数组决定route.coneless.lengths: [0.0, 2.232, 0.0, 2.232, 0.0] route.coneless.radii: [1.0, 0.0, 1.0, 0.0, 1.0] route.coneless.angles_deg: [22.5, 0.0, -45.0, 0.0, 22.5]退出使用route.coneless.exit: path fixed_track_exit_distance: 0.40 fixed_track_exit_heading_deg: 34.0也就是剩余≤0.40米、距终点≤0.40米、终点朝向误差≤34°当帧切换。这一段不要求出口重新出现锥桶。因此fixed_track_reacquire_frames和fixed_track_reacquire_distance不控制当前无锥桶段的退出。进入出口小直道时直线从车辆实际位置开始生成方向沿用上一段的理论出口方向。④ 出口小直道 → 直角接近末端再看搜索路径有没有转弯趋势。这段固定直线长度是route.exit_straight.lengths: [1.50]切入直角要求同时满足剩余路径和距终点都 ≤fixed_track_exit_distance: 0.40米。终点朝向误差 ≤fixed_track_exit_heading_deg: 34.0度。辅助搜索路径出现符合下一段方向的转弯趋势目前下一段是左转。这里的趋势判断在源码中固定为约3°不是上面的12°。它检查搜索路径前最多8个点要求有效前进长度至少0.30米并出现至少3°的同向累计转折允许恢复路径提供趋势证据。这些条件当帧满足就切段这里不使用fixed_track_curve_confirm_frames的2帧确认。如果车辆严格沿直线走1.50米直道在走到约1.10米时就可能进入允许切换的范围1.500.401.10米因此觉得直角开始太早或太晚优先核对route.exit_straight.lengths实际直道长度。fixed_track_exit_distance允许提前接近终点多少距离。切换时以车辆当时的位置、航向激活L形直角引导。⑤ 直角 → 连接直道新版看车辆累计航向变化。目前配置是route.right_angle.angle_deg: 90.0 route.right_angle.corner_in_length: 1.0 route.right_angle.corner_out_length: 1.5 corner_exit_turn_deg: 85.0各参数的分工参数控制什么angle_deg: 90.0L形参考方向左转90°填-90.0为右转corner_in_length: 1.0激活点到参考拐点的距离corner_out_length: 1.5拐点后的备用引导长度corner_exit_turn_deg: 85.0车辆实际累计转到多少度判定本段结束进入直角段时从零累计沿指定方向净转角达到85°当帧进入corner_to_curve。这一切换不要求走满出口线也不等待出口锥桶和连续确认。反向摆动会扣回累计值跨越 ±180°会正确处理。旧corner_handoff_*已停用fixed_track_exit_distance和fixed_track_exit_heading_deg也不控制新版直角结束。航向取自/odom_combined的姿态上游融合了IMU时使用的就是融合后的航向。⑥ 连接直道 → 普通小弯重新按锥桶搜索确认下一圆弧入口。进入corner_to_curve后车辆按照正常搜索中线行驶并以直角退出时的实际车头方向作为入口识别参考。切换方法与“起点直道 → 大半圆”相同主要区别是route.corner_to_curve.min_distance: 0.0 route.corner_to_curve.max_distance: 6.0 route.small_curve.radius: 2.0 route.small_curve.angle_deg: 90.0含义是立即允许识别下一弯道。寻找半径2米的左弯入口。入口连续稳定2帧后切到普通小弯。本段行驶超过6米还没找到入口则停车。共用的识别参数仍是前面的fixed_track_curve_turn_deg、fixed_track_fit_tolerance、入口距离/横偏、位置匹配和确认帧数。你当前代码中的普通小弯确认入口后会跟踪固定圆弧。搜索中线可以提供有限横向修正修正由fixed_track_correction_limit和fixed_track_correction_gain控制。⑦ 普通小弯 → 返回起点接近圆弧终点且航向合格。当前route.small_curve.exit: path route.small_curve.angle_deg: 90.0 fixed_track_exit_distance: 0.40 fixed_track_exit_heading_deg: 34.0要求同时满足剩余路径 ≤0.40米。距终点 ≤0.40米。终点朝向误差 ≤34°。累计同向转角达到代码要求当前下限为903456°。满足后当帧进入return_start。这里同样不能仅凭转到56°就退出还要满足终点位置条件不检查前方空白区。⑧ 返回起点 → 完成停车看位置、方向和整圈行程。返回起点段继续使用正常锥桶搜索。必须先走到这个阶段才会执行完成判断。参数当前值完成条件lap_departure_distance3.0 米曾经离开起点至少这么远lap_min_distance15.0 米累计行程至少这么长lap_position_tolerance0.45 米回到起点附近这个范围内lap_heading_tolerance_deg20.0°与起步方向误差不超过20°lap_confirm_frames2连续2帧满足锁定完成route.return_start.max_distance12.0 米返回段超过12米还没满足终点条件停车第一帧满足终点条件就先停车第二帧确认完成。完成状态锁定重新发车需要重启节点。还有几个容易混用的参数需要单独分清参数或情况实际含义route.*.speed_pwm当前段的速度指令不决定何时切段route.*.max_distance不是固定路径长度也不是“走到这里自动切段”固定段激活后的max_distance当前代码不会把它作为该固定路径的行程退出条件当前主要生效的等待行程上限起点搜索20米、连接搜索6米、返回起点12米fixed_track_max_tracking_error: 0.60跟踪固定引导时偏差过大停车不表示切到下一段safety_stop目标点位置或原始雷达安全检查触发不表示切段失败scan_timeout/odom_timeout数据超时停车与赛段完成条件分开交回搜索后没有路径当前固定赛道模式直接停车lost_coast_scans不提供滑行缓冲现场看日志时[判断] 寻找下一段对应入口识别[判断] 退出检查对应普通固定段末端[判断] 直角结束对应累计航向[判断] 回起点对应计圈。[切段]才表示已经切换[停车]要按它打印的状态码单独找原因。
返回列表