来自系列:了解传感器融合和跟踪
布莱恩道格拉斯
这个视频描述了我们如何使用磁力计,加速计和陀螺仪来估计一个物体的方向。我们的目标是展示这些传感器对解决方案的贡献,并解释在此过程中需要注意的一些事项。
我们将涵盖哪些方向是使用加速度计和磁力计确定方向。我们还将讨论校准磁力仪,以便努力和柔软的铁源和处理腐败加速度的方法。
我们还将展示一个简单的终人思想解决方案,使用陀螺仪。最后,我们将介绍将解决方案与三个传感器混合的概念。金宝搏官方网站
在这个视频中,我们将讨论如何使用传感器融合来估计物体的方向。现在你可以用其他的名字来称呼方向,比如态度,或者如果你只是在谈论沿2D窗格的方向,也可以用标题。这就是为什么融合算法也可以被称为姿态和航向参考系统。但都是一样的;我们想要找出一个物体相对于某个参照物的朝向。
我们可以用很多不同的传感器来做这件事。例如,卫星可以使用星跟踪器来估计相对于惯性星场的姿态,而飞机可以使用攻击角传感器来测量相对于来袭自由气流的机翼方向。
现在,在这个视频中,我们将专注于使用非常流行的传感器,您将在每个现代手机和各种自主系统中找到:磁力计,加速度计和陀螺仪。
该视频的目标不是开发完全肉体的惯性测量系统。覆盖太多了,真的做了一个彻底的工作。相反,我想在概念上建立系统并解释每个传感器带到桌子,以及沿途观察的一些东西。我还会召唤一些我与下面相关的其他真正的好消息来源,您可以潜入更多细节。让我们来吧。我是布莱恩,欢迎来到Matlab技术谈话。
当我们谈论方向时,我们真的描述了对象旋转远离一些已知的参考帧的距离。例如,飞行器的间距是纵向轴线旋转局部地平线的距离。因此,为了定义方向,我们需要选择要描述反对的方向的参考帧,然后使用一些表示方法指定从该帧的旋转。我们有几种不同的方式来代表旋转。也许最简单地想象和理解的是卷,沥青和偏航的想法。这种代表在某些情况下工作得很好;然而,它在其他人中有一些广泛的缺点。因此,我们有其他方法来定义不同情况的轮换,类似于方向余弦矩阵和四元素。
The important thing for this discussion is not what a quaternion is or how a DCM is formulated, but rather just to understand that these groups of numbers all represent a fixed three-dimensional rotation between two different coordinate frames: the object’s own coordinate frame that is fixed to the body and rotates with it, and some external coordinate frame. And it’s this rotation, or these sets of numbers, that we’re trying to estimate by measuring some quantity with sensors.
我们来看具体的问题。假设我们想知道放在桌子上的手机的方向。手机的主体坐标系相对于本地的北,东,下坐标系。当我们只用磁力计和加速度计就能找到绝对方向时,稍后我们会添加一个陀螺仪来提高精度并纠正系统运动时出现的问题,但现在我们将继续使用这两个传感器。简单地说,我们可以测量手机的加速度,这只是由于重力,因为它是静止在桌子上的,我们知道这个方向是向上的,与重力方向相反的方向。然后我们可以测量物体的磁场来确定方位。
但这里有一些东西需要思考:磁场指向北,但它也指向上或下,这取决于你所在的半球。而且不仅仅是一点点。在北美,磁力线向下60到80度,这意味着它主要是在重力方向。罗盘指向北方而不是向下的原因是指针被限制在2D平面内旋转。然而,我们的mag传感器没有这样的约束,所以它返回的矢量也在重力方向上。为了向北,我们需要做一些叉乘。下载188bet金宝搏我们可以从测量的马格和加速度矢量开始。向下是加速度矢量的相反方向。东方向是向下和磁场的叉乘,北方向是向下和向下的叉乘。所以物体的方向就是物体坐标系和内环坐标系之间的旋转,我可以直接从刚刚计算的NED向量来建立方向余弦矩阵。
让我们来看看这个融合算法的实现。我有一个物理IMU;它是MPU-9250,它有加速计,磁力计和陀螺仪。虽然现在我们不打算使用陀螺仪。我通过I2C将其与Arduino连接,然后通过USB与MATLAB连接。我基本上是按照MathWorks网站上的这个例子来做的,该网站提供了我正在使用的一些函数,如果您想做同样的事情,我在下面提供了链接。
但是让我告诉你我的简单脚本。我连接到Arduino和IMU,我正在使用Matlab Viewer来可视化方向,每次读取传感器时都更新查看者。这是一个内置功能,传感器融合和跟踪工具箱。这里的少量数学基本上读取传感器,执行交叉产品,并建立DCM。下载188bet金宝搏
这差不多就是全部了。如果我运行这个,我们可以观察算法的运行。注意,当它放在桌子上的时候它会很好地找到下面;它在正X轴上,如果我把它旋转到另一个方向,你可以看到它很好地跟随我的物理运动。总的来说,很简单,很直接,对吧?
好吧,这个简单的实现存在一些问题,我想突出两个。首先是加速度计不仅仅是测量重力;他们测量所有线性加速度。因此,如果系统在围绕着大量移动,则会抛弃下来的估计。你可以在这里看到我并没有真正旋转传感器,但观众遍布各处。如果您的系统在很大程度上没有加速,那就像是一架飞机,这可能并不多大,而这是在海拔高度或坐在桌子上的手机上巡航。但线性加速不是唯一的问题。即使是旋转也会掉落估计,因为不在旋转中心位于旋转中心的加速度计将在系统旋转时感知加速度。所以我们必须找出一种处理这些腐败的方法。
第二问题是磁力计受磁场中的干扰的影响。显然,您可以看到,如果我在IMU附近获得磁铁,则估计损坏。那么我们对这两个问题可以做些什么?嗯,让我们从磁力计开始。如果磁干扰是系统的一部分并用磁力计旋转,则可以校准它。
这些是所谓的硬铁和柔软的铁源。硬铁源是产生自己的磁场的东西。这将是一种实际磁铁,如电动机中的实际磁铁,或者它可能是线圈,其具有电流从电子设备自身贯穿它。如果您尝试测量外部磁场,则磁力仪附近的硬铁源将有助于测量。如果我们围绕单轴旋转系统并测量磁场,则结果将是偏离原点的圆圈。因此,您的磁力计将在某些方向上读取更大的强度,并且在相反方向上较小强度。
软铁源不会产生自己的磁场但你可以称之为磁性;就像钉子被磁铁或系统的金属结构所吸引。这种金属在经过它周围时会使磁场弯曲,而弯曲的量随着金属的旋转而变化。因此,随着磁力计旋转的软铁源会扭曲测量结果,形成椭圆形而不是圆形。
因此,即使你有一个完美的无噪声磁力计,它仍然会返回一个错误的测量结果,仅仅因为它附近的硬铁和软铁源。你的手机和几乎所有系统都有这两种功能。
我们来谈谈校准。如果系统中没有硬铁或软铁,你旋转磁力计,在4个直角方向上,那么磁场矢量就会画出一个完美的球体,半径就是磁场的大小。一个硬铁源会抵消球体而一个软铁源会将球体扭曲成某个椭球。如果我们能提前测量它,我们就能通过找到偏移量和变换矩阵来校准磁力计,从而将它转换回一个以原点为中心的完美球体。这种转换矩阵和偏差将应用于每一个测量,基本上消除硬铁和软铁源。
这正是你的手机在使用指南针之前要求你向各个方向旋转时所做的。这里,我用MATLAB函数magcal校准IMU来演示这个。我收集了很多不同方向的测量数据,然后找到校准系数,让它们与理想球面相匹配。
现在,我有一个一个矩阵,将正确的软铁源和b矩阵,将移除硬铁偏见,我可以添加一个校准步骤之前我给你们的融合算法,这将产生更精确的结果比我之前。
好吧,现在让我们回到解决腐败线性加速的其他问题。解决此方法的一种方法是通过预测线性加速并在使用之前从测量中移除它。这可能听起来很难做到,但如果加速是系统执行器的结果 - 你知道,而不是不可预测的外部干扰。我们可以将发送到执行器的命令并通过系统的模型播放,以估计预期的线性加速,然后从测量中减去该值。这是可能的,如果你的系统是无人机,并且你通过命令四个螺旋桨来飞行。
如果我们不能预测线性加速度或外部干扰太大,另一种选择是忽略加速度计读数超出某一阈值从1g测量。如果读数的大小不接近重力的大小,那么很明显,传感器接收到了其他运动,这是不可信的。
这使得损坏的测量结果进入我们的融合算法,但它不是一个很好的解决方案,因为我们在这些时间停止估算方向,并且我们丢失了系统状态。再次,如果我们尝试估计静态对象的方向,那就不是一个问题;该算法将完全正常工作。然而,我们通常希望了解旋转和加速的东西的方向。所以我们在这里需要别的东西来帮助我们出去。
我们可以做的是将一个陀螺仪添加到混合中以测量系统的角速率。事实上,磁力计,加速度计和陀螺的组合如此受欢迎,因为它们通常作为惯性测量单元一起包装,如我的MPU-9250。那么陀螺仪如何帮助?
嗯,开始,我认为考虑如何用陀螺般的旋转物体估算旋转物体的定位是有用的,只有陀螺仪,没有加速,没有磁力计。为此,我们可以通过采样时间乘以角速率测量,以便在该时间内得到角度的变化。然后,如果我们在先前的采样时间上了解电话的方向,我们可以向其添加此增量角度并具有当前方向的更新估计。如果对象没有旋转,那么Delta角度将为零,方向不会改变,所以它都有所处的工作。并通过重复下一个样本的过程和之后,我们将通过时间内了解电话的方向。此过程称为DECT RECKONING,并且基本上它只是集成了陀螺测量。
死亡的缺点是死亡的。一个,您仍然必须在开始之前了解初始方向,所以我们必须弄清楚,两个,传感器并不完美。他们有偏见和其他高频噪音,这些噪音会损坏我们的估计。现在,集成就像一个低通滤波器一样,使得高频噪声被平滑为一点点,这很好,但由于随机散步,结果远离真实位置,以及集成测量中的任何偏差.所以,随着时间的推移,方向将平稳地远离真相。
所以在这一点上,我们有两种不同的方式来估计方向,一个使用加速度计和磁力计,而另一个使用陀螺仪。每个人都有他们各自的利益和问题。这就是传感器融合再次进入的地方。我们可以使用它以使这两个估计的方式相结合,以便强调每个优势并最大限度地减少其弱点。现在,我们可以使用许多传感器融合算法,如互补过滤器或卡尔曼滤波器,或者更专业但非常普通的Madgwick或Mahony过滤器,但在他们的核心,他们中的每一个都与之具有基本相同的东西。
他们初始化态度,无论是手动设置还是使用MAG和加速度计的初始结果,那么随着时间的推移,它们使用MAG领域的方向和重力慢慢校正陀螺仪中的漂移。Now, I go into a lot more detail in my video on the complementary filter, and MathWorks has a series on the mechanics of the Kalman filter, both linked below, but in case you don’t go and watch them right away, let me go over a very high-level concept of how this blending works.
让我们将我们的两个解决方案放在一个代金宝搏官方网站表我们对每个解决方案的信任度的相对两端。我们可以放置一个滑块来指定我们更信任的解决方案。如果滑块一直在左边,那么我们100%相信我们的mag/accel解决方案,我们只使用那个值作为我们的方向。一直向右,我们100%使用航迹推算方法。当滑动器在两者之间时,这意味着我们相信两个解,因此我们想把一个解的一部分加到另一个解的互补部分。金宝搏官方网站通过把滑块几乎完全放在航迹推算的解决方案中,我们大多相信集成陀螺仪测量的平滑度和快速更新,这给了我们在旋转和线性加速度时很好的估计,但我们一直在温和地纠正这个解决方案,回到绝对测量的mag和加速,以消除偏差之前,它有机会变得太大。所以这两种方法是互补的。
现在,对于互补滤波器,你作为设计师手动确定这个滑块放在哪里,你有多相信一个测量比另一个。使用卡尔曼滤波器,在你指定诸如测量中有多少噪声以及你认为你的系统模型有多好之后,滑动器的最佳增益或位置就会为你计算出来。所以底线是我们在两个解决方案之间做了某种奇特的平均基于我们对它们的信任程度。金宝搏官方网站现在,如果你想自己练习这个,我之前使用的MATLAB教程通过一个卡尔曼滤波方法使用MATLAB函数ahrsfilter。
这节课就讲到这里。在下一节视频中,我们将进一步添加GPS并展示IMU和方向估计如何帮助我们改善从GPS传感器得到的位置。
所以,如果您不想错过那个或其他未来的技术谈话视频,请不要忘记订阅此频道。此外,如果您想查看我的频道,控制系统讲座,我也涵盖了更多的控制主题。下次我会见到你。
你也可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。