《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 業(yè)界動態(tài) > 基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng)

基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng)

2017-05-03
作者:李佳佳,李智,,管四海
來源:2017年微型機(jī)與應(yīng)用第7期

  李佳佳,,李智,管四海

 ?。ㄎ靼搽娮涌萍即髮W(xué) 機(jī)電工程學(xué)院,陜西 西安 710071)

        摘要:針對現(xiàn)有室內(nèi)定位技術(shù)模型復(fù)雜、成本高等問題,,設(shè)計(jì)了一種基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng)。該系統(tǒng)的主控芯片選用STM32F103ZET6,,偏角測量模塊基于HMC5883L,,障礙處理模塊選用HCSR04;另外,,采用極坐標(biāo)的表示方法,,給定室內(nèi)初始位置和目標(biāo)點(diǎn),測出各目標(biāo)點(diǎn)相對于初始位置的偏角和距離,,依據(jù)相對偏角和相對距離規(guī)劃小車的行走路徑,。實(shí)際環(huán)境測試表明,該系統(tǒng)不僅能使小車準(zhǔn)確到達(dá)目標(biāo)點(diǎn),,而且還能有效避障,。

  關(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引言

  *基金項(xiàng)目:國家自然科學(xué)基金(61673310)GPS定位系統(tǒng)由于其快速,、高效、全球覆蓋等特點(diǎn),,被廣泛地應(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ī)器人行走過程中,,實(shí)時(shí)構(gòu)建地圖并規(guī)劃路徑,但在定位過程中,,需要搜索的空間范圍很大,,若沒有很好的簡化算法,實(shí)時(shí)性很難保證,。路標(biāo)法的定位中,,若有一個(gè)路標(biāo)出現(xiàn)故障,則系統(tǒng)的整體穩(wěn)定性就會受到很大的影響,。本文采用二維極坐標(biāo)的方式確定位置,,根據(jù)各目標(biāo)點(diǎn)的位置,事先為智能小車規(guī)劃好行走路線[5],,避免了復(fù)雜算法的優(yōu)化和參照物的使用,,還能有效避障。本系統(tǒng)具有設(shè)計(jì)簡單,、易操作,、成本低的特點(diǎn),可以應(yīng)用于餐廳服務(wù)機(jī)器人的設(shè)計(jì),,以機(jī)器人代替人工送餐,,給人們的生活帶來便利。

1系統(tǒng)整體設(shè)計(jì)

001.jpg

  系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)如圖1,,流程如下:

  圖1基于路徑規(guī)劃的室內(nèi)定位系統(tǒng)結(jié)構(gòu)框圖首先需要事先測量小車的起點(diǎn)與各目標(biāo)點(diǎn)的距離ρ1,ρ2…ρn和角度θ1,θ2…θn,,并將坐標(biāo)表示為(ρ1,θ1),(ρ2,θ2)…(ρn,θn);然后利用碼盤和光電對管測出固定占空比下的車輪轉(zhuǎn)速,,并通過LCD1602實(shí)時(shí)顯示,,從而通過控制時(shí)間來達(dá)到控制小車前進(jìn)指定距離的目的。利用HMC5883L電子羅盤測量角度,,將電子羅盤的測量數(shù)據(jù)通過I2C總線傳輸?shù)街骺匦酒琒TM32F103ZET6,,主控芯片將傳感器采集的數(shù)據(jù)進(jìn)行分析處理,,進(jìn)而控制電機(jī)轉(zhuǎn)動使車前進(jìn),。在此期間,,通過舵機(jī)帶動HCSR04超聲波模塊不斷地轉(zhuǎn)動測距,當(dāng)測得距離小于某一設(shè)定值時(shí),,控制小車停止,,并且繼續(xù)不斷檢測距離。當(dāng)撤去障礙物,,再按事先規(guī)劃的路徑繼續(xù)前進(jìn),,到達(dá)目標(biāo)點(diǎn)。

002.jpg

2硬件設(shè)計(jì)

  2.1主控芯片

  該系統(tǒng)的主控芯片選用STM32F103ZET6,,此芯片作為32位ARM微控制器,,有著比16位、8位處理器更強(qiáng)的數(shù)據(jù)處理能力,、更豐富的外設(shè)接口,。在該系統(tǒng)設(shè)計(jì)中,由于STM32系列微控制器的I2C接口穩(wěn)定性較差,,因此采用IO口模擬I2C總線的方式實(shí)現(xiàn)穩(wěn)定的信息傳輸,。選用PB6和PB7模擬I2C總線的SCL和SDA,實(shí)現(xiàn)了與HMC5883L模塊的穩(wěn)定通信,。

  2.2HMC5883L模塊

  霍尼韋爾HMC5883L是一種高集成模塊,,選其為偏角測量模塊,是因?yàn)槠渚哂懈哌_(dá)1°~2°的測量精度,;同時(shí)采用I2C數(shù)字接口通信,,高效、穩(wěn)定,,程序設(shè)計(jì)簡單,。需要特別注意的是:

  (1)為防止干擾,,使用時(shí)應(yīng)避免該模塊直接與金屬物體接觸,;

  (2)在電磁干擾較大的室內(nèi)環(huán)境,,要對該模塊進(jìn)行校正[6],,以確保測量的準(zhǔn)確;

 ?。?)由于其測量靈敏,,在設(shè)置轉(zhuǎn)角時(shí),可以用一個(gè)小范圍的值代替特定值,。

  該系統(tǒng)在設(shè)計(jì)時(shí),,向小車后方加裝木板,,將HMC5883L模塊固定于木板上,以降低干擾,,模塊上的x和y軸即為在水平面上建立的二維坐標(biāo)系,。下面給出電子羅盤返回角度θ的計(jì)算,其中x和y表示讀出HMC5883L寄存器中的值,。

  8{J@X$055DAEUK9SR{R$$@O.png

  經(jīng)過此運(yùn)算后,,將電子羅盤測得的數(shù)據(jù)范圍轉(zhuǎn)化為0°~360°。即在0°時(shí),,x軸所指向的方位為南,。

  2.3電機(jī)驅(qū)動設(shè)計(jì)

  電機(jī)驅(qū)動模塊電路設(shè)計(jì)如圖2,驅(qū)動芯片采用L293,,一個(gè)芯片可以驅(qū)動兩個(gè)直流電機(jī),,簡化了系統(tǒng)電路的設(shè)計(jì),同時(shí),,在引腳電平低于一定水平時(shí),,芯片停止工作,對電源起到了保護(hù)作用,。電機(jī)調(diào)速方式為PWM方式,,即在周期固定的前提下,通過控制輸出脈寬的不同來進(jìn)行速度的調(diào)節(jié),。

  2.4測速模塊

003.jpg

  測速模塊電路設(shè)計(jì)如圖3,。其中,光電對管選用ITR9608,,在系統(tǒng)設(shè)計(jì)時(shí),,將碼盤固定在電機(jī)上,并置于光電對管的凹槽中,,車輪帶動碼盤轉(zhuǎn)動,,將PWM的信號傳輸至主控芯片,從而計(jì)算車輪的轉(zhuǎn)速,,并通過LCD1602實(shí)時(shí)顯示,。

  設(shè)車輪速度為v,直徑為d,,光電碼盤的齒數(shù)是n,,即車輪轉(zhuǎn)動一周的計(jì)數(shù)次數(shù)為2n,單位時(shí)間高低電平的變化次數(shù)為t,,則車輪速度:

  }0Z(CTF9IO[Z_HX(A{@`)@P.png

  2.5超聲波避障模塊

  該系統(tǒng)將超聲波和舵機(jī)通過云臺結(jié)合起來,,放在車體的最前端,通過轉(zhuǎn)動舵機(jī)獲取小車各個(gè)方向的距離值,進(jìn)行障礙處理,。在對舵機(jī)的控制中,,用不同寬度的脈沖信號,對應(yīng)舵機(jī)轉(zhuǎn)動的不同角度,。選用的HCSR04超聲波模塊測量范圍可達(dá)2 cm~400 cm,,滿足該系統(tǒng)對避障精度的要求,并通過高電平的持續(xù)時(shí)間計(jì)算障礙物的距離,,即:

  距離=(高電平時(shí)間×聲速)/2(3)

3軟件設(shè)計(jì)

  軟件設(shè)計(jì)流程如圖4所示,,其主要部分包括系統(tǒng)初始化,、采集角度數(shù)據(jù),、角度的判斷、避障等,。系統(tǒng)選用Keil uVision5開發(fā)工具,,選用C語言編程。其中,,為了使智能小車在行走的同時(shí)檢測障礙,,設(shè)計(jì)了10 ms計(jì)數(shù)法,同時(shí)定義num變量,,保存測距函數(shù)執(zhí)行的次數(shù),,從而達(dá)到記錄距離的目的。在避障函數(shù)中,,控制舵機(jī)左轉(zhuǎn),、居中、右轉(zhuǎn),,不斷地循環(huán),,達(dá)到多方位檢測距離的目的。具體程序設(shè)計(jì)如下: 

004.jpg

 ?。?)先對系統(tǒng)的外設(shè)資源初始化,,然后判斷當(dāng)jiaodu≠預(yù)設(shè)角時(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時(shí),表明已找到指定方向,,執(zhí)行直行函數(shù)Go(),,并延遲適當(dāng)時(shí)間,該時(shí)間由目標(biāo)距離和車速決定。

  if(set==1)

  {set=0;

  just_car();//前進(jìn)中避障

  Stop();

  }

 ?。?)接著獲取角度值,,判斷是否為下一目標(biāo)點(diǎn)所設(shè)角度,不斷循環(huán),,直到最后一個(gè)目標(biāo)點(diǎn)停止,。

  (4)在直行過程中,,用TIM2定時(shí)器產(chǎn)生1 ms時(shí)基信號,,每隔10 ms,執(zhí)行一次距離檢測函數(shù)Get_distance()和障礙處理函數(shù)Handle_bar(),。并定義一個(gè)num變量用來計(jì)數(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時(shí),則認(rèn)為前方存在障礙,,執(zhí)行障礙處理函數(shù)Handle_bar(),。

  void Handle_bar()

  {if(juli_cm < 10)

  { while(1)

  {

  障礙處理

  ……

  }

  }

  else

  Go();

  break;

  }

  (6)當(dāng)距離檢測函數(shù)Get_distance()返回值大于10 cm時(shí),,則認(rèn)為障礙已經(jīng)撤走,,此時(shí)程序通過num中保存的值可以計(jì)算出剩余要走的路程。

 ?。?)返回(3),。

4實(shí)際測試

  為了測試該系統(tǒng)能準(zhǔn)確定位且能有效避障,設(shè)計(jì)實(shí)驗(yàn)如下:

005.jpg

  在室內(nèi)環(huán)境,,給定初始位置和各目標(biāo)點(diǎn),,并假定預(yù)設(shè)角為0°,即正南方向,,對小車進(jìn)行直行和轉(zhuǎn)彎定位測試,。為了更易觀察實(shí)驗(yàn)效果,設(shè)定直行距離為50 cm,,轉(zhuǎn)角為90°,,避障距離為10 cm。設(shè)置預(yù)設(shè)角時(shí),,由于電子羅盤的靈敏度較高,,因此用一定角度范圍代替具體的角度值,且在此實(shí)驗(yàn)中角度范圍為10°,。測試中的實(shí)際目標(biāo)點(diǎn)分布如圖5示:O表示起點(diǎn),,A,、B、C分別為目標(biāo)點(diǎn),。

  首先,,將小車置于O點(diǎn)尋找預(yù)設(shè)角;然后前進(jìn)50 cm,,右轉(zhuǎn)90°,,到達(dá)點(diǎn)A;接著前進(jìn)50 cm,,再右轉(zhuǎn)90°,,到達(dá)點(diǎn)B;最后前進(jìn)50 cm停止于點(diǎn)C,。在小車前進(jìn)過程中,,將手擋在小車的前方作為障礙物,當(dāng)手與小車距離小于10 cm時(shí),,小車停止前進(jìn),,同時(shí)舵機(jī)帶動超聲波模塊左右轉(zhuǎn)動測距,,若障礙一直存在,,則會循環(huán)檢測距離,直到將障礙物撤去,,此后小車?yán)^續(xù)前進(jìn)剩余距離,。實(shí)驗(yàn)中測量其運(yùn)行時(shí)距離與角度的對應(yīng)關(guān)系,并將實(shí)際測得的軌跡與理想軌跡進(jìn)行仿真,,結(jié)果如圖6,。從圖6中可知,基于路徑規(guī)劃的室內(nèi)小車定位系統(tǒng),,能夠在有效誤差范圍內(nèi)到達(dá)各目標(biāo)點(diǎn),,完成室內(nèi)定位任務(wù)。

006.jpg

參考文獻(xiàn)

 ?。?] 何海平,,郭杭,方爽.基于模糊聚類的ZigBee室內(nèi)定位系統(tǒng)設(shè)計(jì)[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.

  [3] 劉洺辛, 孫建利. 基于能效的WLAN室內(nèi)定位系統(tǒng)模型設(shè)計(jì)與實(shí)現(xiàn)[J]. 儀器儀表學(xué)報(bào), 2014, 35(5):11691178.[4] 宋婷.室內(nèi)移動機(jī)器人路徑規(guī)劃與定位技術(shù)研究[D].西安:西安電子科技大學(xué),,2011.

 ?。?] JARVIS R. Distance transform based path planning for robot navigation[M]. Singapore:World Scientific, 1993.

  [6] 劉詩斌,馮小毅,,李宏.基于橢圓假設(shè)的電子羅盤誤差補(bǔ)償方法[J].傳感器技術(shù),,2002,21(10):28-33.


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。