葉偉康 薛宇曦 吳慧瑩 趙敏
摘? ?要:在噴藥機器人比賽中,視覺識別成為機器人完成任務(wù)不可缺少的重要功能。為了實現(xiàn)機器人自主識別和噴藥,文章采用了Pixycam視覺模塊,以SPI方式與Arduino控制器相連接,設(shè)計了可靠的運動系統(tǒng)和噴藥系統(tǒng)。通過Pixy自帶的CCC算法來實現(xiàn)對目標的識別、接近和噴藥。
關(guān)鍵詞:機器視覺;顏色追蹤;Pixycam;Arduino
根據(jù)2019年中國機器人大賽比賽規(guī)則,在機器人噴藥項目中需要對雜草進行識別。然而市面上普遍流行的視覺模塊都具有算法復(fù)雜、入門要求高等特點,不利于初學者接觸和使用。經(jīng)過查閱、討論、研究后,發(fā)現(xiàn)Pixy作為一個集成化程度比較高的視覺模塊,非常適合剛接觸機器人視覺的創(chuàng)客使用。為了能更好地識別雜草,達到準確噴藥的目的,本研究將Arduino控制器和Pixycam視覺模塊相結(jié)合,使用C語言進行編程。本文著重介紹Pixycam簡單視覺系統(tǒng)的原理和使用方法,并結(jié)合案例分析來實現(xiàn)對目標位置、大小、顏色的精確識別,從而達到比賽所要求的精準噴藥效果。
1? ? 主要硬件介紹
1.1? Arduino? UNO介紹
Arduino UNO板基于ATMEGA328單片機。同時,基于AVR平臺,對AVR庫進行了二次編譯封裝,大大降低了軟件開發(fā)難度。只需根據(jù)自身系統(tǒng)要求下載官方Arduino IDE便可以編程。適合初學者編程、學習[1]。
1.2? Pixycam介紹
Pixy是內(nèi)基梅隆機器人研究所在2014年推出的視覺模塊,可以支持連接不同的控制器,支持多種接口選項,如串行外設(shè)接口(Serial Peripheral Interface,SPI)、通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter,UART)串行、USB 、集成電路總線(Inter-Integrated Circuit,I2C)或數(shù)字/模擬(Digital-to-Analog,D/A)輸出,Pixy的CCC算法(計算來自圖像傳感器的每個RGB像素的顏色(色調(diào))和飽和度,并將它們用作主要過濾參數(shù))[2]能夠記住7種不同的顏色代碼,通過PixyMon軟件可以輕松捕捉需要識別物體的顏色[3]。
1.2.1? Pixy視覺模塊的原理
所謂圖形處理就是視覺傳感器將圖像信號轉(zhuǎn)換為連續(xù)電壓信號,最后轉(zhuǎn)換成數(shù)字信號進行處理的過程。如今的視覺識別系統(tǒng)主要有兩種搭建方案:
(1)使用Matlab或OpenCV等軟件來進行編碼,搭配一般的攝像頭來實現(xiàn)圖像處理。
(2)使用Pixycam或Openmv等具有圖像處理能力的相機,通過官方的用戶界面來實現(xiàn)簡單的視覺識別。
雖然OpenCV在很多高端領(lǐng)域應(yīng)用廣泛,但它上手比較困難,具有非常復(fù)雜的算法。而Pixycam相比較而言更加簡單方便,同時也能達到需要的效果。因此,本文選擇Pixy作為機器人的識別模塊。
1.2.2? Pixy視覺模塊使用方法
Pixycam作為一款集成化比較高的視覺傳感器,通過官方軟件平臺PixyMon來實現(xiàn)對目標的選取,以識別雜草為例,打開PixyMon,只要簡單的3步:選擇Action→選擇Set signature 1→在畫面中選擇目標,就能選中需要識別的目標,如圖1所示。
識別完雜草之后,需要在Pixycam和Arduino之間建立起通信。這里采用的是SPI連接方式(Pixy同時支持UART串行、I2C、數(shù)字/模擬輸出等)。在連接之前需要把Pixycam關(guān)于Arduino的庫文件安裝到Library文件夾下。這樣就能夠在Arduino IDE上直接調(diào)用封裝好的程序進行編程。由于使用的是SPI,數(shù)據(jù)傳輸速度總體來說比I2C要快,速度可到達1 Mbits/s,能進行數(shù)據(jù)高速處理。在Arduino IDE中只需要引入#include
2? ? 硬件電路與程序設(shè)計
總體方案設(shè)計如圖3所示。
根據(jù)比賽規(guī)則,噴藥機器人需要對c區(qū)花盆中的雜草進行識別。因此,需要機器人能夠自主接近目標并進行噴藥。
2.1? 硬件電路的組成
硬件電路由Arduino UNO控制板[4]、Pixycam視覺識別模塊、超聲波模塊、降壓模塊(Arduino板推薦輸入電壓為7~12 V)、步進電機驅(qū)動模塊和SX1278無線模塊組成。
(1)Arduino UNO作為控制板負責接收和處理Pixycam傳輸過來的數(shù)據(jù),并控制運動系統(tǒng)接近、噴藥系統(tǒng)進行噴藥。
(2)Pixycam視覺模塊和超聲波模塊協(xié)同識別和尋找目標。
(3)步進電機驅(qū)動器共陽極連接,脈沖控制車輪運動。
(4)SX1278無線模塊通過UART串行連接,把Arduino UNO串口數(shù)據(jù)傳輸給PC端,方便對數(shù)據(jù)進行分析。
2.2? 噴藥裝置構(gòu)成
噴藥裝置主要由SG90舵機、小型水泵和扇形噴頭組成。舵機可以調(diào)整噴頭的方向,根據(jù)Pixy處理后通過串口傳輸輸出關(guān)于目標的x方向和y方向的坐標,調(diào)整噴頭朝向,最后,在目標范圍內(nèi)進行準確噴藥。
2.3? 程序設(shè)計
如圖4所示,啟動噴藥機器人后,Pixycam開始尋找目標(雜草)并通過超聲波模塊來確定目標位置。在確定目標位置后,步進電機驅(qū)動車輪,使噴藥機器人接近目標。通過Pixycam輸出的目標坐標x,y值,控制舵機角度從而調(diào)整噴頭,使其對準雜草并噴藥。完成噴藥后繼續(xù)前進尋找下一個目標[5]。
3? ? 結(jié)語
根據(jù)比賽要求設(shè)計的噴藥機器人,以Pixycam模塊為視覺識別核心,能夠完美實現(xiàn)對目標(雜草)的識別。同時,Pixycam由于集成化程度高、使用簡單等特點,能夠?qū)Ω鞣N目標進行識別和追蹤。在之后的研究中,運用相同的原理可以將Pixycam使用到循跡、避障、識別二維碼等項目中,并實現(xiàn)更多較為復(fù)雜的功能。希望Pixycam使更多的創(chuàng)客能夠認識到Pixycam簡單而強大的視覺識別能力。