基于MCU的室外移動(dòng)機(jī)器人組合導(dǎo)航定位系統(tǒng)
3.2數(shù)據(jù)的采集和處理方法
本文引用地址:http://cafeforensic.com/article/273857.htmIMU和GNSS接收機(jī)的數(shù)據(jù)會(huì)主動(dòng)發(fā)送到430單片機(jī)的UART接口,本文采用中斷接收的方式接收數(shù)據(jù),將每次到來(lái)的一個(gè)字節(jié)循環(huán)存儲(chǔ)在指定的存儲(chǔ)區(qū);氣壓計(jì)需要430單片機(jī)查詢式獲取高度信息。因此當(dāng)需求IMU或者GNSS信息的時(shí)候,需要在存儲(chǔ)區(qū)內(nèi)掃描數(shù)據(jù),掃描依據(jù)是設(shè)備發(fā)送一幀數(shù)據(jù)的協(xié)議(幀頭、幀尾、CRC等),再根據(jù)協(xié)議獲取相應(yīng)物理量的數(shù)值;當(dāng)需要高度信息的時(shí)候,需要430單片機(jī)對(duì)氣壓計(jì)發(fā)送控制字獲取信息。在對(duì)IMU和GNSS信息掃描時(shí)需要一個(gè)變量ptr保存有效數(shù)據(jù)的首地址在存儲(chǔ)區(qū)內(nèi)的偏移地址,為了不重復(fù)使用已用數(shù)據(jù),需要在利用完信息后,破壞這一幀有效數(shù)據(jù)的幀頭幀尾。
另外需要注意,使用循環(huán)存儲(chǔ)數(shù)據(jù)和掃描取用這種方式,需要數(shù)據(jù)的處理速度比數(shù)據(jù)的接收速度快,否則舊數(shù)據(jù)會(huì)被新數(shù)據(jù)覆蓋。
3.3高度計(jì)算方法
高度信息的獲取需要通過(guò)MS5803-02BA獲取的氣壓信息轉(zhuǎn)換得到。對(duì)這款氣壓計(jì)的操作,需要先在芯片內(nèi)部的PROM獲取C1~C6六個(gè)參數(shù),再獲取溫度ADC結(jié)果D1和氣壓ADC結(jié)果D2,最后利用官方提供的計(jì)算公式計(jì)算得到帶補(bǔ)償?shù)臍鈮褐?。氣壓值獲取的軟件流程圖如圖6.
圖6高度計(jì)算流程圖
按照氣壓計(jì)的用戶手冊(cè)中提供的計(jì)算公式,最后可以計(jì)算得到一個(gè)經(jīng)過(guò)溫度補(bǔ)償?shù)臉?biāo)準(zhǔn)氣壓值,單位mbar.高度信息的獲取還需要將氣壓值經(jīng)過(guò)函數(shù)關(guān)系轉(zhuǎn)換。高度h和標(biāo)準(zhǔn)大氣P之間有如下函數(shù)關(guān)系:
Th=288.15K,是g0對(duì)應(yīng)高度下的溫度下限值;β=-6.5K/km,是溫度的垂直變化率;H=0m,是g0對(duì)應(yīng)的高度;Ph=101325Pa,是g0對(duì)應(yīng)高度下的氣壓下限值;R=287.05287m2/(K●s2),是氣體常數(shù);g0=9.80665m/s2,是海平面重力加速度。
在氣壓與高度的關(guān)系轉(zhuǎn)換中,本文采用分段線性化的方法擬合它們的非線性關(guān)系。在不同氣壓值區(qū)間內(nèi),線性化公式得到h=a●P+b,取得不同的線性參數(shù)a、b,參考表4.
3.4組合導(dǎo)航的時(shí)間對(duì)準(zhǔn)
進(jìn)行組合導(dǎo)航濾波解算時(shí),從IMU和GNSS接收機(jī)接收到的數(shù)據(jù)在時(shí)間上應(yīng)該是同步的,因?yàn)槿绻谝粋€(gè)數(shù)據(jù)融合點(diǎn)上,進(jìn)入Kalman濾波器的來(lái)自兩個(gè)子系統(tǒng)中的數(shù)據(jù)來(lái)自不同的時(shí)間點(diǎn),會(huì)給濾波計(jì)算帶來(lái)誤差,同時(shí)也會(huì)給校正計(jì)算帶來(lái)影響。GNSS接收機(jī)輸出的導(dǎo)航數(shù)據(jù)都帶有精確的時(shí)間標(biāo)簽,而從IMU輸出的數(shù)據(jù)只有一個(gè)相對(duì)時(shí)間標(biāo)簽。以GNSS接收機(jī)的時(shí)間標(biāo)簽作為時(shí)間基準(zhǔn),分析時(shí)間差的組成。系統(tǒng)時(shí)間示意圖如圖7所示。
圖7系統(tǒng)時(shí)鐘示意圖
3.4.1時(shí)間差分析
當(dāng)一個(gè)GNSS數(shù)據(jù)(1Hz)到來(lái)時(shí),接收機(jī)產(chǎn)生一個(gè)秒脈沖信號(hào)(PPS),用于時(shí)間對(duì)準(zhǔn)。GNSS接收機(jī)本身存在數(shù)據(jù)時(shí)延:接收機(jī)整個(gè)計(jì)算過(guò)程會(huì)產(chǎn)生一個(gè)解算時(shí)間延遲△t1、從衛(wèi)星導(dǎo)航接收機(jī)和慣導(dǎo)系統(tǒng)輸出的數(shù)據(jù)分別經(jīng)過(guò)McBSP和RS-232數(shù)據(jù)接口輸入導(dǎo)航解算處理器會(huì)產(chǎn)生一定的傳輸延遲△t2.因此在PPS信號(hào)前的△t1+△t2時(shí)刻才是當(dāng)前接收到的GNSS數(shù)據(jù)幀的真實(shí)時(shí)刻。IMU數(shù)據(jù)處理時(shí)間相對(duì)于遞推時(shí)間來(lái)說(shuō)很小,可以忽略。另外PPS脈沖信號(hào)和慣性測(cè)量信號(hào)之間的時(shí)間差△τ,它描述GNSS絕對(duì)時(shí)間和IMU相對(duì)時(shí)間之間的關(guān)系,使得GNSS和IMU統(tǒng)一在同一個(gè)時(shí)間標(biāo)準(zhǔn)下。
3.4.2處理思想
根據(jù)總時(shí)間差△T =△t1+△t2+△τ,找到IMU數(shù)據(jù)對(duì)應(yīng)的插值時(shí)刻。通過(guò)時(shí)間△T就可以獲得對(duì)準(zhǔn)時(shí)間點(diǎn)與最近的兩個(gè)慣性采集時(shí)刻,其后對(duì)時(shí)間同步點(diǎn)兩側(cè)時(shí)間點(diǎn)上,即圖中t(k-1)和t(k)時(shí)間點(diǎn)的慣性數(shù)據(jù)進(jìn)行線性插值運(yùn)算,就可以獲得了慣導(dǎo)數(shù)據(jù)和GNSS接收機(jī)數(shù)據(jù)在同一時(shí)間點(diǎn)上的同步化測(cè)量數(shù)據(jù)。
3.4.3實(shí)施方法
GNSS接收機(jī)解算時(shí)間△t1由接收機(jī)提供。
傳輸時(shí)間△t2通常為一個(gè)固定時(shí)間,使用示波器分別測(cè)量GNSS接收機(jī)發(fā)送時(shí)間和導(dǎo)航解算電路的接收時(shí)間,再將兩個(gè)時(shí)間作差即可獲得。
△τ的獲取需要開(kāi)啟MSP430F149的計(jì)時(shí)器和外部中斷,通過(guò)中斷計(jì)時(shí)的方式獲得。具體方法是:通過(guò)將PPS信號(hào)接入導(dǎo)航處理器的外部中斷接口,采用邊沿觸發(fā)方式觸發(fā)中斷事件的發(fā)生。中斷事件啟動(dòng)計(jì)時(shí)器工作。當(dāng)通過(guò)串口中斷方式接收到IMU數(shù)據(jù)時(shí),讀取計(jì)時(shí)器的值,即可得到IMU數(shù)據(jù)相對(duì)于PPS的延遲時(shí)間△τ。
結(jié)論
本文基于MSP430F149單片機(jī)設(shè)計(jì)的室外移動(dòng)機(jī)器人組合導(dǎo)航定位系統(tǒng),通過(guò)接口的擴(kuò)展使得該款定位系統(tǒng)能夠接入IMU、GNSS接收機(jī)、氣壓計(jì)三路信息,完成初步導(dǎo)航定位服務(wù)功能,同時(shí)可作為多路數(shù)據(jù)采集設(shè)備,將多路數(shù)據(jù)整合到一路高速輸出接口,用于進(jìn)一步的高精度導(dǎo)航解算。該系統(tǒng)根據(jù)使用者的需求不同,可接入不同成本和精度的設(shè)備,只要滿足RS-232協(xié)議即可。筆者將其實(shí)際運(yùn)用,整個(gè)系統(tǒng)充分利用該款單片機(jī)的資源,結(jié)構(gòu)簡(jiǎn)單、功耗低、適用范圍廣,不僅可作為初步導(dǎo)航定位服務(wù)的設(shè)備,還可作為多路數(shù)據(jù)采集設(shè)備。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
加速度計(jì)相關(guān)文章:加速度計(jì)原理
評(píng)論