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