侯義鋒,高文秀
(1.廣西機器視覺與智能控制重點實驗室,廣西梧州,543002;2.梧州學院,廣西梧州,543002)
在日常生活中,茄子是我們餐桌上經常食用的蔬菜,茄子營養極其豐富,而且還含有多種礦物質和維生素,對于身體健康有極高的功效和作用,長期食用茄子對胃癌的治療、抗衰老、降低膽固醇和保護心血管等具有很好的效果。茄子在全世界都有廣泛的種植,亞洲、非洲、地中海沿岸、歐洲中南部、中美洲等地均種植。但是就目前為止我國茄子的栽種面積不僅占據世界第一,產量也是遙遙領先,是很重要的茄子出口大國。但我國人口的老齡化越來越嚴重,農業勞動力不斷減少,而目前如此大量的茄子采摘還是手工采摘,耗時又耗力。為了降低成本,減輕勞動量,提高效率,我們有必要提高農業機械自動化,研究茄子采摘機器人代替人工采摘。近年來很多人在研究果蔬采摘機器人細節和整體方面提出了很多有參考價值的方案,推動我國農業自動化有了很大的突破,哈爾濱商業大學的王維強研究了自然環境下茄子采摘機器人目標識別方法,與傳統的識別方法相比,準確率有了很大的提高[1];山東農業大學王思玉等人對于典型果蔬采摘機器人研究現狀和趨勢做出分析[2];南京農業大學李國利對多末端蘋果采摘機器人進行設計與研究,設計了杯狀和筒狀結構末端執行器,能夠存儲少量果實,滿足連續采摘作業要求[3];華南理工大學張勤等人提出了基于RGB-D信息融合和目標檢測的番茄串采摘點識別定位的方法,該方法可在復雜近色背景下,實現番茄串采摘點識別定位[4];趙文峰等人提出了集成多執行器采收機器人的設想,認為集成多執行器采收機器人適合我國溫室番茄單果采收[5]。馮碩,李旗結合計算機視覺、嵌入式控制系統和卷積神經網絡算法,設計了一套奇異果采摘機器人機械臂控制系統,能夠實現目標果實的立體定位和精準采摘[6]。龍潔花等人研究了改進Mask R-CNN的溫室環境下不同成熟度番茄果實分割的方法[7]。王雯等人研究了XELA3D觸覺傳感器感知獼猴桃成熟度的方法[8]。為此本文也嘗試設計了茄子采摘機器人的識別系統,該系統嘗試采用顏色傳感器識別紫色的茄子。
本設計采用的是TCS34725顏色傳感器,其是一款成本偏低,性價比偏高的RGB全彩顏色識別傳感器,帶有4個高亮LED進行補光,保證了傳感器在弱光的環境下仍然可以使用,TCS34725光數字轉換器包含一個3×4的光電二極管陣列,光感應器件可以更高效地接觸環境光,內部含有AD轉換器,顏色傳感器以白光照射物體,物體反射的光被光電二極管吸收,產生光電效應,產生光電電流,4個積分AD轉換器可以將放大的光電流同時轉換成16位數字值。轉換周期完成后,得到原始結果并傳送到數據寄存器,再根據此傳感器的RGBC寄存器地址將數據讀取出來。并且此傳感器具有雙緩沖的功能,從而提高了得到數據的完整程度。若獲取的顏色值與實際的有差別,可以通過對積分時間和增益倍數兩個參數的調節,得到相對準確的值。據此我們可以得到茄子成熟時紫色的值的范圍為(13,12,13)~(16,15,15),茄子未成熟時青色的值的為(48,50,30)~(62,62,40);記下兩個顏色的值RGB值,通過當前數值比對來判斷是否為紫色,選出成熟度達標的果實。
硬件控制系統的電路主要有以下幾部分組成:主控模塊STM32、顏色采集模塊、按鍵模塊、液晶顯示模塊、電源模塊組成,系統總體結構如圖1所示。

圖1 系統總體結構圖

圖2 TCS34725顏色傳感器電路圖
本模塊采用的是以TCS34725 彩色光數字轉換器為核心的顏色傳感器,該傳感不僅靈敏度高,而且動態范圍也寬。此芯片工作電壓、邏輯電壓都為3.3~5V,I2C快速模式兼容接口,與單片機進行I2C通信,不需要占用太多的引腳資源,如下原理圖中的右側圖是雙電平轉換電路,保證了通信的正常進行,SCL是I2C的時鐘輸入和單片機的PB10連接,SDA是I2C數據輸入和單片機的PB11連接。
從難度和成本上考慮,此系統采用STM32F103單片機,該單片機的片內外設非常豐富。此芯片有32K~128K字節的FLASH存儲器、6K~20K字節的SRAM,且存儲器具有多重自舉功能;內嵌4~16MHz高速晶體振蕩器、使用外部32kHz晶體的RTC振蕩器;2個12位A/D轉換器具有雙采樣和保持的功能,有SWD串行線調試、JIAG口、串行外設接口SPI;有靈活的7通道DMA控制器可以管理存儲器,設備到存儲器和存儲器到設備的數據傳輸,無須CPU任何干預;多達80個快速I/O端口;7個定時器,3個同步16位定時器,每個定時器有4個用于輸入/輸出比較PWM或脈沖計數的通道,1個16位6通道方便于電機控制的PWM高級定時器,具有死區控制和快速剎車的功能,1個獨立看門狗,1個窗口性看門狗;并且內含9個豐富的通信接口。綜上所述該單片機的性價比相對比較高,該單片機完全可以滿足該系統的核心控制。
本模塊我們選擇的是OLED128×64白色液晶屏,該屏幕相比于一些其他的屏幕不僅具有的分辨率比較高,而且在單位面積擁有較多的像素點;超廣可視角度大于160度,在顯示屏中可視角度屬于最大的一種屏幕;并且功耗也極低,一般情況只有0.06W;最重要的是具有寬供電范圍,直接兼容常用的3.3V和5V的供電系統,所以無需接其他的電壓轉換電路,直接與單片機進行連接就可以。

圖3 最小系統電路圖
顏色識別部分采用的是TCS34725顏色傳感器,使用C語言編程,通過顏色傳感器對茄子的顏色進行采集,將采集到的數據發送給單片機進行識別。顏色識別的程序首先是初始化,對復位和時鐘控制器、寄存器進行配置,開啟外部高速時鐘,半周期訪問使能,預取值緩存使能,外部高速時鐘為PLL時鐘輸入源,為9倍頻,使能PLL時鐘,PLL時鐘作為系統時鐘,對HCLK時鐘配置為一分頻,使AHB時鐘等于系統時鐘,對PLCK1時鐘配置為二分頻,使APB1時鐘等于HCLK(AHB)時鐘的一半,對PCLK2時鐘配置為一分頻,使APB2時鐘等于HCLK(AHB)時鐘;然后對GPIO口進行初始化配置,對GPIOA、GPIOB、GPIOC和復位端口進行使能,選用與LED燈連接的PA3端口,模式配置為推挽輸出,頻率設置為10MHz,LED燈上電的初始模式為點亮;對TCS34725進行初始化配置,在其初始化函數中首先對I2C進行初始化,對I2C與TCS34725連接的GPIO口進行配置,PB10外接I2C的時鐘(SCL)總線,PB11外接I2C的數據傳輸(SDA)總線,IO口模式設置為通用推挽輸出,頻率設置為50MHz,引腳初始狀態為高電平有效,通過TCS34725的ID來判斷TCS34725與單片機是否連接成功,連接成功將顯示“Initial OK!”的字樣,連接失敗后將進行再次連接,若連接成功之后將會對TCS35725顏色傳感器的時間積分和增益進行設置,時間積分和增益數值的設置將會影響獲取數值的真實性,對TCS34725顏色傳感器進行使能;對白平衡進行調整,有利于減小顏色的偏差;設置之前測得的紫色和青色茄子的閾值范圍;對串口進行初始化配置,波特率設置為115200Bd,字長為8位數據格式,一個停止位,無奇偶校驗位,無硬件數據流控制,具有收發模式,初始化串口,開啟串口中斷,使能串口;對定時器進行初始化配置,配置定時器的自動重裝載值為999,時鐘預分頻數為71,設置定時器的計數模式為向上計數,允許定時器進行更新中斷,對定時器進行使能,開啟中斷定時,若定時時間1達到10msLED指示燈亮,定時時間1進行清零;若定時時間2達到50ms時,進行R、G、B顏色值的讀取和時間的清零,在讀取過程中,為了防止讀取的數據由于某些因素的影響而出現錯誤,所以R、G、B顏色值必須要連續進行兩次的讀取,然后將兩次讀取的數值進行比對,如果兩次讀取的數據不一致,則證明讀取的數據受到干擾,數據不準確,不能作為有效數據處理,之后在重新進行讀取數據;直到相鄰2次讀取的數據一致的時候,則說明數據具有準確性,將讀取的R、G、B值輸出并進行顏色判斷,通過對讀取的顏色的值和設置的閾值進行比對,如果讀取的值滿足紫色條件則判斷為紫色,如果在青色范圍則判斷為青色。流程圖如圖4所示。

圖4 系統軟件總體流程圖
通過該系統對茄子的顏色進行測試。測試時要保證測試環境的明亮。表1為測試結果,其中數據是經過100次測試求平均值)。

表1 茄子檢測顏色誤差表
從表1的結果分析,可以得到以下的結論:
識別出紫色整體的結果比識別出青色的效果要好,識別出紫色的誤差相比青色要小一些,因此可以證實在此背景下識別出紫色的茄子要比識別出青色的茄子更精準。
誤差分析:
(1)在光照強度、和光照時間不同的程度下,茄皮表面含有的花青素不同,所以導致了識別錯誤。
(2)背景顏色帶來的誤差,因為茄子的藤蔓是綠色的,所以和青色的茄子沒有形成強烈而有鮮明的顏色對比,整體來說再識別青色的茄子的時候出錯率較高,不太適合識別青色的茄子。
(3)TCS34725顏色傳感器的精確度存在一定的誤差,因為獲取的顏色的準確值是可以通過調節積分時間和增益倍數兩個參數進行改變的,但是實際在采摘識別的時候目標物的顏色有的和我們之前設定的閾值略微存在點誤差,導致誤差的存在。
總之通過的數據分析表格,會發現雖然在識別的準確程度上存在略微的誤差,但是整體來說效果還是比較理想的,所以此茄子采摘機適合對紫色茄子的識別,為紫色茄子的采摘機器人提供了能識別茄子的簡單方法。