; ; Back to previous page Show Chinese

無人機室內定位導引AI技術開發

摘要

本系統結合Intel® RealSense Depth Camera D455這款3D攝影機在室內定位無人機及其目的地或待追隨的目標,透過YOLOv5訓練影像蒐集與Labelimg進行手動標記。進行無人機資料標記前,須先將欲標記之影像讀取進程式內,透過滑鼠點擊的方式將無人機的Marker輪廓描繪出來,每完成一處Marker之標記,須將其命名並進行分類,之後將影像中Marker全數標記才算完成。

透過訓練完後所抓到的目標物,找出目標物在3D雲點圖的實際座標,進而算出距離角度,在推算無人機將移動速度與方向,並將演算結果用UDP傳送指令至Raspberry Pi,導引無人機前往目的地,讓它在室內沒有GPSLiDAR地圖定位的情況下知道該往哪飛,該如何修正、補償飛行過程所造成的累積誤差,並在目的地改變時也能夠穩定的跟隨。

關鍵字:無人飛行載具、YOLOv53D雲點圖、UDP、室內導航


第一章          研究背景及動機

近年來,無人飛行載具(Unmanned Aerial Vehicles; UAV)有著極為靈活且建置彈性的特性受不少人矚目,同時易控制與操作。其無人機靈活的機動性、良好的飛行能力、對環境的高適應性以及飛行員對其飛行的掌控容易度,受益於微處理器與感測器能力的進步,使目前大部分無人機都具備一定程度的半自動飛行能力,造就無人機良好的自穩能力,飛行操作員只需學習基本的操作,或是,透過事先設定目的地後由GPS座標及高度自動完成操作。

受到通訊及網路的整合使科技發展日益蓬勃,無人機也被視為能夠乘載眾多技術的平台,使用無人機掛載攝影機進行拍攝、掛載無限基地站作為訊號集散地,或是,掛載電子感測器作為環境監測站等。現在結合人工智慧AI技術,這項技術應用在攝影、保全巡檢、貨運、農藥噴灑等,使無人機從休閒娛樂發展到各大產業、國防等領域中應用。

本研究將要用3D相機捕捉無人機,人工智慧將不可或缺,藉由分析拍攝內容,可有效地分析與理解萃取有用的信息,也能夠適應新的環境與數據資料進行自我的學習與調整在,在未來甚至可能自主調查問題的能力,降低錯誤率還能提供更好的工作效率,具有顛覆產業的潛力。

現今的3D感測技術主要可分為立體視覺(Stereo Vision)、結構光(Structured Light)、飛時測距(Time of FlightTOF),而D455是透過立體視覺的技術來開發,立體視覺是基於人眼視差的原理,在自然光源下,透過兩個或兩個以上相機模組從不同的角度對同一物體拍攝影像,再進行三角測量法等運算來取得與物體之間的距離資訊。優點是省電、明亮環境表現佳,適合在戶外長期運作,但缺點是軟體演算法複雜、延遲性高,且不適合在昏暗環境使用。

由於YOLOv5是在PyTorch中實現的,它受益於成熟的PyTorch生態系統,支援更簡單,部署更容易。此外,作為一個更廣為人知的研究框架,YOLOv5 的迭代對更廣泛的研究社群來說可能更容易。其次,YOLOv5的速度快得驚人、精度超高、且YOLOv5所佔的體積很小。而人工標記作業為電腦深度學習過程中最耗時費力的一環。未來結合校園內無人機之應用時,可結合在圖書館找書時的導引需求,可提供無人機導引讀者找書服務。

在某學期的課程中得知了無人機的許多知識與規定,發現到無人機有許多的限制,有部分的禁飛區、有規定的高度、有規定的重量,還有許多的證照考試,有著許多的阻礙,但本研究並未這些因素而被打退,依舊想要嘗試無人機的可能性,排除了上述限制,在室內與使用指令控制,成為了本研究的方向,證照考的是飛行操作員的手操能力,那怎麼不訪使用電腦程式幫助無人機飛行,開始研究如何讓無人機在室內巡邏,並完全自動化,使本研究能應用在國防、防災等巡視上,能夠在事發第一時間發現盡早處理。

第二章          計畫目的與範圍

本研究希望開發能夠讓無人機自動定位與飛行的系統雛形,使無人機能在室內巡邏,因此本研究針對如何定位無人機位置與控制無人機,以上這兩點進行探討。

本研究從使用3D相機拍無人機,進行AI訓練捕捉,並透過演算得出距離與角度,進而算出無人機飛行所需速度、飛行時間、方向,傳送指令到控制無人機的Raspberry pi上,進而控制無人機飛往目的地,且在目的地移動後也能夠繼續跟隨移動至新的目的地上,即是本研究專題範圍。

第三章          需求環境

第一節 無人機

AR.Drone遙控飛行器是全球著名手機周邊無線產品品牌Parrot推出的套用實時編碼技術,並通過iPod touch/iPhone/iPad遙控的四螺旋槳直升機。由碳纖維及強硬防撞的PA66塑膠製造,內設MEMS微機電系統、三軸加速器、雙陀螺儀、超音波感應器及兩個鏡頭。

第二節 Intel® RealSense Depth Camera D455

3.1 Intel® RealSense Depth Camera D455

 

D455 將深度傳感器之間的距離增加到 95 毫米,從而將深度精度提升到 4 米時小於 2% 的水平。

為了改進 RGB 圖像以及深度與 RGB 圖像之間的同步,RGB 傳感器包含了一個全局快門,並與深度視場匹配。

特性:數秒內完成片上校準。英特爾實感 SDK 2.0 可為D455 立體攝影鏡頭提供片上自校準選項。不到 15 秒的時間內即可完成攝影鏡頭校準。

第三節 YOLOv5

第一項 YOLO介紹

YOLO是物件偵測模型。物件偵測是計算機視覺中比較簡單的任務,用在圖中找到某些特定的物體,物件偵測不僅要求我們識別這些物件的種類,同時要求我們標出這些物體的位置。

YOLOv5中有四種模型,有著不同的參數與神經元數量,因此各模型的訓練性能(如圖3.2所示)[3]、時間、大小(如圖3.3所示)[3]都有所不同。

3.2 YOLOv5個模型比較曲線圖

3.3 YOLOv5個模型比較長條圖

三個YOLO重要的步驟

1.Resize輸入的圖到448*448

2. 執行一個卷積神經網路

3. 基於模型輸出的信心程度(Confidence)依據閾值和Non-max suppression得到偵測結果

第二項 YOLO的卷積網路架構

YOLO的卷積網路架構(如圖3.4所示)[4],架構來自GoogleNet模型,與GoogleNet不同的在某些3×3的卷積層前面用1×1的卷積層來減少filter數量。

3.4 YOLO的卷積網路架構

第三項 YOLO物件偵測怎麼做的

簡單講就是將圖拆成很多個grid cell,每個grid cell進行bounding box的預測和屬於哪個類別的機率預測,最後用閾值和NMS (Non-Maximum Suppression) 的方式得到結果。

先知道最後輸出的tensor的大小是S×S×(B×5+C),首先會將圖平均分成S×Sgrid cell,每個grid cell必須負責預測前面開始提到的「Bbounding boxes」和「屬於每個類別的機率(如圖3.5所示)[4],每個bounding box會帶有5個預設值 (x, y, w, h) confidenceconfidence則是用來表示這個物件是否為一個物件的信心程度(confidence score),信心程度的計算(算式如下)[4]

3.5 YOLO物件偵測過程

如果一個grid cell沒有Obfectconfidence score將會是0,反之grid cell內有物件,confidence score就是在預測bounding boxground truthIOU

除了confidence score還需要預測屬於每個類別的機率,所以每個grid cell還會有C個條件機率(conditional class probabilitiesPr(Class|Object)),也就是說grid cell包含的這個物件屬於某一類的機率。

最後bounding box會得到一組class-specific confidence seores公式如下圖

 

實際上每個bounding box會得到一組class-specific confidence scores(算式如下)[4]

第四項 YOLO Loss function

一般都使用sum-squared error當作loss function,因為最容易最佳化,但這種方法並不夠完美,bounding boxlocalization errorclass error佔有一樣的比重,導致目標的平均精度不夠好,

YOLO大部分的grid cell內是沒有物件的,所以confidence結果會趨近於0造成模型不穩定。

YOLO作者在bounding box座標預測增加loss的權重,並減少bounding box內沒有物件的loss權重,YOLO multi-part loss function(如下算式)[4]

這樣loss function只會針對有物件的grid cell進行懲罰分類錯誤,並針對偵測Ground truth box的預測者進行懲罰bounding box錯誤。

第四節 UDP

UDP在傳輸過程中不需要連接目標電腦就可以直接傳送資料,UDP傳送速度非常快,在需要即時接收資料情況下使用是很好的選擇,跟TPC比起來TPC需要連接目標,如果是多人的情況下TPC傳送反而可能會經歷重傳跟等待這兩個步驟,會比UDP多一些延遲的時間,但UDP是一種不可靠的傳輸方式,資料很有可能會缺少一部分或有些錯誤,甚至重複,所以在應用上UDP比較適合就算是資料錯誤或是遺失了也不算是大問題的應用程式來使用,需要嚴謹的應用程式反而是TPC會好一些。

第五節 Raspberry Pi

使用Linux的單晶片電腦,有著Wi-Fi、藍牙功能和USB啟動功能。

優點: 低價硬體及自由軟體,促進學校的基本電腦科學教育。Raspberry Pi有自己的操作系統,對Linux熟悉的可以很容易上手、介面多,而且和外圍設備通信也比較方便,USBLANHDMI直接插上就能用。

第六節 程式環境

Python。是一種廣泛使用的直譯式、進階和通用的程式語言。其本身擁有一個巨大而廣泛的標準庫。

Spyder(前身為Pydee)。是一個使用Python語言的開放原始碼跨平台科學運算整合開發環境(IDE)

開放原始碼以Python編寫,且可相容於非自由軟體授權,可以使用附加元件擴充,內建互動式工具以處理數據。具有跨平台的特性。

MATLABMatrix Laboratory,矩陣實驗室)。是一種用於演算法開發、資料視覺化、資料分析以及數值計算的進階技術計算語言和互動式環境。還可用來建立使用者介面,以及呼叫其它語言編寫的程式。

主要用於數值運算,但利用為數眾多的附加工具箱,也適合不同領域的應用,例如控制系統設計與分析、影像處理、深度學習、訊號處理與通訊、金融建模和分析等。另外還有配套軟體套件Simulink提供視覺化開發環境,常用於系統類比、動態/嵌入式系統開發等方面。

R2017b後的MATLAB版本更釋出了深度學習的工具,使其能夠視覺化的快速建立AI模型,並透過各種轉碼器,部屬於嵌入式硬體之中。

第四章          研究方法及步驟

第一節 前置作業

4.1前置作業流程圖

本研究希望設計出一個自動控制無人機在室內找到定點後飛到目的地,當無法使用定位時還能主動去矯正無人機當前位置抵達目的地,因此準備了3D相機。

無人機及目標物須事前貼上不同的色塊來辨識方向,無人跡選用色別差異較大的粉色、藍色、黃色、綠色,目標物則選擇紅色。以無人機舉例,正面會偵測到粉色、綠色兩種顏色。

4.2無人機與目的地貼上色塊成品

在模型訓練上需拍每面各100張照片,一共5002D平面照片,每張照片的無人機擺放位置都要不一樣,訓練各個角度拍攝到的色塊,才能夠讓訓練出來的模型在辨識無人機時,都能被偵測到Maker。且每一張照片都需要手動做處理,透過LabelImg去標記兩塊色塊中間區域,並取上相對應的類別名稱。

4.3 模型辨識結果

模型訓練完成後,為讓主機參數回傳到Raspberry Pi控制無人機,本研究用UDP協定連線,主機為UDP Client端、Raspberry PiUDP Server端,但由於Raspberry Pi需與無人機需透過Wi-FiUDP則必須要在Raspberry Pi上接上網卡連線至學校網路,主機同樣也要連線至學校網路,才能夠使用UDP協定去傳送參數。

測試時先透過3D攝影機拍攝一張無人機和目標物當前位置的照片,並將照片由MATLAB的主程式呼叫已經訓練好的模型,找出無人機和目標物上的Maker

為找出實際座標,偵測後的照片還會做後續處理,將標記以外的部分所有像素點RGB設為0,即為黑色,以利於後續計算座標。由於3D相機會利用三角定位法拍出3D雲點圖,這兩份數據透過MATLAB推算出空間中座標距離,透過距離與加速度公式推算出無人機應飛行時間。再由MATLAB的主程式呼叫UDP Client端回傳飛行時間與方向參數,Raspberry PiUDP Server端接收到後將會下達飛行指令,成功飛行到目的地即完成測試。

4.4  3D雲點圖

 

第二節 執行階段

4.5 程式執行流程圖

        執行時首先將UDP ServerClient之間的封包通道打開,3D相機則是用MATLAB執行去開啟,再執行MATLAB主程式拍照,拍完呼叫Python程式的YOLO模型去辨識,辨識完回傳至MATLAB計算出飛行時間、方向,再由UDP協定傳送計算後的參數至Raspberry Pi去下達指令控制無人機飛行,當無人機確認目的地完畢後,無人機將會移動至目的地,若飛行後位置不符預期,可再次執行程式,重複上述步驟完成跟隨。

第五章          計畫配合事項及限制

本研究由於無人機在室外飛行需要證照改為室內雖然解決,要飛行無人機又是室內,再場地上面受到了不少的限制,要購空曠的室內空間訓練資料,後來老師在圖書館有AI體驗訪能夠使用,解決場地問題。

 

第六章          參考文獻

[1]AR.Drone遙控飛行器

https://www.easyatm.com.tw/wiki/AR.Drone%E9%81%99%E6%8E%A7%E9%A3%9B%E8%A1%8C%E5%99%A8

[2] Intel® RealSense™ Depth Camera D455

https://www.intelrealsense.com/depth-camera-d455/

[3] 一文讀懂YOLOv5YOLOv4

https://zhuanlan.zhihu.com/p/161083602

[4] 深度學習-物件偵測:You Only Look Once (YOLO)

https://chih-sheng-huang821.medium.com/%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E7%89%A9%E4%BB%B6%E5%81%B5%E6%B8%AC-you-only-look-once-YOLO-4fb9cf49453c

[5]Intel realsense 官方網站:

https://www.intelrealsense.com/depth-camera-d455/

[6]Python TCP Socket Server/Client 網路通訊教學

https://shengyu7697.github.io/python-tcp-socket/

[7] linux下內外網同時工作

https://www.itread01.com/content/1550641710.html

[8] Python TCP Socket Server/Client 網路通訊教學

https://shengyu7697.github.io/python-tcp-socket/

[9]【圖解】3D感測技術發展與應用趨勢|大和有話說

https://reurl.cc/XlOadR

[10]AI於無人機之應用

https://www.materialsnet.com.tw/DocView.aspx?id=43732

[11]YOLOv5來了!基於PyTorch,體積比YOLOv4小巧90%,速度卻超2

https://www.gushiciku.cn/pl/pIPF/zh-tw

[12] 吳仲軒,單目視覺ORB-SLAM2應用於四軸飛行器室內導航之研究 2021

[13] 蔡秀榛,應用於室內倉儲環境之自主四旋翼的自動駕駛與貨品辨識 2019

[14] 林宗穎,全自動影像辨識與地圖建置於巡邏機器人之應用2021