卡尔曼滤波 - 状态空间模型

flyfish

状态空间模型是什么和如何得到的状态空间模型
状态方程和观测方程统称为状态空间模型
状态空间模型如下

xk=Axk−1+Buk−1+wk−1{x_k} = A{x_{k - 1}} + B{u_{k - 1}} + {w_{k - 1}}xk​=Axk−1​+Buk−1​+wk−1​(状态方程)

zk=Hxk+vk{z_k} = H{x_k} + {v_k}zk​=Hxk​+vk​观测方程
还可以这样表示只是字母不同
x(t+1)=Φx(t)+Γw(t)\boldsymbol{x}(t+1)=\boldsymbol{\Phi} \boldsymbol{x}(t)+\boldsymbol{\Gamma} w(t) \quadx(t+1)=Φx(t)+Γw(t) (状态方程)
y(t)=Hx(t)+v(t)y(t)=\boldsymbol{H} \boldsymbol{x}(t)+v(t) \quady(t)=Hx(t)+v(t) (观测方程 )
以物理运动定律的方式来理解状态空间模型
s(t+1)=s(t)+s˙(t)T+T22w(t)s˙(t+1)=s˙(t)+Tw(t)y(t)=s(t)+v(t)\begin{array}{c} s(t+1)=s(t)+\dot{s}(t) T+\frac{T^{2}}{2} w(t) \\ \dot{s}(t+1)=\dot{s}(t)+T w(t) \\ y(t)=s(t)+v(t) \end{array} s(t+1)=s(t)+s˙(t)T+2T2​w(t)s˙(t+1)=s˙(t)+Tw(t)y(t)=s(t)+v(t)​
TTT是采样周期
s(t)s(t)s(t)是位置
s˙(t)\dot{s}(t)s˙(t)是速度
w(t)w(t)w(t)是加速度
y(t)y(t)y(t)是在位置s(t)的观测信号
v(t)v(t)v(t)是观测噪声

定义系统的状态变量
x(t)=[s(t)s˙(t)]=[位置 速度 ]\boldsymbol{x}(t)=\left[\begin{array}{l} s(t) \\ \dot{s}(t) \end{array}\right]=\left[\begin{array}{l} \text { 位置 } \\ \text { 速度 } \end{array}\right] x(t)=[s(t)s˙(t)​]=[ 位置  速度 ​]
状态方程和观测方程
[s(t+1)s˙(t+1)]=[1T01][s(t)s˙(t)]+[T22T]w(t)y(t)=[10][s(t)s˙(t)]+v(t)\begin{array}{l} {\left[\begin{array}{l} s(t+1) \\ \dot{s}(t+1) \end{array}\right]=\left[\begin{array}{ll} 1 & T \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} s(t) \\ \dot{s}(t) \end{array}\right]+\left[\begin{array}{c} \frac{T^{2}}{2} \\ T \end{array}\right] w(t)} \\ y(t)=\left[\begin{array}{ll} 1 & 0 \end{array}\right]\left[\begin{array}{l} s(t) \\ \dot{s}(t) \end{array}\right]+v(t) \end{array} [s(t+1)s˙(t+1)​]=[10​T1​][s(t)s˙(t)​]+[2T2​T​]w(t)y(t)=[1​0​][s(t)s˙(t)​]+v(t)​
得到 状态空间模型
x(t+1)=Φx(t)+Γw(t)\boldsymbol{x}(t+1)=\boldsymbol{\Phi} \boldsymbol{x}(t)+\boldsymbol{\Gamma} w(t) \quadx(t+1)=Φx(t)+Γw(t) (状态方程)
y(t)=Hx(t)+v(t)y(t)=\boldsymbol{H} \boldsymbol{x}(t)+v(t) \quady(t)=Hx(t)+v(t) (观测方程 )))
Φ=[1T01],Γ=[0.5T2T],H=[10]\boldsymbol{\Phi}=\left[\begin{array}{ll} 1 & T \\ 0 & 1 \end{array}\right], \quad \boldsymbol{\Gamma}=\left[\begin{array}{c} 0.5 T^{2} \\ T \end{array}\right], \quad \boldsymbol{H}=[1 \quad 0] \\ Φ=[10​T1​],Γ=[0.5T2T​],H=[10]

从控制理论来理解状态空间模型

xk=Axk−1+Buk−1+wk−1{x_k} = A{x_{k - 1}} + B{u_{k - 1}} + {w_{k - 1}}xk​=Axk−1​+Buk−1​+wk−1​

zk=Hxk+vk{z_k} = H{x_k} + {v_k}zk​=Hxk​+vk​

这两行式子怎么来的呢

系统动态方程是

mx¨+bx˙+kx=F设 x1=x,x2=x˙,u=F则 x˙2=x¨=1mu−bmx˙−kmx=1mu−bmx2−kmx1\begin{array}{c} m \ddot{x}+b \dot{x}+k x=F \\ \text { 设 } x_{1}=x, \\ x_{2}=\dot{x},\\ u=F \text { 则 } \\ \qquad \begin{array}{r} \dot{x}_{2}=\ddot{x}=\frac{1}{m} u-\frac{b}{m} \dot{x}-\frac{k}{m} x \\ =\frac{1}{m} u-\frac{b}{m} x_{2}-\frac{k}{m} x_{1} \end{array} \end{array} mx¨+bx˙+kx=F 设 x1​=x,x2​=x˙,u=F 则 x˙2​=x¨=m1​u−mb​x˙−mk​x=m1​u−mb​x2​−mk​x1​​​

假设

位置测量量是 z1=x=x1,z_{1}=x=x_{1}, \quadz1​=x=x1​,

速度测量量是 z2=x˙=x2z_{2}=\dot{x}=x_{2}z2​=x˙=x2​, 则:
[x˙1x˙2]=[01−km−bm][x1x2]+[01m]u[z1z2]=[1001][x1x2]\begin{array}{r} {\left[\begin{array}{c} \dot{x}_{1} \\ \dot{x}_{2} \end{array}\right]=\left[\begin{array}{cc} 0 & 1 \\ -\frac{k}{m} & -\frac{b}{m} \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]+\left[\begin{array}{c} 0 \\ \frac{1}{m} \end{array}\right] u} \\ {\left[\begin{array}{l} z_{1} \\ z_{2} \end{array}\right]=\left[\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]} \end{array} [x˙1​x˙2​​]=[0−mk​​1−mb​​][x1​x2​​]+[0m1​​]u[z1​z2​​]=[10​01​][x1​x2​​]​

状态空间表达式增加随时间维度
x˙(t)=Ax(t)+Bu(t)z(t)=Hx(t)\begin{array}{c} \dot{\boldsymbol{x}}(t)=A \boldsymbol{x}(t)+B u(t) \\ \boldsymbol{z}(t)=H \boldsymbol{x}(t) \\ \end{array} x˙(t)=Ax(t)+Bu(t)z(t)=Hx(t)​
状态空间表达式将连续的时间更改为离散的时间
xk=Axk−1+Bukzk=Hxk\begin{array}{c} \boldsymbol{x}_{k}=A \boldsymbol{x}_{k-1}+B u_{k} \\ \boldsymbol{z}_{k}=H \boldsymbol{x}_{k} \end{array} xk​=Axk−1​+Buk​zk​=Hxk​​
状态空间表达式增加噪声维度 (Linear state space system)
xk=Axk−1+Buk+wk−1zk=Hxk+vk\begin{array}{c} \boldsymbol{x}_{k}=A \boldsymbol{x}_{k-1}+B u_{k}+\boldsymbol{w}_{k-1} \\ \boldsymbol{z}_{k}=H \boldsymbol{x}_{k}+\boldsymbol{v}_{k} \end{array} xk​=Axk−1​+Buk​+wk−1​zk​=Hxk​+vk​​

从速度控制来理解状态方程

连续系统
x˙(t)=Ax(t)+Bu(t)\begin{array}{c}\dot{\boldsymbol{x}}(t)=A \boldsymbol{x}(t)+B u(t)\\\end{array} x˙(t)=Ax(t)+Bu(t)​
离散系统

xk=Axk−1+Buk\boldsymbol{x}_{k}=A \boldsymbol{x}_{k-1}+B u_{k} xk​=Axk−1​+Buk​

[posk+1velk+1]=[a11a12a21a22][poskvelk]+[0b2]u\left[\begin{array}{c} p o s_{k+1} \\ v e l_{k+1} \end{array}\right]=\left[\begin{array}{ll} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right]\left[\begin{array}{c} p o s_{k} \\ v e l_{k} \end{array}\right]+\left[\begin{array}{l} 0 \\ b_{2} \end{array}\right] u [posk+1​velk+1​​]=[a11​a21​​a12​a22​​][posk​velk​​]+[0b2​​]u

下一时刻的位置

与当前时刻的位置有关 a11a_11a1​1

与当前的速度有关 a12a_12a1​2

与当前的输入无关 b1=0b_1=0b1​=0

下一时刻的速度

与当前时刻的位置有关 a21a21a21

与当前的速度有关 a22a22a22

与当前的输入有关 b2b2b2
A=[a11a12a21a22]=[11−0.2−0.21]A=\left[\begin{array}{ll} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right]= \left[\begin{array}{cc} 1 & 1-0.2 \\ -0.2 & 1 \end{array}\right] A=[a11​a21​​a12​a22​​]=[1−0.2​1−0.21​]
下一时刻位置是当前位置+0.8*v

下一时刻速度是当前速度-0.2*p

从实际数值例子来理解

u(t)u(t)u(t)输入量

x˙(t)\dot{x}(t)x˙(t)是输出量
下面的x^\widehat {x}x头上本来写的是三个点,但是这个解析不了所以戴了个帽子
x^+5x¨+3x˙+2x=u\widehat {x}+5 \ddot{x}+3 \dot{x}+2 x=u x+5x¨+3x˙+2x=u

x1=x,x2=x˙,x3=x¨x_{1}=x, x_{2}=\dot{x}, x_{3}=\ddot{x} x1​=x,x2​=x˙,x3​=x¨
除最高阶数x^\widehat xx之外,其余各个微分项xix_ixi​都用替代。
{x˙1=x˙=x2x˙2=x¨=x3x˙3=x^=−5x3−3x2−2x1+u\left\{\begin{array}{l} \dot{x}_{1}=\dot{x}=x_{2} \\ \dot{x}_{2}=\ddot{x}=x_{3} \\ \dot{x}_{3}=\widehat x=-5 x_{3}-3 x_{2}-2 x_{1}+u \end{array}\right. ⎩⎨⎧​x˙1​=x˙=x2​x˙2​=x¨=x3​x˙3​=x=−5x3​−3x2​−2x1​+u​
yyy表示输出变量,只有一个输出量x˙(t)\dot{x}(t)x˙(t)

y=x2=x˙y=x_2=\dot{x}y=x2​=x˙

变成矩阵形式
[x˙1x˙2x˙3]=[010001−2−3−5][x1x2x3]+[001]u[y]=[010][x1x2x3]+[0]u\begin{array}{l} {\left[\begin{array}{c} \dot{x}_{1} \\ \dot{x}_{2} \\ \dot{x}_{3} \end{array}\right]=\left[\begin{array}{ccc} 0 & 1 & 0 \\ 0 & 0 & 1 \\ -2 & -3 & -5 \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \\ x_{3} \end{array}\right]+\left[\begin{array}{l} 0 \\ 0 \\ 1 \end{array}\right] u} \\ {[y]=\left[\begin{array}{lll} 0 & 1 & 0 \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \\ x_{3} \end{array}\right]+[0] u} \end{array} ​x˙1​x˙2​x˙3​​​=​00−2​10−3​01−5​​​x1​x2​x3​​​+​001​​u[y]=[0​1​0​]​x1​x2​x3​​​+[0]u​

x⃗˙=Ax⃗+Bu⃗y⃗=Cx⃗+Du⃗\begin{array}{l} \dot{\vec{x}}=A \vec{x}+B \vec{u} \\ \vec{y}=C \vec{x}+D \vec{u} \end{array} x˙=Ax+Buy​=Cx+Du​

卡尔曼滤波 - 状态空间模型相关推荐

  1. 卡尔曼滤波 - 状态空间模型中的状态方程

    卡尔曼滤波 - 状态空间模型中的状态方程 flyfish 状态方程和观测方程统称为状态空间模型 位移 位移 = Δ x = x f − x 0 \text { 位移}=\Delta x=x_f-x_0 ...

  2. 状态空间模型与卡尔曼滤波

    前言 1)说起卡尔曼滤波,必有状态空间模型,两个离不开. 2)从卡尔曼滤波名字就可以看出来,其更倾向于滤波.即对系统噪声和测量噪声进行过滤优化,得出更优的结果.如果系统噪声比较强,那么最终结果就会倾向 ...

  3. 状态空间模型中实际参数估计

    状态空间模型中实际参数估计 状态扩增法 线性状态空间模型的参数估计 利用高斯滤波与平滑的参数估计(非线性模型) 基于粒子滤波与平滑的参数估计 参数的 Rao-Blackwell 化 (参数估计所有内容 ...

  4. 线性连续时间状态空间模型的离散化及实例

    线性连续时间状态空间模型的离散化(Discretization of Linear Continuous-Time State-Space Models) 1 .状态空间模型 非线性连续时间状态空间模 ...

  5. 状态空间模型中参数的贝叶斯估计

    状态空间模型中参数的贝叶斯估计 (参数估计所有内容) 对于模型中的未知参数 θ∈Rd\bm{\mathbb{\theta \in R^d}}θ∈Rd,贝叶斯方法通常将其建模为先验分布已知的随机变量,且 ...

  6. matlab阶跃响应_状态空间模型及MATLAB指令计算

    一. 基本概念强调 时变控制系统 时变控制系统是指一个或多个系统参数会随着时间变化的系统. 2. 系统状态 系统状态是指表示系统的一组变量,只要知道了这组变量的当前取值情况.知道了输入信号和描述系统动 ...

  7. 基于状态空间模型的控制器设计

    1.状态反馈 1.1状态反馈原理 ​ 若一个控制系统的状态方程模型可以写成如下形式: X˙=AX+BuY=CX+Du\dot X = AX+Bu\\ Y=CX+Du X˙=AX+BuY=CX+Du ​ ...

  8. matlab状态空间模型构建函数ss

    最常用的方法: ss(sys) 其中sys为传递函数 示例: >> num=[0 12 24 0 20]; >> den=[2 4 6 2 2]; >> ss(tf ...

  9. 【控制理论】状态空间模型、传递函数、差分方程的相互转换

    转换关系 离散化->差分方程:   离散化后求差分方程时分子分母同除以z的最高次方,使z的次数为负,最后把y(k)提到等式的左边,即得到差分方程的形式 已知连续状态空间求离散状态空间 { x ˙ ...

最新文章

  1. 树上问题 ---- E. Fib-tree(斐波那契数的性质 + 暴力模拟 + 认真计算复杂度)
  2. CSS的inline、block与inline-block
  3. 用python简单处理图片(2):图像通道\几何变换\裁剪
  4. ?php query_posts(cat)?,query_posts()函数 (wordpress日志调用)
  5. Aligning Plots in a Column作图列对齐
  6. 三种常用的MySQL建表语句(转)
  7. [Java] 蓝桥杯ALGO-85 算法训练 进制转换
  8. Navicat用法入门
  9. Exchange Server 2013文档系列之四: Exchange Server 2013在Windows 2008 R2下部署
  10. 十九、FPGrowth算法介绍
  11. ubuntu前置耳机孔没声音的解决办法
  12. AD10封装库转到PADS封装库里
  13. 泛函分析 04.01 有界线性算子 - 有界线性算子与有界线性泛函
  14. 三调 图斑地类面积_关于三调,国土空间规划中至少需要这些知识
  15. 数据字典在mysql中怎么做_如何编写数据字典
  16. 无法查看MSN聊天记录 总弹出下载.xml文件的对话框
  17. 2021爱分析·中国人工智能应用趋势报告——新基建助推,人工智能应用迈入新阶段
  18. php uv pv,PHP網站流量統計--[pv,uv,ip及$_SERVER]說明
  19. 二进制和文本文件的比较
  20. laravel+容联.云通讯 实现手机短信验证用户注册

热门文章

  1. 13、编写一个游戏级别评分器,循环录入每一局(共10局)的游戏得分,显示输出游戏级别。评分标准:10局中如果90%达到80分之上为一级,如果60%达到80之上为二级。
  2. (一)JS 基础篇—基础知识总结
  3. 怎么将pdf转换成word转换器在线
  4. js添加到购物车动画效果实现
  5. 全国人口净流入城市排名2020_天津2020:“海河英才”两年后,人口净流入为何0.1%? | 城纪...
  6. 程序员要写博客吗?写博客能给我们带来什么?
  7. 区块链电商:敲开传统电商变革世界的大门
  8. 【爬虫学习】BeautifulSoup 学习心得
  9. OrCAD中常用元件在库中存放的位置(最近更新2012-7-30)
  10. excel 下拉框设置 数据有效性跨工作表(sheet页)引用数据