给定捕获设备的欧拉角,卡尔曼滤波器是否适合过滤投影点位置?


17

我的系统如下。我使用移动设备的相机跟踪对象。通过此跟踪,我获得了在屏幕上投影的四个3D点,从而获得了四个2D点。由于检测到,这8个值有点嘈杂,因此我想对其进行过滤以使运动更平滑,更真实。作为第二项测量,我使用设备的陀螺仪输出,该输出提供了三个欧拉角(即设备的姿态)。它们比2D位置(大约20 Hz)更精确,频率更高(最高100 Hz)。

我的第一个尝试是使用简单的低通滤波器,但是滞后很重要,因此我现在尝试使用卡尔曼滤波器,希望它能够在几乎没有延迟的情况下平滑位置。如上一个问题所示,卡尔曼滤波器的一个关键点是测量值与内部状态变量之间的关系。这里的测量值既是我的8个2D点坐标,也是3个Euler角,但是我不确定应该用作内部状态变量以及如何将Euler角连接到2D点。因此,主要问题是,卡尔曼滤波器是否甚至适用于该问题?如果是的话,怎么办?


如果整个目的是用最小的延迟来平滑值,则可以尝试使用最小相位滤波器(如果尚未尝试过)。如果卡尔曼滤波比“最小相位延迟”能给您带来更好的效果,我会感到惊讶。对于线性滤波器,我希望最小相位滤波器可以提供最小的延迟。
niaren 2011年

@niaren:感谢您的评论,我也会对此进行研究。
斯特凡·皮查德2011年

1
尚不清楚您的测量值是多少。在卡尔曼滤波器框架中,“度量”是指您实际观察到的数量。如果要测量四个3D点(例如,通过将多个摄像机图像融合在一起),则这些就是您的测量。您还需要确定要估计的状态变量。您是否试图随时间跟踪3D对象位置?如果是这样,那就是您的状态变量。可以仅将2D表示仅用于显示,而不能将其作为模型的一部分包含在内。其他详细信息将有助于建议一种方法。
詹森·R

正如Jsaon所说,您的测量尚不清楚。您说:From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisy然后再说What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).。哪有 四个2D点还是三个欧拉角?还是加工火车走了欧拉角-> 3D点-> 2D点?
彼得·克

我实际上有两套测量值:从相机检测到的点位置和欧拉角,但联系起来并不容易。另外,我只对过滤后的位置作为输出感兴趣。我将编辑问题进行澄清。
斯蒂芬·皮查德

Answers:


4

低通滤波

最好了解“简单的低通滤波器”的含义。

例如,如果您在时间的测量是ķ

pķ=[Xķÿķ]

低通滤波后的估计值是:

pķ大号PF=αpķ-1个大号PF+1个-αpķ

那么你将有相当约过滤器一大群延迟(用于α-接近1)。 1个/1个-α

信号建模:简单化方法

要使用卡尔曼滤波器(或其他类似方法),您需要一个模型来获取和更新测量值。

通常这看起来像:

其中 ε ķ是(驱动)噪声的方法中,是状态转移矩阵,和是您的输入矩阵。

pķ+1个Ť[RüË=一种pķŤ[RüË+ϵķ
ϵķ一种

然后您测量是: p ķ = Ç p Ť ř Ü Ë ķ + d ν ķ 其中ν ķ是输出(测量)噪声, Ç是输出矩阵,以及d是您的测量噪声矩阵。pķ

pķ=CpķŤ[RüË+dνķ
νķCd

在这里,模型的“状态”被选择为真实位置,而您测量的东西就是输出。

然后,您可以对此应用卡尔曼滤波方程,以获取真实位置的状态估计值pķŤ[RüË^

但是,这种方法过于简单,因为它没有使用任何关于这些点如何移动的知识(也没有使用您的4个点以及您可能拥有的关于它们如何一起移动的任何知识)。

信号建模:开始更好的方法

本页显示如何设置涉及位置和欧拉角的问题。 它所做的事情与您所需的有所不同,但是状态是:

pķŤ[RüË=[Xķ ÿķ žķ X˙ķ ÿ˙ķ ž˙ķ X¨ķ ÿ¨ķ ž¨ķ ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]Ť

并且测量(输出)为

pķ=[Xķ ÿķ žķ ϕ ψ θ ]Ť

所有页面上的模型真正做是说: (但是对于每个XÿŽ)。

XķŤ[RüË=ñ=0ķX˙ñŤ[RüËñΔŤ+1个2ñ=0ķX¨ñŤ[RüËñΔŤ2
Xÿž

这只是经典的“运动方程式”。参见此处的公式(3)。


我的低通滤波的估计是:
pķ=αpķ-1个+α-1个pķ
斯特凡Péchard

@StéphanePéchard:糟糕!是的,我想念您通常想要一个直流单位增益。即使这样,对于接近1的,群时延仍将非常大,这可能是该方法无法令人满意的。α
彼得·K。

我尝试应用您链接到我的文章。当在基体中含有像衍生物时间值,做我需要计算他们自己每次我更新卡尔曼测量的?
ΔŤ;1个2Δ2
斯蒂芬·皮查德

ΔŤ1个/Fs

1
FsΔŤΔŤ1个2ΔŤ2

0

您的低通滤波器可能像;

pķ=αpķ-1个+1个-αžķ

žķķpķķ

LPF可以变形为下一个:

pķ=pķ-1个+ķžķ-pķ-1个
ķ=1个-α

ķ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.