廖駿明,徐逸暉,鄭 潞,鄭善豪,卓偉豪,廖紹成
(中國礦業(yè)大學(xué),江蘇 徐州 221116)
傷員搜救是指對災(zāi)害現(xiàn)場處于危險中的人員進(jìn)行搜尋和救援行動,其目標(biāo)是減少人員傷亡。傷員搜救面臨著搜救環(huán)境危險、時間緊迫、光線昏暗等困難。近年來,無人機(Unmanned Aerial Vehicle,UAV)越來越多地被用作輔助救援工具。無人機可以穿越人類難以到達(dá)的地區(qū),如山區(qū)、島嶼等,無人機的攜帶能力可以在救援人員到達(dá)前運送藥品和救援設(shè)備。與直升機相比,多旋翼無人機具有操作簡單、無跑道起降、體積小和可靠性高等優(yōu)點,適合在搜救工作中應(yīng)用[1-3]。
在傳統(tǒng)的搜救工作中,救援人員可能錯過被搜救的人員。隨著嵌入式GPU 性能提升和成本下降,在無人機平臺運行圖像識別和神經(jīng)網(wǎng)絡(luò)模型的門檻大大降低。使用算法自動檢測圖像中可能存在的人類,可提高救援工作的效率。本文研究近年流行的YOLO 目標(biāo)檢測算法,此算法平衡了識別的準(zhǔn)確率和性能,適用于無人機平臺,并且在開源社區(qū)的努力下仍在迭代優(yōu)化[4]。
四旋翼無人機系統(tǒng)的硬件模塊可以劃分為飛行控制系統(tǒng)、動力系統(tǒng)和視覺識別系統(tǒng)3 個子系統(tǒng),各個硬件模塊的關(guān)系圖如圖1 所示。
圖1 無人機硬件關(guān)系圖
3 個子系統(tǒng)的介紹如下。
1)飛行控制系統(tǒng)負(fù)責(zé)無人機的姿態(tài)控制、導(dǎo)航等功能,是無人機的核心部分。飛行控制系統(tǒng)由PX4 飛控、樹莓派4B 計算機和GPS 模塊等組成。
2)飛行動力系統(tǒng)負(fù)責(zé)提供無人機的電力,是無人機飛行的基礎(chǔ)。動力系統(tǒng)由電機、電調(diào)、槳葉、電池和分電板等硬件組成。
3)視覺識別系統(tǒng)負(fù)責(zé)對無人機周圍的環(huán)境進(jìn)行感知,是無人機實現(xiàn)傷員搜救任務(wù)的關(guān)鍵。視覺識別系統(tǒng)由攝像頭、數(shù)據(jù)傳輸線、激光雷達(dá)等硬件,以及圖像處理軟件組成。
實驗無人機的硬件參數(shù)見表1,本平臺選用常見硬件,并保留后續(xù)升級其他模塊的裕量。
表1 無人機硬件參數(shù)
組裝完成的無人機實物照片如圖2 所示。
圖2 組裝完成的無人機實物
四旋翼無人機的組裝結(jié)構(gòu)可分為“+”型和“×”型2種類型,二者飛行原理相似。本文采用更為常見的“×”型,其4 個電機在對角線位置。四旋翼無人機的運動是通過控制4 個螺旋槳的速度,改變力和扭矩來實現(xiàn)的,示意圖如圖3 所示。
圖3 “×”型四旋翼無人機示意圖
無人機的飛行姿態(tài)可以由以下公式歸納[5]
式中:ψ、θ、?分別表示偏航角、俯仰角和翻滾角,°;Ix、Iy、Iz是四旋翼三軸的轉(zhuǎn)動慣量,kg·m2;U1是4 個螺旋槳產(chǎn)生的總力,N;U2、U3、U4是翻滾、俯仰和偏航三軸的力矩,N·m。
四旋翼無人機通常由2 個PID 控制回路控制。一個是用于姿態(tài)控制的內(nèi)環(huán);另一個是用于位置控制的外環(huán)。為了求解真正的控制量,即螺旋槳的速度,需要建立螺旋槳與U1、U2、U3、U4之間的關(guān)系。在圖3 所示的結(jié)構(gòu)中,關(guān)系如下
式中:ω1(i=1,2,3,4)是對應(yīng)電機的角速度,rad/s;CT是螺旋槳拉力系數(shù);CM是螺旋槳轉(zhuǎn)矩系數(shù);d是無人機中心到電機的距離,m。
四旋翼無人機組裝完成后,需要進(jìn)行測試,測試過程需要注意人身和設(shè)備安全。首先,檢查接線是否正確、各部件連接點是否牢固、飛控是否報警。如果一切正常,可以安裝螺旋槳后進(jìn)行室外飛行。
YOLO 算法是一種基于深度學(xué)習(xí)的單階段目標(biāo)檢測算法。YOLO 算法的特點是速度快、通用性強,近年在無人機目標(biāo)檢測領(lǐng)域越來越受歡迎。本文采用的YOLOv5 由3 部分組成:特征提取層(Backbone)、特征融合層(Neck)和預(yù)測層(Head)。根據(jù)網(wǎng)絡(luò)的深度和寬度差異,YOLOv5 提供了5 個不同尺寸的版本。對于無人機平臺,考慮計算機的性能較弱,推薦使用YOLOv5s 模型。
首先準(zhǔn)備數(shù)據(jù)集,模擬傷員姿勢在不同的角度、背景、光線下拍攝500 張照片,使用LabelImg 軟件對圖片進(jìn)行標(biāo)注。之后調(diào)用YOLO 程序訓(xùn)練神經(jīng)網(wǎng)絡(luò)。將500 張照片樣本隨機劃分為300 張訓(xùn)練集,100 張驗證集,100 張測試集。訓(xùn)練所用計算機的硬件配置見表2,訓(xùn)練耗時2.1 h。
表2 訓(xùn)練計算機硬件配置
使用訓(xùn)練好的權(quán)重模型對進(jìn)行識別,原始圖像和識別結(jié)果如圖4 所示。
圖4 原始圖像和識別后的圖像
經(jīng)過100 張樣本圖片的測試,訓(xùn)練的模型識別出96 張圖片中的人物。100 張樣本的最長、最短、平均識別時間分別為1.21、0.31、0.54 s。
Qt 是一個跨平臺的C++應(yīng)用程序開發(fā)框架,它為開發(fā)者提供了建立圖形用戶界面(Graphical User Interface,GUI)所需的基本功能,被廣泛用于應(yīng)用程序開發(fā)。而PyQt5 是Qt5 框架在Python 語言下的實現(xiàn),PyQt5 提供了一個基本的窗口控件集合,具有面向?qū)ο?、高性能、開發(fā)靈活等諸多優(yōu)點。由于PyQt5 框架與YOLO 算法都是基于Python 編程語言開發(fā)的,所以可以很方便地將二者整合到一起。結(jié)合Python 大量第三方庫可以開發(fā)出許多強大功能,例如圖像識別、音視頻數(shù)據(jù)分析等。
在開發(fā)軟件前,首先進(jìn)行軟件功能的規(guī)劃,無人機傷員搜救系統(tǒng)應(yīng)包括以下功能。
1)實時圖像識別。本功能包含攝像頭設(shè)備選擇、攝像頭實時圖像顯示、識別結(jié)果展示3 部分??赏ㄟ^下拉列表切換多個攝像頭設(shè)備,通過點擊按鈕切換是否讀取攝像頭的圖像流,并將攝像頭的識別結(jié)果顯示在軟件界面中。
2)無人機實時參數(shù)。本區(qū)域顯示了無人機的高度、速度、電池電壓和系統(tǒng)狀態(tài)等關(guān)鍵信息。ROS 與PyQt5程序之間使用Socket 通信協(xié)議傳輸數(shù)據(jù)。
3)系統(tǒng)日志。本區(qū)域記錄系統(tǒng)運行的關(guān)鍵信息,右側(cè)2 個按鈕可以實現(xiàn)日志清除和導(dǎo)出功能。
基于上述功能規(guī)劃,在PyQt5 的Qt 設(shè)計師(QtDesigner)程序中設(shè)計無人機傷員搜救系統(tǒng)的軟件界面,并保存窗口布局為.ui 文件,供后續(xù)程序代碼調(diào)用。本程序使用了PyQt5 中的按鈕(PushButton)、文本標(biāo)簽(Label)、組合框(ComboBox)和文本框(TextEdit)分組框(Group Box)等控件,軟件運行的截圖如圖5 所示。
圖5 軟件運行截圖
啟動軟件后,軟件以2 s 為周期定時刷新無人機參數(shù),數(shù)據(jù)的自動刷新使用PyQt5 中的QTimer 定時器組件實現(xiàn)。隨后軟件等待用戶選擇并打開攝像頭,并讀取圖像流,調(diào)用YOLO 算法識別,并將識別結(jié)果顯示在圖片區(qū)域中。
軟件響應(yīng)用戶的操作利用Qt 特有的“信號和槽”機制實現(xiàn)。當(dāng)用戶點擊界面的按鈕或在文本框中輸入文字時,會產(chǎn)生一個“信號”,驅(qū)動執(zhí)行對應(yīng)“槽”函數(shù)中的代碼,從而改變界面的顯示效果。這是Qt 與其他GUI 框架相比的獨特機制,可以簡化程序開發(fā)的流程。
本文使用YOLOv5 算法展示了對模擬傷員圖片的檢測。實驗結(jié)果表明,采用無人機救援和YOLO 目標(biāo)檢測算法設(shè)計的救援系統(tǒng)具有視角廣、識別時間短、工作效率高等優(yōu)點。對于模擬訓(xùn)練集,傷員平均識別率在95%以上,從而確保救援工作的快速開展,為搜救行動提供有效的支持。
但是本文的無人機救援系統(tǒng)還存在續(xù)航時間短、通信不穩(wěn)定等問題,未來多機協(xié)同、自主飛行等技術(shù)的普遍應(yīng)用,無人機將在更多領(lǐng)域為人類社會做出貢獻(xiàn)。下一步工作可以將光學(xué)和熱成像技術(shù)結(jié)合,以進(jìn)一步減少傷員的漏檢率。還可以擴充數(shù)據(jù)集和標(biāo)注,分類坐、蹲、躺等不同的傷員姿態(tài)。