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