从系列:了解卡尔曼滤波器
Melda Ulusoy, MathWorks
本视频演示了如何使用Simulink中卡尔曼滤波器估计单摆系统的角位置万博1manbetx®。
使用MATLAB®在Sim万博1manbetxulink中,你可以实现线性定常或时变卡尔曼滤波器。在本视频中,使用Simscape Multibody™在Simulink中建模一个简单的钟摆系统。万博1manbetx摆的角位置是估计使用卡尔曼滤波块,可在控制系统工具箱™。该视频展示了如何配置卡尔曼滤波块参数,如系统模型,初始状态估计,和噪声特性。
在这个视频中,我们将使用一个简单的钟摆的例子来演示如何使用一个普通的滤波器来估计在Simulink钟摆的角度位置。万博1manbetx
在这个系统中,我们感兴趣的观察角度位置有峰。让我们假设,我们可以测量传感器这个角度,如旋转角度潜力。虽然我们可以测量THETA,我们的测量会吵。为了滤除噪声,并得到theta的一个很好的估计,我们将使用一个卡尔曼滤波器。
之前我们切换到Simulink中,让我们万博1manbetx来看看钟摆运动的自由体受力图和公式。对于摆模型中,我们假设零摩擦。
想象,摆被连接到刚性杆,我们以一个角度发起它。而当我们让他走了,它开始来回摆动。
请注意,存在与角度位置相关联的非线性项。如果你看一下该功能的情节,我们看到,theta的较小值,这个功能几乎线性的作用。因此,对于小角度我们可线性这个方程写这个形式。
接下来,我们可以代表该系统在状态空间形式,在这里我们选择第一状态作为角位置和第二个作为角速度。
我们定义脚本中的参数和状态空间模型。正如我们前面提到的,我们感兴趣的是通过卡尔曼滤波器估计THETA,因为theta的测量是嘈杂。
您可以使用MATLAB或Simulink来实现线性时不变或万博1manbetx时变卡尔曼滤波器。在这里,为了估计摆的角度位置,我们将使用Simulink。万博1manbetx
我们开始拖动这个预先建立的钟摆块到我们的模型。这是使用Simscape Multibody创建的,它允许我们使用组件(如身体、关节、力元素和传感器)定义机械系统。然后求解机械系统的运动方程。
在这里,我们通过连接固定支点通过旋转接头链路模型摆。我们也可以看看这些在力学探险家。
在这些块体中,我们定义了物体的尺寸、质量和惯性特性。作用在关节上的驱动力矩是这两个信号的和。我们输出关节位置,通过转动关节块。
如果你想看看块内随意下载从链接此Simulink模型在万博1manbetx这个视频的说明。正如我们刚才所看到的,这一块有两个单位。
第一个输入是施加的力矩,我们将其设置为零。第二个输入是过程噪声。在这个例子中,我们假设过程噪声只存在于角加速度上。
在脚本中定义了过程噪声的协方差。我们把这个值输入到block中。我们通过双击摆块来设置状态的初始条件。
我们从10度开始摆,也就是/ 18的半径。我们以0角速度启动它。
摆块的输出是角位置,假设用传感器测量。我们期望传感器读数有一些噪音,我们将使用这个噪音块来模拟。
类似的,这是我们与过程噪声做了,我们定义使用的协方差的噪声特性,现在R.,我们有theta的实际值和测量值。接下来,我们要估计THETA使用卡尔曼滤波器。
我们从控制系统工具箱中的卡尔曼滤波器块添加到我们的模型。此块计算卡尔曼滤波算法公式,我们在之前的视频讨论。
它利用系统模型和测量,通过误差协方差p的最小值来求解卡尔曼增益,并输出最优状态估计。
在我们的例子中,我们将使用持续时间的估计。不过需要注意的是,如果你想运行在实时微处理器的估计,那么你可以使用脚本时卡尔曼滤波,生成此块CC ++代码,并将其部署到您的硬件。
这个块接受一个系统模型(我们将在脚本中定义它)以及它的输入,它还使用度量。
在摆模型中,我们使用初始条件pi / 18半径作为角位置。在这里,我们假设我们只知道近似,并输入一个稍微不同的数字,以研究当初始条件不准确时,卡尔曼滤波估计将如何合并。我们需要配置的其他参数是噪声协方差矩阵,我们选择与钟摆系统相同的协方差矩阵。
需要注意的是摆系统有两种状态。这样的过程噪声协方差是2×2矩阵。但是,由于我们假定过程噪声作用于角加速度的协方差矩阵为0只注意到,我们输入的相关术语。
接下来,我们进入测量协方差。交叉协方差矩阵,N,用于捕获过程和测量噪声之间的相关性。在我们的例子,他们是不相关的。所以,n为0。
另外请注意,您可以通过取消选中旁边的框中指定的协方差矩阵是时变的。如果不加以控制,该块增加了对时变协方差的附加输入。
接下来,我们运行脚本,并通过卡尔曼滤波Simulink模型,并期万博1manbetx待在此负THETA。有一点要注意的是,在此块中使用的摆模型包括theta的非线性项正弦波。
但卡尔曼滤波器采用线性化系统。但是,我们仍然预计卡尔曼滤波工作做好,因为我们有一个很小的值初始化THETA。因此,摆模型几乎是线性的行为。
让我们看一下仿真结果。我们假设摆模型,它的输出,实际THETA被显示为绿线的完善知识。噪声是橙色所示的信号是测量。而估算θ以蓝色显示。
这个估计表明卡尔曼滤波滤除了噪声。虽然它的初始条件与模型本身略有不同,但我们看到卡尔曼滤波器在大约5秒内收敛,并提供了一个钟摆角位置的良好估计。
在这个视频中,我们模拟了摆系统,并估计了它的角位置使用卡尔曼滤波器。我们假设完美的知识系统的模型,和加工噪声协方差矩阵Q和r .但在情况下你不知道系统参数,或传感器特征,那么这个模拟可以让你有机会玩你的模型参数,以及噪声协方差矩阵,并观察和改善你的状态估计。
在这个模拟我们初始化2θ的10度的较小值,观察通过卡尔曼滤波的好估计。如果你使用的THETA更大的价值?
如果我们现在在摆模型和卡尔曼滤波器增加theta的初值为90度,这两个,然后模拟模型,我们得到THETA的一个贫穷的估计。
这是因为较大的theta的值,则摆模型非线性行为。和卡尔曼滤波器仅对于线性系统定义。正如我们在以前的视频讨论,这个问题可以通过使用扩展卡尔曼滤波器来解决。
在接下来的视频中,我们将使用相同的摆模型并演示了如何使用Simulink中的扩展卡尔曼滤波器。万博1manbetx
记录:2017年10月25日