齊新皓 蘇秀云 馬 國 李韶欽 曾登苑
(西南民族大學,成都,610000)
工業(yè)4.0自從在2013年4月漢諾威工業(yè)博覽會上被正式推出,人工智能開始被越來越多的人關注。在人工智能領域,跟隨機器人的開發(fā)已經成為一個穩(wěn)步增長的研究趨勢,并將成為機器人發(fā)展的下一個重大趨勢。因此,有必要開發(fā)出一種具備自動跟隨功能的機器人,以滿足眾多現實需求[1]。
跟隨高爾夫車、跟隨行李箱[2]等產品的出現,無疑給人們的生活帶來了便利,滿足人們的生活所需,而且這些具有自動跟隨與目標識別功能的機器人也將成為人類最有力的助手。為了滿足人們對人機互動的更高需求,本文設計了一款單目視覺自動跟隨小車,通過在小車上安裝視覺系統,并采集跟隨目標的特征信息,再利用圖像處理算法對跟隨目標進行定位。該小車可服務于特定的目標對象,幫助人們完成任務。
本文設計的自動跟隨小車采用STM32F103為主控制芯片,并使用OpenMV攝像頭、直流電機、編碼器、OLED顯示屏等外設。
小車采用ST(意法半導體)公司生產的STM32F103芯片,該芯片采用Cortex-M3內核、ARM-V7架構。Cortex-M3擁有性能強勁、代碼密度高、位帶操作、可嵌套中斷、低成本、低功耗等優(yōu)勢。
STM32F103芯片的優(yōu)異性主要體現在以下幾方面:
1)以8位機的價格得到32位機的性能;
2)擁有SPI、IIC、USB、CAN、ADC、DAC等眾多外設機功能;
3)實時性能好,可使用的中斷84個,具有16級可編程的中斷優(yōu)先級,并且每個引腳都可以作為中斷輸入;
4)較低的開發(fā)成本,支持SWD和JTAG兩種調試接口,為仿真調試帶來便利。
小車通過機器視覺定位技術完成對跟隨目標的定位,首先,利用相關視覺處理技術確定小車與跟隨目標的相對坐標位置(如圖1所示),然后根據與期望坐標間的比較結果,由控制器控制電機轉動,最終實現小車對目標的跟隨。
圖1 單目視覺定位原理圖
從圖1中可以看出,已知量[3-5]包括:相機高度H,圖像坐標中心對應的實際坐標點與攝像頭在y軸上的距離O3M,鏡頭中心點的圖像坐標O1(ucenter,vcenter) ,測量像素點的圖像坐標P1(u,0)、Q1(u,v),實際像素的長度xpix和寬度ypix,攝像頭焦距f。
根據上述已知量,可計算出角 、角β、角γ:
由上述公式可得到Y軸垂直方向的坐標:Y=O3P;
由公式(5)-公式(7)可得到X軸垂直方向的坐標∶X=PQ
小車采用脈沖寬度調制(Pulse Width Modulation,PWM)技術進行調速,脈寬調制示意圖如圖2所示。PWM控制技術以采樣控制理論中的一個重要結論為理論基礎(即:沖量相等而形狀不同的窄脈沖加在具有慣性的環(huán)節(jié)上時,其效果基本相同),對半導體開關器件的導通和關斷進行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,并用這些脈沖來代替正弦波或其他所需要的波形,然后按一定的規(guī)則對各脈沖的寬度進行調制,這樣既可以改變逆變電路輸出電壓的大小,也可以改變輸出頻率。
圖2 脈寬調制示意圖
基于STM32F103芯片,PWM工作原理如下:假設定時器工作在向上計數PWM模式,且當CNT 圖3 PWM工作原理示意圖 從圖3中可以看出,當CNT值小于CCRx的時候,IO輸出低電平(0);當CNT值大于等于CCRx的時候,IO輸出高電平(1);當CNT達到 ARR 值的時候,重新歸零,然后重新向上計數,依次循環(huán)。改變CCRx的值,就可以改變PWM輸出的占空比;改變ARR的值,就可以改變PWM輸出的頻率,這就是PWM輸出的原理。 需要說明的是:CNT英文全稱為TIMx_CNT,中文名稱為計數器寄存器;ARR英文全稱為TIMx_ARR,中文名稱為自動重載寄存器;CCR英文全稱為TIMx_CCR,中文名稱為捕獲/比較寄存器。 小車車體結構通常有三輪式、四輪式兩種,考慮到小車的跟隨性能,本文設計的小車采用三輪式結構,控制系統采用差速轉向控制方式。 所謂差速控制是指小車采用兩個輪子作為驅動輪,另外一個輪子作為萬向輪。在轉向時,驅動電機對小車左右驅動輪采取不同轉速的方式進行驅動,以達到差速轉彎的效果,而非驅動輪則選用萬向輪,可360°轉動。 驅動方式分為前驅和后驅兩種,前驅的轉向性能較好,但驅動力不足;后驅雖然轉向力不足,但可以為系統提供較好的動力,而且就穩(wěn)定性而言,后驅的性能更加優(yōu)越。所以,筆者綜合考慮多方面的因素后,決定對小車采用后驅的方式。小車結構示意圖如圖4所示。 圖4 小車結構示意圖 小車的電源為兩大部分提供電壓,一部分是主控芯片及攝像頭,另一部分是兩個電機,如圖5所示。為此,筆者設計了兩組電源:一組采用穩(wěn)壓芯片AMS1117-3.3,經過濾波穩(wěn)壓后為主控芯片STM32F103及OpenMV攝像頭提供3.3V穩(wěn)定電壓;另一組采用升壓芯片MC34063,為兩個電機提供12V的穩(wěn)定電壓。 小車使用OpenMV攝像頭作為圖像采集傳感器,并使用OpenCV庫對采集的圖像進行處理。該攝像頭采用ARM Cortex M7架構的STM32F765VI處理器,所有的I/O引腳均可輸出3.3V,并且兼容5V。感光芯片使用OV7725感光元件,在80FPS下可以處理320×240的16位RGB565彩色圖像。在該項目中,小車主要使用一個異步串口總線 (TX/RX)的I/O接口,用來與主控芯片進行通信。 圖5 小車電源模塊 在電機驅動模塊中,小車采用雙MOS電路[6],其工作原理如圖6所示。該電路具有以下優(yōu)點: 1)具有欠壓保護功能,支持電壓為7V~24V; 2)雙路電機接口,每路額定輸出電流7A; 3)類似L298控制邏輯,每路都支持三線控制使能、正反轉及制動; 4)控制信號使用灌電流驅動方式,支持絕大多數單片機直接驅動。 圖6 雙MOS電機驅動電路原理 小車控制系統總體結構如圖7所示。 小車要實現跟隨功能,其主要設計程序是:首先通過OpenMV攝像頭獲取圖像,并在圖像中搜索指定色塊目標,經OpenCV庫處理后獲取目標坐標與小車的實際距離,再通過通信模塊傳輸至主控制器,然后與期望值進行比較,主控制器根據實際距離偏差值來控制電機的運行,以實現小車的自動跟隨功能。 圖7 小車控制系統總體結構 小車控制系統的主程序設計流程如圖8所示。設計包括控制芯片、OpenMV攝像頭、OLED顯示屏的初始化,比如對I/O口、定時器、中斷等進行初始化。若跟隨目標不在最初視野范圍內,則在搜索到目標后再進行圖像處理。在對小車的控制過程中,筆者引入了飛控系統中的俯仰角、航向角,即用俯仰角來控制小車的前進后退,航向角來控制小車的左右轉向。 圖8 小車控制系統主程序設計流程 本文介紹的自動跟隨小車,目前已可以對距離車體0.5m~2.5m內的固定目標實現定位,并能達到與目標始終保持1m的相對距離。當相對距離改變時,小車可在0.5s內快速響應距離的改變,并實現快速跟隨功能。此外,該小車還可增大車體體積,改裝成跟隨行李箱、跟隨購物車等具有實用價值的跟隨機器人。2 小車結構及模塊設計
2.1 車體機構設計
2.2 電源模塊
2.3 圖像采集模塊
2.4 電機驅動模塊
3 跟隨程序設計
4 總結