圖1 系統(tǒng)組成結(jié)構(gòu)圖
基于MCU的室外移動機器人組合導(dǎo)航定位系統(tǒng)
發(fā)布時間:2021-05-21 責(zé)任編輯:lina
【導(dǎo)讀】對于在室外環(huán)境工作的移動機器人通常使用慣導(dǎo)/衛(wèi)星組合導(dǎo)航方式。慣性導(dǎo)航系統(tǒng)[1]具有完全自主、抗干擾強、隱蔽能力好和輸出參數(shù)全面等優(yōu)點,但它的魯棒性極低,誤差會不斷隨時間累積發(fā)散。衛(wèi)星導(dǎo)航系統(tǒng)具有精度高、定位范圍廣和誤差不隨時間累積等優(yōu)點,但其自主性差、易受外界遮擋和干擾、接收機數(shù)據(jù)更新頻率低等缺點。因此工程上常常將兩者互補結(jié)合使用,組成衛(wèi)星/慣性組合導(dǎo)航系統(tǒng)。
對于在室外環(huán)境工作的移動機器人通常使用慣導(dǎo)/衛(wèi)星組合導(dǎo)航方式。慣性導(dǎo)航系統(tǒng)[1]具有完全自主、抗干擾強、隱蔽能力好和輸出參數(shù)全面等優(yōu)點,但它的魯棒性極低,誤差會不斷隨時間累積發(fā)散。衛(wèi)星導(dǎo)航系統(tǒng)具有精度高、定位范圍廣和誤差不隨時間累積等優(yōu)點,但其自主性差、易受外界遮擋和干擾、接收機數(shù)據(jù)更新頻率低等缺點。因此工程上常常將兩者互補結(jié)合使用,組成衛(wèi)星/慣性組合導(dǎo)航系統(tǒng)。
本文以低功耗MSP430F149為核心,設(shè)計了能夠同時實現(xiàn)衛(wèi)星導(dǎo)航(GNSS)接收機、慣性測量單元(IMU)、氣壓高度等導(dǎo)航信息的高速采集與高速合路傳輸,并進行初步導(dǎo)航定位信息融合的導(dǎo)航系統(tǒng),即可為室外移動機器人提供直接的導(dǎo)航服務(wù),也可作為高精度組合導(dǎo)航系統(tǒng)的原始測量信息高速采集系統(tǒng)。
系統(tǒng)設(shè)計的關(guān)鍵是利用單片機有限的接口資源實現(xiàn)了多傳感器信息并行采集,設(shè)計了有效的數(shù)據(jù)同步方法,解決了氣壓傳感器數(shù)據(jù)手冊疏漏導(dǎo)致的無法接入問題,給出了機器人組合定位的基本方法。系統(tǒng)充分利用了MSP430F149單片機的能力,具有結(jié)構(gòu)簡單、低功耗、對傳感器具有普適性等優(yōu)點。
1 總體設(shè)計
本系統(tǒng)由電源、氣壓計接口、IMU接口、GNSS接收機接口、SPI轉(zhuǎn)UART模塊及MSP430F149構(gòu)成。系統(tǒng)組成如圖1所示。
組合導(dǎo)航系統(tǒng)的功能實現(xiàn)分為IMU數(shù)據(jù)接收與解析、GNSS數(shù)據(jù)接收與解析、氣壓計數(shù)據(jù)接收與解析、組合導(dǎo)航解算以及數(shù)據(jù)輸出五個部分。IMU數(shù)據(jù)接收與解析功能用來獲取導(dǎo)航解算中需要的加速度和角速度信息;GNSS數(shù)據(jù)接收與解析功能用來獲取導(dǎo)航解算中需要的位置和速度信息(松耦合組合)或者GNSS偽距和偽距率(緊耦合組合);氣壓計數(shù)據(jù)接收與解析功能用來獲取高度信息;組合導(dǎo)航解算功能為系統(tǒng)核心,用來進行組合導(dǎo)航解算;數(shù)據(jù)的輸出包括原始數(shù)據(jù)包的整合輸出和解算結(jié)果的輸出。
圖1 系統(tǒng)組成結(jié)構(gòu)圖
本文所使用的慣性器件和GNSS接收機都是RS-232電平的UART接口,具有通用性,用戶可根據(jù)成本考慮不同精度的設(shè)備。氣壓計選用美國MEAS公司生產(chǎn)的MS5803-02BA,已經(jīng)固化在電路中。
2 硬件電路設(shè)計
2.1微控制器接口
整個組合導(dǎo)航定位系統(tǒng)需要三個UART接口和兩個SPI接口。其中兩個UART接口由430單片機自帶的UART資源提供,另外一個UART接口由GPIO模擬SPI通過MAX3111E芯片轉(zhuǎn)化得到;兩個SPI接口由GPIO模擬得到。另外需要一個外部中斷引腳捕獲秒脈沖信號(PPS)、一個外部中斷引腳捕獲MAX3111E中斷信號。MSP430F149管腳資源分配如表1所示。
2.2電源電路
本系統(tǒng)供電需求為3.3V供電,因此采用AMS1117穩(wěn)壓芯片,接入5V電源即可輸出3.3V穩(wěn)定電壓,可提供1A電流,滿足系統(tǒng)供電需求。電路設(shè)計如圖2所示。
圖2 電源電路
2.3 IMU器件及GNSS接收機接口電路
IMU器件及GNSS接收機都采用UART接口方式接入,采用RS232協(xié)議。因此可使用430單片機上自帶的兩個UART接口,但是需要進行TTL電平與RS232電平轉(zhuǎn)換。這里采用常見的MAX3232芯片,電路設(shè)計如圖3所示。
圖3 IMU及GNSS接口電路
2.4 氣壓計MS5803-02BA接口電路
MS5803-02BA[3]是由MEAS公司生產(chǎn)的數(shù)字壓力傳感器,分辨率達10cm。芯片內(nèi)部包含一個高線性的壓力傳感器和一個內(nèi)部工廠標(biāo)定系數(shù)的超低功耗24位ΔΣ型ADC。該款芯片有SPI和I2C兩種接口方式,通過芯片的PS引腳配置了選擇不同的接口方式(PS置低時,采用SPI工作模式;PS置高時,采用I2C工作模式)。本文所闡述的定位系統(tǒng)將氣壓計配置為SPI工作模式。MS5803-02BA與微控制器間的接口電路設(shè)計如圖4所示。
圖4 MS5803-02BA接口電路
MS5803-02BA的控制命令包括復(fù)位命令、溫度ADC命令、氣壓ADC命令、ADC讀取命令、PROM讀取命令??刂泼钊绫?所示。
控制命令通過SDI口移位輸入,響應(yīng)結(jié)果從SDO移位輸出。輸入的電平判定在時鐘信號的上升沿,輸出的電平判定在時鐘信號的下降沿。輸出的氣壓值可以進行溫度補償,需要利用芯片內(nèi)部PROM中的系數(shù)來補償。ADC讀取命令輸入之后,輸出24位ADC結(jié)果;PROM讀取命令輸入之后,輸出16位補償系數(shù)。
下面是讀取ADC的C語言代碼:
CSN_OFF_MS();//CS置低
SPI_WRITE_8BIT(CMD);//SDI移入8位CMD
delay_ms(10); //延時10ms
CSN_ON_MS();//CS置高
CSN_OFF_MS();//CS置低
SPI_WRITE_8BIT(0x00);//SDI移入8位0x00
result = SPI_READ_24BIT();//SDO移出24位
CSN_ON_MS();//CS置高
下面是讀取PROM的C語言代碼:
CSN_OFF_MS();//CS置低
SPI_WRITE_8BIT(CMD); //SDI移入8位CMD
result=SPI_READ_16BIT();//SDO移出24位
CSN_ON_MS();//CS置高
結(jié)合器件的使用手冊及手冊疏漏的地方,使用MS5803-02BA時需要注意:
1、溫度和氣壓ADC命令發(fā)送之后,芯片內(nèi)部需要一定的時間進行采樣轉(zhuǎn)換,具體時間與過采樣率(OSR)有關(guān),最大需求時間為10ms,因此本文采用的延時時間為10ms;
2、片選信號CS的下降沿到時鐘SCLK信號的第一個上升沿至少要有21ns的時間延遲,否則命令無法正確寫入芯片;
3、8位的ADC讀取命令之后,必須保持CS片選信號持續(xù)為低,再產(chǎn)生24位時鐘信號輸入,將24位的ADC結(jié)果讀取出來(即一個命令字為8位,但實際需要32個連續(xù)的時鐘周期才能完整讀取ADC結(jié)果);
4、對于PROM讀取命令同ADC讀取命令,一共需要24個連續(xù)的時鐘周期完成,其中8位命令字輸入,16位數(shù)據(jù)讀出。
5、對于所有從SDO移位輸出數(shù)據(jù)的同時,都需要SDI輸入端保持低電平。
2.5 SPI轉(zhuǎn)UART電路
由于MSP430F149的片上UART資源都被IMU器件和GNSS接收機占用,因此需要擴充一個UART接口才能滿足定位系統(tǒng)與PC機間的通信。為此將MSP430F149上的GPIO模擬SPI,再通過MAX3111E芯片轉(zhuǎn)成UART接口。
MAX3111E是MAXIM公司推出的全功能收發(fā)器,內(nèi)部包含UART和RS232電平轉(zhuǎn)換兩個獨立的部分。UART部分包括兼容于SPI的串行接口、可編程波特率發(fā)生器、發(fā)送移位寄存器、接收移位寄存器、8字長的FIFO以及4種可屏蔽中斷發(fā)生器;RS232部分包括電泵電容、硬件關(guān)斷(SHDN管腳),具有±15kV靜電保護作用。它可以選擇1.8432MHz或3.6864MHz兩種晶振作為外部晶振,芯片能夠工作在300bps~230kbps波特率,本文使用的是3.6864MHz晶振。MAX3111E與MSP430F149連接電路如圖5。
圖5 SPI轉(zhuǎn)UART電路
MAX3111E的控制命令分為寫配置命令、讀配置命令、寫數(shù)據(jù)命令以及讀數(shù)據(jù)命令四種。本文寫入芯片的配置命令是0xE809,8bit數(shù)據(jù)長度、使能FIFO、發(fā)送中斷使能、波特率38400bps。數(shù)據(jù)的寫入需要在每個字節(jié)前面加上0x81,例如若要發(fā)送字節(jié)0x55,則需要從DIN端移位輸入0x8155。
下面是連續(xù)發(fā)送n個字節(jié)的C語言代碼:
SPI_WRITE_16BIT(0xE809);//寫配置命令
delay_ms(10);//延時10ms
SPI_WRITE_16BIT(0x8100+DATA1);//發(fā)送第1個數(shù)據(jù)DATA1
delay_ns(250);//延時250ns
SPI_WRITE_16BIT(0x8100+DATA2);//發(fā)送第2個數(shù)據(jù)DATA2
……
delay_ns(250);//延時250ns
SPI_WRITE_16BIT(0x8100+DATAn);//發(fā)送第n個數(shù)據(jù)DATAn
使用MAX3111E時需要注意:
1、片選信號CS的下降沿到時鐘SCLK信號的第一個上升沿至少要有100ns的時間延遲;
2、芯片判定片選信號CS失效時,需要CS管腳保持高電平的時間至少為200ns。因此當(dāng)需要連續(xù)發(fā)送數(shù)據(jù)時,兩個寫數(shù)據(jù)命令之間至少需要200ns,建議間隔250ns;
3、寫配置命令需要晶振工作穩(wěn)定,因此可以在寫配置命令后再讀配置,直到寫入和讀出的配置數(shù)據(jù)相應(yīng)位相同時才保證芯片按需求配置完畢。
3 軟件設(shè)計
3.1 GPIO模擬SPI實現(xiàn)方法
使用GPIO模擬SPI,對選定的IO口進行時序上的電平操作,模擬出SPI時序。本文將SPI的電平操作采用宏定義的方式,可參考表3中的源代碼。
程序按照SPI邏輯關(guān)系使用上述的宏定義,可以在選定的IO端口產(chǎn)生SPI信號,并且可以靈活的控制每個CS有效期間的時鐘數(shù)。使用GPIO模擬的SPI具有操作直觀、靈活可變等優(yōu)點。相比較模擬得到的SPI,控制器上自帶的SPI接口基本不占用控制器資源,發(fā)送和接收的移位、時鐘信號的產(chǎn)生都交由內(nèi)部SPI模塊處理。而GPIO模擬的SPI需要控制器不斷對IO進行操作,因此會占用控制器處理時間。時鐘信號也因?qū)﹄娖讲僮飨臋C器周期,導(dǎo)致時鐘信號速度有限。
3.2 數(shù)據(jù)的采集和處理方法
IMU和GNSS接收機的數(shù)據(jù)會主動發(fā)送到430單片機的UART接口,本文采用中斷接收的方式接收數(shù)據(jù),將每次到來的一個字節(jié)循環(huán)存儲在指定的存儲區(qū);氣壓計需要430單片機查詢式獲取高度信息。因此當(dāng)需求IMU或者GNSS信息的時候,需要在存儲區(qū)內(nèi)掃描數(shù)據(jù),掃描依據(jù)是設(shè)備發(fā)送一幀數(shù)據(jù)的協(xié)議(幀頭、幀尾、CRC等),再根據(jù)協(xié)議獲取相應(yīng)物理量的數(shù)值;當(dāng)需要高度信息的時候,需要430單片機對氣壓計發(fā)送控制字獲取信息。在對IMU和GNSS信息掃描時需要一個變量ptr保存有效數(shù)據(jù)的首地址在存儲區(qū)內(nèi)的偏移地址,為了不重復(fù)使用已用數(shù)據(jù),需要在利用完信息后,破壞這一幀有效數(shù)據(jù)的幀頭幀尾。
另外需要注意,使用循環(huán)存儲數(shù)據(jù)和掃描取用這種方式,需要數(shù)據(jù)的處理速度比數(shù)據(jù)的接收速度快,否則舊數(shù)據(jù)會被新數(shù)據(jù)覆蓋。
3.3 高度計算方法
高度信息的獲取需要通過MS5803-02BA獲取的氣壓信息轉(zhuǎn)換得到。對這款氣壓計的操作,需要先在芯片內(nèi)部的PROM獲取C1~C6六個參數(shù),再獲取溫度ADC結(jié)果D1和氣壓ADC結(jié)果D2,最后利用官方提供的計算公式計算得到帶補償?shù)臍鈮褐怠鈮褐但@取的軟件流程圖如圖6。
圖6 高度計算流程圖
按照氣壓計的用戶手冊中提供的計算公式,最后可以計算得到一個經(jīng)過溫度補償?shù)臉?biāo)準(zhǔn)氣壓值,單位mbar。高度信息的獲取還需要將氣壓值經(jīng)過函數(shù)關(guān)系轉(zhuǎn)換。高度h和標(biāo)準(zhǔn)大氣P之間有如下函數(shù)關(guān)系:
Th=288.15K,是g0對應(yīng)高度下的溫度下限值;β=-6.5K/km,是溫度的垂直變化率;H=0m,是g0對應(yīng)的高度;Ph=101325Pa,是g0對應(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)航的時間對準(zhǔn)
進行組合導(dǎo)航濾波解算時,從IMU和GNSS接收機接收到的數(shù)據(jù)在時間上應(yīng)該是同步的,因為如果在一個數(shù)據(jù)融合點上,進入Kalman濾波器的來自兩個子系統(tǒng)中的數(shù)據(jù)來自不同的時間點,會給濾波計算帶來誤差,同時也會給校正計算帶來影響。GNSS接收機輸出的導(dǎo)航數(shù)據(jù)都帶有精確的時間標(biāo)簽,而從 IMU 輸出的數(shù)據(jù)只有一個相對時間標(biāo)簽。以GNSS接收機的時間標(biāo)簽作為時間基準(zhǔn),分析時間差的組成。系統(tǒng)時間示意圖如圖7所示。
圖7 系統(tǒng)時鐘示意圖
3.4.1 時間差分析
當(dāng)一個GNSS數(shù)據(jù)(1Hz)到來時,接收機產(chǎn)生一個秒脈沖信號(PPS),用于時間對準(zhǔn)。GNSS接收機本身存在數(shù)據(jù)時延:接收機整個計算過程會產(chǎn)生一個解算時間延遲△t1、從衛(wèi)星導(dǎo)航接收機和慣導(dǎo)系統(tǒng)輸出的數(shù)據(jù)分別經(jīng)過McBSP和RS-232數(shù)據(jù)接口輸入導(dǎo)航解算處理器會產(chǎn)生一定的傳輸延遲△t2。因此在PPS信號前的△t1+△t2時刻才是當(dāng)前接收到的GNSS數(shù)據(jù)幀的真實時刻。IMU數(shù)據(jù)處理時間相對于遞推時間來說很小,可以忽略。另外PPS脈沖信號和慣性測量信號之間的時間差△τ,它描述GNSS絕對時間和IMU相對時間之間的關(guān)系,使得GNSS和IMU統(tǒng)一在同一個時間標(biāo)準(zhǔn)下。
3.4.2 處理思想
根據(jù)總時間差△T =△t1+△t2+△τ,找到IMU數(shù)據(jù)對應(yīng)的插值時刻。通過時間△T就可以獲得對準(zhǔn)時間點與最近的兩個慣性采集時刻,其后對時間同步點兩側(cè)時間點上,即圖中t(k-1)和t(k)時間點的慣性數(shù)據(jù)進行線性插值運算,就可以獲得了慣導(dǎo)數(shù)據(jù)和GNSS接收機數(shù)據(jù)在同一時間點上的同步化測量數(shù)據(jù)。
3.4.3 實施方法
GNSS接收機解算時間△t1由接收機提供。
傳輸時間△t2通常為一個固定時間,使用示波器分別測量GNSS接收機發(fā)送時間和導(dǎo)航解算電路的接收時間,再將兩個時間作差即可獲得。
△τ的獲取需要開啟MSP430F149的計時器和外部中斷,通過中斷計時的方式獲得。具體方法是:通過將PPS信號接入導(dǎo)航處理器的外部中斷接口,采用邊沿觸發(fā)方式觸發(fā)中斷事件的發(fā)生。中斷事件啟動計時器工作。當(dāng)通過串口中斷方式接收到IMU數(shù)據(jù)時,讀取計時器的值,即可得到IMU數(shù)據(jù)相對于PPS的延遲時間△τ。
結(jié)論
本文基于MSP430F149單片機設(shè)計的室外移動機器人組合導(dǎo)航定位系統(tǒng),通過接口的擴展使得該款定位系統(tǒng)能夠接入IMU、GNSS接收機、氣壓計三路信息,完成初步導(dǎo)航定位服務(wù)功能,同時可作為多路數(shù)據(jù)采集設(shè)備,將多路數(shù)據(jù)整合到一路高速輸出接口,用于進一步的高精度導(dǎo)航解算。該系統(tǒng)根據(jù)使用者的需求不同,可接入不同成本和精度的設(shè)備,只要滿足RS-232協(xié)議即可。筆者將其實際運用,整個系統(tǒng)充分利用該款單片機的資源,結(jié)構(gòu)簡單、功耗低、適用范圍廣,不僅可作為初步導(dǎo)航定位服務(wù)的設(shè)備,還可作為多路數(shù)據(jù)采集設(shè)備。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請電話或者郵箱聯(lián)系小編進行侵刪。
特別推薦
- 增強視覺傳感器功能:3D圖像拼接算法幫助擴大視場
- PNP 晶體管:特性和應(yīng)用
- 使用IO-Link收發(fā)器管理數(shù)據(jù)鏈路如何簡化微控制器選擇
- 用好 DMA控制器這兩種模式 MCU效率大大提高!
- 深入分析帶耦合電感多相降壓轉(zhuǎn)換器的電壓紋波問題
- Honda(本田)與瑞薩簽署協(xié)議,共同開發(fā)用于軟件定義汽車的高性能SoC
- 第13講:超小型全SiC DIPIPM
技術(shù)文章更多>>
- TCL實業(yè)攬獲多項CES 2025科技大獎,蟬聯(lián)全球消費電子品牌TOP10
- 利用高性能電壓監(jiān)控器提高工業(yè)功能安全合規(guī)性——第1部分
- 芯耀輝:從傳統(tǒng)IP到IP2.0,AI時代國產(chǎn)IP機遇與挑戰(zhàn)齊飛
- 解決模擬輸入IEC系統(tǒng)保護問題
- 當(dāng)過壓持續(xù)較長時間時,使用開關(guān)浪涌抑制器
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
精密電阻
精密工具
景佑能源
聚合物電容
君耀電子
開發(fā)工具
開關(guān)
開關(guān)電源
開關(guān)電源電路
開關(guān)二極管
開關(guān)三極管
科通
可變電容
可調(diào)電感
可控硅
空心線圈
控制變壓器
控制模塊
藍牙
藍牙4.0
藍牙模塊
浪涌保護器
雷度電子
鋰電池
利爾達
連接器
流量單位
漏電保護器
濾波電感
濾波器