3、横向控制基本原理
做横向控制,说白了就是让车自己跟着路走。你想想看,车为什么要偏?怎么让它回来?这些问题背后有三个核心概念必须吃透。今天我们就聊透这三点:运动学模型、路径跟踪、误差定义。
我个人习惯把它们看作一个链条。先知道车怎么动,再知道路在哪,最后算出差了多少。搞懂了这三步,PI参数调起来才有方向。
3.1 车辆运动学模型
搞横向控制,我见过有人一上来就上动力学模型,结果调参调得怀疑人生。其实对于Lane Keeping这种场景,运动学模型就够了。说白了,运动学模型只考虑几何关系,不考虑轮胎滑移和受力。这在低速和中低速场景下精度完全够用。
最常用的简化是自行车模型。把四个轮子合并成前轮和后轮,车辆简化为一根棍子。这样描述车辆状态只需要三个量:
- 横向位置 y — 车辆中心到道路中心线的距离
- 航向角 ψ — 车辆纵轴与道路切线方向的夹角
- 车速 v — 通常认为是常数或已知输入
车辆的运动方程长这样:
dy/dt = v · sin(ψ)
dψ/dt = v · tan(δ) / L
其中 δ 是前轮转角,L 是轴距。这就是一个典型的非线性系统。不过在实际工程中,我们通常做小角度假设,把 sin(ψ) ≈ ψ,系统就线性化了。
3.2 期望路径跟踪
路径跟踪的核心问题很简单:给你一条路,车怎么走才算「跟上了」?
这里有两个流派。一种是预瞄法,看车前一段距离的路点,算偏差。另一种是基于模型预测,算未来轨迹。PI控制通常用前者,简单直接。
期望路径通常用离散点序列表示:
每个点包含位置和朝向。在实际工程中,路径数据来自高精地图或视觉感知。我个人习惯在路径生成阶段就把曲率算好缓存起来,因为前馈控制需要它。
| 路径来源 | 更新频率 | 典型精度 | 工程难点 |
|---|---|---|---|
| 高精地图 | 10-50 Hz | ±10 cm | 定位漂移 |
| 视觉车道线 | 15-30 Hz | ±5 cm(近处) | 遮挡、光照 |
| 融合路径 | 20-50 Hz | ±5 cm | 数据对齐 |
3.3 横向误差定义
误差怎么定义?这一点看似简单,但实际项目中踩坑的不少。横向控制需要两个误差量:
- 横向位置偏差 e_y — 车辆质心到最近路径点的垂直距离。这是PI控制的误差入口。
- 航向角偏差 e_ψ — 车辆航向与路径切线方向的差值。这个量决定了误差变化趋势。
误差计算公式:
e_y = (y_vehicle - y_path) · cos(ψ_path) - (x_vehicle - x_path) · sin(ψ_path)
e_ψ = ψ_vehicle - ψ_path
这里要注意符号约定。我习惯左侧为正,偏左为正偏差。控制目标就是让 e_y 和 e_ψ 同时归零。
为什么两个误差都要?想想看:如果只看 e_y,车可能平行跑偏但始终有偏差;如果只看 e_ψ,车可能对中但指向有偏角。只有两个误差都收敛,车才能真正贴着路走。
3.4 工程实现中的几个要点
- 坐标系对齐: 路径坐标和车辆坐标必须在同一坐标系下运算。我见过有人在车辆坐标系算路径偏差,结果计算巨复杂。换个思路,把路径转到车辆坐标系下,一切都简单了。
- 预瞄距离: 车速越快,预瞄距离越远。一个简单的经验公式:预瞄距离 = v · T,T 取 0.5-1.0 秒。低速弯道可以适当缩短。
- 曲率前馈: 路径曲率决定了前轮转角的基础值。如果只有反馈没有前馈,过弯时总会有滞后。前馈量 δ_ff ≈ L · curvature,这是 PI 控制的基础。
| 参数 | 推荐范围 | 调参方向 |
|---|---|---|
| 预瞄时间 T | 0.4 - 1.2 s | 路况好可小,弯道密可大 |
| 误差截断阈值 | 0.2 - 0.5 m | 过大导致积分饱和,过小过于敏感 |
| 控制频率 | 30 - 100 Hz | 50Hz是甜点,太低有延迟感 |
嗯,这一章的内容就到这里。搞清楚了运动学模型、路径跟踪和误差定义这三个基本块,后续讲PI参数整定和工程落地时,你就会有更清晰的感觉。毕竟,误差都不知道怎么算,调参就更没方向了。