从系列:理解传感器融合和跟踪
布赖恩·道格拉斯
这个视频介绍了我们如何使用磁力计、加速度计和陀螺仪来估计物体的方向。我们的目标是展示这些传感器对解决方案的贡献,并解释在此过程中需要注意的一些事情。
我们将讨论的方向是什么,以及我们如何使用加速度计和磁力计确定方位。我们还将讨论校准的软硬铁的来源和方式来处理破坏加速磁力计。
我们还将展示一个简单的航迹推算解决方案,使用陀螺仪本身。最后,我们将介绍混合三个传感器的解决方案的概念。金宝搏官方网站
在这个视频中,我们将讨论如何使用传感器融合来估计物体的方向。现在你可以用其他的名字来称呼方向,比如态度,或者如果你只是在谈论沿着2D窗格的方向,也可以用heading。这就是为什么融合算法也可以被称为姿态和航向参考系统。但这都是一回事;我们想要弄清楚一个物体相对于某个参考的朝向。
我们可以使用许多不同的传感器来实现这一点。例如,卫星可以使用星跟踪器来估计相对于惯性星场的姿态,而飞机可以使用攻角传感器来测量机翼相对于进入的自由气流的方向。
现在,在这个视频中,我们将专注于使用一套非常流行的传感器,你可以在每一部现代手机和各种各样的自主系统中找到:磁力计,加速度计和陀螺仪。
这段视频的目的不是为了发展一个完全充实出惯性测量系统。只是有太多的覆盖,真正做一个彻底的工作。相反,我想从概念上建立的系统,并解释了每个传感器带来的表,和几件事情要注意沿途。我还将召唤出其他一些真正的好来源,我已经链接到下面,你可以下潜到更多的细节。因此,让我们开始吧。我是布莱恩,欢迎到MATLAB技术讲座。
当我们讨论方向时,我们实际上是在描述一个物体从某个已知参考系旋转了多远。例如,飞机的俯仰是纵轴旋转离当地地平线的距离。为了定义一个方向,我们需要选择我们想要描述方向的参考系,然后用一些表示方法指定从那个参考系的旋转。我们有几种不同的表示旋转的方法。也许首先最容易想象和理解的是横摇、俯仰和偏航的概念。这种表示方式在某些情况下非常有效;然而,它在其他方面有一些众所周知的缺点。我们有其他方法来定义不同情况下的旋转,比如方向余弦矩阵和四元数。
讨论的重点不是四元数是什么或者DCM是如何表述的,而是要理解这些数字组都代表了两个不同坐标系之间固定的三维旋转:对象自身的坐标系(固定在主体上并随其旋转),以及一些外部坐标系。就是这个旋转,或者这些数字,我们试图通过传感器测量一些量来估计。
我们来看看具体的问题。假设我们想知道手机放在桌子上的方向。手机的身体坐标系相对于本地的北,东,下坐标系。当可以找到绝对方向只用一个磁力计和加速度计,稍后我们将添加一个陀螺仪,以提高精度和纠正问题,当系统移动时,但现在我们将坚持这两个传感器。简单地说,我们可以测量手机的加速度,这只是由于重力,因为它是静止地坐在桌子上,我们知道方向是向上的,与重力方向相反。然后我们可以测量物体的磁场来确定北方。
但这里有一些东西需要考虑:磁场指向北方,但它也指向上或下,这取决于你所在的半球。不仅仅是一点点。在北美,磁力线的角度大约是向下60到80度,这意味着它主要是在重力方向上。指南针指向北方而不是向下的原因是指针被限制在一个2D平面内旋转。然而,我们的磁传感器没有这样的约束,所以它会返回一个矢量,也是在重力方向上的。为了往北走,我们需要做一些叉乘。下载188bet金宝搏我们可以从身体坐标系中测量到的磁和加速度矢量开始。向下是加速度矢量的反方向。东是向下和磁场的叉积,然后北是向东和向下的叉积。所以物体的方向就是物体坐标系和NED坐标系之间的旋转,我可以直接从我刚刚计算出来的NE和D向量建立方向余弦矩阵。
让我们来看看这个融合算法的实现。我有一个物理的IMU;它是MPU-9250,它有加速度计,磁力计和陀螺仪。虽然现在我们不打算用陀螺仪。我将它通过I2C连接到Arduino上,然后通过USB连接到MATLAB。我基本上只是遵循了MathWorks网站上的这个示例,它提供了我正在使用的一些函数,如果您想做同样的事情,我在下面提供了链接。
但让我告诉你我的简单的脚本。我连接到Arduino和IMU,我使用MATLAB观众可视化的方向,每次我读传感器时我更新的浏览器。这是一个内置的功能,与所述传感器融合和跟踪工具箱。数学的少量这里基本上读取传感器,执行跨产品,并建立了DCM。下载188bet金宝搏
这差不多就是全部了。如果我运行这个,我们可以看到算法的运行。注意,当它坐在桌子上的时候它能很好地找到下面;它在正X轴上,如果我把它旋转到另一个方向你可以看到它很好地跟随我的物理运动。总的来说,非常简单和直接,对吧?
嗯,有一些问题,这个简单的实现,我想强调的其中两个。第一个是加速度计不只是测量重力;他们测量所有线性加速度。因此,如果该系统是围绕了很多移动,它会甩开其中下来是估计。你可以看到这里,我真的不旋转传感器多,但观众是跳跃所有的地方。这可能不是太大的问题,如果您的系统基本上没有加速,像飞机一样,而它的巡航高度时,或者是坐在桌子上的电话。但线性加速度是不是唯一的问题。即使旋转可以甩开估计,因为这不是位于旋转中心的加速度计将检测上的加速度时系统旋转。因此,我们必须想出一个办法来处理这些腐败。
第二个问题是磁力计会受到磁场干扰的影响。很明显,你可以看到,如果我在IMU附近得到一个磁铁,这个估计就被破坏了。那么我们该如何解决这两个问题呢?好吧,让我们从磁力仪开始。如果磁扰动是系统的一部分,并随磁力计旋转,那么就可以标定出来。
这些就是所谓的硬铁和软铁来源。坚硬的铁源会产生自己的磁场。这将是一个真正的磁铁,就像电动机里的那些,或者它可能是一个线圈,有电流通过它从电子本身。如果你试图测量外部磁场,磁力计附近的一个硬铁源将有助于测量。如果我们将系统绕单轴旋转并测量磁场,结果将是一个与原点偏移的圆。所以磁力计会在某些方向上读出较大的强度在相反方向上读出较小的强度。
软铁源是一种不产生磁场的东西,但你可以称之为磁;你知道,就像钉子被磁铁或你系统的金属结构吸引。这种金属会弯曲磁场,因为它通过或围绕它,弯曲的数量变化,因为金属旋转。因此,如果软铁源随磁力计旋转,测量结果就会失真,形成椭圆形而不是圆形。
所以即使你有一个完美的无声磁强计,它仍然会返回一个不正确的测量结果仅仅是因为它附近的硬铁和软铁源。你的手机和几乎所有的系统都有。
我们来谈谈校准。如果系统中没有硬铁或软铁源,你将磁力计在四个方向旋转,那么磁场矢量就会画出一个完美的球体,半径等于磁场的大小。硬铁源会抵消球体软铁源会把球体扭曲成椭球。如果我们能提前测量,我们就能通过找到偏移量和变换矩阵来校准磁力计,将它转换回一个以原点为中心的完美球体。然后将这个变换矩阵和偏差应用到每一个测量中,基本上消除了硬铁和软铁源。
当你的手机要求你在使用指南针之前向各个方向旋转时,这正是它所做的。在这里,我通过使用MATLAB函数magcal校准我的IMU来演示这个。我收集了很多不同方向的测量数据然后找到校准系数,使它们适合于一个理想的球体。
现在,我有一个一个矩阵,将正确的软铁源和b矩阵,将移除硬铁偏见,我可以添加一个校准步骤之前我给你们的融合算法,这将产生更精确的结果比我之前。
好了,现在让我们回到解决线性加速度衰减的另一个问题。解决这一问题的一种方法是预测线性加速度,并在使用它之前将其从测量中删除。这听起来可能很难做到,但如果加速度是系统执行器的结果,而不是不可预测的外部干扰,这是可能的。我们可以把发送给执行器的命令通过系统的模型来估计预期的线性加速度然后从测量中减去这个值。这是可能的,比如说,如果你的系统是一架无人机你通过控制四个螺旋桨四处飞行。
如果我们不能预测线性加速度或外部干扰过高,另一个选择是忽略加速度计读数超出了1g测量的某个阈值。如果读数的大小不接近重力的大小,那么很明显,传感器正在捕捉其他运动,这是不可信的。
这避免了被破坏的测量数据进入我们的融合算法,但这不是一个很好的解决方案,因为我们在这些时间停止估计方向,我们失去了对系统状态的跟踪。再次强调,如果我们试图估算静态对象的方向,这不是问题;这个算法运行得非常好。然而,我们经常想知道正在旋转和加速的物体的方向。所以我们需要别的东西来帮我们。
我们能做的就是在其中加入一个陀螺仪来测量系统的角速率。事实上,磁力计、加速度计和陀螺仪的组合非常受欢迎,它们经常被打包成惯性测量单元,就像我的MPU-9250一样。那么陀螺仪有什么作用呢?
好了,开始,我觉得思考如何,我们可以在自己的,没有加速度和无磁只陀螺估计为方向旋转物体是有用的。为此,我们可以通过采样时间乘以角速度测量来获得在这段时间的角度变化。然后,如果我们知道电话的朝向在先前采样时间,我们可以此增量角度添加到它,并有当前方向的更新估计。如果对象不旋转,那么角度变化将是零和方向不会改变,所以这是可行的。通过重复这个过程中下一个样本,之后的一个,我们会知道手机在时间上的取向。这个过程被称为航位推算,基本上它只是整合了陀螺仪测量。
船位推算法也有缺点。第一,在开始之前你仍然需要知道初始方向所以我们必须弄清楚,第二,传感器并不完美。它们有偏差和其他高频噪声,会破坏我们的估计。现在,积分就像一个低通滤波器,高频噪声被平滑了一点,这很好,但结果会偏离真实位置,因为随机游走以及对测量中的任何偏差进行积分。所以,随着时间的推移,方向会平稳地偏离真相。
所以在这一点上,我们使用加速仅使用陀螺仪两种不同的方法来估算方向,一个和磁力计和其他。而且每个人都有自己各自的优点和存在的问题。而这正是传感器融合进来一次。我们可以用它来这两个估计在强调各自己的优势,最大限度地减少他们的弱点的方式结合起来。现在,有一些传感器融合算法,我们可以使用,就像一个互补滤波器或卡尔曼滤波器,或更专业,但很常见Madgwick或马奥尼过滤器,但在他们的核心,他们中的每一个本质上是做同样的事情。
他们初始化姿态,要么通过手动设置,要么使用磁力场和加速度计的初始结果,然后,随着时间的推移,他们使用磁力场的方向和重力来慢慢校正陀螺的漂移。现在,我进入更多的细节在我的视频互补滤波器,和MathWorks一系列力学的卡尔曼滤波器,从下面链接,但如果你不去看他们,让我走在很高层次的概念,这种混合是如何工作的。
让我们把我们的两个解决方案放在天平的金宝搏官方网站两端,以表示我们对每个解决方案的信任。我们可以放置一个滑块来指定我们更信任哪个解决方案。如果滑块一直在左边,那么我们100%相信我们的mag/accel解决方案,我们只使用这个值作为我们的方向。一直到右边,我们100%使用航迹推算法。当滑块在两者之间时,这表示我们相信两种溶液都有一定的量,因此想要取其中一种溶液的一部分,并把它加到另一种溶液的互补部分中。金宝搏官方网站通过将滑块几乎完全置于航迹推算解决方案中,我们主要相信集成陀螺仪测量的平滑性和快速更新,这给了我们在旋转和线性加速时的良好估计,但我们一直在非常温和地纠正这个解决方案,使其回到对mag和accel的绝对测量,以在它有可能变得太大之前消除偏差。所以这两种方法是互补的。
现在,对于互补过滤器,作为设计师,你要手工确定在哪里放置这个滑块,你有多相信一种测量方法而不是另一种。使用卡尔曼滤波器,当你指定测量中有多少噪声以及你认为你的系统模型有多好之后,就可以计算出滑块的最佳增益或位置。我们的底线是根据我们对两个解的信任程度来计算这两个解的平均。金宝搏官方网站现在,如果你想自己练习这个,我之前使用的MATLAB教程通过使用MATLAB函数ahrsfilter的卡尔曼滤波方法。
这就是我要讲的。在下一个视频中,我们将进一步加入GPS并展示IMU和方向估计如何帮助我们改善GPS传感器的位置。
所以,如果你不想错过这个或其他未来的Tech Talk视频,不要忘记订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我也涵盖了更多的控制主题。下次见。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。