文章摘要: 杭電極客|基於UWB與慣性導航的室內定位技術 基於UWB與慣性導航的室內定位技術 專案摘要 在衛星訊號無法覆蓋的室內條件下利用各個資料所在矩陣內的位置進行呼叫
原標題:杭電極客|基於UWB與慣性導航的室內定位技術
基於UWB與慣性導航的室內定位技術
專案摘要
在衛星訊號無法覆蓋的室內條件下,室內的精確定位問題是當前研究的熱點。衆所周知,室內定位如今主要採用無線通訊、慣導定位等多種技術整合形成室內位置定位系統,常見的室內無線定位技術主要有WiFi、藍芽、ZigBee等。本次我們採用UWB-Ultra Wideband(超寬頻技術)來實現室內定位功能。
在室內定位過程中,UWB 具有釐米級的定位精度,良好的抗多路徑效能,較低的發射功率及一定的穿透能力,與其他定位技術相比優勢顯著。但UWB在非視距環境下易受到干擾,我們的專案通過UWB與慣導系統進行融合演算法,以 UWB 修正慣導系統的航向與位置,同時在 UWB 受干擾定位出現偏差時,利用慣導保證定位的準確性實現低成本高精度的室內導航。最後通過matlab進行資料的模擬,將定位點實時展示在地圖之中。
一、專案介紹
UWB(超寬頻無線技術)是當前國內外定位領域 研究熱點之一。在室內定位過程中,UWB 具有釐米級的定位精度,良好的抗多路徑效能,較低的發射功率及一定的穿透能力,與 WiFi、ZigBee、RFID等室內定位技術相比優勢顯著。但是UWB的定位訊號容易受到牆體、桌子、貨架、金屬櫃等障礙物的減損,導致定位出現偏差。我們的專案通過UWB與慣導通過卡爾曼濾波進行演算法的融合,以 UWB 修正慣導系統的航向與位置,同時在 UWB 受干擾定位出現偏差時,利用慣導保證定位的準確性實現低成本高精度的室內導航,以適用於無人機,行人等移動物體的高精度定位應用。
二、市場應用
我們的專案將UWB與慣導進行融合,可以實現移動物體在室內實時的高精度定位,定姿,可以用於一下幾種應用:
1. 用於無人機的室內定位導航與自動作業。無人機在室內環境下的室內自動作業或者在非人可視的情況下飛行,需要採集無人機精確的定位與飛行姿態,我們的定位系統可以很好的滿足這個要求。
2. 用於行人在室內環境下的定位。在大型的商場或者展覽管中,由於GPS定位訊號收到干擾影響,人們難以知曉自己的實際位置,並且地圖提供的位置資訊又太過具體複雜。而我們的定位系統可以實時檢測位置資訊,並分析行人走路時的方位、速度等資訊。
3. 用於室內智慧家居機器人的合理作業。近年來傢俱機器人正不斷髮展普及,如掃地機器人等。但像該類機器人在室內作業時,通常都是較為隨機的對室內進行打掃,導致打掃效率不到,若結合我們的室內定位系統,便可以通過位置資訊合理規劃作業路線,提高智慧機器人的工作效率。
三、技術方案
3.1硬體技術
3.1.1模組簡介
UWB模組採用的是研創物聯開發的UWBMini3s,該模組由4個基站(A0、A1、A2、A3)和一個標籤(TAG)組成。UWBMini 3s 採用了STM32F103T8U6 微控制器為主控晶片。外圍電路包括:DW1000晶片、電源模組、LED 指示模組、復位電路等。該模組既可以作為基站,也可以作為標籤,通過USB 指令進行切換。
UWB的測距原理為雙向飛行時間法(TW-TOF,two way-time of flight)。在UWB每個模組從啟動開始即會生成一條獨立的時間戳。模組A 的發射機在其時間戳上的Ta1發射請求性質的脈衝訊號,模組B在Tb2時刻發射一個響應性質的訊號,被模組A在自己的時間戳Ta2時刻接收。有次可以計算出脈衝訊號在兩個模組之間的飛行時間,從而確定飛行距離S。
3.1.2UWB的初始化配置
在UWB使用之前,要對其進行初始化,配置各個模組的模式、地址、傳輸速率與傳輸模式
在使用之前,我們將UWBMini3s通過UWB線連線到電腦,通過XCOM傳送AT指令進行配置。
3.1.3UWB的產品化開發
我們使用的現場環境都是不同的,受經緯度、空氣質量、環境障礙物等各種因素的干擾,所以在產品化的過程中,必須要對模組進行校準,以提高UWB的精準度。校準需要通過1 個Anchor 和1 個Tag 的測距,得到修正係數。並利用Microsoft 2016 Excel 軟體,進行資料擬合,並生成擬合公式
測距值存在instancegetidist_mm(0), instancegetidist_mm(1), instancegetidist_mm(2), instancegetidist_mm(3),這四個變數裡,每個距離,都需要代入剛纔計算出來的校準公式內。並在程式碼的相應位置新增上擬合公式。
然後將程式下載到和電腦連線的UWB 模組裡即可。最後基站A0或者標籤TAG通過USB與電腦連線,便可接受到標籤與各個基站之間的距離。
3.2軟件技術
3.2.1MPU9250積分得到速度及位移
通過MPU9250得出的加速度值並非真實加速度值,而是真實加速度值與重力加速度的合加速度,爲了積分出真實的速度我們需要濾去重力加速度,我們採用的方案是利用陀螺儀及求出的姿態角計算出當前重力加速度相對於待測物體的方向,以及重力加速度在以待測物為座標系的X、Y軸加速度,從而濾去該部分,得到真實加速度。
利用姿態角解算出此刻重力加速度的方向需要用到三角函式,而由於stm32f1系列處理三角函式運算的能力有限,所以我們將三角函式的值預先用陣列存入程式碼,然後再利用查表法直接呼叫陣列中三角函式的值,省去了繁雜的三角函式計算。但由於輸入的的三角函式值精度為1度,所以資料會存在一定誤差。
3.2.2UWB得到待測物位移即座標
UWB得到的原始資料是基站及標籤間的距離。通過該距離,我們利用三遍測距法得到在以四個基站圍成的區域內的待測物體的座標。
部分程式碼如下:
3.2.3MATLAB實時接收資料顯示
①目的:爲了方便監控UWB資料,用MATLAB完成一張簡單的座標圖,可實時顯示UWB的座標位置。
②原理:首先,設定串列埠16的波特率、資料大小等引數,通過開啟該串列埠接收來自微控制器處理融合後的座標和x,y軸方向上的加速度組成的字串。呼叫MATLAB內建的str2num函式,將字串型別轉換成數值型別存入data當中。接著呼叫size函式將矩陣的行數返回到第一個輸出變數m,將矩陣的列數返回到第二個輸出變數n,並迴圈把資料寫入指定的檔案,便於及時檢視分析。其次,使用reshape函式將data排列成4行1列,再通過矩陣轉置成1行4列形矩陣C,利用各個資料所在矩陣內的位置進行呼叫。使用set函式分別設定x、y軸的顯示範圍,座標刻度,標籤等資訊,呼叫plot函式通過訪問矩陣在設定好的座標軸上顯示當前tag所在的位置,同時不斷更新矩陣中儲存的資料以達到實時顯示定位。
具體程式碼如下:
實現效果如下:
不足:雖然能夠實時顯示所在位置,但無法直接在座標上顯示出相應的x、y軸對應的數值。
解決方法:採用MATLAB中的GUI建立用戶界面,使用一定的按鈕和text顯示來達到即時讀取數值的功能。
四、專案未來展望
優勢:將UWB與慣性導航結合,實現多層次的室內定位;採用資料融合方式,結合多鍾資料,提高了資料精度。
階段一:進行UWB的初始化,通過多次測量對資料進行校準。由於UWB硬體出現了故障,本階段拖延時間過長,導致專案停滯不前。
階段二:取樣、姿態解算及資料融合。通過MPU9250取樣+姿態角解算以及UMB資料採集,將兩者進行資料融合。
階段三:實時顯示。通過STM32和基站座標,利用MATLAB軟體實時接收資料並顯示在座標軸上。
階段四:優化濾波演算法。在師兄的指導下發現卡爾曼濾波存在問題,尋找更方便更精準的演算法以提高測量的精度,從而完善產品。
階段五:加強團隊,進行面向市場的分工。聯絡開發此產品的公司共同協商合作,加大宣傳力度,將產品推廣營銷。另外可借用此技術進行多方面的開發,如結合無人機實現室內貨物的清點等。
歡迎加入杭電極客2018招新群呀!
極客會員群二維碼在這裏呀!
圖文/鄧超
排版/鄧超返回搜狐,檢視更多
責任編輯: