,,
(1.浙江樹人大學 信息科技學院,杭州 310015;2.史陶比爾(杭州)精密機械電子有限公司)
室內移動機器人定位是移動機器人設計的關鍵技術,由于室內環境GPS定位無法正常運行,主要采用激光導航SLAM定位方法、視覺定位方法。激光導航SLAM定位、視覺定位傳感器價格昂貴,數據處理計算量大,實時性較差,目前應用成本較高,而且對于復雜環境,這兩種方法不能提供很好的定位精度。所以,這里提出了采用UWB技術來實現室內復雜環境下的移動機器人定位。
UWB(超寬帶)定位是近年來發展起來的一種定位方式,使用極窄的脈沖信號或者極寬的頻譜帶寬信號進行信息傳遞,具有穿透能力強、定位精度高等優點,具有厘米級的定位能力[1-2]。
UWB定位的常用方法有基于到達時間(TOA)、基于到達時間差(TDOA)、基于到達角度(AOA)、基于接收到信號強度指示(RSSI)4種[3-5]。這里采用TDOA作為UWB的定位方法。
到達時間差法TDOA的原理是通過測量不同基站接收同一個移動站定位信號的時間差,從而計算出同一個移動站到不同基站的距離差。知道移動點到不同基站的距離差,就可以通過三邊定位法求得移動點的位置。
UWB定位的基本原理采用三邊定位法[6],已知三點位置(x1, y1)、(x2, y2)、(x3, y3),已知未知點(x0, y0)到三點距離d1、d2、d3,以 d1、d2、d3為半徑作三個圓,根據畢達哥拉斯定理,得出交點即未知點的位置計算公式:
上式通過最小二乘法求解最小方差得到坐標信息。
可以得到矩陣Hx=b,其中:
最終解為:x=(HTH)-1HTb。
本設計為UWB定位系統。系統以STM32F103C8為主控制器,使用DWM1000模塊進行通信,使用TOF算法測得兩模塊之間的距離。本系統由一個標簽和三個基站組成,在標簽分別得到三個基站的距離后,通過三邊定位用最小二乘法求解得到坐標。
UWB定位模塊采用DWM1000模塊,可以通過控制相關寄存器實現工作狀態的切換;采用SPI總線與主控芯片接口,速率最高達20 MHz;具有很好的抗多徑干擾能力,非常適合室內復雜環境的定位應用。DWM1000模塊由收發器、模式變換器、狀態控制器、SPI接口電路組成,其原理圖如圖1所示。

圖1 DWM1000模塊原理圖
DWM1000模塊核心控制引腳有CS、SI、SO、SCLK,功能定義如表1所列,這里DWM1000模塊為從設備,STM32F103為主設備。

表1 DWM1000模塊核心控制引腳
主控制模塊采用STM32F103C8芯片,工作頻率為72 MHz;具有36個快速I/O端口,所有I/O口均可以映像到16個外部中斷;配置有3個USART接口、1個CAN總線接口、2個I2C接口、2個SPI接口、2個I2S接口、1個USB接口;擁有2個12位模/數轉換器,可以實現單次或者多次掃描轉換;內部包含8個16位的定時器;采用LQFP48封裝,具有體積小、易于集成的優勢。
這里采用STM32F103C8的SPI總線接口實現對DWM1000模塊的控制,主控制模塊的原理圖如圖2所示。其中CS、SCLK、SO、SI為STM32F103C8的SPI數據總線;SW1、SW2、SW3、SW4為撥碼輸入,設置UWB定位模塊的節點號;RXD、TXD用來實現外接無線模塊,實現與上位機的無線通信;CAN_TX、CAN_RX為STM32F103C8的CAN總線接口,用來實現板級互聯;SWCLK、SWDIO用來實現控制程序的SWD方式下載。

圖2 STM32F103C8原理圖
系統軟件采用的開發平臺為Keil公司的Keil5,STM32F103采用SPI總線控制UWB定位模塊DWM1000,主要軟件模塊有串口通信模塊、SPI通信模塊、時針模塊、中斷模塊、定時器模塊。STM32F103控制UWB定位模塊的SPI控制時序圖如圖3所示。

圖3 UWB模塊SPI控制時序圖
通過SPI時鐘極性(CPOL)和時鐘相位(CPHA),STM32F103可以實現4種SPI模式。時鐘極性CPOL=0時,SCLK在空閑狀態為低電平;時鐘極性CPOL=1時,SCLK在空閑狀態為高電平。時鐘相位CPHA=0時,數據線信號會在SCLK的奇數邊沿采樣;時鐘相位CPHA=1時,數據線信號會在SCLK的偶數邊沿采樣。
這里采用時鐘極性CPOL=0,時鐘相位CPHA=0模式,SCLK在空閑狀態為低電平,數據線信號會在SCLK的奇數邊沿采樣。SPI總線單次傳輸8位,高位MSB在前,這個可以通過STM32F103的SPI初始化程序配置,配置程序如下:
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial=7;
SPI_Init(SPI1, &SPI_InitStructure);
其中SPI_Mode 設置STM32F103為主設備模式,SPI_DataSize 設置單次輸出8位,SPI_CPOL設置SPI時鐘極性為低電平,SPI_CPHA設置SPI為奇數邊采樣,SPI_FirstBit設置SPI通信為高位MSB在前。配置完這些SPI_InitStructure的結構體成員后,只需要SPI_Init()函數就可以把這些參數寫入寄存器中。
通過在室內實驗場地每隔2 m畫一個測試點,測試距離范圍為0~40 m,UWB定位節點安裝在移動機器人上,測量到的數據通過板子里面的無線模塊發送到電腦,電腦采集定位數據并同時顯示在上位機界面,測試數據如表2所列。上位機界面通過C#軟件開發。
提取到距離數據后,就可以通過相應算法實現定位點坐標測量,測試數據如表3所列,可以保證±5 cm的定位精度。

表2 測距測試數據

表3 定位測試數據
坐標測試效果圖如圖4所示,○為設計坐標點,*為系統定位結果。

圖4 UWB定位點測試效果圖
激光SLAM定位、視覺SLAM定位的計算復雜、傳感器成本過高、實時性差,本文針對這些缺陷,提出了通過UWB定位技術來實現室內移動機器人的定位,構建了實際的軟硬件平臺,完成了相關的實驗,驗證了UWB定位技術在室內移動機器人方面的可行性。實驗結果表明,本系統具有高穩定性、高精度,可以很好地滿足室內移動機器人的定位要求。