基于April Tag標(biāo)記定位的自動(dòng)泊車系統(tǒng)實(shí)現(xiàn)
作者 姚錫欽 林燁 陳蘇陽 浙江工貿(mào)職業(yè)技術(shù)學(xué)院 電子工程系(浙江 溫州 325000)
本文引用地址:http://2s4d.com/article/201807/389575.htm摘要:系統(tǒng)采用STM32F103系列單片機(jī)作為自動(dòng)泊車控制系統(tǒng)和小車控制系統(tǒng)的核心,控制裝置通過按鈕選擇小車停車位并通過無線模塊發(fā)送給小車,實(shí)時(shí)通過OpenMV攝像頭檢測小車頂部的April Tag標(biāo)記來獲取小車的位置及角度,實(shí)現(xiàn)小車自動(dòng)駛?cè)胪\囄?。小車通過控制裝置的反饋來獲取自己的當(dāng)前位置,同時(shí)利用麥克納姆輪的水平位移,讓小車更加精準(zhǔn)快速的到達(dá)停車位。
*2017年“瑞薩杯”全國大學(xué)生電子設(shè)計(jì)競賽高職高專組最高獎(jiǎng)“瑞薩杯獎(jiǎng)”
姚錫欽(1978-),男,實(shí)驗(yàn)師,研究方向:機(jī)電一體化技術(shù)。
0 引言
本設(shè)計(jì)為2017年“瑞薩杯”大學(xué)生電子設(shè)計(jì)競賽高職高專組自動(dòng)泊車系統(tǒng)(L題)的解決方案,本題的核心要求是設(shè)計(jì)并制作一個(gè)泊車系統(tǒng),要求電動(dòng)小車能自動(dòng)駛?cè)胫付ǖ耐\囄?,停車后能自?dòng)駛出停車場。為了達(dá)成核心要求,我們?cè)O(shè)計(jì)了這套使用麥克納姆輪做小車車輪的方式使小車具備全向移動(dòng)能力,并通過OpenMV識(shí)別定位April Tag來定位小車位置的自動(dòng)泊車方案。通過利用OpenMV在圖像識(shí)別定位開發(fā)方面簡單快速的特點(diǎn),以及麥克納姆輪全向移動(dòng)的能力使得糾偏算法大大簡化。使得我們得以在緊張的比賽時(shí)間內(nèi)完成本套方案。
1 系統(tǒng)整體方案
系統(tǒng)整體結(jié)構(gòu)如圖1所示。本系統(tǒng)由小車部分以及控制器兩大部分組成,其中小車部分由STM32單片機(jī)、無線模塊、測速模塊、檢測碰撞電路、電機(jī)控制電路、液晶顯示電路、聲光提示電路、電源電路,輔以合適的機(jī)械結(jié)構(gòu)組成:STM32單片機(jī)通過無線模塊接收來自控制器的目標(biāo)車位以及小車當(dāng)前坐標(biāo)的數(shù)據(jù)流,在STM32單片機(jī)中進(jìn)行拼接格式化后小車即可獲知自身的實(shí)時(shí)坐標(biāo)以及要前往的目標(biāo)車位。運(yùn)動(dòng)過程中由于使用麥克納姆輪進(jìn)行移動(dòng),且考慮到小車電機(jī)運(yùn)動(dòng)特性參數(shù)不會(huì)絕對(duì)一致,故使用由紅外光電對(duì)管以及碼盤組成的測速模塊對(duì)車輪進(jìn)行測速,并在STM32中做每個(gè)車輪的轉(zhuǎn)速PID實(shí)時(shí)控制小車車輪轉(zhuǎn)速符合麥克納姆輪運(yùn)動(dòng)控制函數(shù)計(jì)算出的單個(gè)輪速度。由于題目中要求小車停入車位以及駛出車位需要有相應(yīng)的聲光提示,且在小車調(diào)試過程中由于小車處于移動(dòng)中,不方便在外部接入串口線進(jìn)行調(diào)試,故需要相應(yīng)的可控LED以及蜂鳴器發(fā)光發(fā)聲提示,輔助程序調(diào)試。液晶顯示模塊用于顯示無線模塊初始化情況,以及碰撞次數(shù)。電源部分使用兩節(jié)18650鋰電池串聯(lián)作為總電源,其中電機(jī)驅(qū)動(dòng)供電為電池直供的最高8.4 V,最低6 V的電源,單片機(jī)等其他控制檢測電路為經(jīng)過降壓穩(wěn)壓后的5 V電源,并在單片機(jī)最小系統(tǒng)板上由LDO進(jìn)一步穩(wěn)壓為3.3 V。檢測碰撞方面有與場地配合來檢測與場地碰撞的檢測碰撞電路組成。控制部分主要由攝像頭、液晶顯示模塊、語音錄放模塊、激光檢測模塊、無線模塊組成,其中攝像頭用于跟蹤小車位置,液晶顯示模塊用于顯示當(dāng)前車位以及小車行駛信息,同時(shí)使用語音錄放模塊進(jìn)行播報(bào),激光檢測模塊用于檢測小車進(jìn)入場地以及駛出場地,并計(jì)算時(shí)間差,無線模塊用于向小車發(fā)送數(shù)據(jù)流。
2 檢測碰撞電路
因題目中有要求小車在場地中移動(dòng)的過程中要能記錄小車碰撞場地隔板的次數(shù)。故需要制作相應(yīng)的檢測碰撞電路來檢測與隔板的碰撞,可參考圖2、圖3、圖4,思路為:在場地隔板上可能碰撞的區(qū)域貼上一條有一定寬度的銅箔,在小車上方安置一個(gè)平臺(tái),并在平臺(tái)四周上下間隔一定高度貼兩圈銅箔,當(dāng)沒有發(fā)生碰撞時(shí),小車平臺(tái)上兩圈銅箔不導(dǎo)通,一旦發(fā)生碰撞,場地隔板上的銅箔將小車平臺(tái)上的兩圈銅箔導(dǎo)通,單片機(jī)檢測銅箔被導(dǎo)通則判斷發(fā)生了碰撞,其原理類似一個(gè)常開式按鈕。
3 攝像頭模塊
由于需要實(shí)時(shí)獲取小車在場地中的位置,并將小車坐標(biāo)通過控制器實(shí)時(shí)發(fā)送到小車并進(jìn)行反饋控制。故需要保證小車在場地中能實(shí)時(shí)被捕獲并要求小車移動(dòng)過程中丟失幾率盡量低,且坐標(biāo)數(shù)據(jù)刷新率要求高。故選擇使用OpenMV配合April Tag來實(shí)現(xiàn)定位。OpenMV是一個(gè)開源的機(jī)器視覺模塊。相較于傳統(tǒng)攝像頭+單片機(jī)做硬件,自己寫圖像識(shí)別處理算法的方式,OpenMV使用Python語言(通過MicroPython解釋器在STM32F4或STM32F7上運(yùn)行Python程序),開發(fā)速度快。一些常用功能所需的算法已經(jīng)封裝成Python庫,可以直接調(diào)用,并有示例程序參考。在比賽中,由于開發(fā)時(shí)間特別寶貴,故選擇使用OpenMV做攝像頭模塊,可以大大提升開發(fā)速度,并在數(shù)據(jù)刷新率上相對(duì)于樹莓派+OpenCV有優(yōu)勢(shì),在小車移動(dòng)過程中丟失幾率方面優(yōu)于普通攝像頭+STM32自寫算法,通過將OpenMV固定于場地正上方,并俯視全場,小車上方平臺(tái)固定April Tag標(biāo)簽來進(jìn)行追蹤,小車上的April Tag標(biāo)簽安裝示意可參照?qǐng)D6??梢缘贸鲂≤囋跀z像頭畫面中的XY坐標(biāo)以及旋轉(zhuǎn)角度,攝像頭俯視場地時(shí)畫面如圖5。該方案雖在當(dāng)前項(xiàng)目中具有優(yōu)勢(shì),但由于使用STM32F7單片機(jī),RAM容量較少,不能處理高分辨率圖片,使得其定位精度成為一大瓶頸,且由于分辨率低,導(dǎo)致April Tag標(biāo)簽需要在攝像頭畫面中占有一定面積才可被穩(wěn)定跟蹤識(shí)別,故需要制作更大尺寸的April Tag標(biāo)簽或者將April Tag標(biāo)簽距離攝像頭的高度差拉近(在車身上抬高April Tag標(biāo)簽高度)來補(bǔ)償分辨率過低的問題。
4 麥克納姆輪
本題目中有兩個(gè)平行式車位,要求小車能實(shí)現(xiàn)側(cè)方位停車,我們?cè)诔跗诳紤]的時(shí)候就以要求停車過程中零碰撞為目標(biāo),故選擇麥克納姆輪作為小車車輪,小車使用的麥克納姆輪實(shí)物圖如圖7。相對(duì)于普通車輪,麥克納姆輪通過對(duì)4個(gè)車輪轉(zhuǎn)動(dòng)方向和速度的協(xié)調(diào)控制,可以使車體在運(yùn)動(dòng)平面內(nèi)的任意方向上移動(dòng)、轉(zhuǎn)動(dòng)和漂移,即運(yùn)動(dòng)中可以不改變自身的方向),這可以很容易實(shí)現(xiàn)側(cè)方停車的要求,并且可以大大簡化在正常行駛過程中糾偏算法。在電機(jī)方面,由于車身寬度以及其他重量體積方面的考慮,使用普通的微型有刷直流電機(jī)配合20格的普通光電碼盤配合光電對(duì)管對(duì)電機(jī)進(jìn)行測速后進(jìn)行轉(zhuǎn)速PID控制,由于電機(jī)輸出軸經(jīng)過減速機(jī)構(gòu)后連接到麥克納姆輪進(jìn)行驅(qū)動(dòng),且測速用光電碼盤也位于減速后的軸上,碼盤格數(shù)也過少,故測速效果十分不理想,導(dǎo)致PID控制效果不理想。有條件可使用步進(jìn)電機(jī)或在電機(jī)直接輸出軸上通過光電碼盤進(jìn)行測速。
5 軟件設(shè)計(jì)
軟件主要為小車上STM32程序以及控制器STM32程序,以及OpenMV上個(gè)Python腳本,其中OpenMV中的Python實(shí)現(xiàn)了April Tag標(biāo)簽的追蹤,并將April Tag標(biāo)簽的位置信息和角度信息打包成JSON格式的數(shù)據(jù)包通過有線TTL串口發(fā)送至控制器上的STM32單片機(jī)進(jìn)行處理,控制器上的STM32單片機(jī)通過使用CJSON庫對(duì)來自O(shè)penMV的JSON數(shù)據(jù)進(jìn)行解析,提取出相應(yīng)數(shù)據(jù)后打包成小車對(duì)應(yīng)的數(shù)據(jù)包格式通過無線模塊發(fā)送給小車,更改數(shù)據(jù)包格式主要是因?yàn)樵赟TM32單片機(jī)中解析JSON會(huì)消耗大量RAM以及CPU時(shí)間,故需要更換數(shù)據(jù)格式,且需要發(fā)送至小車的數(shù)據(jù)主要有兩大類,分別是坐標(biāo)角度數(shù)據(jù)以及車位數(shù)據(jù),故在數(shù)據(jù)包中加入包類型來區(qū)分兩大數(shù)據(jù)類型。小車收到車位數(shù)據(jù)以及坐標(biāo)角度數(shù)據(jù)后根據(jù)小車中的坐標(biāo)點(diǎn)計(jì)算小車當(dāng)前坐標(biāo)與小車目標(biāo)坐標(biāo)的誤差,得出補(bǔ)償誤差用的XY方向向量長度。將得出的向量長度數(shù)據(jù)輸入麥克納姆輪運(yùn)動(dòng)計(jì)算函數(shù)算出每個(gè)輪子的輪速度,并傳遞給車輪轉(zhuǎn)速PID程序進(jìn)行車輪轉(zhuǎn)速控制,其中得出誤差并進(jìn)行補(bǔ)償控制的部分由于克納姆輪運(yùn)動(dòng)計(jì)算函數(shù)的參數(shù)為X方向向量長度以及Y方向向量長度以及旋轉(zhuǎn)角速度,故可直接使用小車當(dāng)前在攝像頭中的坐標(biāo)與目標(biāo)在攝像頭中的坐標(biāo)的XY誤差分以及小車在攝像頭中的旋轉(zhuǎn)角度直接分別乘以系數(shù)來作為麥克納姆輪運(yùn)動(dòng)計(jì)算函數(shù)的參數(shù)進(jìn)行位置補(bǔ)償。
6 結(jié)論
本文設(shè)計(jì)方案結(jié)構(gòu)較為簡單,且實(shí)現(xiàn)容易,特別在麥克納姆輪與OpenMV和April Tag的配合方面,大大簡化了算法以及硬件電路設(shè)計(jì)難度和機(jī)械安裝難度。并且有一定可靠性,在非理想狀態(tài)下(例如電機(jī)運(yùn)動(dòng)出現(xiàn)誤差,麥克納姆輪安裝出現(xiàn)誤差)表現(xiàn)出一定的魯棒性。
參考文獻(xiàn):
[1]林燁.基于PID算法的水溫控制系統(tǒng)設(shè)計(jì)[J].山西科技,2011,26(3):111-113.
[2]王一治,常德功.Mecanum四輪全方位系統(tǒng)的運(yùn)動(dòng)性能分析及結(jié)構(gòu)形式優(yōu)選[J].機(jī)械工程學(xué)報(bào),2009(5):307-310.
[3]侯彬,李亞明.麥克納姆輪技術(shù)及其在船用輪式設(shè)備中的應(yīng)用[J].船舶工程,2011(3):84-87.
[4]石維亮,王興松,賈茜.基于Mecanum輪的全向移動(dòng)機(jī)器人的研制[J].機(jī)械工程師,2007(9):18-21.
[5]Abdelkader I,El-Sonbaty Y,El-Habrouk M.OPENMV: A PYTHON POWERED, EXTENSIBLE MACHINE VISION CAMERA[C]// International Conference on Computer Graphics, Visualization, Computer Vision and Image Processing. 2017.
本文來源于《電子產(chǎn)品世界》2018年第8期第39頁,歡迎您寫論文時(shí)引用,并注明出處。
評(píng)論