磁强计沿传感器的X、Y和Z轴检测磁场强度。准确的磁场测量对于传感器融合以及航向和方位的确定至关重要。
为了对航向和方位计算有用,需要校准典型的低成本MEMS磁强计,以补偿环境噪声和制造缺陷。
理想的三轴磁强计沿着正交的X、Y和Z轴测量磁场强度。在没有任何磁场干扰的情况下,磁强计读数测量地球磁场。如果在传感器沿所有可能的方向旋转时进行磁强计测量,则测量应位于球体上。磁强计的半径球体是磁场强度。
要生成磁场样本,请使用imuSensor
对象。出于这些目的,可以安全地假设角速度和加速度在每个方向上为零。
N = 500;rng (1);acc = 0 (N, 3);av = 0 (N, 3);q = randrot (N, 1);%均匀分布随机旋转imu=imu传感器(“accel-mag”);(~ x) = imu (acc, av, q);scatter3 (x (: 1) x (:, 2), x (:, 3));轴平等的标题(“理想磁强计数据”);
噪声源和制造缺陷会降低磁强计的测量精度。其中最引人注目的是铁的影响。硬铁效应是静止的干扰磁噪声源。通常,这些金属物体来自磁力计电路板上的其他金属物体。硬铁效应改变了理想球体的起源。
imu.Magnetometer.ConstantBias = [2 10 40];(~ x) = imu (acc, av, q);图;scatter3 (x (: 1) x (:, 2), x (:, 3));轴平等的标题(“带有硬铁偏移的磁力仪数据”);
软铁的效果更微妙。它们来自传感器附近的物体,这会扭曲周围的磁场。这些具有拉伸和倾斜理想测量球体的效果。所得到的测量结果在一个椭球面上。
软铁磁场效应可以通过将IMU的地磁场矢量旋转到传感器框架,拉伸它,然后将其旋转回全局框架来模拟。
nedmf = imu.MagneticField;Rsoft = [2.5 0.3 0.5;0.3 2。2;0.5 - 0.2 3];软= rotateframe(连词(q), rotateframe (q, nedmf) * Rsoft);对于ii=1:numel(q)imu。磁场=soft(ii,:);[~,x(ii,:)]=imu(acc(ii,:),av(ii,:),q(ii));结束图;scatter3 (x (: 1) x (:, 2), x (:, 3));轴平等的标题(“具有硬铁和软铁效应的磁力计数据”);
这个马卡尔
函数可以用来确定磁力计校准参数,包括硬铁和软铁效应。未标定的磁强计数据可以用方程表示为位于椭球面上
在这个等式中R是一个3乘3的矩阵,B是定义椭球体中心的1×3矢量,x1乘3的矢量是未经校准的磁力计测量,和为表示磁场强度的标量。上面的方程是二次曲线的一般形式。对于一个椭球体,R必须是正定的。这个马卡尔
函数使用多种求解器,基于不同的假设R. 在马卡尔
作用R可以假定为单位矩阵、对角矩阵或对称矩阵。
这个马卡尔
函数生成校正系数,该系数对位于偏移椭球上的测量值进行校正,并将其变换为位于以原点为中心的理想球体上。这个马卡尔
函数返回一个3 × 3的实矩阵A.和一个1 × 3的向量B.校正未校正的数据计算
在这里x是一个1×3阵列的未校准磁强计测量值和M是1乘3的校正磁强计测量值,它位于一个球体上。矩阵A.行列式是1这个矩阵的平方根是R. 另外,,A.具有与相同的形式R:单位矩阵、对角线矩阵或对称矩阵。因为这些矩阵不能传递旋转,矩阵A.在校正期间不会旋转磁强计数据。
这个马卡尔
函数还返回第三个输出,即磁场强度.可以用磁场强度来设置预期磁场强度
的属性ahrsfilter
.
马卡尔
函数使用马卡尔
该函数用于确定校正噪声磁强计数据的校准参数。通过设置NoiseDensity
财产的磁强计
财产的imuSensor
. 在变量中使用旋转和拉伸的磁场软的
模拟软铁效果。
imu.磁强计.噪声度=0.08;对于ii=1:numel(q)imu。磁场=soft(ii,:);[~,x(ii,:)]=imu(acc(ii,:),av(ii,:),q(ii));结束
找到A.
和B
最佳校正未校准磁强计数据的参数,只需调用以下函数:
[A, b, expMFS] = magcal (x);xCorrected =(取向)*;
绘制原始数据和校正数据。给出最适合原始数据的椭球。显示校正数据所在的球体。
德= HelperDrawEllipsoid;de.plotCalibrated (A, b, expMFS x, xCorrected,“自动”);
这个马卡尔
函数使用多种求解器来最小化残差。残差是校准数据与一个半径球之间的距离之和expMFS
.
r = sum(xCorrected.^2,2) - expMFS.^2;E =√r。”* r / N) / (2 * expMFS。^ 2);流('已更正数据中的剩余错误:%.2f\n\n',E);
修正数据中的剩余误差:0.01
如果只需要更正某些缺陷或实现更简单的更正计算,则可以运行各个解算器。
许多MEMS磁强计在传感器内具有寄存器,可用于补偿硬铁偏移。实际上,上述方程式的(x-b)部分发生在传感器上。当只需要硬铁偏移补偿时,则A.
矩阵就变成了单位矩阵。要确定硬铁校正单独、马卡尔
函数可以这样调用:
[Aeye,贝耶,expMFSeye] = magcal (x,“眼睛”);xEyeCorrected = (x-beye) * Aeye;(ax₁,ax2) = de.plotCalibrated (expMFSeye Aeye,贝耶,x, xEyeCorrected“眼睛”); 视图(ax1,[-100]);视图(ax2,[-100]);
对于许多应用,将椭球矩阵视为对角矩阵就足够了。几何上,这意味着未校准磁强计数据的椭球近似为其半轴与坐标系轴对齐,且中心偏离原点。尽管这不太可能是椭球的实际特征d、 它将校正方程简化为每个轴的一次乘法和一次减法。
[Adiag,bdiag,expMFSdiag]=magcal(x,“诊断”); xDiagCorrected=(x-bdiag)*Adiag;[ax1,ax2]=de.plotCalibrated(Adiag,bdiag,expMFSdiag,x,XDIAG校正,...“诊断”);
强迫马卡尔
函数求解任意椭球并产生稠密、对称的A.
矩阵,将函数调用为:
[A, b] = magcal (x,“sym”);
这个“眼睛”
,“诊断”
,“sym”
应该小心使用标记,并检查输出值。在某些情况下,高阶数据可能不足(“诊断”
或“sym”
)使用更简单的方法可以找到拟合和一组更好的校正参数A.
矩阵“自动”
“拟合”选项是默认选项,用于处理此情况。
考虑使用高阶拟合器时数据不足的情况。
Xidx = x(:,3) > 100;xpoor = x (xidx:);[Apoor, bpoor mfspoor] = magcal (xpoor,“诊断”);
由于没有足够的数据分布在椭球表面,无法实现与椭球的良好拟合和适当的标定参数“诊断”
选择。因此,阿波罗
矩阵是复杂的。
disp (Apoor)
3.5407 + 0.00000 i 3.5407 + 0.00000 i 3.5407 + 0.00000 i 3.5407 + 0.00000 i
使用“自动”
“拟合”选项可避免此问题,并找到更简单的方法A.
实对称正定矩阵。调用马卡尔
与“自动”
选项字符串与不带任何选项字符串的调用相同。
(订房,bb, mfsbest] = magcal (xpoor,“自动”);disp(不仅)
1 0 0 0 1 0 0 0 1
比较使用“自动”
钳子和不正确的,高阶钳子显示不检查返回的危险A.
修正数据前的矩阵。
de.compareBest(订房、bb mfsbest、Apoor bpoor, mfspoor, xpoor);
调用马卡尔
函数与“自动”
Flag,这是默认的,将尝试所有的可能性“眼睛”
,“诊断”
和“sym”
寻找A.
和B
使残差最小,保持A.
真实的,并确保R是正定且对称的。
这个马卡尔
函数可以提供校准参数,以校正磁强计中的软铁和硬铁偏移。调用该函数时不带选项字符串,或等效于“自动”
选项字符串,生成最佳拟合并覆盖大多数情况。