从系列中:了解卡尔曼滤波器
Melda Ulusoy, MathWorks
本视频演示如何在Simulink中使用卡尔曼滤波器估计单摆系统的角度位置金宝app®.
利用MATLAB®和Sim金宝appulink,可以实现线性时不变或时变卡尔曼滤波器。在本视频中,使用Simscape Multibody™在Simulink中建模一个简单的摆系统。金宝app用控制系统工具箱中的卡尔曼滤波块估计摆的角位置。该视频展示了如何配置卡尔曼滤波块参数,如系统模型、初始状态估计和噪声特性。
记录日期:2017年10月25日
在这个视频中,我们将使用一个简单的钟摆例子来演示如何在Simulink中使用一个常见的过滤器来估计钟摆的角度位置。金宝app
在这个系统中,我们感兴趣的是观察角位置θ。假设我们可以用一个传感器来测量这个角度,比如旋转势角。虽然我们可以测量θ,但是我们的测量会有噪声。为了滤除噪声并获得θ的良好估计,我们将使用卡尔曼滤波器。
在切换到Simulink之前,让我们先看金宝app看自由体图和摆锤的运动方程。对于钟摆模型,我们假设摩擦为零。
假设钟摆与刚性杆相连,我们以一定角度启动它。当我们放开它,它开始来回摆动。
注意,有一个非线性项与角位置有关。如果你看函数的曲线图,我们会看到,对于θ的小值,这个函数几乎是线性的。因此,对于小角度,我们可以线性化这个方程,并把它写在这个表格上。
接下来,我们可以用状态空间的形式来表示这个系统,我们选择第一个状态作为角位置,第二个状态作为角速度。
我们在这个脚本中定义了参数和状态空间模型。正如我们前面提到的,我们感兴趣的是通过卡尔曼滤波器估计θ,因为θ的测量是有噪声的。
您可以使用MATLAB或Simulink实现线性时不变或时金宝app变卡尔曼滤波器。在这里,为了估计摆的角位置,我们将使用Simulink。金宝app
我们首先把这个预先建立好的摆块拖进我们的模型。这是使用Simscape Multibody创建的,它让我们可以使用物体、关节、力元素和传感器等组件定义机械系统。然后解出机械系统的运动方程。
在这里,我们通过一个旋转关节将一个固定的枢轴和一个连杆连接起来,对摆进行建模。我们也可以在mechanics explorer中查看这些。
在这些块中,我们定义了物体的尺寸、质量和惯性特性。作用在关节上的驱动力矩是这两个信号的和。我们输出关节位置,通过转动关节块。
如果您想查看块的内部,请从本视频描述中的链接下载此Si金宝appmulink模型。正如我们刚才看到的,这个街区需要两个单位。
第一个输入是施加的扭矩,我们把它设为零。第二个输入是过程噪声。在这个例子中,我们将假设过程噪声只存在于角加速度上。
流程噪声的协方差在脚本中定义。所以我们把这个值输入区块。我们通过双击摆块来设定状态的初始条件。
我们将在10度开始摆锤,对应于半径为18的圆周率。我们将以0的角速度启动它。
摆块的输出是角位置,假设用传感器测量。我们预计传感器读数会有一些噪音,我们会用这个噪音块来模拟。
与我们对过程噪声所做的类似,我们使用协方差R来定义噪声特性。现在,我们有了θ的实际值和测量值。接下来,我们要使用卡尔曼滤波器来估计θ。
我们将控制系统工具箱中的卡尔曼滤波器块添加到我们的模型中。此块计算卡尔曼滤波算法方程,我们将在前面的视频中讨论。
利用系统模型和测量,通过最小化误差协方差p来求解卡尔曼增益,输出最优状态估计。
对于我们的示例,我们将使用连续时间估计。但请注意,如果要在微处理器上实时运行估计,则可以使用脚本时间卡尔曼滤波器,为该块生成CC++代码,并将其部署到硬件上。
这个块接受一个系统模型(我们将在脚本中定义它),以及对它的输入,它也使用度量。
在摆模型中,我们使用初始条件半径/ 18作为角位置。在这里,我们假设我们只知道大约,并输入一个稍微不同的数字,以研究当初始条件不确切知道时,卡尔曼滤波估计将如何合并。我们需要配置的其他参数是噪声协方差矩阵,我们选择与钟摆系统相同。
请注意,摆锤系统有两种状态。因此,过程噪声协方差是一个2乘2矩阵。但由于我们假设过程噪声只作用于角加速度,我们在协方差矩阵中输入了相关项,表示为0。
接下来,我们输入测量协方差。互协方差矩阵n用于捕获过程和测量噪声之间的相关性。在我们的示例中,它们是不相关的。因此n是0。
另外,请注意,可以通过取消选中协方差矩阵旁边的框,将协方差矩阵指定为时变矩阵。如果未选中,该块将为时变协方差添加额外的输入。
接下来,我们运行脚本和Simulink模型,通过卡尔曼滤波器查看金宝app负θ。需要注意的一点是,本块中使用的摆模型包括非线性项正弦θ。
但是,卡尔曼滤波器使用线性化系统。然而,我们仍然希望卡尔曼滤波器能够很好地工作,因为我们用一个较小的值初始化θ。因此,摆锤模型几乎是线性的。
让我们看看模拟结果。我们假设完全了解摆锤模型,其输出,实际θ用绿线表示。噪声是以橙色显示的信号,是测量值。估计的θ以蓝色显示。
这个估计告诉我们卡尔曼滤波滤除了噪声。尽管它的初始条件与模型本身略有不同,我们看到卡尔曼滤波在大约5秒内收敛,并提供了一个很好的估计钟摆的角位置。
在这个视频中,我们模拟了摆系统,并用卡尔曼滤波估计了它的角位置。我们假设完美的知识系统的模型,和加工噪声协方差矩阵Q和r .但在情况下你不知道系统参数,或传感器特征,那么这个模拟可以让你有机会玩你的模型参数,以及噪声协方差矩阵,观察并改进你的状态估计。
在这个模拟中,我们用10度的小值初始化θ,并通过卡尔曼滤波器观察良好的估计。如果使用较大的θ值会怎么样?
如果我们现在在摆锤模型和卡尔曼滤波器中将θ的初始值增加到90度,然后对模型进行模拟,我们得到的θ估计值很差。
这是因为对于较大的θ值,摆锤模型的作用是非线性的。而卡尔曼滤波器仅适用于线性系统。正如我们在前面的视频中所讨论的,这个问题可以通过使用扩展卡尔曼滤波器来解决。
在下一个视频中,我们将使用相同的钟摆模型,并演示如何在Simulink中使用扩展卡尔曼滤波器。金宝app
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。