UWB定位记录二(DWM1000模组介绍)
? ? 前言:上篇博客是對UWB理論方面的基本介紹,掌握基本理論之后肯定還需要去做工程實驗來測試,所以這篇開始從最普及的UWB芯片DWM1000的資料展開對UWB工程實現的介紹。其實基本UWB理論知識在論文中都是很容易找到,但是具體的工程實現細節大多數論文都未詳細展開,故我把網上找到的相關資料整合介紹下。
??一、DWM1000模組介紹
? ? ?最開始有一個問題測時間差的問題一直困擾著我,就是測距是基于d=c*t,d為距離,c為光速,t為時間差,一般我們的測距應用范圍d都在幾十米以內,而c光速值約為3*10的8次方,那么t的值是納秒級別的,時鐘由晶振產生那么則需要Ghz級別的時鐘,這對于我經常用到MCU都是在幾十M時鐘是不可想象的,所以我當時一直找資料想是否需要加額外的倍頻器。后面了解到DW1000這款芯片后,知道這些UWB芯片本身都是可以做到的。
? ? 首先,DWM1000是Deca公司的一款用于UWB通信定位的模組,集成了DW1000芯片的基本外圍電路,兩者關系如下圖1-1所示。關于上段提出的問題,解決方法是因為DW1000內部有一個非常非常高的時鐘,高達64GHz左右,所以才可以做到厘米級的定位。
? ?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1-1
? ?之后,DWM1000模組和MCU的配合開發也非常簡單,兩者之間采用SPI通信,MCU通過幾個控制腳和SPI通信的四個IO腳便完成了基本UWB定位模塊,具體如圖1-2所示。DWM1000的基本資料其實在官網都可以免費下載如圖1-3(包括其官方提高stm32和dwm1000的例程),只是官網https://www.decawave.com/product/dwm1000-module/需要翻墻,我后續會免費上傳部分資料到CSDN上讓大家參考。
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1-2
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1-3
?二、DWM1000模組測距方法
? ? ? ? ? 上篇博客已經基本介紹了基本定位方法包括TOA,TDOA,下面再介紹下兩種測距方法,兩者概念不要搞混,定位的前提是得到基站與移動站的測距值或者是差值。
? 2.1.Single-sided Two-way Ranging?(SS)
? ? ? 首先是單次雙程測距法,具體流程是,設備A首先向設備B發出一個數據包,并記錄下發包時刻Ta1,設備B收到數據包后,記下收包時刻Tb1。之后設備B等待Treply時刻,在Tb2(Tb2=Tb1+Treply)時刻,向設備A發送一個數據包,設備A收到數據包后記下時刻值Ta2。然后可以算出電磁波在空中的飛行時間Tprop,飛行時間乘以光速即為兩個設備間的距離。具體如圖2-1所示。
Tround= Ta2-Ta1? ? ? ? ? ? ? ?//總時間差
Treply=Tb2-Tb1? ? ? ? ? ? ? ? ?//基站處理時間差
Tprop=(Tround-Treply)/2? ? ? //最終得到的標簽與基站的UWB通信時間差,距離值即為TOF*c光速
因為設備A和設備B使用各自獨立的時鐘源,時鐘都會有一定的偏差,假設設備A和設備B時鐘的實際頻率是預期頻率的eA和eB倍,那么因為時鐘偏差引入的誤差error,設備A和B的時鐘偏差都會對Tprop值造成影響,并且直接影響我們的測量精度,因為光速是30cm/ns,所以很小的時鐘偏差也會對測量結果造成很大影響,而且這種影響是SS測距方式無法避免的。也因此SS測距很少被采用,大部分情況下我們都使用下一種,DS測距的方式。
? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2-1
2.2Double-sidedTwo-way Ranging(DS)
? ? ?官網例程代碼用的就是DS,剛開始我也很費解因為看的論文基本用的都是SS也沒提到過DS。下面關于DS的介紹較為復雜,不了解可以再看過官網例程代碼后再來看下面的原理公式推導。
? ? ? DS測距是在SS測距的基礎上再增加一次通訊,兩次通訊的時間可以互相彌補因為時鐘偏移引入的誤差。假設設備A和設備B的時鐘精度是20ppm(很差)1ppm為百萬分之一,那么Ka和Kb分別是0.99998或者1.00002,ka和kb分別是設備A、B時鐘的實際頻率和預期頻率的比值。設備A、B相距100m,電磁波的飛行時間是333ns。則因為時鐘引入的誤差為20*333*10-9秒,導致測距誤差為2.2mm,可以忽略不計了。因此雙邊測距是最常采用的測距方式。下面我將介紹官網的雙邊測距的代碼實現。
完成一次DS測距需要6個步驟,總流程如2-2所示。
1.設備A發送POLL包。并記下發送時間T1。并在一段時間后打開RX。
2.設備B要提前打開接收,然后收到POLL包,記錄時間T2.
3.設備B在T3(T3=T2+Treply1)時刻發送Response包,發送完之后打開RX.
4.設備A收到Response包,記錄時刻T4。
5.設備A在T5(T5=T4+Treply2)發送Final包。
6.設備B收到Final包,記錄時間T6。
?
公式推導:
Tround1 = Treply1 + 2Tprop;
Tround2 = Treply2 + 2Tprop;
Tround1*Tround2 - Treply1*Treply2 =4Tprop2 + 2Tprop*Treply1+2Tprop*Treply2;
Tround1?+Tround2 + Treply1?+ Treply2 = 4Tprop + 2Treply1 + 2Treply2;
所以Trop等于上圖的公式。
?
下面是具體的時間計算:
Tround1 = T4 - T1
Tround2 = T6 - T3
Treply1 = T3 - T2
Treply2 = T5 - T4
Tprop為電磁波飛行時間,乘以光速為測距距離。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2-2?
這個是SS與DS介紹的原文地址,要配合官網代碼分析https://msd.misuland.com/pd/3545776840385762452
總結
以上是生活随笔為你收集整理的UWB定位记录二(DWM1000模组介绍)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TMDB数据导入elasticsearc
- 下一篇: 高级Bash脚本编程入门