搜索
bottom↓
回复: 23

HMC5883L校准及干扰问题讨论

[复制链接]

出0入0汤圆

发表于 2013-8-14 17:03:44 | 显示全部楼层 |阅读模式
      最近在校准HMC5883L碰到很头疼的问题,本想着磁力计这块比较简单,没想到在校准问题上,把我头都弄大了。现拿出来,大家讨论讨论,知道的多指教指教。
       先把我的理解和处理过程拿出来和大家探讨一下:
          1、        数据读取
               X_HMC =(IOBuf[16] << 8) + IOBuf[17];
               Z_HMC =(IOBuf[18] << 8) + IOBuf[19];
               Y_HMC =(IOBuf[20] << 8) + IOBuf[21];

          2、 水平校准:把椭圆修到正圆,一、修偏心,二、修半径。
                a)、选定中心点,以固定半径R水平旋转,找出x和y的最大最小值x_max、x_min、y_max 、y_min。
                b)、于是,x的偏移: Xoffset = (x_max + x_min) / 2;
                c)、x的比例取:x_gain=1
                d)、y的偏移:Yoffset = (y_max + y_min) / 2;
                e)、y的比例:y_gain= (x_max - x_min) / (y_max - y_min);
         
              X_HMC = Xgain *(X_HMC -Xoffset);
              Y_HMC = Ygain * (Y_HMC -Yoffset);

         
          3、空间校准:把椭球修到正球
                a)、空间旋转芯片,找出x yz的最大最小值xmax、xmin、ymax 、ymin、zmax 、zmin。
                b)、于是,x的偏移: Xoffset = (xmax + xmin) / 2;
                c)、x的比例取:x_gain=1
                d)、y的偏移:Yoffset = (ymax + ymin) / 2;
                e)、y的比例:y_gain= (xmax - xmin) / (y_max -y_min);
                f)、 z的偏移:Zoffset = (zmax + zmin) / 2;
                g)、z的比例:z_gain= (xmax - xmin) / (z_max -z_min);  
         
               X_HMC = HMC_Xgain *(X_HMC - HMC_Xoffset);
               Y_HMC = HMC_Ygain * (Y_HMC - HMC_Yoffset);
               Z_HMC = HMC_Zgain * (Z_HMC- HMC_Zoffset);


问题:
    1、初次水平旋转测试数据XY是椭球的,我是以一固定点作圆心,固定半径水平桌面旋转。
            但理论上我觉得应该不需要固定圆心和固定半径,只要水平桌面360旋转即可,但总是测不准。希望能得到各位提点

    2、查看很多论坛和文章,发现都只讲到水平校正(X、Y)。这里有个问题,如果只用到方位角只需要校正XY,但是这样在倾斜使用不会有问题吗,方位角应该就不准了吧,但都没发现讨论倾斜情况方位角问题。希望赐教

    3、我觉得上述3空间校正理论是对的,但是我不知道如何得到空间椭球面的XYZ值,当然如果有个3维运转的仪器就好了。我认为空间随意转动尽可能得到XYZ最大最小值应该也是可以的,但我试了很多天都不行,不明白为什么。

    4、实验了好几天,最后发现水平测试XY都不行了,测试的数据都不是近似椭球形,是畸变的。实验好几天,发现边上的主机有干扰,离主机远点就好了。而且这种情况随时可变,畸变不是固定的。如果是干扰的原因,那磁力计在显示中还靠谱吗,如何解决呢?求解决




               






         

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-8-14 19:28:49 | 显示全部楼层
本帖最后由 john800422 于 2013-8-14 19:56 编辑

1. 你的旋轉是SENSOR繞某一圓心旋轉還是SENSOR自旋?
    以平面校正來說
    你的方法只會取出旋轉時的最大最小值吧?
    這樣對於沒有旋轉的橢圓應該沒有太大的影響
   

    但對於有旋轉的橢圓就會出問題了
   

    誤差來源除了上述的沒有完整的還原成圓外
    再來就是環境影響, 取的樣本數

    *** 對於橢圓的校正
    *** 應該先將長軸與短軸轉至與XY軸平行, 再除上長軸與短軸的大小還原成圓

2. 磁頃角的問題一定會有的, 影響不大可透過預先測量來校正(( 相同地區磁頃角變化不大
    干擾多的話就需要3維空間的校正了

3. 問題同1, 沒有將橢圓球完全還原成圓球

4. 部分外來物的干擾是可以被濾掉的, 詳細要自己去找算法, 我沒有做過
    若是環境的干擾, 就需要透過校正來處理
    這也是為什麼要校正的原因, 因為環境的磁場並不是這麼單純

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-8-15 11:03:28 | 显示全部楼层
john800422 发表于 2013-8-14 19:28
1. 你的旋轉是SENSOR繞某一圓心旋轉還是SENSOR自旋?
    以平面校正來說
    你的方法只會取出旋轉時的最大 ...

谢谢你的指教。可还是有些问题不太明白。
      
1. 你的旋轉是SENSOR繞某一圓心旋轉還是SENSOR自旋?
    以平面校正來說
    你的方法只會取出旋轉時的最大最小值吧?
    這樣對於沒有旋轉的橢圓應該沒有太大的影響

我是在水平面内绕圆心O旋转,取出旋转时的最大值最小值,如图


水平状态确实没多大问题,能够基本修正到正圆。
但如果要修正到你说的图2,旋转下仍能修正到正圆呢。不太明白你的意思,请指教。
------怎么测量得到最大最小值,是你说的沿XY轴(或其平行轴)自旋吗
------还是你说的倾斜一定角度测量的椭圆先,先將長軸與短軸轉至與XY軸平行, 再除上長軸與短軸的大小還原成圓。我明白你说的,但还是不明白,怎样测量得到最大最小值。那我要保证任何旋转角度都校正到正圆,最终校正到椭球,如何测量得到测量数据。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-8-15 11:37:47 | 显示全部楼层
坐等大神们讨论。

出0入0汤圆

发表于 2013-8-15 12:54:07 | 显示全部楼层
本帖最后由 john800422 于 2013-8-15 12:56 编辑
dengzi1358 发表于 2013-8-15 11:03
谢谢你的指教。可还是有些问题不太明白。
      
1. 你的旋轉是SENSOR繞某一圓心旋轉還是SENSOR自旋?


1.

應該要讓SENSOR自旋做測量
這樣所測量到的磁場的觀測點才會相同
建立出來的圓形或橢圓形, 對於校正才有意義

若是以半徑R作旋轉測量
這樣測到的是在半徑R上的磁場矢量
且當R遠遠大於地球半徑時
圓上的磁場就不會是地球的磁場, 而是好幾個星球的磁場
所以半徑R的變化會影響觀測

環境干擾不大的話(( 只有地球磁場
有以半徑R旋轉是沒有甚麼問題的
因為半徑R<<地球半徑R_e

環境干擾大的話
以半徑R作旋轉就會有問題了



2.

你說平面校正沒有問題
是因為你測量到的圖形近似於沒有旋轉的橢圓或圓
所以才沒有發生這樣的問題
但並不代表這樣的問題不會出現





3.

最簡單的三維的校正方法
分別依XY平面、YZ平面(ZX平面)做旋轉
就可以得出XYZ的最大最小值了

想要準確的校正的話
只取最大最小值絕對是會有問題的
需要取更多的樣本
像是每45度取一次樣本
增加樣本數, 做擬合
得到正確的模型, 在校正回圓或圓球

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-8-15 13:12:45 | 显示全部楼层
建議先了解原始數據的分布
有助於解決問題, 可以把它顯示出來

再確認校正後的數據分布是否為圓

不要只看數據
盡量以圖顯示, 會比較直觀

出0入0汤圆

 楼主| 发表于 2013-8-15 15:17:20 | 显示全部楼层
john800422 发表于 2013-8-15 13:12
建議先了解原始數據的分布
有助於解決問題, 可以把它顯示出來

谢谢john的分析,学到不少。
我旋转(近似自旋)不同角度的到的数据(未任何校正),请帮忙分析。为何不会倾斜有倾斜椭圆的效果。我如何根据不同倾斜角度测量的数据进行校正呢。


此四组测试都是在XY平面自旋,只是倾斜角度不同。
四组数据的最大最小值
                   0                   10                      40                    90
            X          Y            X       Y               X          Y            X          Y
MAX     288     136         367   197            467        309           309          145
MIN    -233      -389       -298  -453           -427        -574         -272          -416


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-8-16 14:40:08 | 显示全部楼层
dengzi1358 发表于 2013-8-15 15:17
谢谢john的分析,学到不少。
我旋转(近似自旋)不同角度的到的数据(未任何校正),请帮忙分析。为何不 ...


我說的取多一點樣本
並不是指不同傾角下取最大最小值
而是在在旋轉的過程中, 不要只取最大最小4筆樣本, 而是更多
但這是為了讓擬合更精確
若還是要用最大最小的方法的話, 就沒差了
但是最大鑽小的方法需要測量磁傾角

方法:
對X或Y軸旋轉
得出Z的最大最小的同時, 紀錄磁傾角

有磁傾角後
就可以還原成原始的磁場
這時再做平面的校正

之後裝置傾斜時
除了旋轉磁傾角外, 還要旋轉裝置的傾角
就可以得到航向角

但應該會存在不少誤差
因為各種傾角得到的形狀, 不一定相同
若用一種校正參數, 就會是誤差來源
想精確點, 就是在不同傾角, 計算對應的校正參數


另外我想到最好的方法就是做橢圓球擬合
藉由擬合出橢圓球來還原成圓球
進而求出航向角

當然方法並不是只有這些
可以自己思考看看

出0入0汤圆

发表于 2013-8-17 12:05:34 | 显示全部楼层
本帖最后由 agnd 于 2013-8-17 12:06 编辑

网上搜了下一下HMC5883价格,低的让我兴奋。
我觉得可以用很多这芯片做成一个阵列了。
寻求一种简便易行的空间排列方案,用一个算法直接解算出最佳测量估计值,而根本无需校准各芯片,可能吗?

出0入0汤圆

发表于 2013-8-18 03:24:34 | 显示全部楼层
这帖子学习了

出0入0汤圆

发表于 2013-8-21 16:57:32 | 显示全部楼层
http://blog.sina.com.cn/s/blog_81f1e26801017aji.html
可以参考一下这个标定,直接在空间将椭圆球用最小二乘法拟合成球~

出0入0汤圆

发表于 2013-8-21 17:00:04 | 显示全部楼层
svon 发表于 2013-8-21 16:57
http://blog.sina.com.cn/s/blog_81f1e26801017aji.html
可以参考一下这个标定,直接在空间将椭圆球用最小 ...

我也很好奇,在飞行过程中,即使忽略飞行的加速度,由于电机的抖动,加速度计测得的数据也很不准。
而且在复杂的磁场环境中磁传感器测得的也有偏差。
要做到什么程度才能用它们来校正陀螺仪进行长期融合呢?

出0入0汤圆

 楼主| 发表于 2013-9-3 16:16:20 | 显示全部楼层
非常感谢john800422的耐心解答。虽然还有很多疑惑,但是受教不少。最近一直忙于其他事,把这耽搁下来。但这里还是希望把一些心得记录下来,希望供大家参考,也希望大家可以在这里多讨论。等忙完这段时间,后面会继续把相关的知识和问题在这里发出来。
   1、之前我一直是以一定半径R做旋转,后面发现自旋确实要精准很多,能减少很多干扰情况。虽然我们没有专门的旋转台,但自己做测试时,R做到尽量小做近似自旋,效果会比较好。
   2、我后面又买过一个MPU6050的开发板,里面是围绕3轴旋转测试,然后做椭球拟合。会有一些效果,还有待进一步分析。

出0入0汤圆

发表于 2013-11-25 21:33:18 | 显示全部楼层
记录学习

出0入0汤圆

发表于 2013-11-25 21:50:19 | 显示全部楼层
楼主搞得怎么样了?

出0入0汤圆

发表于 2014-4-4 16:00:09 | 显示全部楼层
john800422 发表于 2013-8-15 12:54
1.

應該要讓SENSOR自旋做測量

大神你好,我们现在在做磁力计的校准,用的是http://www.amobbs.com/forum.php? ... &highlight=5883这个帖子上的方法,使用matlab拟合后的椭圆如下图所示,看图应该就是你所说的倾斜的椭圆,我们用我上面说的帖子上的方法校准之后感觉效果还变差了 ,针对我们的情况,请问大神你有没有什么好的校准方法可以推荐的?感激不尽啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-4-4 16:14:56 | 显示全部楼层
silence2455 发表于 2014-4-4 16:00
大神你好,我们现在在做磁力计的校准,用的是http://www.amobbs.com/forum.php?mod=viewthread&tid=54887 ...

之前有做過橢圓擬合,可以看我的帖子,但僅適用於二維空間,
三維就需要使用橢圓求擬合。

出0入0汤圆

发表于 2014-4-16 10:41:49 | 显示全部楼层
john800422 发表于 2014-4-4 16:14
之前有做過橢圓擬合,可以看我的帖子,但僅適用於二維空間,
三維就需要使用橢圓求擬合。 ...

大神,你的帖子的链接是多少呀

出0入0汤圆

发表于 2014-4-25 15:51:01 | 显示全部楼层
john800422 发表于 2013-8-15 12:54
1.

應該要讓SENSOR自旋做測量

讲的透彻,学习了

出0入0汤圆

发表于 2014-12-15 21:00:48 | 显示全部楼层
HMC5883L校准

出0入0汤圆

发表于 2014-12-15 21:46:22 | 显示全部楼层
家里有几片吃灰中,一直没空折腾

出0入0汤圆

发表于 2015-7-11 22:15:34 | 显示全部楼层
请问有没有现成代码分享

出0入0汤圆

发表于 2015-8-3 11:00:59 | 显示全部楼层
好东西,必须Mark一下                              

出0入0汤圆

发表于 2017-3-19 20:04:32 | 显示全部楼层
地磁读取的数据,怎么融合?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 14:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表