从系列:理解卡尔曼滤波器
Mathworks Melda Ulusoy
这个视频演示了如何在Simulink中使用卡尔曼滤波器来估计一个简单摆系统的角位置金宝app®。
使用MATLAB®和Sim金宝appulink,您可以实现线性时间不变或时变的卡尔曼过滤器。在此视频中,使用Simsceul Multibody™在Simulink中建模了一个简单的摆锤系统。金宝app使用控制系统工具箱™中可用的卡尔曼滤波器块估计摆的角位置。该视频显示如何配置Kalman滤波器块参数,例如系统模型,初始状态估计和噪声特性。
记录:2017年10月25日
在此视频中,我们将使用简单的摆锤示例来演示如何使用公共过滤器来估计Simulink中的摆锤位置。金宝app
在这个系统中,我们感兴趣的是观察角位置。我们假设我们可以用一个传感器来测量这个角,比如旋转电位角。虽然我们可以测量,但是我们的测量是有噪声的。为了滤掉噪声得到一个很好的估计,我们将使用卡尔曼滤波器。
在我们切换到Simulink之前,让我们金宝app看一下钟摆的自由体图和运动方程。对于摆模型,我们假设摩擦为零。
假设钟摆连接在一个刚性杆上,以一个角度开始。当我们放开它时,它开始来回摆动。
注意,有一个与角位置相关的非线性术语。如果你看一下这个函数的曲线,我们会发现,当的值很小时,这个函数几乎是线性作用的。因此,对于小角度我们可以把这个方程线性化写成这种形式。
接下来,我们可以以状态空间形式代表该系统,在那里我们选择第一状态作为角度位置,第二个是角速度。
我们在此脚本中定义参数和状态空间模型。正如我们之前提到的那样,我们有兴趣通过卡尔曼滤波器估计THEA,因为θ的测量是嘈杂的。
您可以使用MATLAB或SIMULINK实现线性时间不变或金宝app时间变量KALMAN滤波器。这里,为了估计摆锤的角度位置,我们将使用Simulink。金宝app
我们首先将该预构建的摆块拖到我们的模型中。这是使用Simscape Multibody创建的,这使我们使用诸如机身,关节,力元件和传感器等组件定义机械系统。然后,它解决了机械系统的运动方程。
在这里,我们通过将固定枢轴连接到通过旋转接头的连接来建模摆动。我们也可以在机械师资源管理器中查看这些。
在这些块中,我们定义了体的尺寸,质量和惯性性质。作用在关节上的驱动扭矩是这两个信号的总和。我们通过旋转关节块输出关节位置Theta。
如果你想了解区块内部的情况,请随意从视频描述中的链接下金宝app载这个Simulink模型。就像我们刚才看到的,这个方块需要两个单元。
第一个输入是施加的扭矩,我们将设置为零。第二个输入是过程噪声。在此示例中,我们将假设仅在角度加速度上存在处理噪声。
过程噪声的协方差在脚本中定义。所以我们将此值输入我们的块。我们通过双击摆锤块设置状态的初始条件。
我们将以10度启动钟摆,其对应于超过18半径的PI。我们会以0角速度启动它。
摆块块的输出是角位置,假设用传感器测量。我们希望传感器读数有一些噪声,我们将模拟使用此噪声块。
类似于我们用过程噪声所做的操作,我们正在定义使用协方差的噪声特征,R。现在,我们具有Theta的实际和测量值。接下来,我们希望使用卡尔曼滤波器来估计Theta。
我们将控制系统工具箱中的卡尔曼滤波块添加到我们的模型中。这个块计算卡尔曼滤波算法方程,我们在之前的视频中讨论过。
它通过最小化错误协方差P,使用系统模型和测量和解决卡尔曼增益,并输出最佳状态估计。
在我们的示例中,我们将使用连续时间估计。但是请注意,如果您希望在微处理器上实时运行评估,那么您可以使用脚本时间卡尔曼滤波器,为这个块生成CC++代码,并将其部署到您的硬件上。
此块采用系统模型,我们将在脚本中定义,以及对其的输入,它还使用测量。
在摆锤模型中,我们在角度位置使用初始条件PI超过18半径。在这里,我们假设我们只知道大约并输入略微不同的数字,以调查Kalman滤波估计将如何在初始条件确切地知道时共同合并。我们需要配置的其他参数是我们的噪声协方差矩阵,我们选择与摆锤系统中的相同。
注意,摆系统有两种状态。所以过程噪声协方差是一个2 × 2的矩阵。但是由于我们假设过程噪声只作用于角加速度,我们输入协方差矩阵中的相关项为0。
接下来,我们进入测量协方差。跨协方差矩阵N用于捕获过程与测量噪声之间的相关性。在我们的榜样中,它们是不相关的。所以n是0。
另外,请注意,您可以通过取消选中协方差矩阵旁边的复选框,将其指定为时间变量。如果未检查,该块将为时间变量协方差添加额外的输入。
接下来,我们运行脚本和Simulink模型,并通过卡尔曼滤波器查金宝app看这个负theta。值得注意的一点是,在这个单元中使用的摆模型包含了非线性项sin。
但卡尔曼滤波器使用线性化系统。但是,我们仍然希望卡尔曼过滤器运作良好,因为我们初始化了少量值。因此摆锤模型几乎线性行动。
让我们来看看模拟结果。我们假设完全了解摆模型,它的输出,实际的,用绿线表示。噪声是用橙色表示的信号是测量值。估计的是蓝色的。
此估算显示,卡尔曼滤波器过滤出噪声。尽管其初始条件与模型本身略有不同,但我们看到卡尔曼滤波器在大约五秒钟内收敛并提供了对摆锤的角度位置的良好估计。
在该视频中,我们已经模拟了摆锤系统,并使用卡尔曼滤波器估计其角度位置。我们假设对系统模型的完美了解,并在噪声协方差矩阵Q和R处理。但是,如果您不知道系统参数,或者对传感器特性完全,那么此模拟会让您有机会使用模型参数。以及噪声协方差矩阵,观察和改善您的状态估计。
在此模拟中,我们将初始化为10度的少量,并通过卡尔曼滤波器观察良好的估计。如果你使用更大的θ值怎么办?
如果我们现在将Theta的初始值增加到90度,都在摆动模型和卡尔曼滤波器中,然后模拟模型,我们得到了对θ的差。
这是因为对于较大的值,钟摆模型的作用是非线性的。而卡尔曼滤波器仅适用于线性系统。正如我们在之前的视频中讨论的,这个问题可以通过使用扩展的卡尔曼滤波器来解决。
在下一个视频中,我们将使用同样的钟摆模型,并演示如何在Simulink中使用扩展卡尔曼滤波器。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。