当前位置: 首页 > news >正文

基于 LQG 控制的轨迹跟踪 —— 从原理到实践

1. 引言

        在现代控制理论中,如何在系统存在噪声和不确定性的情况下实现稳定控制,是工程界普遍面临的问题。经典的 LQR(线性二次型调节器) 能为确定性系统提供最优状态反馈控制,但在状态无法完全观测、传感器存在测量噪声时,单纯依赖 LQR 便难以保证性能。
此时,LQG(Linear Quadratic Gaussian)控制器应运而生,它将 LQR 控制器卡尔曼滤波器结合,能够在噪声环境中实现对系统的高精度最优控制。

2. LQG 控制的基本思想

LQG 控制的框架非常清晰:

  • LQR 部分:解决“给定状态下,如何施加控制输入最优”的问题。
  • 卡尔曼滤波部分:解决“如何从带噪测量中恢复真实状态”的问题。

最终,LQG 控制器的作用就是:

在噪声存在时,依然能通过状态估计 + 最优控制,实现系统稳定、能耗平衡的控制效果。

3. 系统建模

考虑一个典型的离散线性系统

4. LQR 控制器

LQR(Linear Quadratic Regulator,线性二次型调节器) 是现代控制理论中最经典的 最优控制方法 之一。它的目标是:

在满足系统动力学约束的前提下,找到一个最优反馈控制律,使得系统稳定的同时,兼顾控制性能和能量消耗。

换句话说,LQR 不仅追求“误差要小”,还希望“控制输入不要太激烈”,在精度与能耗之间找到最佳平衡点

LQR 的目标是在状态反馈下找到一个控制律:

调参含义:

  • 增大 Q:系统更重视精度(快速回到目标)
  • 增大 R:系统更重视能耗(减少控制动作)

5. 卡尔曼滤波器

尔曼滤波(Kalman Filter, KF) 是一种在噪声环境下对动态系统状态进行最优估计的算法。

它的目标是:

在系统模型和测量值都不完美的情况下,融合二者的信息,得到最接近真实状态的估计值,并且在均方误差意义下最优。

换句话说,卡尔曼滤波器就是一个智能加权平均器:既不完全相信预测,也不完全相信测量,而是动态决定该信谁更多

在实际中,xk不可直接获得,只能通过测量 yk 间接获取。

卡尔曼滤波每个时刻分 预测(Prediction)更新(Correction) 两个阶段:

1. 预测(Prediction):

根据系统模型,预测下一时刻状态及误差:

 2. 更新(Correction)

利用测量值来修正预测:

6. LQG 控制器结构

LQG 控制器就是 卡尔曼滤波 + LQR 的组合:

  • 卡尔曼滤波器提供状态估计x^k
  • LQR 根据估计状态计算控制输入:

7. Python 实现示例

下面给出一个基于 Python 的简单 LQG 控制实现框架(双积分小车模型):

import numpy as np
import scipy.linalg# 系统模型
A = np.array([[1, 0, 1, 0],[0, 1, 0, 1],[0, 0, 1, 0],[0, 0, 0, 1]])
B = np.array([[0, 0],[0, 0],[1, 0],[0, 1]])
C = np.eye(4)# 噪声协方差
Q = 0.01 * np.eye(4)   # 过程噪声
R = 0.05 * np.eye(4)   # 测量噪声# LQR 设计
Qx = np.diag([10, 10, 1, 1])
Ru = np.eye(2)
P = scipy.linalg.solve_discrete_are(A, B, Qx, Ru)
K = np.linalg.inv(B.T @ P @ B + Ru) @ (B.T @ P @ A)# 初始值
x_hat = np.zeros((4,1))
P_cov = np.eye(4)def kalman_filter(y, u, x_hat, P_cov):# 预测x_pred = A @ x_hat + B @ uP_pred = A @ P_cov @ A.T + Q# 更新K_gain = P_pred @ C.T @ np.linalg.inv(C @ P_pred @ C.T + R)x_hat = x_pred + K_gain @ (y - C @ x_pred)P_cov = (np.eye(4) - K_gain @ C) @ P_predreturn x_hat, P_cov# 控制器循环
x = np.array([[0],[0],[0],[0]])  # 真值
for k in range(50):# 假设有测量值y = C @ x + np.random.multivariate_normal([0,0,0,0], R).reshape(-1,1)# 控制输入u = -K @ x_hat# 更新状态x = A @ x + B @ u + np.random.multivariate_normal([0,0,0,0], Q).reshape(-1,1)# 卡尔曼滤波更新x_hat, P_cov = kalman_filter(y, u, x_hat, P_cov)

8. 应用场景

LQG 控制器广泛应用于:

  • 无人驾驶车辆轨迹跟踪
  • 无人机姿态与航迹控制
  • 航天器轨道保持
  • 机器人导航

其优势在于:即使在噪声干扰与状态不可完全观测的条件下,依然能够保持稳定、鲁棒的控制性能。

9. 总结

LQG 控制是现代最优控制理论的经典成果。它巧妙地将 LQR 的最优控制卡尔曼滤波的状态估计结合,形成了适用于含噪声系统的闭环最优控制框架。在实际工程中,它既能保证高精度控制,又能在噪声和不确定性下保持系统鲁棒性。

未来进一步的研究方向包括:

  • 非线性扩展(EKF-LQR、UKF-LQR)
  • 鲁棒控制(H∞ 控制)
  • 深度学习与LQG融合
http://www.xdnf.cn/news/1370161.html

相关文章:

  • 优雅草黑曼巴知识付费项目交付顺带:深入剖析 WebApp 的封装原理与实践-卓伊凡
  • MD5校验算法
  • FreeRTOS 同步互斥与任务协作 学习笔记
  • vscode或者cursor配置使用Prettier - Code formatter来格式化微信小程序wxss/wxs/wxml文件
  • CentOS 7 升级 OpenSSL 3.5.1 的详细教程
  • HarmonyOS image组件深度解析:多场景应用与性能优化指南(2.4详细解析,完整见uniapp官网)
  • Android 属性 property 系统
  • 微服务的编程测评系统16-用户答题
  • 什么是索引下推?
  • ADB 安装教程:如何在 Windows、 Linux 上安装 Android Debug Bridge
  • 基于CSO与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 2025第五届人工智能、自动化与高性能计算国际会议 (AIAHPC 2025)
  • Android Glide生命周期管理:实现原理与最佳实践
  • swift 开发抠图工具实现思路,与代码详解
  • 技术分享︱国产化突破:开源MDO工具链在新一代神威超算上的安装与调试
  • 使用QML的Rectangle组件的边框属性
  • HMM简单拓展-HSMM与高阶HMM
  • C/C++ 数据结构 —— 树(2)
  • nginx-负载均衡
  • C++工程实战入门笔记4-函数(一)
  • WeakAuras Lua Script ICC (BarneyICC) Simplified Chinese [Mini]
  • 深入了解linux系统—— 线程互斥
  • ArcGIS学习-11 实战-商场选址
  • 洛谷 P12332 题解
  • 如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物等影响实践技术
  • pytorch_grad_cam 库学习笔记—— Ablation-CAM 算法的基类 AblationCAM 和 AblationLayer
  • 如何避免频繁切换npm源
  • pytorch-利用letnet5框架深度学习手写数字识别
  • Vue2(七):配置脚手架、render函数、ref属性、props配置项、mixin(混入)、插件、scoped样式
  • 深入解析交换机端口安全:Sticky MAC的工作原理与应用实践