萬燕英,陳澤濤,劉文波
(廣州鐵路職業(yè)技術(shù)學院信息工程學院,廣州 510430)
目前機器人在工業(yè)生產(chǎn)、商業(yè)服務(wù)等領(lǐng)域發(fā)揮著重要作用,是企業(yè)增效降本的有效手段之一。據(jù)國際機器人聯(lián)合會(IFR)統(tǒng)計數(shù)據(jù)顯示,截止到2020年,全球工業(yè)機器人的運營存量創(chuàng)下了300多萬臺的新紀錄。隨著工業(yè)化進程不斷深入,出現(xiàn)了較多的人機共融場景,如圖1所示。人機共融是指人和機器人同處一個自然空間里工作,緊密協(xié)調(diào)地共同完成工作。人機共融生產(chǎn)方式,不再是人類單純地下指令給機器人,而是讓機器人變成人類的伙伴。在傳統(tǒng)的工業(yè)機器人逐漸取代單調(diào)、重復(fù)性高、危險性強的工作之時,人機共融的理念也將會慢慢滲入各個工業(yè)領(lǐng)域[1-3]。因此,人機共融、人機協(xié)作將是機器人未來最重要的發(fā)展趨勢。
圖1 工業(yè)生產(chǎn)之人機共融場景
人機共融的顯著特征是機器人和環(huán)境高度適應(yīng),在非結(jié)構(gòu)動態(tài)環(huán)境能更好地理解人的行為意圖,并在一定的規(guī)則下實現(xiàn)人機、機器人群體間的交互與協(xié)同作業(yè)。這對機器人安全防護技術(shù)提出了更高的要求,機器人安全防護手段也成為實現(xiàn)人機共融的核心技術(shù)指標之一[4-6]。
機器視覺技術(shù)作為人工智能的一個重要分支,已被廣泛應(yīng)用于各類智能安防、先進輔助駕駛等領(lǐng)域。它可獲取物體的尺寸數(shù)據(jù),具有識別精度高、幾何特征突出、數(shù)據(jù)信息豐富等特點[7-8]。同時,隨著視覺傳感器大規(guī)模制造,其硬件成本也已較低。因此,本文設(shè)計基于Jet-son的機器人智能安全防護系統(tǒng),利用機器視覺技術(shù)來預(yù)測機器人與人類之間可能發(fā)生的碰撞,并控制機器人及時響應(yīng)減速或停機指令以避免人機碰撞,保障人機安全。
本系統(tǒng)主要包括主體和磁吸式法蘭兩部分,主體通過自身顆粒強磁鐵背板直接吸附在機器人上方的磁吸式法蘭上,以實現(xiàn)快速安裝部署和主體的位置調(diào)節(jié)。如圖2所示,系統(tǒng)通過網(wǎng)線與POE交換機連接,且POE交換機為其供電。系統(tǒng)主體用于投射機器人工作區(qū)域以直觀警示、實時監(jiān)控是否有人員非法闖入機器人工作區(qū)域等。上位機通過VNC軟件可遠程連接至本系統(tǒng),用以設(shè)置機器人工作區(qū)域、調(diào)整投影燈的警示范圍、轉(zhuǎn)儲監(jiān)控視頻、調(diào)整兩自由度云臺監(jiān)控視角等。
圖2 系統(tǒng)應(yīng)用示意圖
當系統(tǒng)檢測到人員非法進入機器人工作區(qū)域時,則驅(qū)動語音報警模塊發(fā)出一定頻率的警告信號、同時發(fā)送指令至機器人控制器使機器人減速或停機。無人員入侵時,本系統(tǒng)不影響機器人的正常工作。
本系統(tǒng)硬件部分主要包括主處理器模塊、冗余處理器模塊、投影燈警示模塊、視覺傳感器模塊、語音報警模塊、通訊模塊、電源模塊、數(shù)據(jù)存儲模塊、看門狗模塊、兩自由度云臺模塊、顆粒強磁鐵背板模塊等,其組成框圖如圖3所示。
圖3 系統(tǒng)硬件組成框圖
由于系統(tǒng)屬于安全等級較高的設(shè)備,其自身的可靠性極為重要。因此,采用主處理器和冗余處理器的雙機架構(gòu)。
選用低成本、高性能、高能效的AI處理器Jetson Nano為主控,其內(nèi)置一塊四核Cortex-A57 CPU和一塊128核Maxwell架構(gòu)的GPU。高性能的GPU為深度學習算法提供算力強勁的運行載體,在運行多個神經(jīng)網(wǎng)絡(luò)AI算法的同時,可處理來自多個高清傳感器的數(shù)據(jù)。Jetson Nano不僅提供了以太網(wǎng)、USB2.0/3.0、HDMI、MIPI CSI、SPI、UART、GPIO等豐富的硬件接口,而且還支持一系列主流的AI框架和算法,如TensorFlow、PyTorch等,使開發(fā)人員能夠方便地將AI模型和框架集成到產(chǎn)品中,快速實現(xiàn)圖像識別、目標檢測、姿勢估計、語義分割、視頻增強和智能分析等強大功能[9]。
冗余處理器使用STM32F407ZGT6,兩個處理器間通過串行SPI總線方式進行定期數(shù)據(jù)交互和校驗。當某一處理器發(fā)生數(shù)據(jù)校驗出錯或未響應(yīng)時,另一處理器立即通過RS485總線或安全IO觸發(fā)外部報警信號,使得外部被監(jiān)控對象緊急停機,并輸出異常報警信號。
通訊模塊用于和機器人控制器進行控制命令交互。為適應(yīng)各類機器人控制器接口,本系統(tǒng)提供以太網(wǎng)、RS485、安全IO模塊3種方式。其中,以太網(wǎng)采用TCP/IP協(xié)議通訊,RS485采用Modbus協(xié)議通訊,安全IO模塊采用PNP三線常閉電平信號通訊。如圖4所示,Jetson Nano以太網(wǎng)單元的外圍電路只需增加網(wǎng)絡(luò)變壓器和RJ45連接器。
圖4 系統(tǒng)以太網(wǎng)單元電路圖
視覺傳感器用于實時監(jiān)控機器人工作區(qū)域。本系統(tǒng)選用有效像素約808萬的背照式CMOS視覺傳感器IMX219,其視場角可達160°,能滿足拍攝幀率180幀/s高速視頻,具有高靈敏度、高幀率拍攝等特點。視覺傳感器模塊通過CSI接口和Jetson Nano連接,其硬件電路如圖5所示。
圖5 系統(tǒng)視覺單元電路圖
兩自由度云臺模塊用于調(diào)節(jié)視覺傳感器的視角,包括偏航角度軸、俯仰角度軸。每軸均采用34型步進電機來驅(qū)動,通過Jetson Nano GPIO引腳發(fā)送脈沖信號至步進電機驅(qū)動芯片LV8728MR來控制電機轉(zhuǎn)動。如圖6所示,視覺傳感器安裝于云臺俯仰軸上,俯仰軸再安裝于偏航軸上,則視覺傳感器可獲得2自由度的運動控制。
圖6 系統(tǒng)云臺模塊結(jié)構(gòu)示意圖
投影燈警示模塊用于投射機器人工作區(qū)域、警示人員禁止闖入,通過黃、紅兩種燈光顏色將機器人工作區(qū)域投影為黃色報警區(qū)域、紅色報警區(qū)域,并通過調(diào)節(jié)鏡片距離來設(shè)定投影區(qū)域的范圍。
本系統(tǒng)軟件基于Ubuntu18 OS環(huán)境開發(fā),主要包括人員入侵檢測算法和外設(shè)控制程序兩部分。其中人員入侵檢測采用深度學習方法實現(xiàn),具體而言,YOLO算法檢測人員、DeepSORT算法進行人員定位和軌跡跟蹤[10]。外設(shè)控制程序包括雙CPU冗余控制、云臺驅(qū)動、視頻壓縮存儲、語音播報、可靠性冗余校核、外部通訊、參數(shù)配置、系統(tǒng)日志以及主框架程序等。軟件架構(gòu)如圖7所示。
圖7 軟件架構(gòu)示意圖
YOLO是當前發(fā)展最為迅速的目標檢測算法。相比二階段算法如Faster-RCNN,一階段YOLO算法通過省略粗定位過程而調(diào)整骨干網(wǎng)絡(luò)可獲得更優(yōu)性能[11],尤其是基于PyTorch框架的YOLOv5兼顧了輕量級和高準確度的特點。
DeepSORT是多目標跟蹤中常用到的一種算法。相較于常規(guī)的基于特征的圖像處理算法,該算法具有重復(fù)檢測更穩(wěn)定、算法結(jié)構(gòu)更簡單的特點,特別在目標交叉時ID交換和目標消失后重識別的問題上有較好效果。
故本系統(tǒng)選用YOLOv5和DeepSORT作為人員入侵目標檢測算法模型。
3.1.1 算法流程
算法總體流程是:首先,Jetson Nano讀取視覺傳感器的視頻流,并將每幀視頻數(shù)據(jù)寫入視頻隊列。其次,YOLOv5算法從隊列中取出當前數(shù)據(jù)幀送入主干網(wǎng)絡(luò)Backbone。Backbone負責運動目標的特征提取,包括Focus、BttlenCSP、SPP三個模塊。再次,由頸部網(wǎng)絡(luò)Neck對主干網(wǎng)絡(luò)所提取的特征進行增強,所采用的模塊是PANet路徑聚合結(jié)構(gòu)。然后,頭部網(wǎng)絡(luò)Head分別對原圖像進行了8倍、16倍和32倍下采樣,并分別生成3個不同大小的特征向量,用來檢測不同大小的目標。最后,由DeepSORT算法對YOLOv5算法輸出的預(yù)測框信息進行目標特征建模、匹配和跟蹤,輸出人員入侵的檢測結(jié)果。算法工作流程如圖8所示。
圖8 算法流程圖
3.1.2 YOLO算法實現(xiàn)
(1)軟件環(huán)境搭建
選取操作系統(tǒng)為Ubuntu18.04,在Ubuntu環(huán)境下通過指令分別安裝軟件包:Anaconda3、PyTorch1.8.0、Python3.8、Cuda10.2、cuDnn8.2.0。以PyTorch為例,其安裝過程如下:
S1.創(chuàng)建一個新的名為yolov5_wyy的虛擬環(huán)境:
conda create-n yolov5_wyy python==3.7
source activate yolov5_wyy
S2.安裝PyTorch,torchvision:
conda install pytorch==1.8.0 torchvision==0.9.0
S3.驗證pytorch和torchvision是否正確安裝完。
(2)模型訓練
按照如圖9所示數(shù)據(jù)存儲的目錄格式,對包含人員的機器人作業(yè)圖片進行處理和存儲。人員標注采用labelimg軟件,其中圖片和標簽文件的名字一一對應(yīng),標簽文件的形式為類別、中心點x、中心點y、邊框?qū)挾葁、邊框高度h。
圖9 數(shù)據(jù)存儲的目錄格式
修改yolov5_wyy目錄下面的data和models兩個模板文件,在yolov5_wyy.yaml文件中修改factory、robots、nc以及names四行,分別對應(yīng)的是訓練圖片的路徑、驗證圖片的路徑、總數(shù)量以及類別。然后在models目錄下面修改yolov5s.yaml文件,主要修改nc變量。最后,通過以下命令即可訓練本文所需模型:python train.py--img 640--batch 16–epochs 5--data./data/yolov5_wyy.
.yaml--cfg./models/yolov5s.yaml--weights weighs/yolov5s.pt。
(3)模型測試
模型訓練完成后,將runs/exp/weights下的模型(文件名后綴為pt)復(fù)制在yolov5文件夾下。運行命令:python detect.py--weights yolov5_wyy.pt--source../project_train_data/
/images/Robots_img,對模型進行測試。
3.1.3 DeepSORT算法實現(xiàn)
本系統(tǒng)基于Yolov5_DeepSort_Pytorch開源軟件實現(xiàn)人員的定位和追蹤,其代碼可從該地址獲?。篽ttps://github.com/mikel
-brostrom/Yolov5_DeepSort_Pytorch.git。
Yolov5_DeepSort_Pytorch的DeepSORT算法流程主要包括4個階段[12]。
(1)檢測階段:分析YOLOv5輸入的視頻幀,識別屬于特定類型的對象,給出分類和坐標。
(2)軌跡處理和狀態(tài)估計階段:提取表觀特征和運動特征,表觀特征用于比對以避免ID Switch,運動特征便于卡爾曼濾波對其進行預(yù)測;同時,使用軌跡預(yù)測器預(yù)測該目標的下一個位置。
(3)相關(guān)性度量階段:表觀特征和運動特征用來計算兩個目標之間的相似性。
(4)級聯(lián)匹配階段:計算前后兩幀目標之前的匹配程度(利用匈牙利算法和級聯(lián)匹配),為每個追蹤到的目標分配ID。
本文結(jié)合YOLOv5目標檢測和DeepSORT目標追蹤算法,通過設(shè)置基本閾值參數(shù)控制軌跡預(yù)測的歐式距離,以實現(xiàn)人員入侵檢測和跟蹤功能。
外設(shè)控制程序主要包括雙CPU冗余控制、云臺驅(qū)動、外部通訊、視頻處理、語音播報、參數(shù)配置及日志等。
(1)雙CPU冗余控制
為提高系統(tǒng)可靠性,本系統(tǒng)采用Jetson Nano和STM32F407ZGT6構(gòu)成雙機冗余控制方式。Jetson Nano為主處理器,STM32F407ZGT6處于熱備形式,兩者通過SPI總線通訊[13]。利用校驗算法相互監(jiān)視對方的運行狀況和通訊情況,一旦發(fā)現(xiàn)對方故障,當即發(fā)出報警,經(jīng)過RS485總線或安全IO接口控制機器人停機,并將異常狀態(tài)信息寫入系統(tǒng)日志。
(2)云臺驅(qū)動
設(shè)計PWM線程任務(wù)控制GPIO分別輸出脈沖和方向信號至LV8728MR,以驅(qū)動步進電機轉(zhuǎn)動。其工作流程是,第一次上電開機時,系統(tǒng)控制每個軸的步進電機往正方向運行到機械限位,并將機械限位設(shè)定為原點位置。然后根據(jù)系統(tǒng)已保存的參數(shù),運行至工作角度。在遠程調(diào)整模式下,通過上位機可以點動每個軸,以設(shè)定最佳的視覺傳感器監(jiān)控位置。
(3)外部通訊
通訊模塊包括USB、以太網(wǎng)、RS485以及安全IO接口。USB用于U盤方式拷貝監(jiān)控視頻等文件。以太網(wǎng)用于連接上位機軟件進行參數(shù)配置,也可連接機器人輸出監(jiān)控信號。以太網(wǎng)作為監(jiān)控信號輸出時,采用TCP/IP協(xié)議與機器人通訊。Jetson Nano和STM32F407ZGT6同時擁有對RS485和安全IO的控制權(quán),在系統(tǒng)正常時,僅由Jetson Nano輸出信號。當系統(tǒng)故障時,STM32F407ZGT6通過RS485和安全IO同時輸出報警信號。
(4)視頻處理
視頻處理模塊創(chuàng)建3個線程,T1線程負責讀取視頻流,T2線程進行YOLOv5算法處理,T3線程負責壓縮和存儲視頻流數(shù)據(jù)。
T1線程利用OpenCV庫接口函數(shù)從視覺傳感器獲取視頻流,將每幀視頻數(shù)據(jù)先后寫入到Q1、Q2隊列中。其中Q1送至T3進行視頻處理和存儲,Q2送至T2進行YOLOv5算法處理。當算法檢測到人員入侵時,T2線程將添加檢測框的視頻幀數(shù)據(jù)送至T3進行標記處理和存儲。
(5)語音播報
語音播報模塊根據(jù)人員入侵檢測結(jié)果播報對應(yīng)的語音提示,系統(tǒng)中事先存儲錄制好的音頻文件,通過調(diào)用Ubuntu系統(tǒng)提供的音頻播放API實現(xiàn)語音播放功能。
(6)參數(shù)配置及日志
為方便遠程或遠距離調(diào)試參數(shù)以及查看系統(tǒng)日志文件,本系統(tǒng)提供VNC后臺服務(wù)供上位機PC遠程連接,用戶僅需在上位機PC上安裝VNC軟件,輸入智能防護系統(tǒng)的IP地址即可遠程操控其參數(shù)和日志文件。
為測試系統(tǒng)的有效性,搭建了基于安全防護系統(tǒng)的機器人測試平臺。通過設(shè)定機器人警示區(qū)、危險區(qū)等不同工作區(qū)域以驗證對入侵人員識別以及分級報警的準確性。
機器人工作區(qū)域分為3個部分,最外圓和中間圓之間的環(huán)形區(qū)域為警示區(qū),當系統(tǒng)檢測到人員進入該區(qū)域?qū)⒖刂茩C器人減速。中間圓和最內(nèi)圓之間的環(huán)形區(qū)域為危險區(qū),一旦系統(tǒng)監(jiān)測到人員入侵該區(qū)域則驅(qū)使機器人立即停止運行。
測試結(jié)果如圖10—12所示。圖10顯示,當機器人工作區(qū)域沒有人或者人員處于警示區(qū)之外時,系統(tǒng)不影響機器人的正常工作。此時,系統(tǒng)將實時追蹤該入侵人員的動態(tài)位置但不發(fā)出任何報警指令。
圖10 機器人正常工作狀態(tài)
由圖11可知,當人員局部或全部處于警示區(qū)內(nèi)時,系統(tǒng)控制機器人減速到額定速度的30%。若人員局部或全部處于危險區(qū)內(nèi),系統(tǒng)驅(qū)使機器人立即停機。如圖12所示,人員在危險區(qū)的位置發(fā)生變化時,機器人位姿已不再變化,處于停止狀態(tài)。
圖11 人員入侵警示區(qū)域后機器人減速
圖12 人員入侵危險區(qū)域后機器人停機
實驗結(jié)果表明,本系統(tǒng)能夠有效區(qū)分人員和運動的機器人,準確識別、定位及跟蹤入侵機器人工作區(qū)域的人員,并可靠控制機器人響應(yīng)相應(yīng)的安全處理措施。
本文針對人機共融、協(xié)同作業(yè)場景的安全防護問題,設(shè)計了一種基于Jetson和深度學習算法的智能安全防護系統(tǒng)。該系統(tǒng)利用Jetson作為主控平臺,搭建視覺傳感器、網(wǎng)絡(luò)通訊、視頻存儲、云臺驅(qū)動等外圍模塊。借助YOLO和DeepSORT算法實現(xiàn)了人員的實時且準確的識別、定位及跟蹤。系統(tǒng)通過投影燈分級投射機器人工作區(qū)域以警示,在檢測到人員闖入時語音報警,并控制機器人減速或停止運行以避免人機碰撞。本系統(tǒng)安裝部署簡單、魯棒性高、識別準確、使用友好,為提高人機安全提供了一種有效手段,對人機協(xié)作普遍推廣具有積極地促進作用。