基于TX1和立體相機的無人機避障系統
1 引言
與傳統的有人遙控飛行器相比,自主式無人機具有許多優點。例如,有人遙控飛行器依賴于正確的人類命令,并且受限于人和遙控平臺之間的通信系統。如果通信系統被干擾或中斷,它將無法運行?;蛘咴谀承碗s環境下,只靠操控人員的技術也難以保證遙控飛行器的飛行安全。而自主式無人飛行系統可以改正這個缺點。自主式無人機使用避障技術,可實現自主無人駕駛,擺脫人類的手動操作,因此可以執行部分高風險任務。無人機是以機載高清攝像機、GPS 和導航傳感器提供實時、精確定位或高分辨率圖像的最佳平臺之一。這些特點使無人機成為傳統載人遙控飛行系統的有效補充。
雖然無人機比傳統的有人遙控系統具有更多的優點,但仍存在一些潛在的問題。例如,在不同環境下信號傳輸的處理時間受其自身電源系統(電池或其他電源輔助系統)的限制,并且飛行條件受各種自然因素的影響,比如環境和天氣。對于圖像處理,光反射將影響無人機中攝像機的檢測結果。2016 年 5 月發生的特斯拉自駕車輔助系統的事故受到了白色背景面反射陽光的影響。由于反射,攝像機無法檢測到來自相反方向的車輛。同時由于飛行時間的限制,無人機的反應時間和數據處理時間都是需要考慮的問題。對于這些問題,研究人員需要在硬件和軟件性能之間找到平衡點。特別是在無人機避障技術中,如何快速準確的對對象進行檢測仍然是一個挑戰,因為它需要高速的計算。
為了優化圖像處理的計算速度,并使用簡單的方法來檢測無人機中的物體,本文提出使用圖形處理單元(GPU)作為數據計算中心,使用立體相機作為無人機的視覺系統,提出了一個實時視頻分析的優化算法。
2 相關工作
使用高性能平臺來提高系統性能是無人機研究人員的共同解決方案。一個典型的無人機公司是大疆創新科技有限公司,他們的無人機使用 NVIDIA TK1 處理數據并連接高清攝像機進行實時錄像和地理掃描。為了觀察特定的目標,國外研究人員使用了尺度不變特征變換(SIFT)模型檢測車輛,圖像匹配模塊使用 SIFT 來匹配圖像中的相同區域,然后重新采樣[1-6]。
無人機探測物體的另一種方法是使用立體相機。該方法采用兩個 360o 攝像機來感知無人機周圍的障礙,使用垂直而不是水平相機位移計算除天頂和底部之外的所有觀察方向上的深度信息[7]。
以此基于高度、寬度和相對相鄰點的可穿透斜率對三維空間中的點進行分類。單目攝像機也可以用來檢測障礙物,使用的障礙物分割算法根據不同的顏色來檢測障礙物[8]。
3 平臺設置
本文采用一對攝像機來實現立體視覺。同時,考慮到無人機的載重和尺寸以及處理器的計算能力,本文采用了 ZED 立體相機和 NVIDIA TX1 GPU。 TX1 比 TK1 的視頻編碼快兩倍,并且 TX1 的內存帶寬(25.6 GB/s)大于 TK1(15 GB/s)[9]。兩個攝像頭水平放置以記錄視頻捕捉圖像。
在本文中,攝像機將捕獲無人機前方 120o 視角范圍。此外,它可識別從最近 70 cm 到最遠 20 m 的障礙物。
4 深度圖估計
這兩個攝像機可以支持高分辨率的視頻記錄和 3D 映射,并且可以提供 6 軸位置跟蹤。然而,無人機探測系統只需要 2D 圖像數據進行分析。本文中這兩個相機的分辨率是 1 280×720 像素。
圖 1 表示照相機視野范圍。大方格是相機視野區域的范圍,小方格是相機的遠視區域。
在得到兩幅圖像之后,計算機需要計算視差,即從圖像像素到攝像機的距離。
對于左側圖像中的每個像素,計算到右側圖像中對應像素的距離[10],見圖 2。
得到立體圖像后,可以計算出攝像機與目標之間的距離。此實驗中計算每個像素從圖像到相機的距離。我們把距離 B 表示為距離 B1 和 B2 之和[11]。
(1)
距離 D 為式(2)。
(2)
圖 3 為用兩個相機拍攝的物體(樹)。
在本文中,每個像素可以被看作這個圖中的每棵樹。在計算每個像素距攝像機的距離時,系統可以獲得圖像的深度圖,如圖 4。
在圖 4 中,不同的顏色表示圖像和相機的距離。比較圖 4 以及圖 1,如果像素靠近照相機,顏色是亮的,如果像素遠離照相機,則顏色是暗的。
5 算法實現
該算法分為三個部分:深度計算、方形尺寸查找和中心點距離計算。輸入數據集是 2D 圖像陣列,表示每個像素在圖像上的位置。在獲得每個像素的深度之后,設一閾值將圖像分成大于閾值和小于閾值兩部分。前者表示無人機的“障礙物”,后者表示無人機的“安全區域”。
接下來的每一步,無人機將數據傳輸到內核,再從內核獲取數據。這里的關鍵是如何優化 CPU 和 GPU 之間的負載平衡。由于本文選取的圖像分辨率為 1 280×720,為了計算每個像素的距離,本文使用 2D 映射,這樣可以最好地利用該系統的計算速度。
內核的線程我們設成一塊 256 個像素,像素總數為 1 280×720=921 600,這樣就有 3 600 個塊進行并行計算。這可以保證在飛行中獲得理想的計算性能。首先獲取每個像素的距離并分配每個像素。例如,有三個像素。它們與相機的距離是 3.23 m、2.52 m 和 1.53 m。在閾值為 2 的情況下,它將第一和第二像素分配為 1(它表示安全區域),將第三像素分配為 0(這意味著障礙點)。
最后,該數組僅包含 0 和 1。在數組傳輸到 CPU之前,二維數組轉換為一維數組,這樣可減少 CPU 和 GPU 之間的同步傳輸。
下一步是找到安全區域。我們使用正方形來表示安全區域。當計算正方形大小時,線程和塊的分布與第一步相同。在此步驟中,TX1 板還使用以下等式計算每個像素距圖像中心點(640,360)的距離 D。
(3)
最后一步是從圖像的中心得到最接近的正方形。在這個步驟,它將每個像素的距離值設置到每個線程中。這里使用的方法稱為歸約。它可以是陣列的最大/最小值,時間復雜度為 O(log n)。圖 5 展示了并行歸約的順序尋址。
該算法的時間復雜度為 O(N/P+log n),其中 N 是數組中的總元素個數,P 是它的總塊數,log n 是每個塊的運行時間。
在這三個步驟之后,系統將得到最接近中心點的方形區域,以指導無人機的飛行,找到正確的路線。當確定方形區域的位置時,它可以根據區域的(x,y)坐標為無人機提供飛行指令。例如,如果正方形的中心位置是(200,150),則命令是“向左飛行然后上升”。
6 實驗結果
該系統在無人機實驗室環境進行了測試,圖 6 顯示了兩個不同閾值的結果,棋盤代表了無人機能夠通過的安全區域,也就是距離大于閾值的區域,如果距離小于閾值,則不做特別標記。
圖 7 顯示了走廊上的測試結果,當攝像機檢測到障礙物時,它可以引導無人機的飛行路線,在圖像上顯示的黃色(淺色)文本。
該算法的時間復雜度是 O(n2),其中 n 是符合無人機大小的正方形區域的恒定大小。由于該 ZED 相機支持每秒 15 幀,所以每幅圖像的處理需要 0.066 s。系統各部分測量后,結果如表 1。
從表 1 可以發現,求平方算法是整個系統中效率較低的部分之一,并且還受到如何設計平方大小的限制。因為當正方形的大小變大時,每個線程的工作量也會變大。光反射也是相機的常見問題;如果環境有強烈的光反射,相機就無法檢測到任何東西。
7 結語
本文提出了一種基于立體相機和 TX1 GPU 的無人機避障方法。它使用兩個攝像機來分析每個像素與攝像機的距離。然后,計算機通過比較距離和閾值來找到理想的安全區域,以便向無人機提供飛行指令。將來,無人機系統可以通過預先計算少量數據,作為輸入數據重復該算法來進一步優化。
-
無人機
+關注
關注
230文章
10486瀏覽量
181350 -
立體相機
+關注
關注
0文章
6瀏覽量
3838
原文標題:基于TX1和立體相機的無人機避障系統
文章出處:【微信號:appic-cn,微信公眾號:集成電路應用雜志】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論