(重慶郵電大學(xué) 重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
基于TMS320C6678的單歷元單基線“北斗”測(cè)姿算法的實(shí)現(xiàn)*
李玲霞,黎剛平**
(重慶郵電大學(xué) 重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
針對(duì)姿態(tài)測(cè)量的高精度問(wèn)題和實(shí)時(shí)性,以及基于載波相位的“北斗”測(cè)姿算法中最小二乘模糊度去相關(guān)平差(LAMBDA)算法的高復(fù)雜運(yùn)算,選擇TI公司高端處理器中的C6678多核數(shù)字信號(hào)處理器 (DSP)作為單歷元單基線“北斗”測(cè)姿算法實(shí)現(xiàn)平臺(tái)。根據(jù)算法的特點(diǎn)采用數(shù)據(jù)流模式對(duì)DSP多核進(jìn)行任務(wù)分配:DSP的CORE0專(zhuān)門(mén)負(fù)責(zé)與“北斗”接收機(jī)UDP(User Datagram Protocol)通信,將“北斗”測(cè)姿算法中的各個(gè)分部算法分配到另外3個(gè)DSP CORE中執(zhí)行并利用基于消息隊(duì)列方式的核間通信技術(shù)進(jìn)行數(shù)據(jù)核間通信。利用OEM617D“北斗”接收機(jī)采集的實(shí)時(shí)“北斗”數(shù)據(jù),經(jīng)過(guò)在多核DSP算法處理上運(yùn)行后,將結(jié)果與Matlab仿真結(jié)果對(duì)比,表明本設(shè)計(jì)可滿足“北斗”測(cè)姿的精確性和實(shí)時(shí)性要求。
“北斗”測(cè)姿;單歷元單基線;多核DSP;用戶(hù)數(shù)據(jù)報(bào)協(xié)議網(wǎng)口傳輸;Cache技術(shù)
在基于“北斗”衛(wèi)星的定位與姿態(tài)測(cè)量領(lǐng)域,載波相位是高精度定位與姿態(tài)測(cè)量的主要方式,相對(duì)于偽距的觀測(cè)精度,載波相位的測(cè)量精度比其高出上百倍[1-2]。但要利用載波相位進(jìn)行姿態(tài)測(cè)量必須保證能正確的解算出整周模糊度。目前,國(guó)內(nèi)外研究人員一直對(duì)整周模糊度進(jìn)行了大量的研究,陸續(xù)提出了求解模糊度的算法,如快速模糊度逼近法[3](Fast Ambiguity Resolution Algorithm,FARA)、模糊度估算的優(yōu)化算法[4](Optimal method for estimating GPS ambiguities,OMEGA)和OTF(On The Fly,OTF)技術(shù)[5]等。但這些方法只能在長(zhǎng)基線的情況下效果比較明顯。而在短基線情況下,由于雙天線收到的“北斗”數(shù)據(jù)存在高度相關(guān)性,這種相關(guān)性在求解模糊度帶來(lái)很大困難。而最小二乘模糊度去相關(guān)平差(Least-squares Ambiguity Decorrelation Adjustment,LAMBDA)算法首先對(duì)浮點(diǎn)解的協(xié)方差矩陣進(jìn)行去相關(guān)運(yùn)算,使得模糊度搜索空間由原來(lái)狹長(zhǎng)的空間變?yōu)榍蛐慰臻g,這將提高整周模糊度的成功率。
隨著數(shù)字設(shè)備的發(fā)展,對(duì)以DSP為核心的實(shí)現(xiàn)平臺(tái)研究尤為重要。在多數(shù)系統(tǒng)的實(shí)現(xiàn)中,DSP通常是承載著復(fù)雜的核心算法任務(wù)的。隨著大型算法的運(yùn)算越來(lái)越復(fù)雜,傳統(tǒng)單核DSP已難以滿足算法要求。而如果同時(shí)利用多片單核DSP集成系統(tǒng),將會(huì)帶來(lái)單核DSP間的接口連接過(guò)多、硬件設(shè)計(jì)復(fù)雜、系統(tǒng)面積過(guò)大等不利因素。TI公司的片上多核DSP TMS320C6678不但具備先進(jìn)的Keystone架構(gòu),而且主頻可達(dá)1.4 GHz,同時(shí)兼顧浮點(diǎn)運(yùn)算與定點(diǎn)運(yùn)算[6]。
基于此,本文利用LAMBDA算法求解整周模糊度,同時(shí)使用TMS320C6678多核DSP實(shí)現(xiàn)”北斗”測(cè)姿算法。測(cè)試結(jié)果表明,采用TMS320C6678多核DSP能實(shí)時(shí)、精確地解算姿態(tài)角。
單歷元單基線“北斗”測(cè)姿算法包括“北斗”數(shù)據(jù)解析算法、偽距定位算法、LAMBDA算法、姿態(tài)角解算,其處理流程如圖1所示。
圖1 單歷元單基線“北斗”測(cè)姿算法處理流程圖
Fig.1 Flow chart of single-baseline Beidou surveying and attitude processing
輸入數(shù)據(jù)是由“北斗”衛(wèi)星信號(hào)經(jīng)OEM617D”北斗”接收機(jī)主副天線接收(由主副天線構(gòu)成超短基線,長(zhǎng)度為1 m),經(jīng)射頻處理,中頻變頻和接收機(jī)內(nèi)部程序進(jìn)行封裝后的字符串?dāng)?shù)據(jù)。輸入數(shù)據(jù)包括以#BDSEPHEMERISA字符為數(shù)據(jù)頭的“北斗”星歷數(shù)據(jù)和主副天線的“北斗”數(shù)據(jù)。配置“北斗”接收機(jī)向DSP端發(fā)送“北斗”數(shù)據(jù)的頻率為1 Hz。
2.1“北斗”數(shù)據(jù)解析
對(duì)從“北斗”接收機(jī)傳來(lái)的“北斗”星歷字符數(shù)據(jù)和主副天線的“北斗”字符數(shù)據(jù)進(jìn)行提取,將部分需要轉(zhuǎn)為64 bit double型等其他類(lèi)型的數(shù)據(jù)進(jìn)行轉(zhuǎn)化。
2.2偽距定位算法
設(shè)置一個(gè)接收機(jī)當(dāng)前位置初始估計(jì)值為0或者上次定位的結(jié)果,根據(jù)偽距雙差觀測(cè)模型建立偽距雙差觀察方程,將偽距雙差方程進(jìn)行線性化后,利用最小二乘法求解線性化后的偽距觀察方程,將求解的線性化后偽距觀察方程的解代入初始接收機(jī)位置估計(jì)值,更新接收機(jī)當(dāng)前的位置;再經(jīng)過(guò)多次迭代后誤差小于預(yù)先設(shè)定的值(本算法中設(shè)定norm(delta_x(1:3,1)) <1×10-7)后跳出迭代循環(huán)中,得到偽距定位的結(jié)果。經(jīng)多次測(cè)試和統(tǒng)計(jì),目前利用本算法解算的偽距定位結(jié)果誤差在3~5 m內(nèi)[7]。
2.3LAMBDA算法
本接收設(shè)備由兩根天線構(gòu)成一個(gè)基線,可看作兩個(gè)“北斗”接收機(jī),以同個(gè)衛(wèi)星的載波相位觀測(cè)量為參照,對(duì)兩個(gè)接收機(jī)的載波相位觀測(cè)方程作差,得到單差載波相位觀測(cè)方程,再在單差的基礎(chǔ)上進(jìn)行兩個(gè)衛(wèi)星間的單差載波相位方程作差,就得到了雙差載波相位觀測(cè)方程。將基于雙差載波相位[8]的姿態(tài)測(cè)量方程統(tǒng)一寫(xiě)成如下的一個(gè)線性矩陣形式[9]:
y=AΔbur+BN。
(1)
其中:y為接收機(jī)給出的雙差載波相位觀測(cè)量,Δbur是基線向量,N為需要被求解的整周模糊度,A和B為常系數(shù)矩陣。在姿態(tài)測(cè)量之所以使用雙差載波相位模型作為載波相位觀測(cè)模型,主要原因是經(jīng)過(guò)雙差處理后,能消除衛(wèi)星鐘差、接收機(jī)鐘差、星歷誤差等誤差。
先不考慮整周模糊度N的整數(shù)要求而直接利用加權(quán)最小二乘法求解浮點(diǎn)型加權(quán)最小二乘解(Δbur,N),即最優(yōu)最小二乘解使得殘余的加權(quán)平方和最小,即
(2)
根據(jù)公式(2)求出(Δbur,N),而(Δbur,N)的協(xié)方差矩陣
(3)
LAMBDA算法分為3步[10]:去相關(guān)、置換、搜索。
(1)先將浮點(diǎn)解及其協(xié)方差矩陣進(jìn)行Z變換,再對(duì)協(xié)方差矩陣進(jìn)行LDL分解,通過(guò)一系列的整數(shù)高斯變換得到滿足一定條件的Z矩陣。
(4)
(5)
2.4姿態(tài)角解算
在導(dǎo)航領(lǐng)域,姿態(tài)一般是表示載體在某一時(shí)刻相對(duì)于地面的角位置。大多數(shù)姿態(tài)都是表示載體坐標(biāo)系與站心坐標(biāo)系(東-北-天坐標(biāo)系)的角位置關(guān)系,用航向角、俯仰角、橫滾角來(lái)表示。假設(shè)載體坐標(biāo)系與站心坐標(biāo)系原點(diǎn)重合,按照一定的旋轉(zhuǎn)順序,將站心坐標(biāo)系旋轉(zhuǎn)3次,使得其與載體坐標(biāo)系重合。每次旋轉(zhuǎn)所參考的旋轉(zhuǎn)軸均為被旋轉(zhuǎn)坐標(biāo)系的坐標(biāo)軸,每次旋轉(zhuǎn)的角度被稱(chēng)歐拉角。設(shè)坐標(biāo)系為a系,站心坐標(biāo)系為b系。a系在3次旋轉(zhuǎn)過(guò)程中,可以得到由歐拉角(俯仰角θ、航向角φ、橫滾角γ)表示的3個(gè)方向余弦矩陣。
繞x軸旋轉(zhuǎn):
繞y軸旋轉(zhuǎn):
繞Z軸旋轉(zhuǎn):
假設(shè)b系的旋轉(zhuǎn)順序?yàn)閆-Y-X,根據(jù)每次旋轉(zhuǎn)得到的方向余弦矩陣,可以得到姿態(tài)旋轉(zhuǎn)矩陣
(6)
則載體坐標(biāo)系與ENU坐標(biāo)系坐標(biāo)矢量關(guān)系如下:
(7)
(8)
由公式(8)可以得到航向角和俯仰角的表達(dá)式:
(9)
其中:φ為航向角,θ為俯仰角,[xb,yb,zb]為基線向量在站心坐標(biāo)系下的坐標(biāo)。
為了實(shí)現(xiàn)快速姿態(tài)測(cè)量,充分利用了C6678 DSP的多核。將整個(gè)“北斗”測(cè)姿算法分割為“北斗”數(shù)據(jù)解析、偽距定位算法、LAMBDA算法、姿態(tài)解算,將每個(gè)算法根據(jù)一定的任務(wù)分配模式分配到一個(gè)DSP核上。以下是實(shí)現(xiàn)過(guò)程中用到的關(guān)鍵技術(shù)。
3.1多核并行編程技術(shù)
多核DSP的并行編程方式主要有兩種,主從模式和數(shù)據(jù)流模式[11]。主從模式是一種集中控制和分布執(zhí)行的一個(gè)并行編程模式。數(shù)據(jù)流模式意味著分布式控制和分布執(zhí)行,該模式適合以流水的方式進(jìn)行分布式控制和數(shù)據(jù)處理的應(yīng)用,而這種應(yīng)用通常包含幾個(gè)復(fù)雜的算法,單核DSP將無(wú)法滿足算法性能要求,并且各個(gè)算法之間有著頻繁的數(shù)據(jù)交換。
“北斗”測(cè)姿算法中含有較為復(fù)雜的矩陣運(yùn)算,同時(shí)也算法間有著很強(qiáng)的數(shù)據(jù)依賴(lài)性,故“北斗”測(cè)姿算法的多核并行編程模式選用的是數(shù)據(jù)流模式。
3.2基于消息隊(duì)列方式的核間通信技術(shù)
德州儀器公司(TI)提供了多核開(kāi)發(fā)套件(Multicore Software Development Kit,MCSDK),包括下列兩種核間通信方案:通知(Notify)方式和消息隊(duì)列(MessageQueue,MessageQ)方式[12]。
基于Notify方式的核間通信是利用核間的通信機(jī)制來(lái)實(shí)施的,而一個(gè)Notify攜帶的信息是非常小的,通常只有32 bit。Notify模塊更加側(cè)重于通知,而MessageQ卻可以傳遞變長(zhǎng)的消息塊,更側(cè)重于傳遞消息。而實(shí)現(xiàn)“北斗”測(cè)姿算法的DSP核需要非常頻繁地進(jìn)行不定長(zhǎng)的數(shù)據(jù)傳輸,故使用MessageQ信息進(jìn)行核間傳遞是最佳的方式。
3.3Cache一致性維護(hù)
對(duì)于C6678多核DSP來(lái)說(shuō),為多核配置一定的Cache的優(yōu)勢(shì)在于多核在處理數(shù)據(jù)的時(shí)候能直接從Cache中快速地讀取而不是去直接尋址到實(shí)際存儲(chǔ)數(shù)據(jù)的物理單元,因此多核系統(tǒng)中每個(gè)核都配置一個(gè)屬于自己的Cache[13]。多核的Cache模型如圖2所示。
在多核情況下,當(dāng)一個(gè)核改變一個(gè)存儲(chǔ)在共享內(nèi)存的數(shù)據(jù),而這個(gè)數(shù)據(jù)的改變需要被其他核去識(shí)別,這時(shí)就需要Cache一致性維護(hù)。在改變這個(gè)數(shù)據(jù)的時(shí)候?qū)嶋H上并沒(méi)有改變存儲(chǔ)在共享存儲(chǔ)中的數(shù)據(jù),改變的是儲(chǔ)存在屬于該核的Cache數(shù)據(jù)。這時(shí)其他的核無(wú)論是從自己的Cache中還是從共享存儲(chǔ)中讀取該數(shù)據(jù),都不能準(zhǔn)確地感受到該數(shù)據(jù)的變化。在SYS/BIOS的硬件抽象層(hal層)調(diào)用Cache模塊能完美地解決該問(wèn)題,即在CORE0改變這個(gè)數(shù)據(jù)之后調(diào)用Cache_wbAll()函數(shù)或者Cache_wb()函數(shù)將該數(shù)據(jù)回寫(xiě)到真正存著該數(shù)據(jù)的物理單元中,而在其他核試圖讀取該數(shù)據(jù)之前調(diào)用Cacha_disable()函數(shù)使該核的Cache失效,這樣使得讀取數(shù)據(jù)的時(shí)候直接從其真正的物理地址讀取。為了提高DSP更高效率處理數(shù)據(jù),我們一般使用Cache_wb()函數(shù)進(jìn)行部分?jǐn)?shù)據(jù)的回寫(xiě)而不是全部數(shù)據(jù),使用Cache_disable()函數(shù)時(shí)使用的不是Cache_Type_All這個(gè)參數(shù)而是相應(yīng)的數(shù)據(jù)類(lèi)型。
3.4DSP端用戶(hù)數(shù)據(jù)報(bào)協(xié)議網(wǎng)口傳輸技術(shù)
“北斗”接收機(jī)以1 Hz的頻率向DSP端發(fā)送數(shù)據(jù)且考慮到在將來(lái)“北斗”接收機(jī)與數(shù)字信號(hào)處理板卡會(huì)集成到一起,故設(shè)計(jì)多核DSP使用基于網(wǎng)絡(luò)開(kāi)發(fā)套件(Network Developer’s Kit,NDK)的阻塞式UDP方式與“北斗”接收機(jī)進(jìn)行通信。在SYS/BIOS實(shí)時(shí)內(nèi)核的條件下,德州儀器公司提供了NDK,內(nèi)部已經(jīng)集成了UDP協(xié)議棧[14]。在CCS5.5中,將NDK子系統(tǒng)加入SYS/BIOS工程中,配置好頭文件和路徑后,即可調(diào)用NDK子系統(tǒng)的組件來(lái)實(shí)現(xiàn)UDP傳輸。開(kāi)發(fā)流程如圖3所示。
圖3 基于NDK子系統(tǒng)的阻塞式UDP開(kāi)發(fā)流程圖Fig.3 Obstructive UDP development flow chart based on NDK subsystem
在配置目標(biāo)IP和本地IP時(shí)候,需要注意一定要保證目標(biāo)IP和本地IP在同一網(wǎng)段上,這樣才能進(jìn)行通信。設(shè)備間可以直接用網(wǎng)線連接也可以通過(guò)交換機(jī)進(jìn)行連接。由于“北斗”接收機(jī)以1 Hz頻率發(fā)送數(shù)據(jù),速率相對(duì)于千兆網(wǎng)口傳輸速率比較低,故使用網(wǎng)口傳輸完全滿足數(shù)據(jù)輸入的實(shí)時(shí)性。此外,在“北斗”接收機(jī)與DSP短距離直連的情況下,多核DSP單獨(dú)使用一個(gè)CORE0來(lái)運(yùn)行UDP協(xié)議,這使得UDP的丟包幾乎可以忽略不計(jì)。
配置目標(biāo)IP、本地IP、網(wǎng)關(guān)IP等重要參數(shù)代碼如下:
char *HostName = “dsp”;
char *LocalIPAddr = “172.24.52.77”;
char *LocalIPMask = “255.255.255.0”;
char *GatewayIP = “172.24.52.1”;
char *DomainName = “receiver”;
char *DNSServer = “8.8.4.4”;
char *DestIPAddr = “172.24.52.209”;
char *DestIPMask = “255.255.255.0”;
NA.IPAddr = inet_addr(LocalIPAddr);
NA.IPMask = inet_addr(LocalIPMask);
strcpy( NA.Domain,DomainName );
端口號(hào)設(shè)置為60000。圖4所示為 PC端的網(wǎng)口調(diào)試助手實(shí)時(shí)接收的數(shù)據(jù)圖。
基于NDK阻塞式的UDP網(wǎng)口傳輸在速率上完全滿足1 Hz。由于”北斗”接收機(jī)跟DSP板直連且距離很近,在這種情況下,我們更多考慮的是在可以忽略UDP丟包的情況下,UDP的快速發(fā)送接收性能為后續(xù)的算法處理提供了高速數(shù)據(jù)輸入,同時(shí)也在實(shí)時(shí)性方面得到了更好的發(fā)揮。
4.1基于SYS/BIOS實(shí)時(shí)內(nèi)核的開(kāi)發(fā)
SYS/BIOS是由TI公司開(kāi)發(fā)的實(shí)時(shí)操作系統(tǒng)TI-RTOS的內(nèi)核組件[15],也被稱(chēng)為“TI-RTOS Kernel”。在基于SYS/BIOS實(shí)時(shí)內(nèi)核進(jìn)行開(kāi)發(fā)時(shí),借助了TI提供的MCSDK。MCSDK軟件框圖如圖5所示。
圖5 MCSDK軟件框圖Fig.5 Block diagram of MCSDK
在利用C6678 DSP進(jìn)行實(shí)時(shí)嵌入式軟件開(kāi)發(fā)時(shí),往往需要使用到C6678 DSP的片內(nèi)外設(shè)、網(wǎng)口、運(yùn)算庫(kù)函數(shù)、多核開(kāi)發(fā)等,這時(shí)就可以在SYS/BIOS環(huán)境下調(diào)用MCSDK的LLDs、NDK、Algorithm Lib等組件。
4.2“北斗”測(cè)姿算法的具體實(shí)現(xiàn)
單歷元單基線“北斗”姿態(tài)測(cè)量算法的實(shí)現(xiàn)硬件平臺(tái)為T(mén)I公司的C6678評(píng)估板,設(shè)置其主頻為1 GHz,軟件集成開(kāi)發(fā)環(huán)境為CCS5.5。算法實(shí)現(xiàn)總共使用了C6678的前4個(gè)核。CORE0負(fù)責(zé)實(shí)現(xiàn)網(wǎng)口接收“北斗”接收機(jī)的數(shù)據(jù),CORE1負(fù)責(zé)數(shù)據(jù)分類(lèi)、數(shù)據(jù)解析并將各類(lèi)數(shù)據(jù)壓入對(duì)應(yīng)的Message中,CORE2負(fù)責(zé)運(yùn)行單點(diǎn)定位算法,CORE3負(fù)責(zé)運(yùn)行LAMBDA算法,解算姿態(tài)角。
“北斗”測(cè)姿算法實(shí)現(xiàn)軟件框圖如圖6所示。
圖6 “北斗”測(cè)姿算法實(shí)現(xiàn)軟件框圖Fig.6 Software block diagram of Beidou attitude measurement algorithm
在CORE0接收到接收機(jī)發(fā)來(lái)的數(shù)據(jù)后,將數(shù)據(jù)立刻轉(zhuǎn)發(fā)CORE1,當(dāng)轉(zhuǎn)發(fā)完成后CORE0立刻又在等待下一數(shù)據(jù)的到來(lái),而CORE1將數(shù)據(jù)作簡(jiǎn)單的校驗(yàn),校驗(yàn)正確后對(duì)數(shù)據(jù)進(jìn)行解析分類(lèi),如果是星歷數(shù)據(jù),則將星歷數(shù)據(jù)解析后存入一個(gè)數(shù)據(jù)結(jié)構(gòu)中;如果是RANGEA消息,先進(jìn)行解析,當(dāng)完成主副天線兩條RANGEA消息的解析后,立刻將主副天線的RANGEA消息壓入姿態(tài)隊(duì)列,之后再將存有星歷數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)封裝為消息壓入星歷隊(duì)列,這個(gè)過(guò)程之后CORE1立刻回到初始狀態(tài)。而CORE2開(kāi)始處于接收隊(duì)列的等待狀態(tài),當(dāng)有姿態(tài)消息通過(guò)隊(duì)列傳來(lái),CORE1將其接收,之后再接收星歷消息。最后將姿態(tài)消息與星歷消息進(jìn)行單點(diǎn)定位算法,求得浮點(diǎn)解和浮點(diǎn)解的協(xié)方差矩陣,之后通過(guò)信號(hào)量觸發(fā)CORE3,將浮點(diǎn)解及其協(xié)方差矩陣傳輸給CORE3,CORE2恢復(fù)原來(lái)的狀態(tài)。CORE3則利用接收到的浮點(diǎn)解及其協(xié)方差矩陣進(jìn)行LAMBDA算法、模糊度搜索得到整周模糊度矢量,然后進(jìn)行坐標(biāo)轉(zhuǎn)換即可求得姿態(tài)角。
5.1多核DSP實(shí)現(xiàn)測(cè)試
測(cè)試場(chǎng)地位于重慶郵電大學(xué)逸夫科技樓頂樓,測(cè)試接收機(jī)為OEM617D“北斗”接收機(jī)。將雙“北斗”天線固定在剛體基線兩端,基線方向向東(航向角176°)。在靜態(tài)條件下,經(jīng)歷連續(xù)400歷元進(jìn)行實(shí)時(shí)性測(cè)試后,隨機(jī)截取其中4次姿態(tài)測(cè)量數(shù)據(jù)、姿態(tài)角數(shù)據(jù)與Matlab仿真數(shù)據(jù)對(duì)比,如表1所示。
表1 實(shí)現(xiàn)與仿真數(shù)據(jù)對(duì)比Tab.1 Comparison between implementation and simulation data
經(jīng)過(guò)連續(xù)400歷元姿態(tài)測(cè)量結(jié)果與Matlab算法仿真結(jié)果取差值,如圖7所示。
圖7 姿態(tài)結(jié)果與Matlab算法仿真結(jié)果取差值Fig.7 Comparison between DSP results and Matlab algorithm simulation results
在DSP核主頻配置為1 GHz的情況下,對(duì)連續(xù)400歷元各個(gè)部分算法速度進(jìn)行測(cè)試,結(jié)果如表2所示。
表2 各個(gè)部分算法速度測(cè)試Tab.2 Speed test of each part algorithm
根據(jù)1 GHz的主頻,時(shí)鐘周期數(shù)為89 496 991,其對(duì)應(yīng)的運(yùn)行時(shí)間為0.089 496 991 s,小于數(shù)據(jù)接收的時(shí)間間隔1 s,說(shuō)明本實(shí)現(xiàn)設(shè)計(jì)方案滿足實(shí)時(shí)性要求。
5.2結(jié)果分析
在連續(xù)400歷元分別在DSP平臺(tái)和Matlab算法仿真平臺(tái)分別進(jìn)行姿態(tài)測(cè)量后,實(shí)現(xiàn)解算出的姿態(tài)數(shù)據(jù)與Matlab仿真解算出姿態(tài)角差值在<-4×10-7,5×10-7>。同時(shí),對(duì)各個(gè)算法模塊進(jìn)行速度測(cè)試,其總的運(yùn)行時(shí)間小于數(shù)據(jù)接收的時(shí)間間隔1 s,符合姿態(tài)測(cè)量的精度要求和實(shí)時(shí)性要求,也同時(shí)說(shuō)明C6678多核DSP為單歷元單基線“北斗”測(cè)姿算法提供了很穩(wěn)定的算法實(shí)現(xiàn)平臺(tái)。在姿態(tài)測(cè)量領(lǐng)域,利用多核DSP實(shí)現(xiàn)姿態(tài)測(cè)量算法能進(jìn)行實(shí)時(shí)、精確的姿態(tài)解算。
本文以TMS320C6678多核DSP作為算法實(shí)現(xiàn)平臺(tái),以SYS/BIOS實(shí)時(shí)內(nèi)核為軟件系統(tǒng)平臺(tái),調(diào)用SYS/BIOS的IPC模塊、Cache模塊以及基于NDK的UDP模塊。在算法實(shí)現(xiàn)上,將算法分割為多個(gè)任務(wù),利用多核進(jìn)行并行處理,實(shí)現(xiàn)了“北斗”姿態(tài)測(cè)量算法。在姿態(tài)測(cè)量領(lǐng)域,利用多核DSP進(jìn)行姿態(tài)解算是一個(gè)新的思路。而在程序優(yōu)化上,由于TI公司為多核DSP匹配了很多已經(jīng)優(yōu)化的運(yùn)算模塊如MATHLIB C66x等,故下一步研究的問(wèn)題是如何調(diào)用多核DSP豐富的運(yùn)算庫(kù)來(lái)優(yōu)化移植在DSP平臺(tái)上的算法代碼,從而實(shí)現(xiàn)更高效的姿態(tài)測(cè)量。
[1] 李晨陽(yáng). 載波相位在提高GNSS接收機(jī)精度中的應(yīng)用研究[D]. 北京:北京郵電大學(xué),2014.
LI Chenyang. Study on the application of carrier phase in improving GNSS receiver precision[D].Beijing:Beijing University of Posts and Telecommunications,2014.(in Chinese)
[2] LI Y,DUSHA D,KELLAR W,et al. Calibrated MEMS inertial sensors with GPS for a precise attitude heading reference system on autonomous farming tractors[C]// Proceedings of ION-GNSS2009.Savannah,Georgia:ION,2009:22-25.
[3] CHEN D S. Development of a fast ambiguity search filtering (FASF) method for GPS carrier phase ambiguity resolution[D]. Calgary,AB,Canada:Department of GeomaticsEngineering,University of Calgary,1994:31-41.
[4] 柴洪洲. 模糊度搜索的優(yōu)化算法[J]. 全球定位系統(tǒng),2002,27(1):10-12.
CHAI Hongzhou. Optimized algorithm of ambiguity search[J].GNSS World of China,2002,27(1):10-12. (in Chinese)
[5] TEUNISSEN P J G,VERHAGEN S. GNSS ambiguity resolution:when and how to fix or not to fix[C]//Proceedings of VI Hotine-Marussi Symposium on Theoretical and Computational Geodesy. Heidelberg,Berlin:IEEE Press,2008:143-148.
[6] Texas Instrument. TI TMS320C6678 multicore fixed and floating-point digital processor[M].Texas:TI,2014:13-15.
[7] 周巍.北斗衛(wèi)星導(dǎo)航系統(tǒng)精密定位理論方法研究與實(shí)現(xiàn)[D]. 鄭州:解放軍信息工程大學(xué),2013.
ZHOU Wei.Theoretical study and realization of precise positioning of Beidou satellite navigation system[D].Zhengzhou:Information Engineering University,2013.(in Chinese)
[8] 馬煦,常青,侯俊. 綜合利用電離層殘差法和載波相位變化率法探測(cè)并修復(fù)周跳[J]. 電訊技術(shù),2005,45(1):115-119.
MA Xu,CHANG Qing,HOU Jun. Detection and reparation for cycle slips using ionosphere residual error method and carrier phase rate method[J].Telecommunication Engineering,2005,45(1):115-119.(in Chinese)
[9] 張賢達(dá),矩陣分析與應(yīng)用[M].北京:清華大學(xué)出版社,2004:548-561.
[10] TEUNISSEN P. The LAMBDA method for the GNSS compass[J]. Artificial Satellites,2006,41(3):89-103.
[11] Texas Instrument. TI multicore programming guide [M]. Texas:TI,2012:1-13.
[12] Texas Instrument. TI SYS/BIOS inter-processor communication (IPC) 1.25 user′s guide [M]. Texas:TI,2012:2-6.
[13] Texas Instrument. TI TMS320C66x DSP cache user guide [M]. Texas:TI,2010:10-20.
[14] Texas Instrument. TI network developer′s kit (NDK) v2.24 user′s guide [M]. Texas:TI,2014:6-10.
[15] Texas Instrument. TISYS/BIOS (TI-RTOS kernel) v6.45 user′s guide[M]. Texas:TI,2015:10-14.
ImplementationofSingle-epochSingle-baselineBeidouAttitudeMeasurementBasedonTMS320C6678
LI Lingxia,LI Gangping
(Chongqing Key Laboratory of Mobile Communications Technology,Chongqing University of Postsand Telecommunications,Chongqing 400065,China)
In order to realize high accuracy and real-time of attitude measurement and solve the problem of high complexity of Least-squares Ambiguity Decorrelation Adjustment(LAMBDA) algorithm in Beidou attitude measurement algorithm beased on carrier phase,the C6678 multi-core digital signal processor (DSP) with TI’s high-end processor is chosen as the single-apoch single-line Beidou attitude measurement platform. According to the characteristics of algorithm,the data stream mode is adopted to allocate tasks to multi-core:DSP’s CORE0 is responsible for the User Datagram Protocol (UDP)communication with the Beidou receiver,the various branches of Beidou attitude measurement algorithm are assigned to other three DSP COREs implementation. Running result of the real-time data collected by OEM617D Beidou receiver on the multi-core DSP algorithm is compared with the Matlab simulation result,which shows that the design can meet the real-time and accuracy requirements of the Beidou attitude measurement.
Beidou attitude measurement;single-epoch single-baseline;multi-core DSP;user datagram protocol network port transmission;Cache technology
date:2016-12-22;Revised date:2017-05-23
國(guó)家自然科學(xué)基金資助項(xiàng)目(61301126);重慶市基礎(chǔ)與前沿研究計(jì)劃項(xiàng)目(cstc2013jcyjA40032);重慶郵電大學(xué)博士啟動(dòng)基金(A2012-33);重慶郵電大學(xué)青年科學(xué)研究項(xiàng)目(A2013-31)
**通信作者:1528709062@qq.com Corresponding author:1528709062@qq.com
TN965;P228.1
A
1001-893X(2017)10-1198-07
李玲霞(1976—),女,湖北武穴人,2010年于重慶郵電大學(xué)獲碩士學(xué)位,現(xiàn)為高級(jí)工程師,主要研究方向?yàn)槲磥?lái)移動(dòng)通信理論與技術(shù)、寬度無(wú)線接入技術(shù);
Email:lilx@cqupt.edu.cn
黎剛平(1993—),男,江西撫州人,碩士研究生,主要研究方向?yàn)镈SP嵌入式開(kāi)發(fā)、“北斗”姿態(tài)測(cè)量。
Email:1528709062@qq.com
10.3969/j.issn.1001-893x.2017.10.016
李玲霞,黎剛平.基于TMS320C6678的單歷元單基線“北斗”測(cè)姿算法的實(shí)現(xiàn)[J].電訊技術(shù),2017,57(10):1198-1204.[LI Lingxia,LI Gangping.Implementation of single-epoch single-baseline Beidou attitude measurement based on TMS320C6678[J].Telecommunication Engineering,2017,57(10):1198-1204.]
2016-12-22;
2017-05-26