《无人驾驶车辆模型预测控制》(第2版)第五章主动转向详细学习——算法部分(非线性系统线性化)

本文详细介绍了无人驾驶车辆模型预测控制的算法,包括车辆运动学方程、非线性系统线性化、离散化过程,以及目标函数优化和约束条件。重点探讨了线性化方法,通过泰勒级数展开并保留一阶项,构造线性化后的状态空间方程,并对系统进行离散化处理。此外,还讨论了迭代推导、输出方程和目标函数的优化,为无人驾驶车辆控制提供理论基础。

一、状态轨迹的线性化方法

1.理解:

第四章的期望轨迹给出了路径上每个点的状态信息(包括状态量和控制量),这类轨迹比较规则,比如直线、圆等,因此其控制量也容易得到,而对于“期望轨迹无法给出所有状态点的信息”的情况,则需要采用下面的算法。

2.算法详细推导

第五章采用的算法是通过对系统输入持续不变的控制量得到状态轨迹。

 目录

①前言

②车辆的运动学方程

③线性化过程

④离散化

 ⑤推导下一时刻状态

⑥迭代推导

⑦目标函数优化

⑧约束条件


①前言

本文主要参考了下面的博客线性时变模型预测控制推导_Jeossirey的博客-优快云博客_线性时变系统的模型预测控制以自行车模型为例,在推导过程中下角标 r (reference),即参考的意思。https://blog.youkuaiyun.com/m0_50888394/article/details/115556185

以及:龚建伟等.《无人驾驶车辆模型预测控制》(第2版) 

同时对自己在代码实现时需要用到的推导细节给出了更加详细的说明,以帮助自己更好的理解~算是自己学习过程的记录。好了,下面就正式开始吧!

模型预测控制的核心是通过建立基于状态量的误差量的状态空间方程来推导。第四章通过车辆的运动学方程,采用了非线性系统线性化方法中的第一种:存在参考系统的线性化方法。

②车辆的运动学方程

车辆的运动学方程推导过程略,结果如下:

即:

\dot{\chi }=f(\chi ,u) ·····························(1.2

f_{1}=\dot{\chi }_{1}=f_{1}(\chi ,u)

f_{2}=\dot{\chi }_{2}=f_{2}(\chi ,u)

f_{3}=\dot{\chi }_{3}=f_{3}(\chi ,u)

选取系统的状态量为\chi =[x,y,\varphi ]^{T},控制量u=[v,\delta ]^{T}

主要思想:假设参考轨迹给定,且参考轨迹在任意时刻其状态量和控制量均满足:

\dot{\chi }_{r}=f(\chi_{r} ,u_{r})·····························(1.3

其中,\chi_{r} =[x_{r},y_{r},\varphi _{r}]^{T}u_{r}=[v_{r},\delta_{r} ]^{T}

ps①: 1.f是状态转移函数,就理解为数学中表示函数的符号就可以了;

          2. (x,y)为车辆后轴中心坐标,\varphi为车辆的航向角,\delta为前轮偏角,v为车辆后轴中心            的速度;

          3.在该车辆模型中,状态量个数是3个,用N_{x}=3表示;控制量个数是2个,用                     N_{u}=2表示,在之后的推导过程的说明中,就直接用N_{x},N_{u}来表示~~~

③线性化过程

上面的运动学方程\dot{\chi }=f(\chi ,u)是非线性的,所以需要对其进行线性化。对\dot{\chi }=f(\chi ,u)在参考轨迹点采用泰勒级数展开并忽略高阶项,只保留一阶项:

将(1.4)式减去(1.3)式,得:

记:\dot{\tilde{\chi }}=\dot{\chi }-\dot{\chi _{r}} , \tilde{\chi }=\chi -\chi _{r} ,\tilde{u}=u-u_{r} 。

ps②:  \dot{\tilde{\chi }}\tilde{\chi }\dot{\chi _{r}}矩阵的大小均为:(N_{x},1) ,

### 无人车轨迹跟踪的动力学模型及其算法实现 #### 轨迹跟踪中的动力学模型基础 无人车的轨迹跟踪通常依赖于精确的动力学模型来描述车辆的行为特性。基于动力学模型的方法能够更好地反映实际物理系统的动态响应,尤其适用于高速场景下的控制需求[^1]。这类模型主要关注车辆的状态变量(如位置、速度、加速度以及角度等),并通过微分方程的形式表示这些状态随时间的变化。 常见的动力学模型可以分为单轨模型和双轨模型两种类型。其中,单轨模型假设前后轴具有相同的侧偏刚度并忽略悬架的影响,适合用于初步分析;而双轨模型则更加复杂,考虑了轮胎的具体受力情况以及车身的姿态变化,因此更适合高精度的应用场合。 #### 基于MPC的轨迹跟踪算法 模型预测控制(Model Predictive Control, MPC)是一种先进的优化控制策略,在无人车领域得到了广泛应用。其核心思想是在每一个采样时刻求解一个有限时域内的最优控制序列,并仅执行该序列的第一个动作作为当前输入。通过这种方式,MPC能够在实时运行过程中不断调整规划路径以适应环境变化。 具体到无人车轨迹跟踪问题上,MPC的目标通常是使未来一段时间内预期行驶路线尽可能接近给定参考轨迹的同时满足各种约束条件(例如最大转向角速率)。为了提高计算效率,往往采用简化线性化处理或者利用特定数值技巧加速求解过程[^1]。 以下是使用Python语言编写的一个简单示例程序框架展示如何构建基本本的MPC控制器: ```python import numpy as np from scipy.optimize import minimize def mpc_controller(state, ref_traj): """ A basic implementation of an MPC controller. Parameters: state (list): Current vehicle states [x, y, psi, v]. ref_traj (np.ndarray): Reference trajectory points [[x_ref], [y_ref]]. Returns: float: Optimal control input u*. """ def cost_function(u): # Define your own dynamics and objective function here... pass res = minimize(cost_function, x0=np.zeros(2), method='SLSQP') return res.x[0] if __name__ == "__main__": initial_state = [0., 0., 0., 5.] # Example starting point reference_trajectory = np.array([[...], [...]]) # Replace with actual data optimal_input = mpc_controller(initial_state, reference_trajectory) print(f"Optimized Input: {optimal_input}") ``` 请注意这只是一个非常简化的例子,真实世界应用可能需要更复杂的设置包括但不限于非均匀分布的时间步长、更多维度的状态向量定义以及其他工程细节上的考量。 #### Carsim+Matlab联合仿真的优势 Carsim是一款专业的汽车动力学仿真软件包,它提供了丰富的内置模块支持快速搭建虚拟试验平台来进行不同工况下自动驾驶技术验证工作。当与MATLAB/Simulink相结合时,则进一步增强了整个开发流程自动化水平——从参数调优直至最终部署均可在一个统一环境中完成操作[^1]。 这种组合方式不仅有助于缩短产品研发周期而且还能有效降低因实物测试所带来的成本风险等问题发生概率。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值