三轴正交型传感器的正交性修正算法

当需要测量的物理量为矢量时,我们需要使用三个正交放置的传感器来分别测量物理量的各个分量,以此来合成一个完整的矢量。如果我们对测量精度要求非常高,就不能仅仅只是对单个传感器进行修正,还要考虑三个传感器的敏感轴是否严格的正交。很多时候我们需要仔细的调整三个传感器的正交关系,但是将三个传感器调整到完全正交是很难的,并且许多时候,由于设计等原因,这种机械上的调校是无法进行的。这时,软件修正就成了必不可少的步骤,软件修正大多数时候也比机械上的调校更简单。

这里介绍一种基本的软件修正方法。它对大多数类型的传感器都可以使用。首先,假设单独的每个传感器的测量的值都是准确的,这可以通过预先对每个传感器进行标定来完成。

这里设三个传感器的测量值分别是 x1x2x3。这三个值可以合成一个列向量X

而传感器所在位置的真实物理量可以用矢量Y来表示:

所谓软件修正算法,就是找到从 X Y 的映射。由解析几何知识我们知道X Y 的映射可以通过一个线性变换C来表示:

写到这里其实方法就很明了了,我们只需要求得这个转换矩阵C就一切都解决了。

转换矩阵C如何求,当然是通过大量的测量数据来拟合。实验数据的获得很重要,最好能有个比较精密的三轴转台,这样转各个角度都比较方便。没有也没关系,但至少要能把装配好的传感器组沿三个已知的方向放置,并且这三个方向要摆放的很精确。通常,我们选的这三个方向是相互正交的,这三个方向上物理量的真实值就是上面式子中的y1y2y3,换句话说这三个方向是三个传感器的名义上的取向,虽然这三个传感器可能全都摆歪了。具体如何采集数据就不详细描述了,由于未知参数有9个,至少要采集9组数据才行,条件允许的话当然是数据越多越好。

下面说说如何对采集到的数据进行拟合。通常我们遇到的最小二乘拟合问题的待拟合的函数都可以表示为:

这里x1,…,xN是函数的自变量,c1,…,cM是待拟合的参数。我们可以将自变量和待拟合参数简写为向量,这样表达式能够简化:

所谓最小二乘拟合就是求的使的下面函数g(C)为最小值时C的值,其中Xi 和 yi 为测量值,这里设共有P 组测量值:

这个问题已经有成熟的算法,各种常见的数学软件,比如 Matlab、Mathematica、scilab、Lingo 等都有现成的程序包来完成这个计算。我们现在的问题难点在于 y 也是个向量,这就需要我们对上面的方法进行一点简单的变形。简单的说,我们实际上是有三个待拟合函数的,因此g(C)也要做相应的改变:

经过这样转化后就成了一个普通的最优化问题(函数求极值)了,各种数学软件都可以方便的计算出结果。

这里再多说几句,我个人喜欢使用 gnuplotgnuplot中有个 fit 命令,也可以完成多元函数拟合。Gnuplot fit 命令采用非线性最小二乘 (NLLS) Marquardt-Levenberg算法,拟合能力非常强悍,只要拟合参数的初值给的别太离谱,基本都能够收敛到最优解上。fit命令具体的用法可以参考gnuplot的帮助文件。这里只讲讲如何处理 y是多个值的问题,方法很简单,就是通过多引入一个自变量,将多值函数改造成普通的函数:

改造后的fc(X,i)就成了普通的多元函数了,可以用常规的多元函数拟合方法来处理。

如果将三个传感器单独的校正和正交性校正一起进行,可以这样来:

这里需要注意的是如果a1a2a3成为未知数,c11c22c33就可以作为已知量了,比如设c11=c22=c33=1,因为这里的六个未知数只有三个是独立的。因此,实际上只增加了三个未知数。

如果将上面的方法和温度修正一起考虑的话可以这样处理:

上面式子中的t是温度,这里的温度修正算法比较简单,主要是为了尽量少引入未知的参数。后面的计算就没什么不同的了。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值