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