2. 数学模型基础:状态空间表示法、离散时间系统模型、连续时间系统模型
做控制这么多年,我越来越觉得:数学模型就是控制算法的灵魂。你想想看,如果连被控对象的数学描述都搞不清楚,那控制发散几乎是必然的。
今天咱们就来聊聊目标点跟踪中最基础的数学模型。这部分内容,说白了就是回答三个问题:
- 系统当前处于什么状态?
- 系统下一步会变成什么样?
- 我们怎么用数学语言描述这个过程?
2.1 状态空间表示法:控制界的通用语言
我个人习惯用状态空间法来描述系统。为什么?因为它直观、统一,而且特别适合计算机实现。
一个典型的状态空间模型长这样:
状态方程: ẋ(t) = A·x(t) + B·u(t)
输出方程: y(t) = C·x(t) + D·u(t)
这里:
- x(t) — 状态向量,描述系统内部的所有变量
- u(t) — 输入向量,也就是我们施加的控制量
- y(t) — 输出向量,我们能测量到的量
- A, B, C, D — 系统矩阵,决定了系统的动态特性
核心要点:状态空间法把高阶微分方程降阶为一阶微分方程组。你想想看,一阶微分方程多好处理啊!
我在项目中遇到过这样一个坑:有个同事直接用传递函数做目标跟踪,结果系统阶次一高,模型就乱套了。换成状态空间法后,问题迎刃而解。嗯,这里要注意:状态变量的选择不是唯一的,但选得好不好,直接影响后续控制器的设计难度。
2.2 连续时间系统模型:物理世界的真实写照
真实世界是连续的。电机转动、机械臂运动、无人机飞行——这些都是连续时间过程。
连续时间系统的状态方程一般写成:
dx/dt = f(x, u, t)
如果是线性系统,就简化为:
dx/dt = A·x + B·u
举个例子,一个简单的移动机器人目标跟踪问题:
状态变量:x = [位置, 速度]ᵀ
控制输入:u = [加速度]
系统矩阵:A = [[0, 1], [0, 0]]
B = [[0], [1]]
这个模型描述的是什么?说白了就是:位置的变化率等于速度,速度的变化率等于加速度。就这么简单。
我的经验:刚开始做控制时,我总想把模型建得特别精细。后来发现,对于目标跟踪问题,线性化模型往往就够用了。过度建模反而会让控制器变得脆弱。
2.3 离散时间系统模型:计算机能理解的语言
计算机是离散的。你给它一个连续模型,它没法直接处理。所以我们需要把连续模型离散化。
离散时间系统的标准形式:
x(k+1) = A_d·x(k) + B_d·u(k)
y(k) = C·x(k) + D·u(k)
这里 k 表示第 k 个采样时刻。A_d 和 B_d 是离散化后的系统矩阵。
最常见的离散化方法是零阶保持法:
A_d = e^(A·T)
B_d = ∫₀ᵀ e^(A·τ) dτ · B
其中 T 是采样周期。
避坑指南:我曾经因为采样周期选得太大,导致离散化后的模型完全失真。控制器设计得再好,实际跑起来就是发散。后来我总结了一条经验:采样频率至少是系统最高频率的10倍,否则别怪模型不准。
2.4 连续 vs 离散:什么时候用哪个?
这个问题我经常被问到。我的建议很简单:
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 理论分析、稳定性证明 | 连续模型 | 数学工具更成熟,李雅普诺夫方法等 |
| 嵌入式实现、实时控制 | 离散模型 | 直接对应代码,没有近似误差 |
| 仿真验证 | 两者皆可 | 但要注意离散化误差 |
| 高频系统(如电机控制) | 离散模型优先 | 采样效应不可忽略 |
你想想看,如果你在STM32上跑控制算法,却用连续模型去设计控制器,那不是自找麻烦吗?
2.5 本章知识体系
下面这张图是我自己整理的,把本章的核心逻辑串起来了:
2.6 一个简单的例子:一维目标跟踪
光说不练假把式。咱们来看个具体例子。
假设我们要控制一个小车跟踪一个移动目标。小车的状态是位置 p 和速度 v,控制输入是加速度 a。
连续模型:
状态向量:x = [p, v]ᵀ
控制输入:u = [a]
状态方程:
dp/dt = v
dv/dt = a
矩阵形式:
dx/dt = [[0, 1], [0, 0]]·x + [[0], [1]]·u
离散模型(采样周期 T=0.1s):
x(k+1) = [[1, 0.1], [0, 1]]·x(k) + [[0.005], [0.1]]·u(k)
你看,离散化之后,矩阵里的数字就变成了具体的数值。这就是计算机能直接用的东西。
关键洞察:控制发散往往不是因为算法不好,而是模型和实际系统不匹配。我见过太多人花大量时间调PID参数,结果问题出在模型离散化时采样周期选错了。
2.7 本章小结
好了,咱们把今天的内容捋一捋:
- 状态空间法是描述系统的通用语言,适合计算机实现
- 连续模型描述物理世界的真实动态,适合理论分析
- 离散模型是计算机能直接处理的版本,适合实际控制
- 从连续到离散,采样周期是关键参数,选不好就等着发散吧
我个人觉得,数学模型这部分再怎么强调都不过分。你想想看,如果模型本身就有问题,后面再高级的控制算法也是白搭。这就好比盖房子,地基没打好,装修再漂亮也没用。
下一章咱们会深入讨论控制发散的具体原因和诊断方法。到时候你会发现,很多发散问题追根溯源,都能回到今天讲的数学模型上。
一个小建议:刚开始做目标跟踪时,先用最简单的模型(比如一阶或二阶系统)跑通流程,再逐步增加复杂度。这样出了问题也容易定位。