基于機(jī)器視覺的水面垃圾尋航系統(tǒng)*
摘 要:水面垃圾會造成水體污染,它不僅破壞了水域生態(tài)系統(tǒng)平衡,并且對人類社會的生產(chǎn)和生活也產(chǎn)生了巨大危害,還會影響到船只的航行安全。目前,市面上主要的水面垃圾清理船體型龐大,很難應(yīng)用在一些小型水域。并且多采用人工搜尋和清理的方式,但是人工搜尋效率低,人力成本高。針對該問題,設(shè)計了一款基于機(jī)器視覺的水面垃圾尋航系統(tǒng),該裝置基于YOLO-V2卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行目標(biāo)檢測,尋找水面垃圾等漂浮物,控制船只靠近目標(biāo)物進(jìn)行拾取,通過GPS進(jìn)行導(dǎo)航,使用蟻群算法和完全遍歷算法進(jìn)行路徑規(guī)劃,同時用 ESP32-cam和小熊派完成云端數(shù)據(jù)通信。最終達(dá)到自動出航和返航、垃圾自動拾取、遠(yuǎn)程監(jiān)控的效果。
本文引用地址:http://butianyuan.cn/article/202307/449097.htm關(guān)鍵詞:水面垃圾;卷積神經(jīng)網(wǎng)絡(luò);優(yōu)化算法;PID;路徑規(guī)劃
基金項目:本項目由大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目基金資助
近年來,隨著城市建設(shè)的飛速發(fā)展,不少江河、湖泊、海洋等水面受到水域污染物不同程度的污染[1]。這極大影響了整個水域的生態(tài)平衡,甚至影響到了人類社會生活的方方面面,水質(zhì)富營養(yǎng)化導(dǎo)致大量養(yǎng)殖魚類缺氧而死,大量垃圾堆積在河面,影響到船只的航行安全等問題。隨著人工智能技術(shù)的不斷發(fā)展,針對目前水面垃圾清理船人工成本高、捕撈效率低的問題。為了減少在人工搜尋垃圾時消耗的成本,設(shè)計了一套基于機(jī)器視覺的水面垃圾尋航系統(tǒng)。
機(jī)器視覺是移動機(jī)器人最重要的感知手段之一[2]。通過機(jī)器視覺對水面垃圾進(jìn)行目標(biāo)檢測是現(xiàn)在主流技術(shù)實現(xiàn)方法。目前對于一些水面垃圾的檢測的方法,學(xué)術(shù)界已經(jīng)有多種相關(guān)研究。王敏等運用浮雕處理凸顯水面區(qū)域的邊緣灰度,然后利用區(qū)域一致性進(jìn)行邊緣檢測分割出水面和水上物體[3]。湯偉等提出改進(jìn)Faster R-CNN卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建來提升水面垃圾檢測的精確度。即便如此,復(fù)雜的水面情況,依舊會給物體的目標(biāo)檢測提升很多難度。例如,河岸上強(qiáng)光的反射,水面波浪和許多普通的水面漂浮物等因素都會干擾到最后的目標(biāo)檢測。在產(chǎn)品的實際測試中,這些方法都不能完全滿足全自動水面垃圾清理船的需求。
通過對市面上水面垃圾清理裝置進(jìn)行的調(diào)查研究,發(fā)現(xiàn)目前該類產(chǎn)品還只停留在垃圾自動捕獲和人工駕駛的階段,但是自動搜尋和導(dǎo)航等相關(guān)功能還不完善。
綜上所述,這類水面垃圾尋航裝置的研究和應(yīng)用價值非常大。
1 系統(tǒng)整體設(shè)計
根據(jù)水面環(huán)境的特殊性,將多種算法進(jìn)行有效結(jié)合。通過攝像頭獲取圖像,核心處理器通過二值化處理、優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)、濾波算法等方式進(jìn)行圖像處理,對水面垃圾進(jìn)行目標(biāo)檢測并獲取圖像位置信息。
視覺捕捉到水面的垃圾之后,根據(jù)垃圾在圖像中的位置計算出方位,控制垃圾清理船往垃圾方向移動,最后通過船只自帶的捕撈傳送帶將垃圾捕獲,完成垃圾“尋航”和清理的任務(wù)。
路徑規(guī)劃方面,分為兩個方向,一個方向是整體路徑規(guī)劃,主要通過GPS 導(dǎo)航獲取經(jīng)緯度等信息。先導(dǎo)入整個區(qū)域的水域分布圖,輸入劃定的起點和終點的GPS經(jīng)緯度進(jìn)行整體的路徑規(guī)劃。另一個方向是船只識別可見區(qū)域內(nèi)的路徑規(guī)劃,根據(jù)船只的可見區(qū)域內(nèi)的垃圾分布,根據(jù)距離遠(yuǎn)近確定優(yōu)先級,基于優(yōu)先級的情況下,通過蟻群算法進(jìn)行短期的路徑規(guī)劃,計算最短路徑。
該系統(tǒng)還可以進(jìn)行自動返航,任務(wù)進(jìn)行的過程中,記錄下路徑,當(dāng)任務(wù)完成后,結(jié)合之前的路徑,計算當(dāng)前位置到終點的最短路徑。
系統(tǒng)整體設(shè)計如圖1,整個系統(tǒng)分為傳感器部分、主控系統(tǒng)、控制部分和通信部分。傳感器部分主要由風(fēng)向傳感器、風(fēng)速傳感器、光照傳感器、攝像頭模塊、GPS模塊組成,主要負(fù)責(zé)收集風(fēng)速、風(fēng)向、光照、圖像、位置等信息輸入主控系統(tǒng)中。主控系統(tǒng)為以K210 芯片為核心的核心板??刂撇糠譃槔占b置和兩個電機(jī)。通信部分為以STM32L431RCT6 芯片為主控的BearPi-IoT主板,具備4G 通信功能。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
1.1 傳感器部分
系統(tǒng)采用精訊暢通公司研發(fā)的風(fēng)速、風(fēng)向傳感器,采用RS-485 通訊方式連接單片機(jī)輸出信號。風(fēng)速測量范圍為(0~30)m/s,測量精度是±1 m/s 。光照傳感器選用光敏電阻傳感器模塊。GPS 模塊選用小熊派社區(qū)開源的E53_ST1 案例擴(kuò)展板,和小熊派通訊連接。攝像頭選用OV5640 型號,圖像分辨率為500 萬像素。
1.2 主控系統(tǒng)
系統(tǒng)選用K210 核心板,K210 采用RISC-V 雙核64 位CPU,算力超過Jerson nano, 達(dá)到1TOPS 算力。功耗僅為0.3 W,續(xù)航能力強(qiáng)。
1.3 控制部分
圖2為垃圾收集裝置,通過設(shè)置打撈結(jié)構(gòu),使用電機(jī)帶動主動輪轉(zhuǎn)動,從而帶動垃圾輸送帶轉(zhuǎn)動,將水面漂浮的垃圾傳送到上料板頂部,然后垃圾掉落到船體頂部的垃圾槽中,這樣通過打撈機(jī)構(gòu)各部件之間相互配合能夠?qū)崿F(xiàn)對水面垃圾的自動清理。使用液壓缸控制上料板底部上升或者下降,可以讓上料板底部離開水面或者下降到水面以下,以此來控制整個裝置清理水面漂浮的垃圾。
圖2 收集裝置結(jié)構(gòu)圖
1.4 通信部分
考慮到系統(tǒng)工作過程中傳輸數(shù)據(jù)量比較龐大,因此將數(shù)據(jù)傳輸任務(wù)分為圖像傳輸和普通數(shù)據(jù)傳輸兩部分。圖像傳輸選用的是ESP32-CAM,燒錄好代碼后,通過電腦瀏覽器打開局域網(wǎng)進(jìn)行連接,獲取ESP32-CAM 傳輸?shù)漠嬅?,直接作為遠(yuǎn)程監(jiān)控器使用。普通的數(shù)據(jù)傳輸,選用以STM32L431RCT6 芯片為主控的BearPi-IoT主板,通過連接華為云平臺進(jìn)行云端數(shù)據(jù)上報,采用LWM2M通信協(xié)議。在華為云平臺上,用戶可以直接接收到系統(tǒng)發(fā)送的風(fēng)速、風(fēng)向、光照、經(jīng)緯度位置等數(shù)據(jù)信息,同時能直接從云端進(jìn)行命令下發(fā)。如圖3 是華為云平臺的數(shù)據(jù)雙方交互頁面。
圖3 云平臺數(shù)據(jù)頁面
1.5 自動控制系統(tǒng)
如圖4 為該系統(tǒng)的運行流程圖,啟航前,先導(dǎo)入水域分布圖,通過串口屏的菜單界面設(shè)定路線。設(shè)定完路線后系統(tǒng)開始進(jìn)入自動導(dǎo)航模式,系統(tǒng)按照既定路線自動駕駛,當(dāng)攝像頭識別到水面上的垃圾時,對整個圖像中的垃圾的位置和數(shù)量進(jìn)行記錄,通過蟻群算法計算出最短路徑,之后按照規(guī)劃的路徑對垃圾進(jìn)行捕獲操作。捕獲完垃圾后,系統(tǒng)會按照既定的航線繼續(xù)航行,或者選擇進(jìn)入返航模式。系統(tǒng)進(jìn)入返航模式后,會根據(jù)當(dāng)前的GPS 坐標(biāo)和終點停泊位的GPS 坐標(biāo)進(jìn)行航線規(guī)劃。之后系統(tǒng)會駕駛船只進(jìn)行自動返航,返航后自動進(jìn)行停泊。
圖4 運行流程圖
整個操作過程中,船只經(jīng)過的航線位置信息以二維數(shù)組的形式進(jìn)行記錄,將數(shù)組以二值化的黑白圖像的方式在屏幕上顯示出來,同時將數(shù)據(jù)通過BearPi-IoT 進(jìn)行云端數(shù)據(jù)上報。
2 軟件算法
2.1 船體移動控制
整個船只的移動采用雙電機(jī)結(jié)構(gòu),當(dāng)左電機(jī)的轉(zhuǎn)速大于右電機(jī)的轉(zhuǎn)速,船體就會逐漸向右行駛,反之同理,船只就可以通過兩個電機(jī)的差速來實現(xiàn)轉(zhuǎn)向的操作。轉(zhuǎn)向的控制算法采用了串級PID。采用串級控制的主要優(yōu)點是,能直接將干擾量加入到副回路中,由副回路控制并對其進(jìn)行抑制;同時,副回路的慣性由副回路進(jìn)行調(diào)節(jié),大大提高了系統(tǒng)的響應(yīng)速度。這里列出船體的左電機(jī)PID公式。
OutputL=KpL1(errorL)+KdL1(errorL?errorpect)?KpL1(KpL2*(encoderreal-encoderpect)+Ki*Σ(encoderreal-encoderpect) (1)
公式(1)中, errorL是當(dāng)前偏航角度值; errorpect是期望偏航角度值; encoderreal是編碼器測算的真實速度值;encoderpect期望速度值。KpL1是內(nèi)環(huán)PD的P參數(shù)值;KdL1是內(nèi)環(huán)PD的D參數(shù)值;KpL2是外環(huán)PI 的P 參數(shù);Ki 是外環(huán)PI的I 參數(shù)值。
如圖5為用MATLAB軟件生成的PID 結(jié)構(gòu)框圖,輸入真實速度值、期望速度和偏航角度值等數(shù)據(jù),根據(jù)公式中原有調(diào)試設(shè)定的PID的參數(shù)值,得出賦予電機(jī)的PWM值,來達(dá)到精準(zhǔn)控速的效果。
圖5 PD-PI算法結(jié)構(gòu)圖
2.2 卷積神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測識別已經(jīng)得到了廣泛應(yīng)用,出現(xiàn)了RCNN、Fast R-CNN、Faster R-CNN 和YOLO 等模型。YOLO 能夠?qū)崿F(xiàn)從端到端實時的目標(biāo)檢測,但是檢測精度較低,YOLO-V2 在YOLO 的基礎(chǔ)上進(jìn)行改進(jìn),既能夠進(jìn)行實時檢測,而且檢測精度也得到了大幅提升[3]我們選用的K210 芯片自帶卷積神經(jīng)網(wǎng)絡(luò)加速器KPU,可以極大提高圖像處理的速度。
神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練采用官方提供的網(wǎng)站云端訓(xùn)練模型, 使用的網(wǎng)站是https://maixhub.com/home。如圖6為網(wǎng)站頁面。
圖6 MaixHub模型訓(xùn)練平臺
將訓(xùn)練好的模型放到K210 的SD 卡槽中,實現(xiàn)模型的直接部署。燒錄完代碼后,系統(tǒng)正常運行時,會對攝像頭捕獲的圖像中的水面垃圾進(jìn)行目標(biāo)檢測。并記錄目標(biāo)在圖像中的位置信息(X,Y 中心坐標(biāo)值),用于系統(tǒng)對于可見區(qū)域內(nèi)進(jìn)行短期路徑規(guī)劃,通過計算得到的軌道偏差值,導(dǎo)入船體控制的核心PID 公式,進(jìn)行船體移動控制。
2.3 水域分布與路徑規(guī)劃
在復(fù)雜的水面環(huán)境中,為了讓船只搜尋水面(湖面、河流)的各個角落,需要建立整個水域分布的模型同時進(jìn)行路徑規(guī)劃。水域分布模型的建立采用完全遍歷路徑規(guī)劃的方法[4]。
首先,通過超聲波模塊進(jìn)行環(huán)境感知,對未知環(huán)境進(jìn)行搜索。當(dāng)超聲波模塊探測到陸地岸邊,視為船體已經(jīng)抵達(dá)水域范圍的邊界,通過GPS 導(dǎo)航記錄點位,并在水域分布地圖圖像中進(jìn)行更新。
這里選取了遼寧科技大學(xué)中的一片小水湖作為測試地點進(jìn)行實驗,對實驗方法進(jìn)行驗證,首先將該船只放在湖面上進(jìn)行完全遍歷搜尋,生成環(huán)境地圖,將地圖的圖像以二維數(shù)組的形式進(jìn)行保存。并通過華為云云端上報數(shù)據(jù)。電腦保存圖像信息,通過MATLAB 軟件生成二值化圖像,如圖7。
圖7 二值化圖像
2.4 蟻群算法
系統(tǒng)采用蟻群算法作為在船只識別可見區(qū)域內(nèi)的短期路徑規(guī)劃。它的核心實現(xiàn)思想是,螞蟻在尋找食物的過程中,會留下信息素,信息素的累積會吸引更多的螞蟻。當(dāng)一群螞蟻分布在多條路徑中,選擇較短的路徑的螞蟻往返的時間更短,頻率更高,單位時間內(nèi)螞蟻的通行數(shù)量更多,因此留下的信息素濃度更高,從而吸引更多的螞蟻。而新增加的螞蟻會加快信息素增長的速度,從而形成正反饋,最終蟻群會聚集到最短路徑上來,得到最優(yōu)解。
每個螞蟻在選擇路徑時是按照隨機(jī)的概率進(jìn)行選擇。隨機(jī)概率的計算公式如下:
(2)
公式中,i 和j 分別表 示起點, γij(t )是時間t 內(nèi)由i 到j 的信息素強(qiáng)度;δij 是能見度,i,j兩點間的距離的倒數(shù);allowedk為尚未訪問的節(jié)點集合;α、β 是信息素和能見度的加權(quán)值;分子是信息素強(qiáng)度和可見度的冪乘積,而分母則是所有分子的和值[5]。
首先通過MATLAB 軟件對蟻群算法進(jìn)行代碼模擬仿真。
先導(dǎo)入各個垃圾分布在圖像中的位置信息(數(shù)據(jù)來源于K210 通過目標(biāo)檢測識別獲取的多個垃圾位置信息)。計算各個垃圾之間的距離,將數(shù)據(jù)存儲在數(shù)組中。
螞蟻路徑時都會均勻留下信息素,隨著時間的變化,信息素也會逐漸蒸發(fā),因此還需要引入?yún)?shù)信息素?fù)]發(fā)因子r。那么螞蟻留下的信息素量減去揮發(fā)后的信息素量就是路徑上的信息素量。之后導(dǎo)入信息素濃度t、螞蟻數(shù)量m、最大迭代次數(shù)maxiter 等重要參數(shù)進(jìn)行設(shè)置。進(jìn)行迭代,尋找最優(yōu)路徑。每次迭代都會更新路徑,最終得到最優(yōu)解。圖8 為部分代碼展示。
圖8 部分代碼展示
經(jīng)過模擬仿真測試后,將核心算法及參數(shù)移植到K210單片機(jī)程序中進(jìn)行應(yīng)用測試,將規(guī)劃好的路徑在屏幕上顯示出來,觀察規(guī)劃速度情況并適當(dāng)調(diào)整參數(shù)。通過調(diào)節(jié)螞蟻數(shù)量、迭代次數(shù)和信息素濃度等參數(shù),提高系統(tǒng)在不同環(huán)境變化下的靈活性。
3 運行測試結(jié)果
3.1 串級PID仿真
在實際調(diào)試PID 前,先用MATLAB 軟件進(jìn)行仿真調(diào)試。如圖13為部分代碼。
為了使仿真結(jié)果更加真實,加入了干擾信號。如圖9為外加干擾信號的波形圖。
圖9 外加干擾信號
副調(diào)節(jié)器采用PD 轉(zhuǎn)向環(huán),其針對階躍信號的輸出響應(yīng)結(jié)果如圖10。
圖10 PD轉(zhuǎn)向環(huán)波形圖
主調(diào)節(jié)器采用PI 速度閉環(huán),其針對階躍信號的輸出響應(yīng)結(jié)果如圖11。
圖11 PI速度環(huán)波形圖
3.2 目標(biāo)檢測識別
神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的數(shù)據(jù)集采用周邊河道、湖面上的垃圾進(jìn)行實地取材。使用VoTT 軟件對圖片加標(biāo)簽用作訓(xùn)練數(shù)據(jù),如圖12。
圖12 圖片標(biāo)注
將訓(xùn)練好的模型部署在K210 中,進(jìn)行攝像頭識別測試,如圖13。
圖13 識別測試
3.3 路徑規(guī)劃測試
將攝像頭通過目標(biāo)檢測識別獲取的多個垃圾的位置信息作為蟻群算法的輸入值。通過計算得到的最短路徑結(jié)果、適應(yīng)度和收斂曲線如圖14、15 所示。
圖14 最短路徑計算
圖15 適應(yīng)度和收斂曲線
4 結(jié)束語
本文介紹了一種基于機(jī)器視覺的水上垃圾尋航系統(tǒng),該系統(tǒng)在云端進(jìn)行模型訓(xùn)練,將YOLOV2 神經(jīng)網(wǎng)絡(luò)模型部署到K210 進(jìn)行使用,實現(xiàn)對水面垃圾的精準(zhǔn)目標(biāo)檢測和識別。并操控收集裝置自動捕獲水面垃圾。在路徑規(guī)劃方面,該系統(tǒng)能通過GPS模塊進(jìn)行自主定位,運用蟻群算法和完全遍歷算法實現(xiàn)整體和局部的路徑規(guī)劃,最后實現(xiàn)自動出航和返航。其搭載的物聯(lián)網(wǎng)設(shè)備,能夠?qū)崿F(xiàn)云端數(shù)據(jù)上報和無線圖傳,達(dá)到宏觀調(diào)控的效果。相比于在傳統(tǒng)的海洋、湖面進(jìn)行人工捕撈,效率得到大幅提升,極大節(jié)約了人力成本。在環(huán)保衛(wèi)生和水上交通領(lǐng)域,有廣闊的市場前景。
參考文獻(xiàn):
[1] 李道季.消減海洋塑料垃圾保護(hù)海洋環(huán)境[J].民主與科學(xué),20 20(1):32-34.
[2] 趙鵬宇.Delta并聯(lián)機(jī)器人目標(biāo)識別與抓取技術(shù)研究[D].太 原:中北大學(xué),2022.
[3] 王敏,周樹道.靜態(tài)水上物體檢測分割算法[J].實驗室研究與探索,2010,29(6):30-32.
[4] 程啟忠.無人船完全遍歷路徑規(guī)劃的研究[D].重慶:重慶郵電大學(xué),2019.
[5] 彭林發(fā).基于FPGA控制系統(tǒng)的電火花加工微小孔狀態(tài)檢測及路徑 優(yōu)化研究[D].太原:太原理工大學(xué),2021.
(本文來源于《電子產(chǎn)品世界》雜志2023年7月期)
評論