从系列:了解卡尔曼滤波器
Melda Ulusoy,MathWorks公司
本视频演示如何使用在Simulink扩展卡尔曼滤波器估计非线性摆系统的角位置万博1manbetx®。
在这段视频中,一个单摆系统在Simulink中使用的Simscape多体™建模。万博1manbetx非线性摆系统的角位置是使用扩展卡尔曼滤波器块是在控制系统工具箱™可用估计。视频显示如何指定扩展卡尔曼滤波器块参数,如状态转换和测量功能,初始状态的估计,并且噪声特性。如果您想对您的实时硬件运行状态估计,可以生成在Simulink扩展卡尔曼滤波器模块的C / C ++代码,并将其部署到您的硬件。万博1manbetx
在这段视频中,我们将演示如何在Simulink中使用扩展卡尔曼滤波器。万博1manbetx以前,我们已经使用了单摆系统和假定摆的角位置,θ,用传感器测量。为了滤除噪声测量结果,我们使用了卡尔曼滤波器,并表明它提供了一个良好的估计时theta的初始条件是小的。然而,当我们theta的值增加至90度时,我们无法估计准确,因为摆模型充当非线性放大theta的值。因此,为了估计这一非线性系统的THETA,我们将使用扩展卡尔曼滤波器。
我们将通过增加从控制系统工具箱扩展卡尔曼滤波器块到我们的模型开始。请记住,在我们讨论过这个状态转换和测量功能可能是非线性以前的视频和扩展卡尔曼滤波算法采用线性近似这些非线性函数如何计算状态估计。现在,在扩展卡尔曼滤波器块,我们会指定这些功能。在这里,我们将使用MATLAB函数来创建f和g,但请注意,你也可以使用Simulink的功能块。万博1manbetx状态转移函数使用当前状态和输入,以确定如何在下一时间步骤的状态将被计算。在这里,任何输入到比状态和过程噪声其他状态转移函数通过输入口相连。所以,我们ü连接作为第一个输入块。我们首先作为扩展卡尔曼滤波器块估计离散非线性系统的状态使用零阶保持这种离散信号。
在我们的例子中,我们将不指定雅可比,因为它会被数字计算。但是,如果分析雅可比可用,您可以创建一个函数来计算的话,在这里输入函数的名称。接下来,我们进入过程噪声方差,这我们已经在脚本中预先定义的。我们也进入状态的初始值。在摆模型,θ-被初始化为90度和0速度。我们使用的扩展卡尔曼滤波器块相同的值。因为我们知道初始状态值,我们将设置初始状态估计误差协方差较小的值。但如果你没有在初始状态值的信心,你可以指定协方差的高值。
接下来,我们指定的测量功能,再使用MATLAB功能。然后我们连接对应于我们已经在块只是指定的测量功能测量的有峰。我们进入测量协已在脚本中已经预先定义了它的价值。请记住,卡尔曼滤波器也被称为传感器融合算法,因为它结合来自多个传感器的测量结果,以减少在该状态评估的不确定性。所以,如果你有多个测量,您可以通过点击进入他们“添加测量”。而不同的传感器可以具有不同的采样率,这样你就可以在“多速率”选项卡下指定的测量采样时间和状态变化。最后,我们进入采样时间。
现在,我们指定的参数扩展卡尔曼滤波器块,我们就可以运行这个模拟,看看结果。在此,蓝色信号显示实际THETA,喧闹的一个示出了测量,且绿线是估算θ。这个结果告诉我们,虽然摆系统是非线性的,使用扩展卡尔曼滤波器给了我们theta的一个很好的估计。但是请注意,如果你在你的系统更严重的非线性,扩展卡尔曼滤波器可能不足以处理系统的非线性。但是,在这种情况下,你可以使用无迹卡尔曼滤波,您可以在控制系统工具箱找到。
在这个模拟中,我们展示了如何使用估计扩展卡尔曼滤波非线性系统的状态。如果你有兴趣在您的实时硬件上运行的状态估计,可以从该块生成代码并将其部署到您的硬件。请记住,卡尔曼滤波算法包括两个步骤:预测和修正。如果你看一下生成的代码,你会认识到,利用这些算法步骤计算的保健功能。校正是如何计算的此代码段例如节目。
在这里,我们总结我们对卡尔曼滤波的讨论。在这个系列中,我们已经讨论了为什么要使用卡尔曼滤波器,它们是什么,如何在非线性系统处理状态估计,我们也表现出在Simulink的例子。万博1manbetx我们将继续这样做控制对不同的控制技术专题讲座。在此期间,随时发表任何评论和分享您的建议,关于未来的话题。
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。
本网站使用Cookies来改善您的用户体验,个性化的内容和广告,并分析网站流量。通过继续使用本网站,您同意我们使用Cookie。请参阅我们的隐私政策要了解更多关于cookie和如何更改设置。