本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)處理方法和裝置以及羅盤校準(zhǔn)方法和裝置。
背景技術(shù):
無人機上一般安裝電子磁羅盤對其航向進行控制,以保證飛行軌跡的準(zhǔn)確性。電子磁羅盤的測量的準(zhǔn)確性對于無人機的飛行控制具有十分重要的作用。
受環(huán)境因素和電子磁羅盤自身因素的影響,電子磁羅盤通常情況下測量存在誤差,因此,需要對電子磁羅盤進行校準(zhǔn)。電子磁羅盤進行校準(zhǔn)前需要采集大量數(shù)據(jù)用于校準(zhǔn),但是現(xiàn)有技術(shù)中,常出現(xiàn)由于操作不規(guī)范等原因造成采集的用于校準(zhǔn)的數(shù)據(jù)不足,為電子磁羅盤的校準(zhǔn)工作帶來不便,使得電子磁羅盤校準(zhǔn)的精確度度不足。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的一個技術(shù)問題是:如何解決采集的用于校準(zhǔn)羅盤的數(shù)據(jù)不足,為電子磁羅盤的校準(zhǔn)工作帶來不便的問題。
根據(jù)本發(fā)明的一個實施例,提供的一種數(shù)據(jù)處理方法,包括:從利用羅盤采集的原始數(shù)據(jù)集中隨機選取原始數(shù)據(jù),并將選取的原始數(shù)據(jù)移出原始數(shù)據(jù)集,原始數(shù)據(jù)為三軸磁場強度值;將選取的原始數(shù)據(jù)進行坐標(biāo)變換以獲得變換數(shù)據(jù);舍棄與原始數(shù)據(jù)或者已有的變換數(shù)據(jù)相同的所獲得的變換數(shù)據(jù);重復(fù)上述步驟,直至所有變換數(shù)據(jù)與所有原始數(shù)據(jù)的數(shù)量之和達到預(yù)設(shè)數(shù)量;將所有變換數(shù)據(jù)與所有原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù)。
在一個實施例中,坐標(biāo)變換包括:將選取的原始數(shù)據(jù)中一個或多個軸的磁場強度值進行取反變換得到相反數(shù),以獲得變換數(shù)據(jù)。
根據(jù)本發(fā)明的另一個實施例,提供的一種羅盤校準(zhǔn)方法,包括:根據(jù)前述任一個實施例中的數(shù)據(jù)處理方法,獲得羅盤的校準(zhǔn)數(shù)據(jù);確定校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示;通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量、硬磁干擾修正量;利用軟磁干擾修正量、硬磁干擾修正量對羅盤進行校準(zhǔn)。
在一個實施例中,確定軟磁干擾修正量、硬磁干擾修正量包括:i)將校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量代入校準(zhǔn)后的磁場強度與正常磁場強度的誤差關(guān)系表示中,獲得轉(zhuǎn)化的誤差關(guān)系表示;ii)獲取轉(zhuǎn)化的誤差關(guān)系表示關(guān)于各個自變量的雅可比矩陣,其中自變量為正常磁場強度、軟磁干擾修正量以及硬磁干擾修正量中的一項或多項,不作為自變量的項采用預(yù)設(shè)值;iii)根據(jù)雅可比矩陣、迭代誤差、迭代步長和自變量構(gòu)建增量正規(guī)方程;iv)將自變量的值代入雅可比矩陣計算雅可比矩陣,將自變量的值代入轉(zhuǎn)化的誤差關(guān)系表示計算迭代誤差;v)將計算后的雅可比矩陣、計算后的迭代誤差、第一迭代步長值代入增量正規(guī)方程解得自變量第一值,將計算后的雅可比矩陣、計算后的迭代誤差、第二迭代步長值代入增量正規(guī)方程解得自變量第二值;vi)將自變量第一值代入轉(zhuǎn)化的誤差關(guān)系表示,得到第一更新迭代誤差,將自變量第二值代入轉(zhuǎn)化的誤差關(guān)系表示,得到第二更新迭代誤差;vii)將第一更新迭代誤差和第二更新迭代誤差分別與預(yù)設(shè)條件進行比對:如果第一更新迭代誤差和第二更新迭代誤差均大于預(yù)設(shè)條件,則用第一迭代步長值乘以預(yù)設(shè)迭代梯度來更新第一迭代步長值,用第二迭代步長值乘以預(yù)設(shè)迭代梯度來更新第二迭代步長值,如果第一更新迭代誤差小于第二更新迭代誤差,則用自變量第一值來更新自變量的值,如果第二更新迭代誤差小于第一更新迭代誤差,則用自變量第二值來更新自變量的值,重復(fù)步驟iv)至vii),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件;如果第一更新迭代誤差小于預(yù)設(shè)條件,則將自變量第一值作為自變量的值輸出,如果第二更新迭代誤差小于預(yù)設(shè)條件,則將自變量第二值作為自變量的值輸出;其中,自變量的值在初始迭代時采用預(yù)設(shè)值,第一迭代步長值和第二迭代步長值在初始迭代時采用預(yù)設(shè)值。
在一個實施例中,確定軟磁干擾修正量、硬磁干擾修正量包括:預(yù)設(shè)軟磁干擾修正量的值,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定正常磁場強度以及硬磁干擾修正量;基于確定的正常磁場強度以及軟磁干擾修正量,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量。
在一個實施例中,增量正規(guī)方程表示為:
其中,δk表示第k次迭代的自變量,jk表示第k次迭代的雅可比矩陣,ek表示第k次迭代的迭代誤差,λk表示第k次迭代的迭代步長,i表示單位矩陣。
在一個實施例中,校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示為:校準(zhǔn)后的磁場強度等于校準(zhǔn)數(shù)據(jù)與硬磁干擾修正量之和乘以軟磁干擾修正量;將所有校準(zhǔn)后的磁場強度的三軸磁場強度值的平方和減去正常磁場強度的平方的差值相加,得到校準(zhǔn)后的磁場強度與正常磁場強度的誤差。
根據(jù)本發(fā)明的又一個實施例,提供的一種數(shù)據(jù)處理裝置,包括:原始數(shù)據(jù)選取模塊,用于從利用羅盤采集的原始數(shù)據(jù)集中隨機選取原始數(shù)據(jù),并將選取的原始數(shù)據(jù)移出原始數(shù)據(jù)集,原始數(shù)據(jù)為三軸磁場強度值;數(shù)據(jù)變換模塊,用于將選取的原始數(shù)據(jù)進行坐標(biāo)變換以獲得變換數(shù)據(jù);查重模塊,用于舍棄與原始數(shù)據(jù)或者已有的變換數(shù)據(jù)相同的所獲得的變換數(shù)據(jù);迭代模塊,用于判斷所有變換數(shù)據(jù)與所有原始數(shù)據(jù)的數(shù)量之和是否達到預(yù)設(shè)數(shù)量,如果沒有達到預(yù)設(shè)數(shù)量,則觸發(fā)原始數(shù)據(jù)選取模塊執(zhí)行原始數(shù)據(jù)選取過程,如果達到預(yù)設(shè)數(shù)量,則將所有變換數(shù)據(jù)與所有原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù)輸出。
在一個實施例中,數(shù)據(jù)變換模塊,用于將選取的原始數(shù)據(jù)中一個或多個軸的磁場強度值進行取反變換得到相反數(shù),以獲得變換數(shù)據(jù)。
根據(jù)本發(fā)明的再一個實施例,提供的一種羅盤校準(zhǔn)裝置,包括:前述任一個實施例中的數(shù)據(jù)處理裝置,用于獲得羅盤的校準(zhǔn)數(shù)據(jù);關(guān)系確定模塊,用于確定校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示;參數(shù)確定模塊,用于通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量、硬磁干擾修正量;校準(zhǔn)模塊,用于利用軟磁干擾修正量、硬磁干擾修正量對羅盤進行校準(zhǔn)。
在一個實施例中,參數(shù)確定模塊,用于:i)將校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量代入校準(zhǔn)后的磁場強度與正常磁場強度的誤差關(guān)系表示中,獲得轉(zhuǎn)化的誤差關(guān)系表示;ii)獲取轉(zhuǎn)化的誤差關(guān)系表示關(guān)于各個自變量的雅可比矩陣,其中自變量為正常磁場強度、軟磁干擾修正量以及硬磁干擾修正量中的一項或多項,不作為自變量的項采用預(yù)設(shè)值;iii)根據(jù)雅可比矩陣、迭代誤差、迭代步長和自變量構(gòu)建增量正規(guī)方程;iv)將自變量的值代入雅可比矩陣計算雅可比矩陣,將自變量的值代入轉(zhuǎn)化的誤差關(guān)系表示計算迭代誤差;v)將計算后的雅可比矩陣、計算后的迭代誤差、第一迭代步長值代入增量正規(guī)方程解得自變量第一值,將計算后的雅可比矩陣、計算后的迭代誤差、第二迭代步長值代入增量正規(guī)方程解得自變量第二值;vi)將自變量第一值代入轉(zhuǎn)化的誤差關(guān)系表示,得到第一更新迭代誤差,將自變量第二值代入轉(zhuǎn)化的誤差關(guān)系表示,得到第二更新迭代誤差;vii)將第一更新迭代誤差和第二更新迭代誤差分別與預(yù)設(shè)條件進行比對:如果第一更新迭代誤差和第二更新迭代誤差均大于預(yù)設(shè)條件,則用第一迭代步長值乘以預(yù)設(shè)迭代梯度來更新第一迭代步長值,用第二迭代步長值乘以預(yù)設(shè)迭代梯度來更新第二迭代步長值,如果第一更新迭代誤差小于第二更新迭代誤差,則用自變量第一值來更新自變量的值,如果第二更新迭代誤差小于第一更新迭代誤差,則用自變量第二值來更新自變量的值,重復(fù)步驟iv)至vii),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件;如果第一更新迭代誤差小于預(yù)設(shè)條件,則將自變量第一值作為自變量的值輸出,如果第二更新迭代誤差小于預(yù)設(shè)條件,則將自變量第二值作為自變量的值輸出;其中,自變量的值在初始迭代時采用預(yù)設(shè)值,第一迭代步長值和第二迭代步長值在初始迭代時采用預(yù)設(shè)值。
在一個實施例中,參數(shù)確定模塊,用于預(yù)設(shè)軟磁干擾修正量的值,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定正常磁場強度以及硬磁干擾修正量,基于確定的正常磁場強度以及軟磁干擾修正量,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量。
在一個實施例中,增量正規(guī)方程表示為:
其中,δk表示第k次迭代的自變量,jk表示第k次迭代的雅可比矩陣,ek表示第k次迭代的迭代誤差,λk表示第k次迭代的迭代步長,i表示單位矩陣。
在一個實施例中,校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示為:校準(zhǔn)后的磁場強度等于校準(zhǔn)數(shù)據(jù)與硬磁干擾修正量之和乘以軟磁干擾修正量;參數(shù)確定模塊,用于將所有校準(zhǔn)后的磁場強度的三軸磁場強度值的平方和減去正常磁場強度的平方的差值相加,得到校準(zhǔn)后的磁場強度與正常磁場強度的誤差。
根據(jù)本發(fā)明的又一個實施例,提供的一種數(shù)據(jù)處理裝置,包括:存儲器;以及耦接至存儲器的處理器,處理器被配置為基于存儲在存儲器設(shè)備中的指令,執(zhí)行如前述任一個實施例中的數(shù)據(jù)處理方法或羅盤校準(zhǔn)方法。
根據(jù)本發(fā)明的又一個實施例,提供的一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)前述任一個實施例中的數(shù)據(jù)處理方法或羅盤校準(zhǔn)方法的步驟。
本發(fā)明利用羅盤采集的原始數(shù)據(jù)進行坐標(biāo)變換生成變換數(shù)據(jù),并將變換數(shù)據(jù)和原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù),利用原始數(shù)據(jù)擴充了用于校準(zhǔn)的數(shù)據(jù),解決了用于校準(zhǔn)羅盤的數(shù)據(jù)不足的問題,方便了后續(xù)的羅盤校準(zhǔn)工作。
通過以下參照附圖對本發(fā)明的示例性實施例的詳細描述,本發(fā)明的其它特征及其優(yōu)點將會變得清楚。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出本發(fā)明的一個實施例的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。
圖2示出本發(fā)明的另一個實施例的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。
圖3示出本發(fā)明的一個實施例的數(shù)據(jù)處理方法的流程示意圖。
圖4示出本發(fā)明的一個實施例的羅盤校準(zhǔn)方法的流程示意圖。
圖5示出本發(fā)明的另一個實施例的羅盤校準(zhǔn)方法的流程示意圖。
圖6示出本發(fā)明的又一個實施例的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。
圖7示出本發(fā)明的一個實施例的羅盤校準(zhǔn)裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
針對由于操作不規(guī)范等原因造成采集的用于校準(zhǔn)的數(shù)據(jù)不足,為電子磁羅盤的校準(zhǔn)工作帶來不便的問題,提出本方案。
本發(fā)明的實施例中的數(shù)據(jù)處理裝置可各由各種計算設(shè)備或計算機系統(tǒng)來實現(xiàn),下面結(jié)合圖1以及圖2進行描述。
圖1為本發(fā)明數(shù)據(jù)處理裝置的一個實施例的結(jié)構(gòu)圖。如圖1所示,該實施例的裝置10包括:存儲器110以及耦接至該存儲器110的處理器120,處理器120被配置為基于存儲在存儲器110中的指令,執(zhí)行本發(fā)明中任意一個實施例中的數(shù)據(jù)處理或羅盤校準(zhǔn)方法。
其中,存儲器110例如可以包括系統(tǒng)存儲器、固定非易失性存儲介質(zhì)等。系統(tǒng)存儲器例如存儲有操作系統(tǒng)、應(yīng)用程序、引導(dǎo)裝載程序(bootloader)、數(shù)據(jù)庫以及其他程序等。
圖2為本發(fā)明數(shù)據(jù)處理裝置的另一個實施例的結(jié)構(gòu)圖。如圖2所示,該實施例的裝置10包括:存儲器110以及處理器120,還可以包括輸入輸出接口230、網(wǎng)絡(luò)接口240、存儲接口250等。這些接口230,240,250以及存儲器110和處理器120之間例如可以通過總線260連接。其中,輸入輸出接口230為顯示器、鼠標(biāo)、鍵盤、觸摸屏等輸入輸出設(shè)備提供連接接口。網(wǎng)絡(luò)接口240為各種聯(lián)網(wǎng)設(shè)備提供連接接口,例如可以連接到數(shù)據(jù)庫服務(wù)器或者云端存儲服務(wù)器等。存儲接口250為sd卡、u盤等外置存儲設(shè)備提供連接接口。
下面結(jié)合圖3描述本發(fā)明的數(shù)據(jù)處理方法。
圖3為本發(fā)明數(shù)據(jù)處理方法一個實施例的流程圖。如圖3所示,該實施例的方法包括:
步驟s302,從利用羅盤采集的原始數(shù)據(jù)集中隨機選取原始數(shù)據(jù),并將選取的原始數(shù)據(jù)移出該原始數(shù)據(jù)集。
原始數(shù)據(jù)為三軸磁場強度值,即在羅盤測得的地磁磁場強度值分別在羅盤本體坐標(biāo)系中三個坐標(biāo)軸的磁場強度分量。對羅盤進行校準(zhǔn)時,通常將羅盤固定在載體上,此時本體坐標(biāo)系的原點為載體重心,x軸指向地理北向,y軸指向地理東向,z軸與地面垂直。連同載體使羅盤分別繞x、y、z軸旋轉(zhuǎn)采集數(shù)據(jù)。
步驟s304,將選取的原始數(shù)據(jù)進行坐標(biāo)變換以獲得變換數(shù)據(jù)。
可以將選取的原始數(shù)據(jù)中一個或多個軸的磁場強度值進行取反變換得到相反數(shù),以獲得變換數(shù)據(jù)。例如原始數(shù)據(jù)為(10,10,10),變換數(shù)據(jù)可以是(-10,10,10)或(-10,-10,10)或(-10,-10,-10)等。由于用于校準(zhǔn)羅盤的數(shù)據(jù)基本位于同一球體的球面上,因此,對原始數(shù)據(jù)進行坐標(biāo)變換后的變換數(shù)據(jù)可以用于校準(zhǔn)羅盤,并不是隨意選取的數(shù)據(jù)。
步驟s306,舍棄與原始數(shù)據(jù)或者已有的變換數(shù)據(jù)相同的所獲得的變換數(shù)據(jù)。
可以每次生成一個變換數(shù)據(jù)則與所有原始數(shù)據(jù)和已有的變換數(shù)據(jù)進行比對,如果重復(fù)則將新生成的變換數(shù)據(jù)刪除,保證用于校準(zhǔn)羅盤的數(shù)據(jù)中沒有重復(fù)的數(shù)據(jù)。
步驟s308,判斷所有變換數(shù)據(jù)與所有原始數(shù)據(jù)的數(shù)量之和是否達到預(yù)設(shè)數(shù)量,如果已達到預(yù)設(shè)數(shù)量,則執(zhí)行步驟s310,如果未達到預(yù)設(shè)數(shù)量則從步驟s302開始重復(fù)執(zhí)行上述步驟。
步驟s310,將所有變換數(shù)據(jù)與所有原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù)輸出。
優(yōu)選的,對原始數(shù)據(jù)集中的原始數(shù)據(jù)從1開始依次進行編號,最大編號等于原始數(shù)據(jù)的數(shù)量,生成小于或等于最大編號的隨機正整數(shù),選取編號等于生成的隨機正整數(shù)的原始數(shù)據(jù),將該原始數(shù)據(jù)從原始數(shù)據(jù)集中移出,對該原始數(shù)據(jù)進行坐標(biāo)變換生成變換數(shù)據(jù),舍棄與原始數(shù)據(jù)或者已有的變換數(shù)據(jù)相同的新獲得的變換數(shù)據(jù),重復(fù)上述過程,直至所有變換數(shù)據(jù)與所有原始數(shù)據(jù)的數(shù)量之和達到預(yù)設(shè)數(shù)量,將所有變換數(shù)據(jù)與所有原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù)輸出。
上述實施例的方法,利用羅盤采集的原始數(shù)據(jù)進行坐標(biāo)變換生成變換數(shù)據(jù),并將變換數(shù)據(jù)和原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù),利用原始數(shù)據(jù)擴充了用于校準(zhǔn)的數(shù)據(jù),解決了用于校準(zhǔn)羅盤的數(shù)據(jù)不足的問題,方便了后續(xù)的羅盤校準(zhǔn)工作。
本發(fā)明還提供一種利用上述實施例中生成的羅盤的校準(zhǔn)數(shù)據(jù)進行羅盤校準(zhǔn)的方法,下面結(jié)合圖4進行描述。
圖4為本發(fā)明羅盤校準(zhǔn)方法一個實施例的流程圖。如圖4所示,在步驟s310之后還可以包括:
步驟s402,確定校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示。
校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示例如用以下公式表示:
h=m(a+b)t(1)
其中,h=(hx,hy,hz)表示校準(zhǔn)后的磁場強度,
需要注意的是,如果羅盤還存在三軸比例誤差,則m可以不止包括純正的軟磁干擾修正量還包括三軸比例誤差的修正量,即m=kn,k=diag(kx,ky,kz),
步驟s404,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量、硬磁干擾修正量。
地磁場的正常磁場強度值在0.4~0.6mg之間,并且在較小的地理范圍內(nèi),地磁場的正常磁場強度值基本保持不變,因此,可以通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件從而確定軟磁干擾修正量、硬磁干擾修正量。
將所有校準(zhǔn)后的磁場強度的三軸磁場強度值的平方和減去正常磁場強度的平方的差值相加,得到校準(zhǔn)后的磁場強度與正常磁場強度的誤差,例如采用以下公式進行表示:
其中,hi表示第i個校準(zhǔn)后的數(shù)據(jù),n表示校準(zhǔn)后的數(shù)據(jù)的個數(shù),由校準(zhǔn)數(shù)據(jù)的個數(shù)決定,r表示正常磁場強度。
將公式(1)代入公式(2)中可以得到轉(zhuǎn)化的誤差關(guān)系表示:
通過公式(3)可見,已知校準(zhǔn)數(shù)據(jù)ai作為訓(xùn)練數(shù)據(jù)(例如n=300個校準(zhǔn)數(shù)據(jù)),預(yù)設(shè)e的取值范圍,如果通過其他測試方法得到正常磁場強度r作為已知參數(shù),則可以通過對公式(3)進行求解得到硬磁干擾修正量b和軟磁干擾修正量m,如果將正常磁場強度r也作為未知變量,則可以求得正常磁場強度r、硬磁干擾修正量b和軟磁干擾修正量m,求解方法后續(xù)進行詳細描述。
步驟s406,利用軟磁干擾修正量、硬磁干擾修正量對羅盤進行校準(zhǔn)。
獲得軟磁干擾修正量、硬磁干擾修正量之后,當(dāng)使用羅盤進行導(dǎo)航時則將羅盤實際測量數(shù)據(jù)、軟磁干擾修正量、硬磁干擾修正量直接代入公式(1)即可得到校準(zhǔn)后的磁場強度,從而使得羅盤能夠?qū)崿F(xiàn)更為精確的導(dǎo)航功能。
現(xiàn)有技術(shù)中,在對羅盤進行校準(zhǔn)時通常只考慮硬磁干擾的影響,而忽略了軟磁干擾的影響,上述實施例的方法,同時考慮硬磁干擾和軟磁干擾的影響,并對兩者進行求解,從而對羅盤進行校準(zhǔn),提高了羅盤校準(zhǔn)的精確度,使得羅盤能夠?qū)崿F(xiàn)更精確的導(dǎo)航功能。
上述實施例中提到公式(3)中的需要求解的自變量可以是硬磁干擾修正量b和軟磁干擾修正量m,也可以是正常磁場強度r、硬磁干擾修正量b和軟磁干擾修正量m,由于公式(3)屬于非線性多未知數(shù)方程的求解,可以利用lm(levenbergmarquardt,列文伯格-馬夸爾特)算法進行求解,為了提高計算的效率,本發(fā)明對lm算法進行了改進。
首先,如果將正常磁場強度r也作為自變量進行求解,則可以將求解過程分為兩次進行,以提高計算效率,優(yōu)選的,預(yù)設(shè)軟磁干擾修正量m的值,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定正常磁場強度r以及硬磁干擾修正量b;基于確定的正常磁場強度r以及軟磁干擾修正量b,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量。分為兩次進行求解的過程,減少了每次未知參數(shù)的個數(shù),提高了計算效率,此外,對正常磁場強度也進行計算獲得,可以進一步提高校準(zhǔn)的準(zhǔn)確性。
下面結(jié)合圖5描述本發(fā)明中如何利用改進的lm算法求解公式(3)中的自變量。
圖5為本發(fā)明羅盤校準(zhǔn)方法另一個實施例的流程圖。如圖5所示,步驟s406包括:
步驟s4061,獲取轉(zhuǎn)化的誤差關(guān)系表示關(guān)于各個自變量的雅可比矩陣。
其中,自變量為正常磁場強度r、軟磁干擾修正量m以及硬磁干擾修正量b中的一項或多項,不作為自變量的項采用預(yù)設(shè)值。即,可以一次完成求解過程,也可以分多次完成求解過程,每次求解都可以采用本發(fā)明中改進的lm算法。
步驟s4062,根據(jù)雅可比矩陣、迭代誤差、迭代步長和自變量構(gòu)建增量正規(guī)方程。
增量正規(guī)方程表示為:
其中,δk表示第k次迭代的自變量,可以表示為向量的形式,即將需要求解的各個未知數(shù)按照一定的順序進行排列形成向量,jk表示第k次迭代的雅可比矩陣,ek表示第k次迭代的迭代誤差,λk表示第k次迭代的迭代步長,i表示單位矩陣。
步驟s4063,迭代次數(shù)k=0,初始化自變量的值δ0,第一迭代步長值λ01和第二迭代步長值λ02,設(shè)置終止迭代誤差即校準(zhǔn)后的磁場強度與正常磁場強度的誤差需要滿足的預(yù)設(shè)條件eth,迭代梯度v。
其中,δ0中如果包括正常磁場強度r,初始化時r可以設(shè)置為200,如果包括軟磁干擾修正量m,則對角線設(shè)置為1,其他元素為0,如果包括硬磁干擾修正量b中的元素可以均設(shè)置為0,第一迭代步長值λ01可以設(shè)置為10-3,λ02可以設(shè)置為λ02=λ01/v,v=10,λ02也可以與λ01沒有上述比例關(guān)系,設(shè)置為其他數(shù)值。eth可以設(shè)置為0.001。
步驟s4064,將自變量的值δk代入雅可比矩陣計算雅可比矩陣jk,將自變量的值δk代入公式(3)計算迭代誤差ek。
δk可以包含b或m中各個元素的值以及r的值。
步驟s4065,將計算后的雅可比矩陣jk、計算后的迭代誤差ek、第一迭代步長值λk1代入增量正規(guī)方程(4)解得自變量第一值δk+1,1;將計算后的雅可比矩陣jk、計算后的迭代誤差ek、第二迭代步長值λk2代入增量正規(guī)方程(4)解得自變量第二值δk+1,2。
步驟s4066,將自變量第一值δk+1,1代入公式(3),得到第一更新迭代誤差ek+1,1,將自變量第二值δk+1,2代入公式(3),得到第二更新迭代誤差ek+1,2。
其中,迭代誤差ek、第一更新迭代誤差ek+1,1、得到第二更新迭代誤差ek+1,2,均為正數(shù),即代入公式(3)如果得到負(fù)數(shù)則取其絕對值。
步驟s4067,將第一更新迭代誤差ek+1,1和第二更新迭代誤差ek+1,2分別與預(yù)設(shè)條件eth進行比對,如果ek+1,1>eth,且ek+1,2>eth則執(zhí)行步驟s4068,如果ek+1,1≤eth或ek+1,2≤eth,則執(zhí)行步驟s4069。
步驟s4068,用第一迭代步長值λk1乘以預(yù)設(shè)迭代梯度v來更新第一迭代步長值λk+1,1,即λk+1,1=λk1·v,用第二迭代步長值λk2乘以預(yù)設(shè)迭代梯v度來更新第二迭代步長值λk+1,2,即λk+1,2=λk2·v;如果第一更新迭代誤差ek+1,1小于第二更新迭代誤差ek+1,2,則用自變量第一值δk+1,1來更新自變量的值δk+1,即,如果ek+1,1<ek+1,2,則δk+1=δk+1,1,如果第二更新迭代誤差ek+1,2小于第一更新迭代誤差ek+1,1,則用自變量第二值δk+1,2來更新自變量的值δk+1,即,如果ek+1,2≤ek+1,1,則δk+1=δk+1,2,返回步驟s4064,進入下一迭代周期,即k++。
預(yù)設(shè)迭代梯度也可以設(shè)置兩個v1和v2,分別用于更新第一迭代步長值和第二迭代步長值,即,λk+1,1=λk1·v1,λk+1,2=λk2·v2。本方案中還可以設(shè)置更多不同的迭代步長。
步驟s4069,如果第一更新迭代誤差小于預(yù)設(shè)條件,即ek+1,1<eth,則將自變量第一值δk+1,1作為自變量的值輸出,如果第二更新迭代誤差小于預(yù)設(shè)條件,即ek+1,2<eth,則將自變量第二值δk+1,2作為自變量的值輸出。
上述實施例中,設(shè)置不同的迭代步長,使得算法能夠更快的達到終止條件,同時,優(yōu)化了lm算法的迭代判斷條件,進一步提高了算法的效率。
優(yōu)選的,如前述實施例中描述,如果將正常磁場強度r、硬磁干擾修正量b和軟磁干擾修正量m均作為未知的自變量,可以首先將正常磁場強度r、硬磁干擾修正量b作為自變量,預(yù)設(shè)軟磁干擾修正量m的值,采用步驟s4061~s4069的方法計算得到正常磁場強度r、硬磁干擾修正量b的值,進一步將正常磁場強度r、硬磁干擾修正量b的值代入公式(3),將軟磁干擾修正量m作為自變量,再次采用步驟s4061~s4069的方法計算得到軟磁干擾修正量m的值,從而提高計算效率,當(dāng)然,也可以將求解過程分為三次,每次分別求解正常磁場強度r、硬磁干擾修正量b和軟磁干擾修正量m其中之一,或首先求解正常磁場強度r、硬磁干擾修正量b和軟磁干擾修正量m其中之一,再求解剩余的兩個,或者一次完成求解過程。
解得正常磁場強度r、硬磁干擾修正量b和軟磁干擾修正量m可以與預(yù)設(shè)正常值進行比對,如果不符合要求,則認(rèn)為附近有強磁場干擾。需要去除干擾源,重新校準(zhǔn)。例如,計算得到正常磁場強度r需要在150~600mg范圍內(nèi),硬磁干擾修正量b需要小于1000mg,軟磁干擾修正量m的對角線值在0.2~5的范圍內(nèi)。
上述步驟s4061~s4069可以采用以下方法進行替代:
i)獲取轉(zhuǎn)化的誤差關(guān)系表示關(guān)于各個自變量的雅可比矩陣。
其中,自變量為正常磁場強度、軟磁干擾修正量以及硬磁干擾修正量中的一項或多項,不作為自變量的項采用預(yù)設(shè)值;
ii)根據(jù)雅可比矩陣、迭代誤差、迭代步長和自變量增量構(gòu)建增量正規(guī)方程。
iii)將自變量的值代入雅可比矩陣計算雅可比矩陣,將自變量的值代入轉(zhuǎn)化的誤差關(guān)系表示計算迭代誤差。
iv)將計算后的雅可比矩陣、計算后的迭代誤差、第一迭代步長值代入增量正規(guī)方程解得第一自變量增量,將計算后的雅可比矩陣、計算后的迭代誤差、第二迭代步長值代入增量正規(guī)方程解得第二自變量增量。
v)將第一自變量增量與自變量的值之和代入轉(zhuǎn)化的誤差關(guān)系表示,得到第一更新迭代誤差,將第二自變量增量與自變量的值之和代入轉(zhuǎn)化的誤差關(guān)系表示,得到第二更新迭代誤差。
vi)將第一更新迭代誤差和第二更新迭代誤差分別與預(yù)設(shè)條件和迭代誤差進行比對:
如果第一更新迭代誤差和第二更新迭代誤差均大于迭代誤差,則用第一迭代步長值乘以預(yù)設(shè)迭代梯度來更新第一迭代步長值,用第二迭代步長值乘以預(yù)設(shè)迭代梯度來更新第二迭代步長值,自變量的值保持不變,重復(fù)步驟iii)至vi),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件;
如果第一更新迭代誤差和第二更新迭代誤差均大于預(yù)設(shè)條件,且第一更新迭代誤差和第二更新迭代誤差均小于迭代誤差,則如果第一更新迭代誤差小于第二更新迭代誤差,則用第一自變量增量與自變量之和來更新自變量的值,如果第二更新迭代誤差小于第一更新迭代誤差,則用第二自變量增量與自變量之和來更新自變量的值,則用第一迭代步長值除以預(yù)設(shè)迭代梯度來更新第一迭代步長值,用第二迭代步長值除以預(yù)設(shè)迭代梯度來更新第二迭代步長值,重復(fù)步驟iii)至vi),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件;
如果第一更新迭代誤差和第二更新迭代誤差均大于預(yù)設(shè)條件,且第一更新迭代誤差小于迭代誤差,第二更新迭代誤差大于迭代誤差,則,用第一自變量增量與自變量之和來更新自變量的值,迭代步長保持不變,重復(fù)步驟iii)至vi),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件;
如果第一更新迭代誤差和第二更新迭代誤差均大于預(yù)設(shè)條件,且第一更新迭代誤差大于迭代誤差,第二更新迭代誤差小于迭代誤差,則,用第二自變量增量與自變量之和來更新自變量的值,迭代步長保持不變,重復(fù)步驟iii)至vi),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件。
本發(fā)明還提供一種數(shù)據(jù)處理裝置,下面結(jié)合圖6進行描述。
圖6為本發(fā)明數(shù)據(jù)處理裝置一個實施例的結(jié)構(gòu)圖,如圖6所示,數(shù)據(jù)處理裝置60包括:
原始數(shù)據(jù)選取模塊602,用于從利用羅盤采集的原始數(shù)據(jù)集中隨機選取原始數(shù)據(jù),并將選取的原始數(shù)據(jù)移出原始數(shù)據(jù)集,原始數(shù)據(jù)為三軸磁場強度值。
數(shù)據(jù)變換模塊604,用于將選取的原始數(shù)據(jù)進行坐標(biāo)變換以獲得變換數(shù)據(jù)。
在一個實施例中,數(shù)據(jù)變換模塊604,用于將選取的原始數(shù)據(jù)中一個或多個軸的磁場強度值進行取反變換得到相反數(shù),以獲得變換數(shù)據(jù)。
查重模塊606,用于舍棄與原始數(shù)據(jù)或者已有的變換數(shù)據(jù)相同的所獲得的變換數(shù)據(jù)。
迭代模塊608,用于判斷所有變換數(shù)據(jù)與所有原始數(shù)據(jù)的數(shù)量之和是否達到預(yù)設(shè)數(shù)量,如果沒有達到預(yù)設(shè)數(shù)量,則觸發(fā)原始數(shù)據(jù)選取模塊602執(zhí)行原始數(shù)據(jù)選取過程,如果達到預(yù)設(shè)數(shù)量,則將所有變換數(shù)據(jù)與所有原始數(shù)據(jù)共同作為羅盤的校準(zhǔn)數(shù)據(jù)輸出。
本發(fā)明還提供一種羅盤校準(zhǔn)裝置,下面結(jié)合圖7進行描述。
圖7為本發(fā)明羅盤校準(zhǔn)裝置一個實施例的結(jié)構(gòu)圖,如圖7所示,數(shù)據(jù)處理裝置70包括數(shù)據(jù)處理裝置60,還包括:
關(guān)系確定模塊702,用于確定校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示。
在一個實施例中,校準(zhǔn)后的磁場強度與校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量的關(guān)系表示為:校準(zhǔn)后的磁場強度等于校準(zhǔn)數(shù)據(jù)與硬磁干擾修正量之和乘以軟磁干擾修正量。
參數(shù)確定模塊704,用于通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量、硬磁干擾修正量。
在一個實施例中,參數(shù)確定模塊704,用于將所有校準(zhǔn)后的磁場強度的三軸磁場強度值的平方和減去正常磁場強度的平方的差值相加,得到校準(zhǔn)后的磁場強度與正常磁場強度的誤差。
校準(zhǔn)模塊706,用于利用軟磁干擾修正量、硬磁干擾修正量對羅盤進行校準(zhǔn)。
在一個實施例中,參數(shù)確定模塊704,用于:
i)將校準(zhǔn)數(shù)據(jù)、軟磁干擾修正量以及硬磁干擾修正量代入校準(zhǔn)后的磁場強度與正常磁場強度的誤差關(guān)系表示中,獲得轉(zhuǎn)化的誤差關(guān)系表示。
ii)獲取轉(zhuǎn)化的誤差關(guān)系表示關(guān)于各個自變量的雅可比矩陣,其中自變量為正常磁場強度、軟磁干擾修正量以及硬磁干擾修正量中的一項或多項,不作為自變量的項采用預(yù)設(shè)值。
iii)根據(jù)雅可比矩陣、迭代誤差、迭代步長和自變量構(gòu)建增量正規(guī)方程。
iv)將自變量的值代入雅可比矩陣計算雅可比矩陣,將自變量的值代入轉(zhuǎn)化的誤差關(guān)系表示計算迭代誤差。
v)將計算后的雅可比矩陣、計算后的迭代誤差、第一迭代步長值代入增量正規(guī)方程解得自變量第一值,將計算后的雅可比矩陣、計算后的迭代誤差、第二迭代步長值代入增量正規(guī)方程解得自變量第二值。
vi)將自變量第一值代入轉(zhuǎn)化的誤差關(guān)系表示,得到第一更新迭代誤差,將自變量第二值代入轉(zhuǎn)化的誤差關(guān)系表示,得到第二更新迭代誤差。
vii)將第一更新迭代誤差和第二更新迭代誤差分別與預(yù)設(shè)條件進行比對:
如果第一更新迭代誤差和第二更新迭代誤差均大于預(yù)設(shè)條件,則用第一迭代步長值乘以預(yù)設(shè)迭代梯度來更新第一迭代步長值,用第二迭代步長值乘以預(yù)設(shè)迭代梯度來更新第二迭代步長值,如果第一更新迭代誤差小于第二更新迭代誤差,則用自變量第一值來更新自變量的值,如果第二更新迭代誤差小于第一更新迭代誤差,則用自變量第二值來更新自變量的值,重復(fù)步驟iv)至vii),直至第一更新迭代誤差值或第二更新迭代誤差值小于或等于預(yù)設(shè)條件;
如果第一更新迭代誤差小于預(yù)設(shè)條件,則將自變量第一值作為自變量的值輸出,如果第二更新迭代誤差小于預(yù)設(shè)條件,則將自變量第二值作為自變量的值輸出。
其中,自變量的值在初始迭代時采用預(yù)設(shè)值,第一迭代步長值和第二迭代步長值在初始迭代時采用預(yù)設(shè)值。
在一個實施例中,參數(shù)確定模塊704,用于預(yù)設(shè)軟磁干擾修正量的值,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定正常磁場強度以及硬磁干擾修正量,基于確定的正常磁場強度以及軟磁干擾修正量,通過使校準(zhǔn)后的磁場強度與正常磁場強度的誤差滿足預(yù)設(shè)條件,確定軟磁干擾修正量。
上述實施例中的羅盤校準(zhǔn)裝置可以設(shè)置于電子羅盤或無人機上,也可以采用單獨的裝置,將最后計算得到的軟磁干擾修正量、硬磁干擾修正量輸出到羅盤中,用于羅盤校準(zhǔn)。
本發(fā)明還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)前述任一個實施例中的數(shù)據(jù)處理方法或羅盤校準(zhǔn)方法的步驟。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用非瞬時性存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解為可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。