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