MATLAB lqr
时间: 2024-12-30 15:22:12 浏览: 15
### MATLAB 中线性二次调节器 (LQR) 的使用教程
#### 定义 LQR 控制理论基础
线性二次型调节器(LQR, Linear Quadratic Regulator)是一种用于求解最优控制问题的方法。该方法旨在最小化一个性能指标函数,通常表示为被控对象的状态和控制输入的加权平方和。
对于给定的线性系统\[ \dot{x} = Ax + Bu \],其中\( A \in R^{n\times n}, B\in R^{n\times m}\),目标是最小化成本函数:
\[ J(u)=\int_{t_0}^\infty(x^TQx+u^TRu)\mathrm{d}t \]
这里 \( Q \geq 0,R>0\) 是权重矩阵[^1].
#### 构建并解决 LQR 问题
在MATLAB环境中,`lqr()` 函数提供了便捷的方式来计算离散时间或连续系统的最佳反馈增益K:
```matlab
[K,S,e] = lqr(A,B,Q,R);
```
此命令返回三个输出参数:
- `K`: 最优状态反馈增益向量;
- `S`: 解决Riccati方程后的最终协方差阵;
- `e`: 就是闭环极点的位置。
#### 应用实例:基于运动学模型的车辆路径跟随控制系统设计
考虑一个简单的自行车模型作为无人车的动力学近似,在Simulink中建立相应的模块图,并利用上述提到的LQR控制器完成对期望轨迹的有效追踪[^2].
为了展示如何具体应用这些概念,下面给出一段简化版的Matlab代码片段用来说明创建这样的LQR控制器的过程:
```matlab
% Define system matrices for a simple kinematic bicycle model.
A = [0 1; 0 0];
B = [0; 1];
% Choose appropriate weighting matrices Q and R.
Q = diag([10, 1]); % Penalize position error more than velocity error.
R = 0.1;
% Compute the optimal state feedback gain K using lqr().
[K,~,~] = lqr(A, B, Q, R);
disp('Optimal State Feedback Gain:');
disp(K);
```
这段脚本首先定义了一个二阶动力学系统的系数矩阵A和B,接着选择了合适的代价项权重矩阵Q和R,最后调用了内置函数`lqr()` 来获得最优的状态反馈增益K.
阅读全文