LQR横向控制联合仿真

一、准备工作

1:总质量等于悬架以上质量+悬架质量✖2.即1270+88.6*2

2:空气动力学-风阻关闭

 

3:控制需要的量,状态量x,y,fa,vx,vy,fa_dot.  以及规划的 xr,yr,切线与x轴的夹角θr,曲率kr

二、路径规划及路面设置

1:路径规划代码

routing_planning.m,由直线函数和圆弧函数组成。

运行前需要清空工作区

count=50;
[x1,y1,theta1,kr1]=straight([0,0],[20,0],0,count);
[x2,y2,theta2,kr2]=arc([20,0],[30,10],0,pi/2,count);
[x3,y3,theta3,kr3]=arc([30,10],[40,20],pi/2,0,count);
[x4,y4,theta4,kr4]=arc([40,20],[40,40],0,pi,count);
[x5,y5,theta5,kr5]=arc([40,40],[35,35],pi,3*pi/2,count);
[x6,y6,theta6,kr6]=arc([35,35],[25,35],3*pi/2,pi/2,count);
[x7,y7,theta7,kr7]=arc([25,35],[15,35],pi/2,3*pi/2,count);
[x8,y8,theta8,kr8]=arc([15,35],[5,35],3*pi/2,pi/2,count);
[x9,y9,theta9,kr9]=arc([5,35],[-15,35],pi/2,3*pi/2,count);
[x10,y10,theta10,kr10]=straight([-15,35],[-15,15],3*pi/2,count);
[x11,y11,theta11,kr11]=arc([-15,15],[0,0],3*pi/2,2*pi,count);
xr=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11]
### LQR控制器在横向控制中的应用 线性二次型调节器(LQR)是一种最优控制方法,广泛应用于横向控制中,尤其是在自动驾驶和机器人领域。LQR控制器通过最小化一个性能指标来优化控制输入,该性能指标通常是一个关于状态变量和控制输入的二次函数。在横向控制中,LQR控制器可以有效地处理车辆的路径跟踪问题,通过调整转向角来实现对期望轨迹的精确跟踪。 在设计LQR控制器时,首先需要建立系统的线性模型。对于横向控制,通常考虑的是车辆的动力学模型,其中包括车辆的位置、速度、方向等状态变量。假设车辆的动力学模型可以表示为: $$ \dot{x} = Ax + Bu $$ 其中 $ x $ 是状态向量,$ u $ 是控制输入向量,而 $ A $ 和 $ B $ 分别是系统矩阵和输入矩阵。 接下来,定义性能指标 $ J $ 为: $$ J = \int_{0}^{\infty} (x^T Q x + u^T R u) dt $$ 这里 $ Q $ 和 $ R $ 是正定矩阵,分别表示状态和控制输入的权重。选择合适的 $ Q $ 和 $ R $ 矩阵对于获得良好的控制性能至关重要。通常情况下,$ Q $ 矩阵的选择反映了对状态变量的重视程度,而 $ R $ 矩阵则反映了对控制输入的限制。 求解LQR问题的关键在于找到一个反馈增益矩阵 $ K $,使得控制输入 $ u $ 可以表示为: $$ u = -Kx $$ 这样,闭环系统的稳定性可以通过适当选择 $ K $ 来保证。LQR问题的解可以通过求解代数Riccati方程得到,该方程的形式为: $$ A^T P + PA - PBR^{-1}B^T P + Q = 0 $$ 其中 $ P $ 是Riccati方程的解,而反馈增益矩阵 $ K $ 可以通过 $ K = R^{-1}B^T P $ 计算得到。 在仿真设计中,可以使用MATLAB/Simulink或者Python等工具来实现LQR控制器的设计。以下是一个简单的Python代码示例,展示如何使用SciPy库来求解LQR问题: ```python import numpy as np from scipy.linalg import solve_continuous_are # 定义系统矩阵 A = np.array([[0, 1], [0, 0]]) B = np.array([[0], [1]]) Q = np.eye(2) R = np.eye(1) # 求解Riccati方程 P = solve_continuous_are(A, B, Q, R) # 计算反馈增益矩阵 K = np.linalg.inv(R) @ B.T @ P print("反馈增益矩阵 K:") print(K) ``` 这段代码首先定义了系统矩阵 $ A $ 和 $ B $,以及权重矩阵 $ Q $ 和 $ R $。然后使用 `solve_continuous_are` 函数求解代数Riccati方程,最后计算反馈增益矩阵 $ K $。 通过这种方式,可以在仿真环境中实现LQR控制器的设计,并应用于横向控制问题中。LQR控制器的优势在于其能够提供最优的控制策略,同时保证系统的稳定性[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值