潘麗靜+張虹波+周婷婷
摘要:全自動(dòng)模擬目標(biāo)搜救系統(tǒng)(搜救系統(tǒng))使用OpenMV 微型機(jī)器視覺(jué)模塊,采用MicroPython進(jìn)行編程,實(shí)時(shí)采集彩色圖像,通過(guò)LAB色彩模型處理彩色圖像精確定位目標(biāo),實(shí)現(xiàn)目標(biāo)的全自動(dòng)抓取、運(yùn)輸及投放。搜救系統(tǒng)為救援物資投放、人員搜救、無(wú)人機(jī)物流派送等提供理論依據(jù)和實(shí)驗(yàn)室驗(yàn)證,準(zhǔn)確率達(dá)98%,平均每次準(zhǔn)確追蹤僅需83ms,達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。
關(guān)鍵詞:機(jī)器視覺(jué);彩色圖像分割;目標(biāo)識(shí)別;OpenMV;MicroPython
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)28-0178-03
Abstract: Automatic simulation target search and rescue system (the search and rescue system in short) utilizes OpenMV micromachine vision module, with MicroPython programming, acquiring real-time color images, processing color images in the LAB color model in order to locate target precisely, implement grab, transportation and delivery target automatically. The search and rescue system provides theoretical basis and laboratory verification for relief goods delivery, search and rescue people, unmanned aerial vehicle (UAV) logistics delivery and so forth. The accuracy is 98%. It only takes 83 ms to precise tracking. That achieves the expected goal.
Key words: machine vision; color image segmentation; target recognition; OpenMV; MicroPython
隨著無(wú)人機(jī)的不斷發(fā)展,無(wú)人機(jī)無(wú)論是在軍用、民用,還是商業(yè)化的應(yīng)用上都越來(lái)越廣泛?,F(xiàn)代化戰(zhàn)爭(zhēng)對(duì)武器系統(tǒng)的防御能力要求越來(lái)越高,因此需要研制功能精度兼?zhèn)?,且反?yīng)靈敏的戰(zhàn)斗或偵察機(jī)。[1]在自然災(zāi)害勉強(qiáng),更能顯出人力的微弱,無(wú)人機(jī)在災(zāi)害物資運(yùn)輸、人員搜救上的應(yīng)用也必然成為趨勢(shì)。[2]隨著電商的興起,也引起了物流行業(yè)的人員緊張,在條件比較有限的地區(qū),依靠人力進(jìn)行物流配送也遇到了一定的困難,無(wú)人機(jī)物流配送將解決這一難題。直升機(jī)是典型的軍民兩用產(chǎn)品,可以廣泛地應(yīng)用在運(yùn)輸、巡邏、旅游、救護(hù)等多個(gè)領(lǐng)域。論文針對(duì)以上三個(gè)問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)直升機(jī)搭載的、實(shí)時(shí)性好、可靠性高,且無(wú)人為干預(yù)的全自動(dòng)模擬目標(biāo)搜救系統(tǒng)。
1 搜救系統(tǒng)開(kāi)發(fā)環(huán)境介紹
1.1 MicroPython
Python是一款比較容易上手的腳本語(yǔ)言,而且有強(qiáng)大的社區(qū)支持,一些非計(jì)算機(jī)專業(yè)領(lǐng)域的人都選它作為入門(mén)語(yǔ)言。遺憾的是,它不能實(shí)現(xiàn)一些非常底層的操控,所以在硬件領(lǐng)域并不起眼。MicroPython是一個(gè)Python 3的精簡(jiǎn)和高效的實(shí)現(xiàn)編程語(yǔ)言,它包含了Python標(biāo)準(zhǔn)庫(kù)的一個(gè)小子集,同時(shí)優(yōu)化了在微控制器和受限環(huán)境中的運(yùn)行。借助MicroPython,用戶完全可以通過(guò)Python腳本語(yǔ)言實(shí)現(xiàn)硬件底層的訪問(wèn)和控制,比如說(shuō)控制LED燈泡、LCD顯示器、讀取電壓、控制電機(jī)、訪問(wèn)SD卡等。
1.2 OpenMV
OpenMV是一個(gè)基于STM32F4xx ARM Cortex-M4 單片機(jī)和OV2640 圖像傳感器的開(kāi)源微型機(jī)器視覺(jué)模塊。OpenMV上搭載了一個(gè)MicroPython解釋器,能夠使用Python編程來(lái)實(shí)現(xiàn)一系列功能,包括IO 端口的控制、讀取文件系統(tǒng)等基礎(chǔ)功能,也可以實(shí)現(xiàn)人臉檢測(cè)和跟蹤、關(guān)鍵點(diǎn)提取、顏色跟蹤等功能。
1.3 LAB色彩模型
LAB是由明度(Luminosity)和有關(guān)色彩的a、b三個(gè)要素組成。L表示明度,a表示從洋紅色至綠色的范圍,b表示從黃色至藍(lán)色的范圍。LAB色彩模型不依賴于設(shè)備、色域?qū)掗?,它包含了RGB、CMYK的所有色域,人的肉眼能感知的色彩,都能通過(guò)LAB模型表現(xiàn)出來(lái)。另外,LAB色彩模型彌補(bǔ)了RGB色彩模型色彩分布不均的不足。搜救系統(tǒng)為了在圖像的處理過(guò)程中保留盡量寬闊的色域和豐富的色彩,最終選擇了LAB色彩模型。
2 全自動(dòng)模擬目標(biāo)搜救系統(tǒng)設(shè)計(jì)
2.1 全自動(dòng)模擬目標(biāo)搜救系統(tǒng)模塊設(shè)計(jì)
全自動(dòng)模擬目標(biāo)搜救系統(tǒng)主要包括飛行機(jī)器人控制模塊、機(jī)器手控制模塊,目標(biāo)自動(dòng)追蹤模塊,如圖1所示。
飛行機(jī)器人控制模塊,由于直升機(jī)靜穩(wěn)定性不好,所以需要控制器對(duì)其進(jìn)行增穩(wěn)和控制,以使系統(tǒng)性能滿足特定的指標(biāo)要求。[3]飛行機(jī)器人控制模塊通過(guò)陀螺儀來(lái)控制增穩(wěn),使飛機(jī)自動(dòng)保持定向飛行。[4]在飛機(jī)著陸并進(jìn)入穩(wěn)定狀態(tài)后,飛行機(jī)器人控制模塊會(huì)觸發(fā)機(jī)器手控制模塊,并等待機(jī)器手模塊返回啟航信號(hào)。
機(jī)器手控制模塊,在收到抓取/投放信號(hào)后,觸發(fā)目標(biāo)自動(dòng)追蹤模塊以獲得目標(biāo)的坐標(biāo),在獲得目標(biāo)坐標(biāo)后觸發(fā)目標(biāo)自動(dòng)追蹤模塊進(jìn)入休眠狀態(tài)。為了保證抓取穩(wěn)定性,機(jī)器手控制模塊通過(guò)大力螺旋的收取規(guī)劃方法,在獲得目標(biāo)坐標(biāo)后,螺旋下落抓取目標(biāo)。[5]在獲得目標(biāo)后觸發(fā)飛行器啟航,直達(dá)再次被觸發(fā)啟動(dòng)時(shí)釋放目標(biāo)。
目標(biāo)自動(dòng)追蹤模塊,主要實(shí)現(xiàn)目標(biāo)的自動(dòng)定位及實(shí)時(shí)追蹤,在機(jī)器手操作期間進(jìn)行路線實(shí)時(shí)校正。[6]該模塊通過(guò)圖像傳感器實(shí)時(shí)獲取圖像,然后對(duì)獲得的彩色圖像進(jìn)行閾值分析,選取指定目標(biāo),獲取目標(biāo)的中心坐標(biāo),傳輸給機(jī)器手控制模塊。[7]該模塊實(shí)時(shí)追蹤的中心坐標(biāo),為機(jī)器手提供目標(biāo)的坐標(biāo),防止機(jī)器手在操作期間出現(xiàn)路線的偏移,確保目標(biāo)的準(zhǔn)確定位。
2.2 全自動(dòng)模擬目標(biāo)搜救系統(tǒng)流程設(shè)計(jì)
全自動(dòng)模擬目標(biāo)搜救系統(tǒng)流程(圖2)說(shuō)明:
1) 飛行機(jī)器人穩(wěn)定飛往目標(biāo)區(qū)域,當(dāng)機(jī)器人進(jìn)入穩(wěn)定狀態(tài),機(jī)器手控制模塊通過(guò)串口通信向目標(biāo)自動(dòng)追蹤模塊發(fā)送搜索指令。
2) 目標(biāo)自動(dòng)追蹤模塊收到搜索指令后,通過(guò)對(duì)LAB色彩模型的彩色圖像進(jìn)行閾值分割,并鎖定目標(biāo)。目標(biāo)自動(dòng)追蹤模塊在獲得目標(biāo)中心坐標(biāo)后,將結(jié)果傳輸給機(jī)器手控制模塊,等待機(jī)器手返回睡眠指令,該模塊進(jìn)入睡眠狀態(tài),等待機(jī)器人的下一個(gè)搜索指令。
3) 機(jī)器手控制模塊在獲得目標(biāo)中心坐標(biāo)后,進(jìn)行目標(biāo)抓取,在抓取到目標(biāo)后傳輸指令觸發(fā)目標(biāo)自動(dòng)追蹤模塊進(jìn)入休眠狀態(tài),并觸發(fā)飛行機(jī)器人控制模塊進(jìn)行下一個(gè)操作。
4) 機(jī)器手在抓取到目標(biāo)后觸發(fā)飛行機(jī)器人,進(jìn)行返航。
5) 飛行器自主返航到安全區(qū),觸發(fā)機(jī)器手釋放目標(biāo),判斷目標(biāo)是否全部解救,如果不是則跳到1.,否則結(jié)束飛行,目標(biāo)全部被解救。
3 目標(biāo)自動(dòng)追蹤模塊實(shí)現(xiàn)
目標(biāo)自動(dòng)追蹤模塊采用OpenMV攝像頭開(kāi)發(fā)板上的 M12鏡頭座子,和一個(gè) 2.8mm焦距、92°視角的鏡頭來(lái)獲取實(shí)時(shí)圖像。模塊在OpenMV上搭載的MicroPython 解釋器進(jìn)行圖像處理,通過(guò)LAB色彩模型進(jìn)行彩色圖像閾值分割,通過(guò)形態(tài)學(xué)特性選取對(duì)目標(biāo)進(jìn)行定位,從而實(shí)現(xiàn)目標(biāo)的識(shí)別和追蹤。[8]
搜救系統(tǒng)提前設(shè)置目標(biāo)特征閾值、目標(biāo)數(shù)量,每次僅對(duì)一個(gè)目標(biāo)進(jìn)行追蹤。目標(biāo)自動(dòng)追蹤模塊通過(guò)MicroPython 中image 庫(kù)中的find_blobs函數(shù)進(jìn)行目標(biāo)的搜索。find_blobs函數(shù)通過(guò)參數(shù)thresholds 確定目標(biāo)的閾值范圍,對(duì)于彩色圖像,thresholds是一個(gè)一維數(shù)組,包含六個(gè)LAB色彩模型的閾值參數(shù),該閾值通過(guò)試驗(yàn)獲得,連通ROI(感興趣區(qū)域),并返回一個(gè)包含結(jié)果坐標(biāo)、大小等特性的List。為了更精確的獲得目標(biāo),系統(tǒng)通過(guò)給定目標(biāo)的形態(tài)學(xué)特性在find_blobs函數(shù)返回的List中選取最為匹配的區(qū)域,并計(jì)算中心坐標(biāo)。
目標(biāo)自動(dòng)追蹤模塊通過(guò)OpenMV 的串口3,對(duì)應(yīng)GPIO ( General Purpose Input Output ,通用輸入/輸出)為(PB10, PB11),用來(lái)與機(jī)器手控制模塊進(jìn)行數(shù)據(jù)交互。機(jī)器手控制模塊準(zhǔn)備就緒后向目標(biāo)自動(dòng)追蹤模塊傳送搜索信號(hào)。目標(biāo)自動(dòng)追蹤模塊讀入搜索信號(hào)后啟動(dòng)圖像采集傳感器。實(shí)時(shí)采集到的圖像經(jīng)過(guò)處理后,將中心坐標(biāo)再通過(guò)串口3寫(xiě)出,并停止搜索目標(biāo)直到下一個(gè)搜索信號(hào)到來(lái)。
4 仿真結(jié)果
仿真運(yùn)行在Windows 8.1 64位系統(tǒng), Intel(R) Core(TM) i5-3210M CPU @2.50 GHz 處理器,2G內(nèi)存,在OpenMV IDE 環(huán)境下進(jìn)行,先預(yù)設(shè)目標(biāo)的閾值范圍、形態(tài)學(xué)參數(shù),并等待搜索信號(hào)。
4.1 目標(biāo)自動(dòng)追蹤仿真
在收到搜索信號(hào)后,目標(biāo)自動(dòng)追蹤模塊啟動(dòng)攝像頭傳感器獲取彩色圖像,圖像大小為320*240,幀速率為15 FPS。該模塊通過(guò)預(yù)設(shè)的目標(biāo)閾值范圍對(duì)圖像進(jìn)行閾值分割,并獲得目標(biāo)的中心坐標(biāo),圖3展示的是圖像傳感器獲取的圖像經(jīng)過(guò)處理后將目標(biāo)的坐標(biāo)標(biāo)示出來(lái)。圖4展示出該圖像在LAB色彩模型下的直方圖。
4.2 串口數(shù)據(jù)傳輸仿真
串口通信的原理如圖5 所示。
目標(biāo)自動(dòng)追蹤模塊在系統(tǒng)啟動(dòng)后進(jìn)入等待狀態(tài),直至收到來(lái)自機(jī)器手控制模塊的搜索信號(hào)。此時(shí),該模塊將運(yùn)行目標(biāo)自動(dòng)追蹤程序,并將獲得的中心點(diǎn)坐標(biāo)反饋到串口3,并進(jìn)入等待狀態(tài)。機(jī)器手控制模塊收到中心點(diǎn)坐標(biāo)后向目標(biāo)自動(dòng)追蹤模塊反饋一個(gè)標(biāo)志數(shù)據(jù),并結(jié)束本次通信。目標(biāo)自動(dòng)追蹤模塊在收到這個(gè)標(biāo)志數(shù)據(jù)后結(jié)束本次通信,等待下一次喚醒。通信仿真如圖6所示。
5 結(jié)束語(yǔ)
通過(guò)全自動(dòng)模擬目標(biāo)搜救系統(tǒng)可以對(duì)目標(biāo)進(jìn)行準(zhǔn)確的抓取與投放,準(zhǔn)確率達(dá)98%。同時(shí),系統(tǒng)采用的攝像頭傳感線頻率快,系統(tǒng)的圖像處理速度快,平均每次準(zhǔn)確追蹤僅需83ms,具有良好的時(shí)效性。由于OpenMV搭載的圖像傳感器像素較低,獲得的圖像信息量有限,這就是使得飛行機(jī)器人必須精確的導(dǎo)航到目標(biāo)區(qū)域。
參考文獻(xiàn):
[1] 朱娟. 全自動(dòng)目標(biāo)坐標(biāo)測(cè)定儀通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 南京: 南京理工大學(xué), 2010.
[2] 章逸豐. 基于視頻的運(yùn)動(dòng)物體的實(shí)時(shí)檢測(cè)與跟蹤[D]. 杭州: 浙江大學(xué), 2008.
[3] 蔡華. 直升機(jī)控制律設(shè)計(jì)及仿真研究[D]. 西安: 西北工業(yè)大學(xué), 2007.
[4] 劉歌群, 劉衛(wèi)國(guó), 盧京潮. FUTABA陀螺儀的辨識(shí)及在無(wú)人機(jī)中的應(yīng)用[J]. 航空精密制造技術(shù), 2005, 41(6): 56-58.
[5] 莫海軍, 黃平. 基于最大力螺旋多指手抓取規(guī)劃[J]. 機(jī)械工程學(xué)報(bào), 2009, 45(3): 258-262.
[6] 沈?qū)殗?guó), 顧寄南, 陳雪芳, 等. 基于單目視覺(jué)的零件抓取信息提取技術(shù)[J]. 制造業(yè)自動(dòng)化, 2012, 34(9): 24-26.
[7] 龐曉敏, 閔子建, 闞江明. 基于HSI和LAB顏色空間的彩色圖像分割[J]. 廣西大學(xué)學(xué)報(bào):自然科學(xué)版, 2011, 36(6): 976-980.
[8] 侯云峰, 陽(yáng)豐俊, 楊效余. 基于形態(tài)學(xué)重構(gòu)運(yùn)算的地面目標(biāo)識(shí)別算法[J]. 國(guó)土資源遙感, 2012, 94(3): 11-15.