黃勝存,農(nóng)田友,陸尚平,韋鳳蘭
(廣西水利電力職業(yè)技術(shù)學(xué)院,廣西 南寧 530023)
狗是人類的朋友,經(jīng)過訓(xùn)練可以理解人的指令,可以和主人互動。寵物狗已經(jīng)成為了很多人生活中的朋友。但是在城市里養(yǎng)狗不能讓其在小區(qū)里隨地大小便,以免影響小區(qū)環(huán)境。有的人工作繁忙,無法每天有時間出門遛狗。因此,在家里裝設(shè)一個寵物的環(huán)保智能廁所是非常有必要的。目前,市場上的狗廁所主要有兩種:一種是簡易的便盆[1],其結(jié)構(gòu)簡單,功能單一,需要人工清洗便盆里的寵物狗排泄物,若不及時處理,排泄物將裝滿便盆產(chǎn)生異味,影響家里環(huán)境衛(wèi)生;另一種是具有自動清洗排泄物的狗廁所裝置[2],通過分析其設(shè)計,此類狗廁所沒有排泄物殘留檢測功能。隨著科學(xué)技術(shù)不斷發(fā)展進(jìn)步,機(jī)器視覺技術(shù)使用范圍不斷增廣,廣泛用于表面缺陷檢測、食品檢測、工件識別等[3-5]。機(jī)器視覺的目的是賦予機(jī)器處理圖像信息的能力,讓機(jī)器通過攝像頭感知周圍信息。將機(jī)器視覺應(yīng)用在寵物狗廁所中,可以使其具有檢測排泄物是否殘留的功能。
本設(shè)計了一種以Arduino UNO為主控制器,OpenMV4 Cam H7 Plus攝像頭為機(jī)器視覺系統(tǒng)的自動清洗寵物狗排泄物的環(huán)保智能廁所裝置。該裝置能夠滿足高職院校機(jī)電一體化技術(shù)專業(yè)的實訓(xùn)教學(xué)。通過進(jìn)一步優(yōu)化,可將實物模型變成產(chǎn)品,推向市場。
設(shè)計的狗智能廁所裝置包括紫外線消毒燈1、超聲波距離傳感器2、裝置主體3、引導(dǎo)臺階4、網(wǎng)梳5、噴水管6、立柱7、OpenMV攝像頭8、微型高壓水泵9、直流電機(jī)10、排污口11、Arduino UNO控制器12。狗廁所裝置三維造型圖如圖1所示。
圖1 狗廁所裝置三維造型圖
狗廁所裝置的大小根據(jù)狗的體型大小而定,本設(shè)計定位于小型犬。小型犬是指成年時體重不超過10 kg,身高在40 cm以下的犬類。OpenMV攝像頭用于檢測裝置內(nèi)是否有排泄物,為了清晰拍攝到排泄物,OpenMV攝像頭安裝于主體腔體正上方,固定在紫外線消毒燈下側(cè),攝像頭的視角覆蓋整個裝置主體。理想情況下,狗應(yīng)該蹲在靠近排污口的位置排便,但是,狗在廁所內(nèi)排便的位置不固定。為了支撐狗在裝置內(nèi)排便,應(yīng)該在裝置主體內(nèi)腔放置一塊平板結(jié)構(gòu);但為了方便清潔排泄物,則不應(yīng)該放置平板結(jié)構(gòu)。為了解決以上沖突,創(chuàng)新設(shè)計了網(wǎng)梳結(jié)構(gòu)。直流電機(jī)通過齒輪帶動網(wǎng)梳轉(zhuǎn)動,方便沖洗網(wǎng)梳上的排泄物。水通過微型高壓水泵增壓后,經(jīng)噴水管噴灑到網(wǎng)梳,沖洗排泄物。排泄物和污水通過排污口排出。根據(jù)狗排尿時偏向?qū)ふ伊⒅牧?xí)性,裝置主體腔體內(nèi)壁設(shè)置了一根立柱。為了方便狗走到網(wǎng)梳上,裝置主體入口處設(shè)置了引導(dǎo)臺階。
當(dāng)狗走進(jìn)廁所時,超聲波距離傳感器檢測到狗靠近,Arduino UNO控制器記錄工作狀態(tài)為狗如廁狀態(tài);當(dāng)狗離開廁所時,超聲波距離傳感器檢測到狗離開,Arduino UNO控制器記錄工作狀態(tài)為空閑狀態(tài)。狗離開30 s后,OpenMV攝像頭檢測狗廁所里是否有排泄物,如果沒有排泄物,則不沖水;如果有排泄物,控制器控制電機(jī)轉(zhuǎn)動,電機(jī)帶動網(wǎng)梳往下傾斜45°,控制器控制微型高壓水泵噴水10 s。噴水停止后,攝像頭檢測排泄物是否已經(jīng)沖洗干凈,如還有排泄物,則重復(fù)噴水。排泄物沖洗干凈后,網(wǎng)梳回正,紫外線消毒燈打開,對廁所消毒2 min。
寵物狗智能廁所裝置的控制系統(tǒng)主要由Arduino UNO控制器、OpenMV攝像頭模塊、超聲波距離傳感器、繼電器、微型高壓水泵、直流電機(jī)、紫外線消毒燈等組成。圖2為控制系統(tǒng)框圖。
主控制器采用Arduino UNO,是一款開源的、穩(wěn)定可靠的控制器,被廣泛應(yīng)用于各類嵌入式控制系統(tǒng)中。Arduino UNO控制器有32KB FLASH,2KB SRAM,1KB EEPROM,14個數(shù)字I/O引腳,6個PWM數(shù)字I/O引腳,1個串口,電路板體積小,運(yùn)行穩(wěn)定。Arduino UNO控制器支持圖形編程,有豐富的庫代碼,可先通過圖形編程搭建程序的框架,再切換為C/C++編程模式,實現(xiàn)較為復(fù)雜的邏輯編程。
超聲波距離傳感器檢測狗是否在廁所內(nèi),當(dāng)狗從引導(dǎo)臺階進(jìn)入裝置時,超聲波距離傳感器測量得的距離數(shù)據(jù)逐漸變??;當(dāng)狗從裝置內(nèi)離開時,超聲波距離傳感器測量得的距離數(shù)據(jù)逐漸變大。Arduino UNO控制器不斷獲取超聲波距離傳感器的距離數(shù)據(jù),通過比較數(shù)據(jù)的大小判斷狗是否在廁所內(nèi)。
圖2 控制系統(tǒng)框圖
OpenMV攝像頭模塊結(jié)合機(jī)器視覺算法來檢測狗廁所內(nèi)是否有排泄物。OpenMV攝像頭模塊選用的型號是OpenMV4 Cam H7 Plus攝像頭,是一款可擴(kuò)展且支持Python語言編程的機(jī)器視覺模塊,拍攝畫面質(zhì)量好,能進(jìn)行高分辨率圖像處理。處理器為STM32H7,主頻高達(dá)480 MHz,內(nèi)置1MB+外置32MB RAM,內(nèi)置2MB+外置32MB FLASH,像素最高為500萬。其優(yōu)點是機(jī)器視覺算法可在OpenMV攝像頭模塊內(nèi)直接運(yùn)行,體積小,適用于不需要復(fù)雜的機(jī)器視覺算法運(yùn)算的系統(tǒng)。OpenMV攝像頭模塊運(yùn)行檢測排泄物的算法,將檢測結(jié)果通過串口發(fā)送到Arduino UNO控制器。
電機(jī)驅(qū)動網(wǎng)梳上下轉(zhuǎn)動,便于噴水沖走排泄物。電機(jī)可選伺服電機(jī)、步進(jìn)電機(jī)、直流電機(jī)。網(wǎng)梳轉(zhuǎn)動的速度和角位移要求不高,因此選用直流電機(jī),降低裝置成本。Arduino UNO控制器通過控制接口發(fā)送PWM信號到電機(jī)驅(qū)動模塊控制直流電機(jī)運(yùn)行。通過調(diào)節(jié)PWM波的占空比可調(diào)節(jié)電機(jī)的轉(zhuǎn)速。電機(jī)驅(qū)動模塊有兩個通道,分別控制電機(jī)正轉(zhuǎn)和反轉(zhuǎn),在正轉(zhuǎn)通道接收到PWM信號則電機(jī)正轉(zhuǎn),在反轉(zhuǎn)通道接收到PWM信號則電機(jī)反轉(zhuǎn)。
繼電器用于控制水泵和紫外線消毒燈的啟動和停止。狗廁所連接電源適配器,可直接接入220 V的交流電。系統(tǒng)內(nèi)有一塊多路輸出電壓模塊,其將電源適配器提供的直流電重新分配給各個模塊。
狗廁所控制系統(tǒng)軟件設(shè)計思路,裝置首先檢測狗是否靠近,再檢測是否有排泄物,然后沖洗排泄物,沖洗干凈后消毒。流程如圖3所示。
圖3 控制系統(tǒng)軟件主流程圖
控制系統(tǒng)軟件包含兩部分,一部分運(yùn)行在Arduino UNO控制器里,另一部分運(yùn)行在OpenMV攝像頭模塊里。這兩部分既是相對獨立又是有機(jī)聯(lián)系,必須充分考慮兩者信息配合的邏輯關(guān)系,對軟件系統(tǒng)的結(jié)構(gòu)進(jìn)行合理設(shè)計,確保兩個模塊之間的信息傳遞暢通。
Arduino UNO控制器作為主處理器,負(fù)責(zé)協(xié)調(diào)OpenMV攝像頭模塊、超聲波距離傳感器、繼電器和電機(jī)驅(qū)動模塊的執(zhí)行順序,接收OpenMV攝像頭模塊和超聲波距離傳感器傳輸?shù)男盘?。具體流程如圖4所示。
圖4 Arduino UN0控制器程序流程圖
Arduino UNO控制器程序使用Mixly軟件編寫。Mixly(米思齊)是北京師范大學(xué)傅騫博士團(tuán)隊自主研發(fā)且免費開源的圖形化編程工具[6]。用戶可以通過拼接積木塊的方式來編寫程序,程序可視化易于理解。截至目前,Mixly已經(jīng)支持C/C++,micropython,python等編程語言,擴(kuò)展性能好。在編寫程序時,可直接調(diào)用Mixly串口模塊、超聲波傳感器模塊和執(zhí)行器電機(jī)模塊,編程效率高。
機(jī)器視覺算法實現(xiàn)對狗廁所裝置主體內(nèi)的排泄物檢測,采用的方法是背景差分法。OpenMV攝像頭安裝位置固定,裝置主體和網(wǎng)梳是白色,在沒有狗或排泄物時,背景變化不大,采用背景差分法可有效檢測出排泄物。圖5為OpenMV攝像頭程序流程圖。
圖5 OpenMV攝像頭程序流程圖
OpenMV攝像頭程序使用OpenMV IDE軟件編寫,OpenMV IDE自帶代碼庫,不需要從零編寫底層代碼,便于用戶設(shè)計應(yīng)用程序。程序開始運(yùn)行時,通過UART類初始化串口,設(shè)置波特率與Arduino UNO控制器串口的波特率一致,等待Arduino UNO控制器發(fā)來的指令。當(dāng)收到的指令是字符a時,執(zhí)行sensor.snapshot方法抓取一張圖片作為背景模板圖片。當(dāng)收到的指令是字符b時,執(zhí)行img.blend方法更新背景模板圖片。當(dāng)收到的指令是字符c時,執(zhí)行img.difference方法進(jìn)行當(dāng)前圖片和背景模板圖片幀差分,獲得差分圖片,通過hist.get_percentile方法計算差分圖片的直方圖通道的CDF(累積分布函數(shù)),將第99百分位值的L值(亮度值)和第90百分位值的L值相減,如果相差數(shù)值大于5,則判斷為有排泄物,否則沒有排泄物。當(dāng)收到的指令是字符d時,執(zhí)行算法和指令是字符c時相似,唯一不同的是當(dāng)?shù)?9百分位值的L值和第90百分位值的L值相差大于2時判斷為沖洗不干凈,否則為干凈。
為了驗證整個狗廁所裝置方案的可行性,展示狗廁所的功能,進(jìn)行了實物模型的制作和試驗。模型運(yùn)用了機(jī)器視覺技術(shù)、單片機(jī)技術(shù)、3D打印技術(shù)、電工電子技術(shù)、傳感器檢測技術(shù)、三維建模技術(shù)和機(jī)械設(shè)計等相關(guān)知識,制作成本較低。狗廁所的實物模型如圖6所示。裝置主體和網(wǎng)梳采用3D打印機(jī)打印成型。試驗時,狗靠近和離開廁所的檢測功能正常,網(wǎng)梳旋轉(zhuǎn)和歸位功能正常,水泵啟動和噴水管噴水功能正常,攝像頭檢測排泄物是否沖洗干凈功能正常。試驗結(jié)果表明,狗廁所能正常檢測并且將排泄物沖洗干凈,各項功能達(dá)到預(yù)期目標(biāo)。通過實物模型的設(shè)計與試驗,驗證了整個設(shè)計方案的可行性,同時驗證了其功能性和合理性。
圖6 狗廁所實物模型
OpenMV4 Cam H7 Plus攝像頭具有較強(qiáng)的圖像信號處理能力,讓機(jī)器視覺技術(shù)在寵物狗智能廁所裝置中得到充分運(yùn)用。通過設(shè)計制作實物模型進(jìn)行模擬試驗,驗證了機(jī)器視覺技術(shù)在控制系統(tǒng)中可以有效檢測出排泄物是否殘留,寵物狗智能廁所的各項功能可達(dá)到預(yù)期,說明其設(shè)計的合理性。在實物模型試驗過程中,發(fā)現(xiàn)本研究還存在一些不足:當(dāng)實物模型放在亮度不足的環(huán)境中,OpenMV4 Cam H7 Plus攝像頭無法正常檢測出是否有排泄物。因此,下一步的研究考慮將補(bǔ)光燈加入寵物狗廁所裝置中,使其在亮度不足的環(huán)境中依然能正常工作。
本研究提出將機(jī)器視覺技術(shù)應(yīng)用到寵物廁所裝置中,經(jīng)實物模型試驗驗證,結(jié)果表明機(jī)器視覺技術(shù)可以檢測出狗排泄物,為寵物廁所裝置領(lǐng)域的產(chǎn)品設(shè)計與研發(fā),提供了理實一體的設(shè)計制作參考。