车辆模型为2自由度动力学模型,给我写一个LQR的MATLAB函数fcn,输入为横向偏差,航向角偏差,侧向速度偏差,横摆角速度偏差,车速,输出为前轮转角
时间: 2023-10-07 14:10:22 浏览: 148
好的,可以为你提供一个简单的LQR控制器的MATLAB函数,代码如下:
```matlab
function [delta] = fcn(x)
% 系统状态量
e = x(1); % 横向偏差
psi = x(2); % 航向角偏差
v_y = x(3); % 侧向速度偏差
r = x(4); % 横摆角速度偏差
v = x(5); % 车速
% 控制器参数
Q = diag([1 100 1 10]); % 状态权重矩阵
R = 1; % 控制权重矩阵
% 车辆参数
L = 2.5; % 轴距
lf = 1.5; % 前轮到车前端距离
lr = L - lf; % 后轮到车后端距离
Cf = 140000; % 前轮纵向刚度
Cr = 80000; % 后轮纵向刚度
Iz = 3500; % 绕Z轴的转动惯量
m = 1500; % 质量
% 计算车辆动力学模型矩阵
A = [0 1 0 0; 0 -(2*Cf+2*Cr)/(m*v) (2*Cf+2*Cr)/m -(2*Cf*lf-2*Cr*lr)/(m*v); 0 0 0 1; 0 (2*Cf*lf-2*Cr*lr)/(Iz*v) -(2*Cf*lf^2+2*Cr*lr^2)/(Iz*v) -(2*Cf*lf^2+2*Cr*lr^2)/(Iz*v)];
B = [0; 2*Cf/m; 0; 2*Cf*lf/Iz];
% 计算LQR控制器增益矩阵K
[K,S,e] = lqr(A,B,Q,R);
% 计算控制输入量
delta = -K*x;
end
```
其中,输入量x为状态量向量,包括横向偏差e、航向角偏差psi、侧向速度偏差v_y、横摆角速度偏差r和车速v;输出量delta为前轮转角。函数中的车辆参数为一个简单的模型,你可以根据实际情况进行修改。
阅读全文
相关推荐
















