(武漢工程大學 電氣信息學院,武漢 430205)
機器人的室內定位問題一直是機器人領域的研究熱點之一,而傳統的機器人室內定位方法有基于視覺或激光的即時定位與地圖構建SLAM(simultaneous localization and mapping)技術、航位推算法等方法[1]。SLAM技術計算量大,對處理器的要求高,應用成本很高且實時性差;航位推算法由于硬件和軟件誤差,遠距離定位時有較大的累積誤差。對于復雜的環境,這2種方法都不能很好地為機器人提供精確的定位服務,故在此研究并設計了一套基于超寬帶UWB(ultra wide band)技術的機器人室內定位系統。
UWB技術,是近年來新興的一種高速傳輸數據的無線通信技術,具有抗干擾能力強、傳輸速率高、能耗小、發送功率小等優點,主要應用于室內實時定位系統、無線通信網絡等領域[2]。
UWB定位常用方法有基于到達時間TOA(time of arrival)、基于到達時間差 TDOA(time difference of arrival)、基于到達角度 AOA(angle of arrival)、基于接收到信號強度指示RSSI(received signal strength indicator)等4種[3-5]。 在此,以TOA算法作為UWB定位系統的方法,TOA法的基本原理是通過測量無線電信號從標簽到不同基站的時間,根據電信號傳播時間計算出標簽到各基站的距離,再通過三邊定位的方法計算出標簽的位置[6]。
在二維空間中,TOA定位的原理如圖1所示。已知,3個基站 A1,A2,A3的坐標分別為(x1,y1),(x2,y2),(x3,y3);設 B 點標簽的坐標為(x0,y0),標簽到各基站的距離為 r1,r2,r3,由幾何關系可得


圖1 TOA定位原理Fig.1 TOA positioning schematic
可通過最小二乘法,將式(1)轉化為矩陣形式如 Ax=B,即

求解該矩陣,可得

由此計算出標簽的坐標。
機器人UWB定位系統的總體結構如圖2所示。該系統主要由模塊化電路構成。根據各模塊的實現功能的不同,分為以下幾個部分:移動控制端(手機 App)、基站(3個)、電源模塊(12 V 蓄電池)、主控制模塊、無線通信模塊、環境信息采集模塊、電機驅動模塊、從控制器模塊、UWB定位模塊(DWM1000)、OLED顯示模塊等。
主從控制模塊均以STM32F103微控制器為處理器,主控制器主要用于規劃機器人的運動以及分別與手機和從控制器進行通信;從控制器主要用于控制標簽完成定位,并將標簽位置信息發送給主控制器。
12 V蓄電池作為整個移動機器人系統的電源,通過線性電源轉換電路轉出3.3 V電源給處理器和其它工作模塊供電。
無線通信模塊選用高性能的ATK-HC05型主從一體藍牙模塊。該模塊用于實現與手機藍牙App通信,用戶可通過手機藍牙App向機器人發送各種命令,主控制器也通過藍牙模塊上傳機器人的位置和速度等信息到手機App端并顯示出來。
環境信息采集模塊有非接觸式HC-SR04型超聲波傳感器和夏普公司的GP2Y0A21YK0F型紅外傳感器。超聲波傳感器在靜距離測距時精度不高且易受環境因素影響,而紅外傳感器近距離測距精度較高,故選用紅外傳感器與超聲波傳感器進行互補測距,使機器人對環境信息的探究更加準確。
電機驅動模塊選用TB6612FNG型直流驅動模塊。該模塊具有大電流MOSFET-H橋結構,雙通道電路輸出,可同時驅動2個電機。電機驅動模塊、減速直流電機及編碼器形成一個閉環控制,主控制器通過調節給電機驅動模塊的PWM占空比,從而調節電機的速度,達到控制機器人速度的目的。
標簽與各基站的硬件結構一致,所采用的UWB定位模塊是DecaWave公司的DWM 1000型模塊。該模塊數據傳輸速率高達6.8 Mbit/s,通信距離約300 m,對于多路徑衰弱有很強的抗干擾能力,低功耗,非常適合室內環境的定位應用[7]。
從控制器通過SPI總線讀寫DWM 1000模塊,通過控制相關寄存器來切換該模塊的工作狀態。從控制器收到主控制器的定位指令后,控制定位模塊工作,通過讀取超寬帶信號的往返時間,即可計算出標簽與各基站的距離,再通過三邊定位的方法得到標簽坐標。
主控制器根據收到從控制器從串口發來的位置坐標后,會做進一步的路徑規劃并及時上傳自身信息到手機應用端。
機器人UWB定位系統軟件以雙STM32F103核為處理器,雙核協調配合完成機器人的定位以及路徑規劃工作。其軟件設計主要包括機器人主程序、標簽子程序、基站程序、手機App應用程序等4個部分。

圖3 機器人主程序流程Fig.3 Robot main program flow chart
機器人主程序流程如圖3所示。機器人上電,全部硬件完成初始化工作,然后等待手機應用端的指令,待接收到目標指令后,機器人開啟定位功能并向目標運動,若到達目標就停止;若沒有到達目標點,則繼續向目標點運動。在途中,如果環境信息采集電路檢測到障礙物,就會避障。待避障完成,機器人繼續向目標前進,并定時上傳位置、速度等信息到手機端。
標簽子程序工作流程如圖4所示。標簽完成初始化后,等待主控制器開啟定位功能命令,如果接受到主控制器的定位命令,就分別向各基站發送測距命令,并等待基站返回測距結果,待得到標簽與各基站的距離后,通過三邊定位法計算出標簽坐標,然后將標簽坐標發送給主控制器。
基站工作流程如圖5所示。基站上電,全部硬件完成初始化后,開啟基站接收功能,等待標簽的測距命令。如果接收到標簽的測距命令,基站會向標簽發送一幀數據,并記錄基站發送數據的時間和收到標簽反饋數據的時間,根據TOA算法可計算出與標簽的距離。基站將距離信息發送給標簽后,會清除緩存的時間信息,并重新等待標簽的測距命令。

圖4 標簽子程序流程Fig.4 Label subroutine

圖5 基站程序流程Fig.5 Base station processprogram flow
App使用開發環境為MIT App Inventor 2[8]。在此,手機App與機器人之間采用藍牙通信方式,利用配置成數據透傳工作模式的藍牙模塊,手機App將控制指令發送到機器人,實現對機器人運動狀態的控制。機器人在運動的同時,會定時將自身位置、速度等數據發送到手機App端來顯示,以達到更好的交互。
在10 m×10 m的室內定位實驗場地,每間隔一定距離布置一個檢測點,將帶標簽的移動機器人置于各檢測點,標簽定位完成后,通過串口輸出各檢測點的計算坐標到上位機,標簽檢測結果見表1。由表可知,該定位系統的定位精度在±10 cm,能為機器人提供定位服務。

表1 定位檢測結果Tab.1 Positioning test result
將機器人硬件移動平臺上電后,打開對應的Android App應用軟件,進入機器人活動地圖選擇界面。選擇地圖后,界面跳轉到相應控制界面,通過藍牙列表按鈕連接機器人,待手機與藍牙模塊連接后,就可以通過相應的功能鍵控制機器人的運動。
地圖1定位試驗界面如圖6所示。以圖6為例進行說明,此處選擇的是地圖1,地圖1的大小為250像素×250像素,與機器人的實際物理活動場景10 m×10 m成映射關系。連接藍牙,點擊目標配置按鈕,打開地圖1。在地圖1的xOy坐標中點擊任意位置后,App會將對應像素點位置(即圖6中黑點位置)發送到機器人,由標簽給機器人提供定位服務,機器人根據地圖映射關系,從起點O向目標點運動,途中遇到障礙物時,會避開障礙物,同時會定時上傳自身位置和電機輪速等信息到App,App接收即時信息并顯示出來。圖6中,機器人速度為0.1 m/s,黑色的點軌跡為機器人的運動軌跡。

圖6 地圖1定位試驗界面Fig.6 Map 1 positioning experiment interface
所設計的機器人UWB室內定位系統,定位精度在±10 cm以內,定位標簽能準確地給機器人提供定位服務。所設計的硬件模塊電路和相應的軟件控制流程,實現了機器人硬件移動平臺的定位以及與手機App之間的無線數據傳輸與控制,開發了Android App應用軟件。對該系統進行了測試,機器人能按手機指令運動到目標位置,在手機地圖中也可以實時地顯示機器人的運動軌跡等信息。然而,對于提高機器人的路徑優化能力,以及豐富App軟件的數據分析功能,尚有待于做進一步的改進。