我被要求创建一个腿部跟随器机器人(我已经做过)并且在这个任务的第二部分我必须开发一个卡尔曼滤波器,以便改进机器人的后续过程。机器人从人到达机器人的距离以及角度(它是相对角度,因为参考是机器人本身,而不是绝对x-y坐标)
关于这项任务,我有一个严重的疑问。我读过的所有内容,我所看到的关于卡尔曼滤波器的每个样本都在一个维度上(汽车行驶距离或从建筑物落下的岩石),根据任务,我必须将其应用于二维。是否可以像这样应用卡尔曼滤波器?
如果有可能计算2维的卡尔曼滤波器,那么我会理解要求做的是以一种线性化的方式跟随腿,尽管一个人走路奇怪(随机运动) - >关于这一点我对如何建立状态矩阵的功能有疑问,有谁能告诉我该怎么做或告诉我在哪里可以找到更多关于此的信息?
感谢。
答案 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
是具有高斯分布的噪声向量。