如果你是运动领域的新手导航(即使在深入研究了几年之后,我觉得我仍然是这样),有几个词经常出现。他们通常会以那种“如果你要问,你还不够酷”的方式随意地回答。(大多数情况下,当我摆出这种态度时,是因为我真的不知道我在说什么,我想劝阻任何人不要指责我……)
这两个词就是四元数和卡尔曼我给你几秒钟时间,用罗杰斯先生的方式,悄悄地重复一遍。
让我们一个一个来,因为它们并没有真正的联系。
您可能会在运动传感器的输出中找到“四元数”。现在,随着传感器融合和更高级别抽象的增加,你们中的许多人可能不需要这些输出——你们已经有了隐藏这些低级信息的软件。
但这是关于旋转的数学,尽管这不是它开始的方式。早在19世纪,一个名叫汉密尔顿的人注意到,使用标准的三维数学,点在空间中很容易加减法,但乘法和除法很麻烦。他发明了一种处理这个问题的方法,通过增加第四个维度,有效地扩展了我们所知道的复数,包括aj而且k伴随着更熟悉的我*。
其决定性特征是
我2=j2=k2=ijk= 1
但是,正如传说所述,向量微积分取代了这种方法,直到最近才淡出人们的视线。因为,在其他方面,旋转——需要使用标准欧拉角和旋转矩阵移动三次——可以使用四元数在一次移动中完成。这种数学效率可以在更短的时间内计算旋转。
四元数还能解决另一个问题:“万向节锁”。似乎有很多描述这种情况的方法,但在数学上,它或多或少意味着一个独立维度与另一个维度退化。
从实际的角度来看,这是我的感受。假设你正看着一架飞机从你头顶飞过。当它靠近时,你的头向后倾斜,如果它从你的左边经过,你的头(和身体)就会向左边旋转,直到你面对相反的方向,飞机继续飞行,随着飞机的消失,你的头逐渐下降。
所有这些动向都是“可预测的”(找不到更好的词了)。但假设飞机正好从你头顶飞过。你不旋转地向后倾斜你的头(因为它既不向左也不向右)。但是当它经过你的头顶时,你会怎么做?实际上,你必须做一个无限快的旋转来面对向后,而且它没有很好的定义(或“可预测”)这个旋转应该是什么(因为它是无限的),也不知道你是向右还是向左做。这是万向节锁定的一种表现形式:当你抬头看的时候,你实际上失去了一个维度。
什么的。
因此,一旦用四元数表示,当物体在空间中移动和旋转时,计算方向就变得更容易了。
那个卡尔曼呢?你经常听说卡尔曼过滤器,你通常会在与你认为的过滤器的作用毫无意义的上下文中听到它。比如根据你去过的地方和你刚刚做的任何动作来确定你现在在哪里。过滤器是如何参与其中的呢?
好吧,我不确定我能证明“过滤器”这个词是正确的,所以我不会尝试(我相信有一个很好的-可能是历史的-原因)。但这就是它的意义,为了理解它,你必须承认一些现实,这些现实可能会动摇你的信仰。
- 我们对于世界如何运转的模型是近似的。毫无疑问地使用它们(就像毫无疑问地做任何事情一样)会导致错误。这个你可能已经知道了。
- 对事物的真实测量,你会认为反映真实(而不是模型)的“黄金标准”,充斥着错误。在最好的情况下,在测量中会有噪声,你并不知道给定测量的哪一部分是噪声,哪一部分是准确的。
换句话说,你不能相信你的模型,你不能相信你的测量。你还是放弃吧,回家去吧。
但是,别这么快。
卡尔曼滤波器可以作为模型和测量之间的仲裁者。一般来说,您构建了一个引擎,它接受当前值——假设它是一个位置——并评估模型和最后测量的位置(或“更新”),并根据该信息计算出它认为下一个位置将是什么。过滤器操作是一个稳定的预测/更新步骤序列。你可能会想,这在太空探索中很重要(我认为这是第一个可靠的用途)。
这个概念是非常通用的:模型和下一状态预测是特定于一个问题的(可能与位置无关),并且可能涉及许多参数。例如,您的模型可能不是简单地预测位置使用x,y,z坐标测量;它可能来自双积分加速度测量,由陀螺仪测量交叉检查,以防止重力泄漏,重力泄漏本身由磁力计交叉检查,你可能会在那里扔一个压力表以及第二个意见指示器z维度。
这些都可以在模型和计算中混在一起。过滤器的“增益”与对实际测量的信任程度有关。高增益表示高度可信的测量;增益为0意味着测量被忽略。
这就是我对四元数和卡尔曼的看法。你可以在下面的空白处随意放大、反驳或做任何评论。
*我,不知道为什么,变成了j在我所有的工程研究中,有一件事在某些课堂上发生过,你挠头想知道发生了什么,没有人——甚至教授——似乎注意到或解释为什么我们突然做出这种随意的改变。