0

我被要求创建一个腿跟随机器人(我已经做到了),在这个任务的第二部分,我必须开发一个卡尔曼滤波器,以改进机器人的跟随过程。机器人从人那里得到她到机器人的距离以及角度(这是一个相对角度,因为参考是机器人本身,而不是绝对 xy 坐标)

关于这项任务,我有一个严重的疑问。我读过的所有东西,我看到的关于卡尔曼滤波器的每个样本都是一维的(汽车行驶距离或从建筑物上掉下来的石头),根据任务,我必须在二维中应用它。是否可以应用这样的卡尔曼滤波器?

如果可以在二维中计算卡尔曼滤波器,那么我会理解,尽管一个人走路很奇怪(随机运动),但要求做的是以线性方式跟随腿-> 关于这个我有疑问关于如何建立状态矩阵的函数,谁能告诉我怎么做或者告诉我在哪里可以找到更多关于这个的信息?

谢谢。

4

1 回答 1

1

那么你应该阅读卡尔曼滤波器。基本上它所做的是分别通过其均值和方差来估计一个状态。状态可以是任何你想要的。您可以在您的州拥有本地坐标,也可以拥有全球坐标。

请注意,后者肯定会导致非线性系统动力学,在这种情况下,您可以使用扩展卡尔曼滤波器,或者更正确地使用连续离散卡尔曼滤波器,您以连续方式处理系统动力学,以离散方式处理测量时间。

全局坐标示例:

假设您有一个可以以速度 v 向前行驶的小立方质量。您可以仅在局部坐标中简单地对动力学进行建模,您的状态 s 将是s = [v],这是一个线性模型。

但是,您也可以合并全局坐标 x 和 y,假设我们仅在平面上移动。那么你会有s = [x, y, phi, v]'. 我们需要phi跟踪当前的方向,因为立方体当然只能相对于它的方向向前移动。让我们定义phi立方体的向前方向和 -x轴之间的角度。或者换句话说:phi=0立方体会沿着 x 轴移动,phi=90°它会沿着 y 轴移动。

具有全局坐标的非线性系统动力学可以写为

s_dot = [x_dot, y_dot, phi_dot, v_dot]' 

x_dot = cos(phi) * v
y_dot = sin(phi) * v
phi_dot = ...
v_dot = ... (Newton's Law)

EKF(扩展卡尔曼滤波器)预测步骤中,您将使用上面的(离散化)方程来预测第一步中状态的平均值,并使用线性化(和离散化)方程来预测方差。

s当你决定你的状态向量应该是什么样子时,有两件事要记住:

  • 您可能很想使用我的线性示例s = [v],然后在卡尔曼滤波器之外对速度进行积分,以获得全局坐标估计。这会起作用,但你会失去卡尔曼滤波器的魅力,因为你只会整合状态的平均值,而不是它的方差。换句话说,您将不知道当前全球坐标的不确定性是什么。
  • 卡尔曼滤波器的第二步,测量或校正更新,要求您可以将传感器输出描述为状态的函数。因此,您可能必须将状态添加到您的表示中,以便您可以正确地表达您的测量值,测量值as z[k] = h(s[k], w[k])在哪里z,并且w是具有高斯分布的噪声向量。
于 2015-04-09T09:05:23.987 回答