高文祥 琚長江,2,3 聶佳 李倩,2 郭麗君,2
(1.上海電器科學研究所(集團)有限公司,上海 200063;2.上海市智能電網需求響應重點實驗室,上海 200063;3.國家能源智能電網用戶端電氣設備研發(實驗)中心,上海 200063)
目前,國內外企業智能制造是繼自動化制造之后更進一步的制造業形態,其核心是數字化,網絡化,智能化。視覺檢測技術是實現智能制造的一種實現方式,它為產品的檢驗、工件加工和裝配自動化提供了一種不需要人員操作、自動檢測產品缺陷、即時反饋檢測結果的解決方案。
本文即對視覺檢測技術應用于智能制造中所產生的一些問題提出了一種基于QT的工業邊緣側視覺檢測系統人機協同交互方法。
視覺檢測技術可以用于智能制造的產品檢測生產線,典型場景是當輸送線把產品輸送到需要裝配或檢測的工位時,通過視覺檢測算法利用攝像頭拍攝的產品圖片去判斷此產品是否合格,該系統示意如圖1所示。
在人機交互設備顯示的圖片都經過了視覺檢測算法處理并被標注了算法處理結果。此系統部署于產線運行時,在運行初期,視覺檢測算法存儲的針對該產品檢測數據很少,需要人工對于產品的檢測結果進行確認或干預,此過程為輔助視覺檢測算法建立檢測數據模型。
操作人員可以使用鼠標、觸摸屏、按鍵在人機交互設備上進行操作,操作包括更改算法檢測結果、指出產品缺陷位置、選擇缺陷種類等。
根據上述需求,人機交互設備需要不僅需要支持較高分辨率的顯示還需要能夠執行視覺檢測算法、支持對畫面的重繪,最終還需要將人工輔助的結果上傳至遠程服務器,幫助遠程服務器對人機交互中的視覺算法進行優化。
視覺檢測算法的運行依賴于多個庫,如Opencv、Pytorch、Python解釋器,大多數傳統的人機界面不支持對系統庫進行重新安裝,所以一般會將這些庫安裝于X86或ARM架構計算機設備中,所以在此使用QT框架設計,不僅提供了一種較為簡潔的人機交互界面,同時由于QT有著強大的可移植性,支持目前主流的操作系統平臺,如Windows,Linux桌面端/服務端/嵌入式。

圖1 智能制造視覺檢測系統示意圖
采用QT框架面向對象的設計方式對人機界面進行開發設計,界面設計如圖2所示。

圖2 交互界面設計圖
本次設計中人機交互界面的總體布局基于Stacked Widget部件,主要進行了如下設計:(1)用戶界面設計;(2)圖片的顯示與重繪;(3)鼠標功能的重載;(4)開啟線程接收視覺算法處理好的圖片信息。

圖3 系統配置信息界面設計流程
用戶界面主要用于對視覺檢測系統的配置,配置內容包括當前檢測產品的種類、視覺檢測系統的網絡地址、檢測結果保存的目錄路徑等。這些參數保存在視覺檢測系統的輕量級數據庫SQLite[1]中,修改QT工程的.pro文件,添加SQL模塊。設計流程如圖3所示。
圖片的顯示與重繪主要用于系統運行界面,顯示拍攝到的產品圖像,這些圖像都經過了視覺檢測算法的處理因而存在算法給予的標注信息。(標注信息是指該圖片是否存在“缺陷點”,如果存在“缺陷點”,則該信息需要包含“缺陷點”在圖片坐標系中的坐標數據)。
鼠標功能的重載主要應用于系統運行界面中,在系統運行界面中我們對算法處理后的圖片進行了顯示,顯示部件為QLabel類,但是當視覺檢測算法存儲的針對目前檢測產品檢測數據少,需要人工對于產品的檢測結果進行確認或干預時,我們需使用鼠標在QLable部件上拖拽進行重繪圖像,示意圖如圖4所示。

圖4 鼠標功能重載示意圖
圖3中,我們重新定義了鼠標的功能,使得鼠標在QLabel部件中拖曳出一個矩形,在鼠標放開后需要保存最終形成的矩形信息。
通過矩形左上角坐標以及矩形的長和寬可以記錄了一個“缺陷點”,并存在系統中。我們可以如此繪制多個“缺陷點”,用來輔助視覺檢測算法進行標定,優化其模型。
使用QLabel[2]的MousePressEvent、MouseMovement Event、MouseReleaseEvent可以實現鼠標按下、移動、放開的動作。這些函數都是繼承于QObject的虛函數,需要在QLable部件中重寫。這樣我們在使用QLable部件使用鼠標時能夠具備抽象描述出矩形的功能,再使用QLabel類的paintEvent函數進行繪制,最終在QLabel上實現了畫出一個矩形。
多線程技術主要應用于GUI程序開發,這對于圖形界面開發的程序尤為重要,當一個操作耗時很長時,整個系統都會等待這個操作,程序就不能響應鍵盤、鼠標、菜單等操作,而使用多線程技術可將耗時長的操作置于一個新的線程,避免以上問題。
QT多線程實現的主要思想就是利用Qt的事件驅動特性,將需要在子線程中處理的業務放在獨立的模塊(類)中,由主線程創建完該對象后,將該對象移交給指定的子線程,同時在主線程中使用信號-槽設計,連接主線程發出的信號至該對象的槽函數,注意這里的槽函數即為該對象的實際處理業務的模塊(類)。在連接函數connect中,指定connect函數最后一個參數為:QueuedConnection,即可對不同QWidget對象發送信號。
經測試,視覺檢測算法運行在處理器為Intel Celeron 1.99GHz,2GHz、內存為8G、基于X86的WIN10操作系統運行時間為3s左右,如果不使用多線程技術,則界面可能會等待算法輸出結果約3s鐘,會有明顯的凍結現象,此舉解決了當前顯示畫面在等待算法輸出時會出現界面凍結的問題。
本文所介紹的基于QT框架實現的應用于工業邊緣側的視覺檢測人機交互設計方法,為智能制造中廣泛應用的視覺檢測檢測提供了一種可視化的環境,也有別于其他傳統的人機交互界面設備,為視覺檢測算法收集產品缺陷模型提供一種解決途徑。目前基于該方法設計的人機交互界面已經可以部署在工控機中用以輔助視覺檢測算法進行優化,在電機生產線上實驗運行取得了良好的效果。