基於MCU的室外移動機器人組合導航定位係統
發布時間:2021-05-21 責任編輯:lina
【導讀】對於在室外環境工作的移動機器人通常使用慣導/衛星組合導航方式。慣性導航係統[1]具有完全自主、抗幹擾強、隱蔽能力好和輸出參數全麵等優點,但它的魯棒性極低,誤差會不斷隨時間累積發散。衛星導航係統具有精度高、定位範圍廣和誤差不隨時間累積等優點,但其自主性差、易受外界遮擋和幹擾、接收機數據更新頻率低等缺點。因此工程上常常將兩者互補結合使用,組成衛星/慣性組合導航係統。
對於在室外環境工作的移動機器人通常使用慣導/衛星組合導航方式。慣性導航係統[1]具有完全自主、抗幹擾強、隱蔽能力好和輸出參數全麵等優點,但它的魯棒性極低,誤差會不斷隨時間累積發散。衛星導航係統具有精度高、定位範圍廣和誤差不隨時間累積等優點,但其自主性差、易受外界遮擋和幹擾、接收機數據更新頻率低等缺點。因此工程上常常將兩者互補結合使用,組成衛星/慣性組合導航係統。
本文以低功耗MSP430F149為核心,設計了能夠同時實現衛星導航(GNSS)接收機、慣性測量單元(IMU)、氣(qi)壓(ya)高(gao)度(du)等(deng)導(dao)航(hang)信(xin)息(xi)的(de)高(gao)速(su)采(cai)集(ji)與(yu)高(gao)速(su)合(he)路(lu)傳(chuan)輸(shu),並(bing)進(jin)行(xing)初(chu)步(bu)導(dao)航(hang)定(ding)位(wei)信(xin)息(xi)融(rong)合(he)的(de)導(dao)航(hang)係(xi)統(tong),即(ji)可(ke)為(wei)室(shi)外(wai)移(yi)動(dong)機(ji)器(qi)人(ren)提(ti)供(gong)直(zhi)接(jie)的(de)導(dao)航(hang)服(fu)務(wu),也(ye)可(ke)作(zuo)為(wei)高(gao)精(jing)度(du)組(zu)合(he)導(dao)航(hang)係(xi)統(tong)的(de)原(yuan)始(shi)測(ce)量(liang)信(xin)息(xi)高(gao)速(su)采(cai)集(ji)係(xi)統(tong)。
係xi統tong設she計ji的de關guan鍵jian是shi利li用yong單dan片pian機ji有you限xian的de接jie口kou資zi源yuan實shi現xian了le多duo傳chuan感gan器qi信xin息xi並bing行xing采cai集ji,設she計ji了le有you效xiao的de數shu據ju同tong步bu方fang法fa,解jie決jue了le氣qi壓ya傳chuan感gan器qi數shu據ju手shou冊ce疏shu漏lou導dao致zhi的de無wu法fa接jie入ru問wen題ti,給gei出chu了le機ji器qi人ren組zu合he定ding位wei的de基ji本ben方fang法fa。係xi統tong充chong分fen利li用yong了leMSP430F149單片機的能力,具有結構簡單、低功耗、對傳感器具有普適性等優點。
1 總體設計
本係統由電源、氣壓計接口、IMU接口、GNSS接收機接口、SPI轉UART模塊及MSP430F149構成。係統組成如圖1所示。
組合導航係統的功能實現分為IMU數據接收與解析、GNSS數據接收與解析、氣壓計數據接收與解析、組合導航解算以及數據輸出五個部分。IMU數據接收與解析功能用來獲取導航解算中需要的加速度和角速度信息;GNSS數據接收與解析功能用來獲取導航解算中需要的位置和速度信息(鬆耦合組合)或者GNSS偽距和偽距率(緊耦合組合);氣壓計數據接收與解析功能用來獲取高度信息;組合導航解算功能為係統核心,用來進行組合導航解算;數據的輸出包括原始數據包的整合輸出和解算結果的輸出。

圖1 係統組成結構圖
本文所使用的慣性器件和GNSS接收機都是RS-232電平的UART接口,具有通用性,用戶可根據成本考慮不同精度的設備。氣壓計選用美國MEAS公司生產的MS5803-02BA,已經固化在電路中。
2 硬件電路設計
2.1微控製器接口
整個組合導航定位係統需要三個UART接口和兩個SPI接口。其中兩個UART接口由430單片機自帶的UART資源提供,另外一個UART接口由GPIO模擬SPI通過MAX3111E芯片轉化得到;兩個SPI接口由GPIO模擬得到。另外需要一個外部中斷引腳捕獲秒脈衝信號(PPS)、一個外部中斷引腳捕獲MAX3111E中斷信號。MSP430F149管腳資源分配如表1所示。

2.2電源電路
本係統供電需求為3.3V供電,因此采用AMS1117穩壓芯片,接入5V電源即可輸出3.3V穩定電壓,可提供1A電流,滿足係統供電需求。電路設計如圖2所示。

圖2 電源電路
2.3 IMU器件及GNSS接收機接口電路
IMU器件及GNSS接收機都采用UART接口方式接入,采用RS232協議。因此可使用430單片機上自帶的兩個UART接口,但是需要進行TTL電平與RS232電平轉換。這裏采用常見的MAX3232芯片,電路設計如圖3所示。

圖3 IMU及GNSS接口電路
2.4 氣壓計MS5803-02BA接口電路
MS5803-02BA[3]是由MEAS公司生產的數字壓力傳感器,分辨率達10cm。芯片內部包含一個高線性的壓力傳感器和一個內部工廠標定係數的超低功耗24位ΔΣ型ADC。該款芯片有SPI和I2C兩種接口方式,通過芯片的PS引腳配置了選擇不同的接口方式(PS置低時,采用SPI工作模式;PS置高時,采用I2C工作模式)。本文所闡述的定位係統將氣壓計配置為SPI工作模式。MS5803-02BA與微控製器間的接口電路設計如圖4所示。

圖4 MS5803-02BA接口電路
MS5803-02BA的控製命令包括複位命令、溫度ADC命令、氣壓ADC命令、ADC讀取命令、PROM讀取命令。控製命令如表2所示。
控製命令通過SDI口移位輸入,響應結果從SDOyiweishuchu。shurudedianpingpandingzaishizhongxinhaodeshangshengyan,shuchudedianpingpandingzaishizhongxinhaodexiajiangyan。shuchudeqiyazhikeyijinxingwendubuchang,xuyaoliyongxinpianneibuPROM中的係數來補償。ADC讀取命令輸入之後,輸出24位ADC結果;PROM讀取命令輸入之後,輸出16位補償係數。

下麵是讀取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置高
結合器件的使用手冊及手冊疏漏的地方,使用MS5803-02BA時需要注意:
1、溫度和氣壓ADC命令發送之後,芯片內部需要一定的時間進行采樣轉換,具體時間與過采樣率(OSR)有關,最大需求時間為10ms,因此本文采用的延時時間為10ms;
2、片選信號CS的下降沿到時鍾SCLK信號的第一個上升沿至少要有21ns的時間延遲,否則命令無法正確寫入芯片;
3、8位的ADC讀取命令之後,必須保持CS片選信號持續為低,再產生24位時鍾信號輸入,將24位的ADC結果讀取出來(即一個命令字為8位,但實際需要32個連續的時鍾周期才能完整讀取ADC結果);
4、對於PROM讀取命令同ADC讀取命令,一共需要24個連續的時鍾周期完成,其中8位命令字輸入,16位數據讀出。
5、對於所有從SDO移位輸出數據的同時,都需要SDI輸入端保持低電平。
2.5 SPI轉UART電路
由於MSP430F149的片上UART資源都被IMU器件和GNSS接收機占用,因此需要擴充一個UART接口才能滿足定位係統與PC機間的通信。為此將MSP430F149上的GPIO模擬SPI,再通過MAX3111E芯片轉成UART接口。
MAX3111E是MAXIM公司推出的全功能收發器,內部包含UART和RS232電平轉換兩個獨立的部分。UART部分包括兼容於SPI的串行接口、可編程波特率發生器、發送移位寄存器、接收移位寄存器、8字長的FIFO以及4種可屏蔽中斷發生器;RS232部分包括電泵電容、硬件關斷(SHDN管腳),具有±15kV靜電保護作用。它可以選擇1.8432MHz或3.6864MHz兩種晶振作為外部晶振,芯片能夠工作在300bps~230kbps波特率,本文使用的是3.6864MHz晶振。MAX3111E與MSP430F149連接電路如圖5。

圖5 SPI轉UART電路
MAX3111E的控製命令分為寫配置命令、讀配置命令、寫數據命令以及讀數據命令四種。本文寫入芯片的配置命令是0xE809,8bit數據長度、使能FIFO、發送中斷使能、波特率38400bps。數據的寫入需要在每個字節前麵加上0x81,例如若要發送字節0x55,則需要從DIN端移位輸入0x8155。
下麵是連續發送n個字節的C語言代碼:
SPI_WRITE_16BIT(0xE809);//寫配置命令
delay_ms(10);//延時10ms
SPI_WRITE_16BIT(0x8100+DATA1);//發送第1個數據DATA1
delay_ns(250);//延時250ns
SPI_WRITE_16BIT(0x8100+DATA2);//發送第2個數據DATA2
……
delay_ns(250);//延時250ns
SPI_WRITE_16BIT(0x8100+DATAn);//發送第n個數據DATAn
使用MAX3111E時需要注意:
1、片選信號CS的下降沿到時鍾SCLK信號的第一個上升沿至少要有100ns的時間延遲;
2、芯片判定片選信號CS失效時,需要CS管腳保持高電平的時間至少為200ns。因此當需要連續發送數據時,兩個寫數據命令之間至少需要200ns,建議間隔250ns;
3、寫xie配pei置zhi命ming令ling需xu要yao晶jing振zhen工gong作zuo穩wen定ding,因yin此ci可ke以yi在zai寫xie配pei置zhi命ming令ling後hou再zai讀du配pei置zhi,直zhi到dao寫xie入ru和he讀du出chu的de配pei置zhi數shu據ju相xiang應ying位wei相xiang同tong時shi才cai保bao證zheng芯xin片pian按an需xu求qiu配pei置zhi完wan畢bi。
3 軟件設計
3.1 GPIO模擬SPI實現方法
使用GPIO模擬SPI,對選定的IO口進行時序上的電平操作,模擬出SPI時序。本文將SPI的電平操作采用宏定義的方式,可參考表3中的源代碼。

程序按照SPI邏輯關係使用上述的宏定義,可以在選定的IO端口產生SPI信號,並且可以靈活的控製每個CS有效期間的時鍾數。使用GPIO模擬的SPI具有操作直觀、靈活可變等優點。相比較模擬得到的SPI,控製器上自帶的SPI接口基本不占用控製器資源,發送和接收的移位、時鍾信號的產生都交由內部SPI模塊處理。而GPIO模擬的SPI需要控製器不斷對IO進行操作,因此會占用控製器處理時間。時鍾信號也因對電平操作消耗機器周期,導致時鍾信號速度有限。
3.2 數據的采集和處理方法
IMU和GNSS接收機的數據會主動發送到430單片機的UART接口,本文采用中斷接收的方式接收數據,將每次到來的一個字節循環存儲在指定的存儲區;氣壓計需要430單片機查詢式獲取高度信息。因此當需求IMU或者GNSS信息的時候,需要在存儲區內掃描數據,掃描依據是設備發送一幀數據的協議(幀頭、幀尾、CRC等),再根據協議獲取相應物理量的數值;當需要高度信息的時候,需要430單片機對氣壓計發送控製字獲取信息。在對IMU和GNSS信息掃描時需要一個變量ptr保存有效數據的首地址在存儲區內的偏移地址,為了不重複使用已用數據,需要在利用完信息後,破壞這一幀有效數據的幀頭幀尾。
另外需要注意,使用循環存儲數據和掃描取用這種方式,需要數據的處理速度比數據的接收速度快,否則舊數據會被新數據覆蓋。
3.3 高度計算方法
高度信息的獲取需要通過MS5803-02BA獲取的氣壓信息轉換得到。對這款氣壓計的操作,需要先在芯片內部的PROM獲取C1~C6六個參數,再獲取溫度ADC結果D1和氣壓ADC結果D2,最後利用官方提供的計算公式計算得到帶補償的氣壓值。氣壓值獲取的軟件流程圖如圖6。

圖6 高度計算流程圖
按照氣壓計的用戶手冊中提供的計算公式,最後可以計算得到一個經過溫度補償的標準氣壓值,單位mbar。高度信息的獲取還需要將氣壓值經過函數關係轉換。高度h和標準大氣P之間有如下函數關係:

Th=288.15K,是g0對應高度下的溫度下限值;β=-6.5K/km,是溫度的垂直變化率;H=0m,是g0對應的高度;Ph=101325Pa,是g0對應高度下的氣壓下限值;R=287.05287m2/(K●s2),是氣體常數;g0=9.80665m/s2,是海平麵重力加速度。
在氣壓與高度的關係轉換中,本文采用分段線性化的方法擬合它們的非線性關係。在不同氣壓值區間內,線性化公式得到h=a●P+b,取得不同的線性參數a、b,參考表4。

3.4 組合導航的時間對準
進行組合導航濾波解算時,從IMU和GNSS接收機接收到的數據在時間上應該是同步的,因為如果在一個數據融合點上,進入Kalman濾波器的來自兩個子係統中的數據來自不同的時間點,會給濾波計算帶來誤差,同時也會給校正計算帶來影響。GNSS接收機輸出的導航數據都帶有精確的時間標簽,而從 IMU 輸出的數據隻有一個相對時間標簽。以GNSS接收機的時間標簽作為時間基準,分析時間差的組成。係統時間示意圖如圖7所示。

圖7 係統時鍾示意圖
3.4.1 時間差分析
當一個GNSS數據(1Hz)到來時,接收機產生一個秒脈衝信號(PPS),用於時間對準。GNSS接收機本身存在數據時延:接收機整個計算過程會產生一個解算時間延遲△t1、從衛星導航接收機和慣導係統輸出的數據分別經過McBSP和RS-232數據接口輸入導航解算處理器會產生一定的傳輸延遲△t2。因此在PPS信號前的△t1+△t2時刻才是當前接收到的GNSS數據幀的真實時刻。IMU數據處理時間相對於遞推時間來說很小,可以忽略。另外PPS脈衝信號和慣性測量信號之間的時間差△τ,它描述GNSS絕對時間和IMU相對時間之間的關係,使得GNSS和IMU統一在同一個時間標準下。
3.4.2 處理思想
根據總時間差△T =△t1+△t2+△τ,找到IMU數據對應的插值時刻。通過時間△T就可以獲得對準時間點與最近的兩個慣性采集時刻,其後對時間同步點兩側時間點上,即圖中t(k-1)和t(k)時間點的慣性數據進行線性插值運算,就可以獲得了慣導數據和GNSS接收機數據在同一時間點上的同步化測量數據。
3.4.3 實施方法
GNSS接收機解算時間△t1由接收機提供。
傳輸時間△t2通常為一個固定時間,使用示波器分別測量GNSS接收機發送時間和導航解算電路的接收時間,再將兩個時間作差即可獲得。
△τ的獲取需要開啟MSP430F149的計時器和外部中斷,通過中斷計時的方式獲得。具體方法是:通過將PPS信號接入導航處理器的外部中斷接口,采用邊沿觸發方式觸發中斷事件的發生。中斷事件啟動計時器工作。當通過串口中斷方式接收到IMU數據時,讀取計時器的值,即可得到IMU數據相對於PPS的延遲時間△τ。
結論
本文基於MSP430F149單片機設計的室外移動機器人組合導航定位係統,通過接口的擴展使得該款定位係統能夠接入IMU、GNSS接收機、qiyajisanluxinxi,wanchengchubudaohangdingweifuwugongneng,tongshikezuoweiduolushujucaijishebei,jiangduolushujuzhenghedaoyilugaosushuchujiekou,yongyujinyibudegaojingdudaohangjiesuan。gaixitonggenjushiyongzhedexuqiubutong,kejierubutongchengbenhejingdudeshebei,zhiyaomanzuRS-232協議即可。筆者將其實際運用,整個係統充分利用該款單片機的資源,結構簡單、功耗低、適用範圍廣,不僅可作為初步導航定位服務的設備,還可作為多路數據采集設備。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請電話或者郵箱聯係小編進行侵刪。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
- 電源芯片國產化新選擇:MUN3CAD03-SF助力物聯網終端“芯”升級
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
逆變器
逆導可控矽
鎳鎘電池
鎳氫電池
紐扣電池
歐勝
耦合技術
排電阻
排母連接器
排針連接器
片狀電感
偏光片
偏轉線圈
頻率測量儀
頻率器件
頻譜測試儀
平板電腦
平板顯示器
齊納二極管
氣動工具
氣體傳感器
氣體放電管
汽車電子
汽車繼電器
汽車連接器
牆壁開關
翹板開關
驅動模塊
燃料電池
繞線電感



