周 鑫 李喬碩 陳君君 姜家旺 王文品
(河南科技大學,河南 洛陽 471003)
隨著人類社會的發(fā)展與進步,垃圾的清理與回收漸漸成為當今的社會焦點問題之一,其中水面垃圾清理回收則一直是急于解決的難題。傳統(tǒng)的水面清理往往依靠大量的人力,且對于大面積區(qū)域進行集中清理費時費力,難以保證水面長久美觀整潔。而本裝置采用視覺智能系統(tǒng),配合動力導航模塊,可以實現(xiàn)自動捕捉,巡航,采集一系列清理水面垃圾以及智能化調(diào)整清掃任務(wù)等功能,可以有效解決所面臨的問題。
系統(tǒng)結(jié)構(gòu)圖如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)由視覺模塊、動力模塊、機械臂抓取機構(gòu)以及基于ROS操作系統(tǒng)的樹莓派3B+等模塊組成。視覺模塊實時拍攝工作場景的圖像,主控部分對圖像執(zhí)行識別處理,判斷有無垃圾。若有垃圾,主控則返回垃圾的位置數(shù)據(jù),主控控制機械臂裝置對垃圾進行精確抓取,并放入回收箱中。對圖像中的垃圾清理后,由動力系統(tǒng)控制電機驅(qū)動螺旋槳,實現(xiàn)裝置的移動,進行下一個區(qū)域的清理。垃圾清理裝置結(jié)合GPS的定位導航裝置和視覺處理模塊能夠?qū)崿F(xiàn)在水面的自主移動。
系統(tǒng)使用樹莓派3B+作為垃圾清理裝置的主控,樹莓派3B+上使用的CPU為64位1.4GHz四核ARM Cortex-A53的BCM 2837B0,具有1GB內(nèi)存。其CSI攝像頭接口接500萬像素攝像頭,對工作場景實時回傳圖像,樹莓派對實時環(huán)境圖像抓取處理,進行識別。樹莓派運行ROS機器人操作系統(tǒng),對視覺的實現(xiàn)和裝置的運動進行全局管控。
機械抓取裝置采用機械連桿結(jié)構(gòu)如圖2所示。船箱中的伺服電機向外輸出動力能夠?qū)崿F(xiàn)位置精確,方便對垃圾的抓取和船體的移動。向外輸出的動力使船體上的導軌滑塊移動,帶動連桿機構(gòu)的轉(zhuǎn)動使夾板張開與關(guān)閉,實現(xiàn)對垃圾的抓取。抓取裝置后臂上的導軌滑塊帶動連桿機構(gòu)的轉(zhuǎn)動對前臂進行收放,將抓取的垃圾放到后方垃圾回收箱中。

圖2 機械抓取結(jié)構(gòu)
抓取裝置常采用伺服電機直接控制張合,多數(shù)電路裸露在外,需要進行防水處理,提高了維護成本和使用難度,文章設(shè)計裝置整個采用連桿機構(gòu)聯(lián)動,設(shè)備的移動以及轉(zhuǎn)動部分的靈活性較高,能夠有效避免電路與水面的接觸,免去防水維護。
裝置主要以收集塑料等漂浮垃圾為主,材料采用碳纖維材料。碳纖維材料具有高強度、耐高溫、抗摩擦、導電、導熱及耐腐蝕等特性,材料密度小,質(zhì)量輕。
機器人操作系統(tǒng)(Robot Operating System)操作方便、功能強大,適用于多節(jié)點多任務(wù)的復雜場景。廣泛應(yīng)用于機械臂、移動底盤、無人機、無人車等設(shè)備。隨著大數(shù)據(jù)和AI的迅速發(fā)展,ROS的發(fā)展也日漸成熟。在發(fā)展的同時,領(lǐng)域擴展也在不斷的創(chuàng)新。ROS作為機器人的軟件開發(fā)平臺,是通信機制、工具軟件包、機器人技能和機器人生態(tài)系統(tǒng)的集合體,支持C++和Python等多種編程語言,為信息交互提供了便利。ROS為各種結(jié)點服務(wù)提供各種工具軟件包,實現(xiàn)多功能調(diào)用,為各模塊提供通信框架,將原本松散的框架進行了耦合[1]。
Navigation Stack工作框架如圖3所示。

圖3 Navigation Stack工作框架
Navigation Stack包含了ROS在路徑規(guī)劃、定位等方面的package。機器人自主導航功能依靠Navigation 中package,包含定位功能的amcl 和fake_localization、機器人位姿的卡爾曼濾波robot_pose_ekf、路徑規(guī)劃結(jié)點move_base 等。Navigation工作框架如圖3所示,move_base 位于框架的中心,實現(xiàn)導航功能。move_base使用傳感器處理后的數(shù)據(jù)來對機器人進行路徑規(guī)劃[2]。在實際導航任務(wù)中,將結(jié)點接入并完成啟動,通過傳感器提供的數(shù)據(jù),規(guī)劃機器人的路徑和速度。
move_base作為Navigation Stack中的核心節(jié)點,在導航系統(tǒng)中必不可少,包含垃圾收集裝置的路徑規(guī)劃等核心功能模塊。ROS作為機器人操作系統(tǒng),具有路徑規(guī)劃等開源算法軟件功能包,使用ROS中的路徑規(guī)劃算法包,對算法進行改進,使功能滿足垃圾收集裝置的路徑航線設(shè)置。位于收集裝置前方的攝像頭執(zhí)行障礙信息收集,使用光流法結(jié)合測距傳感器作為move_base的數(shù)據(jù)輸入,為路徑規(guī)劃提供必要數(shù)據(jù)。通過全局規(guī)劃算法,在垃圾收集裝置開始工作前,形成整個水域的行駛路線,在規(guī)定的行駛路線上對水面的垃圾進行清理。收集裝置路徑規(guī)劃如圖4所示。

圖4 收集裝置路徑規(guī)劃
垃圾收集裝置通過靜態(tài)地圖獲取水面區(qū)域信息,內(nèi)置算法進行路徑規(guī)劃,從A點開始沿圖中所示路徑行駛,發(fā)現(xiàn)水面有垃圾時,通過垃圾回收功能實現(xiàn)對垃圾的清理。在設(shè)備視覺范圍內(nèi)檢測無垃圾時,按預定行駛路線繼續(xù)巡視監(jiān)測。若檢測到行駛路徑超預定范圍時,通過GPS定位導航糾偏,校正行駛路線[3]。
垃圾識別系統(tǒng)整體框架如圖5所示。

圖5 垃圾識別系統(tǒng)整體框架
由于水面垃圾形狀不一,如果僅識別垃圾外形輪廓,易出現(xiàn)識別誤差,且程序邏輯設(shè)計較難。采用機器視覺,計算機深度學習,建立神經(jīng)網(wǎng)絡(luò)模型進行垃圾識別,通過垃圾圖像的數(shù)據(jù)集建立模型,基于Keras框架建立深度學習模型,攝像頭采集的圖像使用OpenCV庫進行處理,使用Numpy庫進行數(shù)值運算,通過訓練所得模型實現(xiàn)對垃圾的識別檢測。
Keras是神經(jīng)網(wǎng)絡(luò)的API,由Python語言編寫,程序設(shè)計使用Keras框架,以TensorFlow作為后端運行。Keras框架的核心數(shù)據(jù)結(jié)構(gòu)為神經(jīng)網(wǎng)絡(luò)模型models,使用較多的為Sequential順序模型,由多個神經(jīng)層線性堆疊而成。在訓練模型之前,需要配置學習過程,主要通過compile方法完成,其中的優(yōu)化器,損失函數(shù)和評估函數(shù)三個參數(shù)尤為重要。訓練模型使用fit方法,應(yīng)用訓練完成的模型進行測試集預測[4]。
OpenCV是基于Apache2.0許可發(fā)行的計算機視覺和機器學習軟件庫,實現(xiàn)了圖像處理和計算機視覺方面的多種通用算法。OpenCV由C++語言編寫,具有C++,Python,Java和Matlab接口,支持多種系統(tǒng)。垃圾識別程序設(shè)計采用OpenCV-Python。Python對比C/C++等語言程序處理速度偏慢,但邏輯簡單性、代碼可讀性強使得解決計算機視覺處理更加簡捷。程序可采用C/C++語言進行擴展,底層復雜密集的代碼框架由C/C++編寫,通過Python來封裝。
垃圾識別模塊所需數(shù)據(jù)來自攝像頭捕捉。采用OpenCV對圖像進行預處理,主要完成圖像的濾波降噪和圖像分割。在對圖像預處理后,再應(yīng)用OpenCV中的邊緣檢測算子。邊緣檢測容易受噪聲影響,可以先通過高斯濾波除去噪聲。Sobel算子計算水平和豎直方向的一階導數(shù),根據(jù)公式推測像素點方向和梯度[5]。其中Gx代表圖像x方向梯度的幅值,Gy代表圖像y方向梯度的幅值。在OpenCV檢測邊緣時,其算法程序已經(jīng)封裝好供外部使用,因此只需調(diào)用cv2.Canny()函數(shù)即可。
模型建立前,首先準備測試集和訓練集,即各種分類完成的垃圾圖片。對已分類圖片進行數(shù)據(jù)預處理,深度學習需要大量測試集,如果測試集數(shù)據(jù)量較少,可以對圖片執(zhí)行旋轉(zhuǎn)、平移、剪裁等方式進行數(shù)據(jù)補充。搭建神經(jīng)網(wǎng)絡(luò)模型進行訓練,數(shù)據(jù)集經(jīng)過卷積池化等操作輸出分類結(jié)果,最后對測試集進行預測得出準確率。模型建立框架如圖6所示。文章訓練數(shù)據(jù)共有2 536張圖片,包含紙、塑料瓶、紙板等水面漂浮垃圾。

圖6 模型建立框架
構(gòu)建神經(jīng)網(wǎng)絡(luò)后,模型通過卷積和池化運算,對數(shù)據(jù)集的圖片進行特征提取與訓練。運行程序發(fā)現(xiàn),當?shù)綌?shù)為126步時,對訓練好的模型進行測試準確率最高。在模型訓練過程中可以通過圖形可視化,直觀的顯示準確率和損失率。Epochs每一步的批量大小對測試的準確結(jié)果產(chǎn)生一定影響,由實際情況和效率而定。當模型訓練損失不斷上升時,說明模型進入過擬合狀態(tài),可以停止訓練。迭代步數(shù)與測試準確率如表1所示。

表1 迭代步數(shù)與測試準確率
隨著近年來旅游業(yè)的發(fā)展,許多景區(qū)或者公園內(nèi)的湖泊存在漂浮垃圾情況。目前的水面垃圾清理主要依靠人工打撈,費時費力,效率較低,對于適航能力較強的視覺識別垃圾抓取裝置發(fā)展空間大,應(yīng)用前景廣闊。