李 慧,胡文婷,謝淑芬,袁紹秋
(新疆農業大學 計算機與信息工程學院,新疆 烏魯木齊 830052)
由于社會和經濟的發展,現代人對保健生活有了更高的需求,枸杞子不僅是名貴的中醫藥品和保健滋補品,還是中國主要功能型特色資源之一。枸杞子廣泛分布于中國寧夏和新疆等地,錯綜復雜的藤枝注定了枸杞子采摘的不易,而且受“無序花序、連續花果”等特性的影響[1],枸杞子采集過程需要多次完成,這不僅降低了枸杞子采集效率,也增加了枸杞子的生產成本,不利于枸杞子的生產開發。因此,研發一款能夠提高效率的全自動枸杞采摘機器人,對于中國枸杞子生產開發有著重要意義。
枸杞作為十分具有經濟和藥用價值的產物,在全世界享有盛譽,因此國內外對枸杞采摘機均有相關研究。
國外,枸杞種植地十分廣闊,土地平坦,適合寬距離種植枸杞作物。以美國為例,主要是以大型自走式枸杞采摘機為主[2],采摘的核心使用的是振動方式,每當枸杞適季時,會用兩輛枸杞采摘車同時開入相鄰的枸杞地路中,以相同速度緩慢前進,然后安裝多層振動網,將振動網套入枸杞作物中,開啟振動采摘。雖然這種采摘方式快速,但是需要枸杞作物具有寬距離種植的特點。
國內枸杞地受地理環境影響,栽培地面積多為330棵/667m2,屬密植式栽培,目前主要的枸杞采摘機多為小型采摘機械,大致分為手持式力學振動型枸杞采摘機、手持式機械梳刷式枸杞采摘機和氣吸式枸杞采摘機3種[3]。手持式機械振動型枸杞采摘機,原理是通過高頻發生器和電機完成枸杞采集,包括偏心輪、連桿機構以及抓枝器等部分,以中國寧夏4ZGB-30型為例,當啟動機器并將枸杞樹枝放在抓枝器上時,高頻電壓就會推動偏心輪高速運動,繼而利用機器的連桿推動抓枝器實現高頻振蕩,從而使枸杞被震落[4],但是這種方式會將同一枝條上未成熟的枸杞一起摘下,影響下一波落果率。手持式機械梳刷型枸杞采摘機的核心采摘部件為電動機、齒輪箱和刷頭,純機械式設計,對人工依賴十分強烈,當打開電源,電動機驅動齒輪箱運動,從而帶動刷頭逆向運動,利用適當的刷力將枸杞刷下,但這種采摘方式對枸杞枝條損傷較大。氣吸型枸杞采摘機采摘的核心為氣吸模塊,但質量小的枸杞或者葉子較易偏離枝條,同樣容易導致未成熟枸杞、葉片被采摘的概率增大[5]。
通過對目前4類枸杞采摘機器的研究,發現不能完全解放雙手以及錯誤采摘未成熟果子仍是主要問題。綜合各類枸杞采摘機的優缺點,能夠最大程度地解放雙手,可以對枸杞進行識別的小型自走式機器人可能成為主流。因此,本文設計了一種新的全自動枸杞采摘機器人,主要采用OpenMV進行開發,由L298N電機驅動模塊、PCA9685舵機驅動模塊和采摘刷頭組成,系統結構如圖1所示。OpenMV利用自帶的攝像頭對枸杞進行顏色識別[6],之后控制L298N驅動直流電機實現小車運動,再利用PCA9685通信控制舵機運行角度實現機械臂運動,采摘刷頭則同樣由OpenMV控制,實現采摘。

圖1 控制系統結構
OpenMV是一款功耗低、體積小的機器視覺模塊,采用C語言高效地實現了核心機器視覺算法,配有MicroPython解釋器,通過Python語言實現對OpenMV物理層的訪問與控制[7],OpenMV具有UART,I2C,SPI,PWM,ADC,DAC,GPIO等通信接口。本設計利用USB接口實現電腦與OpenMV的連接,在電腦中安裝OpenMV的集成開發環境IDE完成編程以及之后的調試和更新工作,以OpenMV為核心控制器,識別枸杞,輸出信號,對各個電機、舵機進行控制,達到小車運動、機械臂運行的目的。
圖像識別總體分3步:圖像的采集、處理和識別,其過程如圖2所示,利用攝像頭識別物體,通過算法進行目標的比較,對目標定位及跟蹤。

圖2 圖像識別過程
圖像處理是必不可少的一步,通過攝像頭采集光學信號,轉換為電信號,導入感光元件,令其初始化后,設置像素模式及分辨率。通過傳感器模塊從攝像頭獲取一幀圖像,用于設置感光元件的參數,可以進行圖片的預處理,然后通過使用Image模塊提供的辦法,獲取/設置像素點、獲取圖像的寬度和高度。將圖片轉換為二維數組,之后使用ROI選擇需要處理的圖像區域,然后根據相應的函數返回所要研究區域的對應值[8]。
圖像處理前需要對圖片進行壓縮,通過色域識別,可以利用LAB實現灰度圖以及二值化,把THRESHOLDS中閾值的圖像部分全部像素設置為1(白),閾值外的部分設為0(黑)。OpenMV里的閾值選擇工具就可以獲取準確的LAB,快速地進行顏色閾值的調試。利用Find_blobs函數獲取需要查找的顏色,返回多個Blob列表。OpenMV擁有許多基本函數用于圖像處理,包括Image size、Sensor、噪聲去除、閾值分割函數等,能完全滿足枸杞識別的相關功能設計。
OpenMV識別到枸條后,計算出具體位置信息,結合L298N芯片、I2C總線通信等驅動直流電機帶動小車移動,實現自走式功能。小車自走式底盤采用直流電機控制,驅動板由L298N為主提供穩定的5 V電壓。L298N也是常用的實驗小車電源驅動模組,主要用于車輛底盤運動的開發,含有4個邏輯電平通道的驅動控制電路,可以順利驅動46 V,2 A以下的電機,其主要原理如圖3所示。

圖3 L298N電機驅動模塊
L298N分邏輯供應電壓和驅動供應電壓,一般情況下,驅動供應電壓都要大于邏輯供應電壓,其中驅動供應電壓的最大電壓可以達到36 V,而邏輯供應電壓則在4.5~36 V。本設計將2,3,13,14號引腳作為輸出腳,帶動兩個直流電機,將5,7,10,12作為輸入引腳,連接OpenMV控制器的I/O引腳,同時根據L298N的真值表使模塊作用,即高電平有效,6,11號引腳使能,從而帶動小車運動。
在確定2路電機轉動方向時,需要先設置L298N的IN1和IN2[9],當使能端作用時,IN1為1,IN2為0,實現電機逆時針旋轉;IN1為0,IN2為1,實現電機順時針旋轉;使能EN端(PWM輸入端)還能利用PWM控制調速。PWM系統是在適當的通信頻率下,通過周期變化實現占空比的方法,來變化輸出的最大有效電流。在電動機控制系統中,占空比和直流電機的速度成正比,測試時通過改變PWM的電壓,可以讓電機輸出不同的轉速。
枸杞采摘機械臂,其使用舵機供電電壓在5~7 V,也可以接受稍高的電壓。機械臂的每個動作都是舵機順序運行,4個舵機依次運行,為了防止出現機械臂運行故障,采用相對大功率的電源供電。OpenMV中自帶的3個引腳可以控制舵機,但是OpenMV引腳輸出的電壓較低,考慮到直接用OpenMV引腳供電,會出現舵機無法運行的問題,選擇了以PCA9685芯片為主的舵機驅動板。
PCA9685是一款輸出可調節、控制的芯片,使用I2C總線實現通信。本設計中取4路輸出端,均可自由調節PWM的頻率(40~1 000 Hz)和占空比(0%~100%)。編程實現對各個舵機角度的控制,舵機轉動角度通過輸出同周期內高電平占周期時間的比例來實現。一般舵機需要的頻率為50 Hz,其計算公式為[10]:
其中頻率設定寄存器(地址為0XFEH)中寫入的值為Prescal,主控芯片的時鐘信號為EXTCLK,refresh_rate為期望得到的PWM脈沖頻率[10],本設計中的舵機為50。
本設計中只使用了4個通道,在未來的設計中可以再加入多個舵機,增加自由度。機械臂需要的4個舵機的控制信號的周期為20 ms,0.5~2.5 ms的邏輯高電平在20 ms中的占比寬度,對應舵機的旋轉角度0o~180o,并表現為線性變化。
I2C總線實現OpenMV與PCA9685芯片的通信。I2C總線具有操作簡單、方便有效的優點,可以使電路設計更加簡單,減少線路的復雜性。I2C的寫操作如圖4所示,讀操作如圖5所示。

圖4 發送數據

圖5 接收數據
SCL與SDA兩根線上可以連接多個外部設備器件,每個外部設備都有自己的地址,I2C總線通過地址區分辨認外部設備器件。
通過I2C總線協議與OpenMV控制舵機,以PCA9685控制芯片為基礎,實現對機械臂運動的控制。機械臂的運動主要模仿手持式枸杞采摘器采摘枸杞的過程,在機械臂頭部安裝了枸杞采摘刷頭,當全自動枸杞采摘機器人識別并運動到枸杞前時,機械臂開始運動,同時采摘刷頭進行工作。
常見的枸杞采摘頭有氣吸式、梳刷式和振動式,本設計采用的是旋轉振動式刷頭,既彌補了氣吸式強依賴電源的特點,又減緩了梳刷式對手動的高要求。刷頭主要部署在一個電機上,隨著電機的旋轉,刷頭利用慣性不斷振動,達到采摘枸杞的效果,如圖 6所示。刷頭采用硅膠材料,隨著轉速的不同,硅膠質感也有所不同。枸杞因生長習性的影響,常見的金屬條振動容易將未成熟的枸杞震落,影響枸杞出果率,而氣吸式容易對葉子枝條造成一定損害,影響來年結果率[11],因此介于中間的硅膠材質是最好的選擇。針對不同生成狀況的枸杞林,可以綜合測試出一個適當的轉速,以達到最符合枸杞生態的采摘。

圖6 采摘結構
本文通過對各類枸杞采摘機的結構和原理研究,綜合設計了一種全自動枸杞采摘機器人,彌補了以前不能完全解放雙手,采摘效率低下,錯誤采摘未成熟果子的缺點。該全自動枸杞采摘機器人主要使用視覺識別方案,基于OpenMV進行開發,利用自帶的攝像頭對枸杞進行顏色識別,結合L298N和PWM對各電機和舵機進行控制,實現對小車的運動控制。機械臂驅動選擇了以PCA9685芯片為主的舵機驅動板,I2C總線進行OpenMV和舵機的通信,采摘刷頭選用旋轉電機的振動方式。經測試,該全自動枸杞采摘機器人各類功能初步完成。