(武漢工程大學(xué) 電氣信息學(xué)院,武漢 430205)
機(jī)器人的室內(nèi)定位問題一直是機(jī)器人領(lǐng)域的研究熱點(diǎn)之一,而傳統(tǒng)的機(jī)器人室內(nèi)定位方法有基于視覺或激光的即時(shí)定位與地圖構(gòu)建SLAM(simultaneous localization and mapping)技術(shù)、航位推算法等方法[1]。SLAM技術(shù)計(jì)算量大,對處理器的要求高,應(yīng)用成本很高且實(shí)時(shí)性差;航位推算法由于硬件和軟件誤差,遠(yuǎn)距離定位時(shí)有較大的累積誤差。對于復(fù)雜的環(huán)境,這2種方法都不能很好地為機(jī)器人提供精確的定位服務(wù),故在此研究并設(shè)計(jì)了一套基于超寬帶UWB(ultra wide band)技術(shù)的機(jī)器人室內(nèi)定位系統(tǒng)。
UWB技術(shù),是近年來新興的一種高速傳輸數(shù)據(jù)的無線通信技術(shù),具有抗干擾能力強(qiáng)、傳輸速率高、能耗小、發(fā)送功率小等優(yōu)點(diǎn),主要應(yīng)用于室內(nèi)實(shí)時(shí)定位系統(tǒng)、無線通信網(wǎng)絡(luò)等領(lǐng)域[2]。
UWB定位常用方法有基于到達(dá)時(shí)間TOA(time of arrival)、基于到達(dá)時(shí)間差 TDOA(time difference of arrival)、基于到達(dá)角度 AOA(angle of arrival)、基于接收到信號強(qiáng)度指示RSSI(received signal strength indicator)等4種[3-5]。 在此,以TOA算法作為UWB定位系統(tǒng)的方法,TOA法的基本原理是通過測量無線電信號從標(biāo)簽到不同基站的時(shí)間,根據(jù)電信號傳播時(shí)間計(jì)算出標(biāo)簽到各基站的距離,再通過三邊定位的方法計(jì)算出標(biāo)簽的位置[6]。
在二維空間中,TOA定位的原理如圖1所示。已知,3個(gè)基站 A1,A2,A3的坐標(biāo)分別為(x1,y1),(x2,y2),(x3,y3);設(shè) B 點(diǎn)標(biāo)簽的坐標(biāo)為(x0,y0),標(biāo)簽到各基站的距離為 r1,r2,r3,由幾何關(guān)系可得
圖1 TOA定位原理Fig.1 TOA positioning schematic
可通過最小二乘法,將式(1)轉(zhuǎn)化為矩陣形式如 Ax=B,即
求解該矩陣,可得
由此計(jì)算出標(biāo)簽的坐標(biāo)。
機(jī)器人UWB定位系統(tǒng)的總體結(jié)構(gòu)如圖2所示。該系統(tǒng)主要由模塊化電路構(gòu)成。根據(jù)各模塊的實(shí)現(xiàn)功能的不同,分為以下幾個(gè)部分:移動控制端(手機(jī) App)、基站(3個(gè))、電源模塊(12 V 蓄電池)、主控制模塊、無線通信模塊、環(huán)境信息采集模塊、電機(jī)驅(qū)動模塊、從控制器模塊、UWB定位模塊(DWM1000)、OLED顯示模塊等。
主從控制模塊均以STM32F103微控制器為處理器,主控制器主要用于規(guī)劃機(jī)器人的運(yùn)動以及分別與手機(jī)和從控制器進(jìn)行通信;從控制器主要用于控制標(biāo)簽完成定位,并將標(biāo)簽位置信息發(fā)送給主控制器。
12 V蓄電池作為整個(gè)移動機(jī)器人系統(tǒng)的電源,通過線性電源轉(zhuǎn)換電路轉(zhuǎn)出3.3 V電源給處理器和其它工作模塊供電。
無線通信模塊選用高性能的ATK-HC05型主從一體藍(lán)牙模塊。該模塊用于實(shí)現(xiàn)與手機(jī)藍(lán)牙App通信,用戶可通過手機(jī)藍(lán)牙App向機(jī)器人發(fā)送各種命令,主控制器也通過藍(lán)牙模塊上傳機(jī)器人的位置和速度等信息到手機(jī)App端并顯示出來。
環(huán)境信息采集模塊有非接觸式HC-SR04型超聲波傳感器和夏普公司的GP2Y0A21YK0F型紅外傳感器。超聲波傳感器在靜距離測距時(shí)精度不高且易受環(huán)境因素影響,而紅外傳感器近距離測距精度較高,故選用紅外傳感器與超聲波傳感器進(jìn)行互補(bǔ)測距,使機(jī)器人對環(huán)境信息的探究更加準(zhǔn)確。
電機(jī)驅(qū)動模塊選用TB6612FNG型直流驅(qū)動模塊。該模塊具有大電流MOSFET-H橋結(jié)構(gòu),雙通道電路輸出,可同時(shí)驅(qū)動2個(gè)電機(jī)。電機(jī)驅(qū)動模塊、減速直流電機(jī)及編碼器形成一個(gè)閉環(huán)控制,主控制器通過調(diào)節(jié)給電機(jī)驅(qū)動模塊的PWM占空比,從而調(diào)節(jié)電機(jī)的速度,達(dá)到控制機(jī)器人速度的目的。
標(biāo)簽與各基站的硬件結(jié)構(gòu)一致,所采用的UWB定位模塊是DecaWave公司的DWM 1000型模塊。該模塊數(shù)據(jù)傳輸速率高達(dá)6.8 Mbit/s,通信距離約300 m,對于多路徑衰弱有很強(qiáng)的抗干擾能力,低功耗,非常適合室內(nèi)環(huán)境的定位應(yīng)用[7]。
從控制器通過SPI總線讀寫DWM 1000模塊,通過控制相關(guān)寄存器來切換該模塊的工作狀態(tài)。從控制器收到主控制器的定位指令后,控制定位模塊工作,通過讀取超寬帶信號的往返時(shí)間,即可計(jì)算出標(biāo)簽與各基站的距離,再通過三邊定位的方法得到標(biāo)簽坐標(biāo)。
主控制器根據(jù)收到從控制器從串口發(fā)來的位置坐標(biāo)后,會做進(jìn)一步的路徑規(guī)劃并及時(shí)上傳自身信息到手機(jī)應(yīng)用端。
機(jī)器人UWB定位系統(tǒng)軟件以雙STM32F103核為處理器,雙核協(xié)調(diào)配合完成機(jī)器人的定位以及路徑規(guī)劃工作。其軟件設(shè)計(jì)主要包括機(jī)器人主程序、標(biāo)簽子程序、基站程序、手機(jī)App應(yīng)用程序等4個(gè)部分。
圖3 機(jī)器人主程序流程Fig.3 Robot main program flow chart
機(jī)器人主程序流程如圖3所示。機(jī)器人上電,全部硬件完成初始化工作,然后等待手機(jī)應(yīng)用端的指令,待接收到目標(biāo)指令后,機(jī)器人開啟定位功能并向目標(biāo)運(yùn)動,若到達(dá)目標(biāo)就停止;若沒有到達(dá)目標(biāo)點(diǎn),則繼續(xù)向目標(biāo)點(diǎn)運(yùn)動。在途中,如果環(huán)境信息采集電路檢測到障礙物,就會避障。待避障完成,機(jī)器人繼續(xù)向目標(biāo)前進(jìn),并定時(shí)上傳位置、速度等信息到手機(jī)端。
標(biāo)簽子程序工作流程如圖4所示。標(biāo)簽完成初始化后,等待主控制器開啟定位功能命令,如果接受到主控制器的定位命令,就分別向各基站發(fā)送測距命令,并等待基站返回測距結(jié)果,待得到標(biāo)簽與各基站的距離后,通過三邊定位法計(jì)算出標(biāo)簽坐標(biāo),然后將標(biāo)簽坐標(biāo)發(fā)送給主控制器。
基站工作流程如圖5所示。基站上電,全部硬件完成初始化后,開啟基站接收功能,等待標(biāo)簽的測距命令。如果接收到標(biāo)簽的測距命令,基站會向標(biāo)簽發(fā)送一幀數(shù)據(jù),并記錄基站發(fā)送數(shù)據(jù)的時(shí)間和收到標(biāo)簽反饋數(shù)據(jù)的時(shí)間,根據(jù)TOA算法可計(jì)算出與標(biāo)簽的距離?;緦⒕嚯x信息發(fā)送給標(biāo)簽后,會清除緩存的時(shí)間信息,并重新等待標(biāo)簽的測距命令。
圖4 標(biāo)簽子程序流程Fig.4 Label subroutine
圖5 基站程序流程Fig.5 Base station processprogram flow
App使用開發(fā)環(huán)境為MIT App Inventor 2[8]。在此,手機(jī)App與機(jī)器人之間采用藍(lán)牙通信方式,利用配置成數(shù)據(jù)透傳工作模式的藍(lán)牙模塊,手機(jī)App將控制指令發(fā)送到機(jī)器人,實(shí)現(xiàn)對機(jī)器人運(yùn)動狀態(tài)的控制。機(jī)器人在運(yùn)動的同時(shí),會定時(shí)將自身位置、速度等數(shù)據(jù)發(fā)送到手機(jī)App端來顯示,以達(dá)到更好的交互。
在10 m×10 m的室內(nèi)定位實(shí)驗(yàn)場地,每間隔一定距離布置一個(gè)檢測點(diǎn),將帶標(biāo)簽的移動機(jī)器人置于各檢測點(diǎn),標(biāo)簽定位完成后,通過串口輸出各檢測點(diǎn)的計(jì)算坐標(biāo)到上位機(jī),標(biāo)簽檢測結(jié)果見表1。由表可知,該定位系統(tǒng)的定位精度在±10 cm,能為機(jī)器人提供定位服務(wù)。
表1 定位檢測結(jié)果Tab.1 Positioning test result
將機(jī)器人硬件移動平臺上電后,打開對應(yīng)的Android App應(yīng)用軟件,進(jìn)入機(jī)器人活動地圖選擇界面。選擇地圖后,界面跳轉(zhuǎn)到相應(yīng)控制界面,通過藍(lán)牙列表按鈕連接機(jī)器人,待手機(jī)與藍(lán)牙模塊連接后,就可以通過相應(yīng)的功能鍵控制機(jī)器人的運(yùn)動。
地圖1定位試驗(yàn)界面如圖6所示。以圖6為例進(jìn)行說明,此處選擇的是地圖1,地圖1的大小為250像素×250像素,與機(jī)器人的實(shí)際物理活動場景10 m×10 m成映射關(guān)系。連接藍(lán)牙,點(diǎn)擊目標(biāo)配置按鈕,打開地圖1。在地圖1的xOy坐標(biāo)中點(diǎn)擊任意位置后,App會將對應(yīng)像素點(diǎn)位置(即圖6中黑點(diǎn)位置)發(fā)送到機(jī)器人,由標(biāo)簽給機(jī)器人提供定位服務(wù),機(jī)器人根據(jù)地圖映射關(guān)系,從起點(diǎn)O向目標(biāo)點(diǎn)運(yùn)動,途中遇到障礙物時(shí),會避開障礙物,同時(shí)會定時(shí)上傳自身位置和電機(jī)輪速等信息到App,App接收即時(shí)信息并顯示出來。圖6中,機(jī)器人速度為0.1 m/s,黑色的點(diǎn)軌跡為機(jī)器人的運(yùn)動軌跡。
圖6 地圖1定位試驗(yàn)界面Fig.6 Map 1 positioning experiment interface
所設(shè)計(jì)的機(jī)器人UWB室內(nèi)定位系統(tǒng),定位精度在±10 cm以內(nèi),定位標(biāo)簽?zāi)軠?zhǔn)確地給機(jī)器人提供定位服務(wù)。所設(shè)計(jì)的硬件模塊電路和相應(yīng)的軟件控制流程,實(shí)現(xiàn)了機(jī)器人硬件移動平臺的定位以及與手機(jī)App之間的無線數(shù)據(jù)傳輸與控制,開發(fā)了Android App應(yīng)用軟件。對該系統(tǒng)進(jìn)行了測試,機(jī)器人能按手機(jī)指令運(yùn)動到目標(biāo)位置,在手機(jī)地圖中也可以實(shí)時(shí)地顯示機(jī)器人的運(yùn)動軌跡等信息。然而,對于提高機(jī)器人的路徑優(yōu)化能力,以及豐富App軟件的數(shù)據(jù)分析功能,尚有待于做進(jìn)一步的改進(jìn)。