在腿从动机器人上应用卡尔曼滤波器

时间:2015-04-01 14:50:12

标签: kalman-filter mobile-robots

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

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

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

感谢。

1 个答案:

答案 0 :(得分: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是具有高斯分布的噪声向量。