李佳佳,李智,管四海
?。ㄎ靼搽娮涌萍即髮W(xué) 機(jī)電工程學(xué)院,陜西 西安 710071)
摘要:針對現(xiàn)有室內(nèi)定位技術(shù)模型復(fù)雜、成本高等問題,設(shè)計了一種基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng)。該系統(tǒng)的主控芯片選用STM32F103ZET6,偏角測量模塊基于HMC5883L,障礙處理模塊選用HCSR04;另外,采用極坐標(biāo)的表示方法,給定室內(nèi)初始位置和目標(biāo)點,測出各目標(biāo)點相對于初始位置的偏角和距離,依據(jù)相對偏角和相對距離規(guī)劃小車的行走路徑。實際環(huán)境測試表明,該系統(tǒng)不僅能使小車準(zhǔn)確到達(dá)目標(biāo)點,而且還能有效避障。
關(guān)鍵詞:室內(nèi)定位;路徑規(guī)劃;極坐標(biāo)
中圖分類號:TN96文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.025
引用格式:李佳佳,李智,管四海.基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng)[J].微型機(jī)與應(yīng)用,2017,36(7):84-87.
0引言
*基金項目:國家自然科學(xué)基金(61673310)GPS定位系統(tǒng)由于其快速、高效、全球覆蓋等特點,被廣泛地應(yīng)用于汽車導(dǎo)航、工程測量、飛機(jī)導(dǎo)航等領(lǐng)域。而在室內(nèi),由于建筑物的遮擋,GPS的信號會減弱,并且精度滿足不了室內(nèi)定位的要求?,F(xiàn)有的室內(nèi)定位技術(shù)主要有RFID、視頻、ZibBee[1]、藍(lán)牙[2]、WLAN[3]等,但由于室內(nèi)物體間距離較短,信號存在反射、衍射和繞射等非直線傳播的情況,再加之現(xiàn)有設(shè)備分辨率不足,使得室內(nèi)定位誤差較大[2]。
在現(xiàn)有的室內(nèi)路徑規(guī)劃定位系統(tǒng)中,大多使用柵格構(gòu)圖法和路標(biāo)法[4]進(jìn)行室內(nèi)定位,其中柵格構(gòu)圖法是在機(jī)器人行走過程中,實時構(gòu)建地圖并規(guī)劃路徑,但在定位過程中,需要搜索的空間范圍很大,若沒有很好的簡化算法,實時性很難保證。路標(biāo)法的定位中,若有一個路標(biāo)出現(xiàn)故障,則系統(tǒng)的整體穩(wěn)定性就會受到很大的影響。本文采用二維極坐標(biāo)的方式確定位置,根據(jù)各目標(biāo)點的位置,事先為智能小車規(guī)劃好行走路線[5],避免了復(fù)雜算法的優(yōu)化和參照物的使用,還能有效避障。本系統(tǒng)具有設(shè)計簡單、易操作、成本低的特點,可以應(yīng)用于餐廳服務(wù)機(jī)器人的設(shè)計,以機(jī)器人代替人工送餐,給人們的生活帶來便利。
1系統(tǒng)整體設(shè)計
系統(tǒng)整體結(jié)構(gòu)設(shè)計如圖1,流程如下:
圖1基于路徑規(guī)劃的室內(nèi)定位系統(tǒng)結(jié)構(gòu)框圖首先需要事先測量小車的起點與各目標(biāo)點的距離ρ1,ρ2…ρn和角度θ1,θ2…θn,并將坐標(biāo)表示為(ρ1,θ1),(ρ2,θ2)…(ρn,θn);然后利用碼盤和光電對管測出固定占空比下的車輪轉(zhuǎn)速,并通過LCD1602實時顯示,從而通過控制時間來達(dá)到控制小車前進(jìn)指定距離的目的。利用HMC5883L電子羅盤測量角度,將電子羅盤的測量數(shù)據(jù)通過I2C總線傳輸?shù)街骺匦酒琒TM32F103ZET6,主控芯片將傳感器采集的數(shù)據(jù)進(jìn)行分析處理,進(jìn)而控制電機(jī)轉(zhuǎn)動使車前進(jìn)。在此期間,通過舵機(jī)帶動HCSR04超聲波模塊不斷地轉(zhuǎn)動測距,當(dāng)測得距離小于某一設(shè)定值時,控制小車停止,并且繼續(xù)不斷檢測距離。當(dāng)撤去障礙物,再按事先規(guī)劃的路徑繼續(xù)前進(jìn),到達(dá)目標(biāo)點。
2硬件設(shè)計
2.1主控芯片
該系統(tǒng)的主控芯片選用STM32F103ZET6,此芯片作為32位ARM微控制器,有著比16位、8位處理器更強(qiáng)的數(shù)據(jù)處理能力、更豐富的外設(shè)接口。在該系統(tǒng)設(shè)計中,由于STM32系列微控制器的I2C接口穩(wěn)定性較差,因此采用IO口模擬I2C總線的方式實現(xiàn)穩(wěn)定的信息傳輸。選用PB6和PB7模擬I2C總線的SCL和SDA,實現(xiàn)了與HMC5883L模塊的穩(wěn)定通信。
2.2HMC5883L模塊
霍尼韋爾HMC5883L是一種高集成模塊,選其為偏角測量模塊,是因為其具有高達(dá)1°~2°的測量精度;同時采用I2C數(shù)字接口通信,高效、穩(wěn)定,程序設(shè)計簡單。需要特別注意的是:
?。?)為防止干擾,使用時應(yīng)避免該模塊直接與金屬物體接觸;
?。?)在電磁干擾較大的室內(nèi)環(huán)境,要對該模塊進(jìn)行校正[6],以確保測量的準(zhǔn)確;
?。?)由于其測量靈敏,在設(shè)置轉(zhuǎn)角時,可以用一個小范圍的值代替特定值。
該系統(tǒng)在設(shè)計時,向小車后方加裝木板,將HMC5883L模塊固定于木板上,以降低干擾,模塊上的x和y軸即為在水平面上建立的二維坐標(biāo)系。下面給出電子羅盤返回角度θ的計算,其中x和y表示讀出HMC5883L寄存器中的值。
經(jīng)過此運算后,將電子羅盤測得的數(shù)據(jù)范圍轉(zhuǎn)化為0°~360°。即在0°時,x軸所指向的方位為南。
2.3電機(jī)驅(qū)動設(shè)計
電機(jī)驅(qū)動模塊電路設(shè)計如圖2,驅(qū)動芯片采用L293,一個芯片可以驅(qū)動兩個直流電機(jī),簡化了系統(tǒng)電路的設(shè)計,同時,在引腳電平低于一定水平時,芯片停止工作,對電源起到了保護(hù)作用。電機(jī)調(diào)速方式為PWM方式,即在周期固定的前提下,通過控制輸出脈寬的不同來進(jìn)行速度的調(diào)節(jié)。
2.4測速模塊
測速模塊電路設(shè)計如圖3。其中,光電對管選用ITR9608,在系統(tǒng)設(shè)計時,將碼盤固定在電機(jī)上,并置于光電對管的凹槽中,車輪帶動碼盤轉(zhuǎn)動,將PWM的信號傳輸至主控芯片,從而計算車輪的轉(zhuǎn)速,并通過LCD1602實時顯示。
設(shè)車輪速度為v,直徑為d,光電碼盤的齒數(shù)是n,即車輪轉(zhuǎn)動一周的計數(shù)次數(shù)為2n,單位時間高低電平的變化次數(shù)為t,則車輪速度:
2.5超聲波避障模塊
該系統(tǒng)將超聲波和舵機(jī)通過云臺結(jié)合起來,放在車體的最前端,通過轉(zhuǎn)動舵機(jī)獲取小車各個方向的距離值,進(jìn)行障礙處理。在對舵機(jī)的控制中,用不同寬度的脈沖信號,對應(yīng)舵機(jī)轉(zhuǎn)動的不同角度。選用的HCSR04超聲波模塊測量范圍可達(dá)2 cm~400 cm,滿足該系統(tǒng)對避障精度的要求,并通過高電平的持續(xù)時間計算障礙物的距離,即:
距離=(高電平時間×聲速)/2(3)
3軟件設(shè)計
軟件設(shè)計流程如圖4所示,其主要部分包括系統(tǒng)初始化、采集角度數(shù)據(jù)、角度的判斷、避障等。系統(tǒng)選用Keil uVision5開發(fā)工具,選用C語言編程。其中,為了使智能小車在行走的同時檢測障礙,設(shè)計了10 ms計數(shù)法,同時定義num變量,保存測距函數(shù)執(zhí)行的次數(shù),從而達(dá)到記錄距離的目的。在避障函數(shù)中,控制舵機(jī)左轉(zhuǎn)、居中、右轉(zhuǎn),不斷地循環(huán),達(dá)到多方位檢測距離的目的。具體程序設(shè)計如下:
?。?)先對系統(tǒng)的外設(shè)資源初始化,然后判斷當(dāng)jiaodu≠預(yù)設(shè)角時,執(zhí)行右轉(zhuǎn)函數(shù)Turn_Right(),直到j(luò)iaodu=預(yù)設(shè)角,執(zhí)行停止函數(shù)Stop(),并使得標(biāo)志位set=1。
jiaodu=read_HMC5883L();
if(jiaodu>=5&&jiaodu<=355)//預(yù)設(shè)角度為0
{ while(jiaodu>=5&&jiaodu<=355 )
{ Turn_Right();
jiaodu=read_HMC5883L();
}
Stop();
set=1;
Delayms(2000);
}
?。?)當(dāng)set=1時,表明已找到指定方向,執(zhí)行直行函數(shù)Go(),并延遲適當(dāng)時間,該時間由目標(biāo)距離和車速決定。
if(set==1)
{set=0;
just_car();//前進(jìn)中避障
Stop();
}
?。?)接著獲取角度值,判斷是否為下一目標(biāo)點所設(shè)角度,不斷循環(huán),直到最后一個目標(biāo)點停止。
(4)在直行過程中,用TIM2定時器產(chǎn)生1 ms時基信號,每隔10 ms,執(zhí)行一次距離檢測函數(shù)Get_distance()和障礙處理函數(shù)Handle_bar()。并定義一個num變量用來計數(shù),每過10 ms,num++。
void just_car(void)
{int num=0;
while(num<300)//延遲3 s
{if(count_1ms>10)
{ count_1ms=0;
Get_distance();
Handle_bar();
num++;
}
}
}
?。?)當(dāng)Get_distance()返回值小于10 cm時,則認(rèn)為前方存在障礙,執(zhí)行障礙處理函數(shù)Handle_bar()。
void Handle_bar()
{if(juli_cm < 10)
{ while(1)
{
障礙處理
……
}
}
else
Go();
break;
}
?。?)當(dāng)距離檢測函數(shù)Get_distance()返回值大于10 cm時,則認(rèn)為障礙已經(jīng)撤走,此時程序通過num中保存的值可以計算出剩余要走的路程。
?。?)返回(3)。
4實際測試
為了測試該系統(tǒng)能準(zhǔn)確定位且能有效避障,設(shè)計實驗如下:
在室內(nèi)環(huán)境,給定初始位置和各目標(biāo)點,并假定預(yù)設(shè)角為0°,即正南方向,對小車進(jìn)行直行和轉(zhuǎn)彎定位測試。為了更易觀察實驗效果,設(shè)定直行距離為50 cm,轉(zhuǎn)角為90°,避障距離為10 cm。設(shè)置預(yù)設(shè)角時,由于電子羅盤的靈敏度較高,因此用一定角度范圍代替具體的角度值,且在此實驗中角度范圍為10°。測試中的實際目標(biāo)點分布如圖5示:O表示起點,A、B、C分別為目標(biāo)點。
首先,將小車置于O點尋找預(yù)設(shè)角;然后前進(jìn)50 cm,右轉(zhuǎn)90°,到達(dá)點A;接著前進(jìn)50 cm,再右轉(zhuǎn)90°,到達(dá)點B;最后前進(jìn)50 cm停止于點C。在小車前進(jìn)過程中,將手擋在小車的前方作為障礙物,當(dāng)手與小車距離小于10 cm時,小車停止前進(jìn),同時舵機(jī)帶動超聲波模塊左右轉(zhuǎn)動測距,若障礙一直存在,則會循環(huán)檢測距離,直到將障礙物撤去,此后小車?yán)^續(xù)前進(jìn)剩余距離。實驗中測量其運行時距離與角度的對應(yīng)關(guān)系,并將實際測得的軌跡與理想軌跡進(jìn)行仿真,結(jié)果如圖6。從圖6中可知,基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng),能夠在有效誤差范圍內(nèi)到達(dá)各目標(biāo)點,完成室內(nèi)定位任務(wù)。
參考文獻(xiàn)
?。?] 何海平,郭杭,方爽.基于模糊聚類的ZigBee室內(nèi)定位系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2016,42(5):71-77.
?。?] 陳國平,馬耀輝,張百珂.基于指紋技術(shù)的藍(lán)牙室內(nèi)定位系統(tǒng)[J]. 電子技術(shù)應(yīng)用,2013,39(3):104-107.
?。?] 劉洺辛, 孫建利. 基于能效的WLAN室內(nèi)定位系統(tǒng)模型設(shè)計與實現(xiàn)[J]. 儀器儀表學(xué)報, 2014, 35(5):11691178.[4] 宋婷.室內(nèi)移動機(jī)器人路徑規(guī)劃與定位技術(shù)研究[D].西安:西安電子科技大學(xué),2011.
?。?] JARVIS R. Distance transform based path planning for robot navigation[M]. Singapore:World Scientific, 1993.
?。?] 劉詩斌,馮小毅,李宏.基于橢圓假設(shè)的電子羅盤誤差補(bǔ)償方法[J].傳感器技術(shù),2002,21(10):28-33.