1. 双移线工况下的LQR横向控制概述
在车辆控制领域,横向轨迹跟踪一直是个经典难题。特别是在双移线这种典型工况下,车辆需要在短时间内连续完成两次方向变换,对控制算法的响应速度和稳定性提出了极高要求。LQR(线性二次调节器)作为一种经典的最优控制方法,通过合理设计代价函数,能够在轨迹跟踪精度和控制量平滑度之间取得良好平衡。
我最近在实际项目中采用LQR算法配合CarSim和Simulink进行联合仿真,成功实现了双移线工况下的高精度横向控制。实测效果令人满意,在60km/h车速下,横向误差能稳定控制在0.1米以内,方向盘转角曲线平滑自然,没有出现高频抖振现象。这证明LQR算法配合精确的车辆模型,完全能够满足一般自动驾驶场景的横向控制需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. LQR控制原理与参数设计
2.1 LQR的核心思想
LQR控制的核心在于设计一个二次型代价函数:
code复制J = ∫(x^T Q x + u^T R u) dt
其中x是状态偏差,u是控制输入,Q和R分别是状态权重矩阵和控制权重矩阵。这个函数直观地表达了控制系统的两个核心目标:让状态尽快收敛到期望值(x^T Q x项),同时避免过大的控制量(u^T R u项)。
在实际调参过程中,我发现一个实用的技巧:先将Q矩阵中对角线上与横向位置误差对应的元素设为较大值(如10),其他状态量的权重设为相对较小的值(如0.1-1之间),R矩阵则初始化为一个较小的值(如0.01)。这样设置的控制器会优先修正位置误差,同时允许适当的方向盘转动。
2.2 状态空间模型构建
LQR控制需要建立车辆的状态空间模型。我采用的是经典的自行车模型,选取了以下四个状态量:
- 横向位置误差(e)
- 横向位置误差变化率(ė)
- 航向角误差(Δψ)
- 航向角误差变化率(Δψ̇)
对应的状态方程矩阵A和B可以通过车辆动力学推导得到。这里特别需要注意的是,矩阵中的车速Vx是一个时变量,在实际实现时需要每个控制周期都更新。虽然这种处理方式是一种简化,但在60km/h以下的车速范围内,控制效果已经足够好。
3. Simulink与CarSim联合仿真实现
3.1 软件环境配置
我使用的软件版本是MATLAB/Simulink 2018b和CarSim 2019.0。这两个版本之间的兼
