微型無人機是尺寸只有手掌大小的無人機,可以在狹窄空間移動,例如:於救災時,在坍塌建築物中搜索。不過因為其重量、機能限制,若要可以自主飛行,仍有許多挑戰性,因此需要找到能適用在微型無人機上的有效演算法。若要自主飛行,需要達到:穩定飛行、速度控制、以及避障等功能,因此無人機需要知道自己當下的飛行速度。

生物如蜜蜂等飛行昆蟲,會藉由計算光流完成這些任務,所以研究團隊將光流作為靈感,透過在微型無人機下方裝相機偵測光流,來了解自己的行進速度。然而,工程上傳統的算法,如 farneback 的稠密光流、抑或是 Lucas-Kanade 的稀疏光流,都還是無法在微型無人機的硬體上運算。因此本篇的研究團隊介紹新的光流算法:edgeflow,藉此幫助微型無人機飛行。

Untitled

fig.1 整篇論文的架構。為了讓微型無人機自主飛行,藉由在無人機底部裝相機偵測光流,達到估計自身速度的工作。

首先先用 Sobel filter ,計算出圖像x軸的邊緣特徵,並沿著y軸加起來,形成直方圖(fig.2a),使得原本二維降成一維,y軸的計算反之亦然。接著使用絕對差值(SAD),在兩幀照片中搜索,近一步得到位移。(fig.2b)

Untitled

fig.2 (a)圖像經由sobel濾波器偵測出物體邊緣,並繪製成直方圖 (b) 將兩幀的直方圖比較、搜索,得到兩幀間的位移。

考慮到若移動較緩慢,兩幀間可能偵測不到移動,所以作者將不止比較前一幀,而是比較更前面幀數的影像。但由於不可能將所有影像都存下來,那該如何決定要跟多少幀影像比較?所以作者藉由前一刻得到的光流,藉此推估需要多少幀影像。

Untitled

Untitled

得到光流,即可換算成自身速度。本文推出的光流算法,可以在硬體較受到限制的微型無人機上使用,在控制迴路中,可以做到補償飄移,並瞭解外部的速度。

Reference

原文:K. McGuire, G. de Croon, C. de Wagter, B. Remes, K. Tuyls and H. Kappen, "Local histogram matching for efficient optical flow computation applied to velocity estimation on pocket drones," 2016 IEEE International Conference on Robotics and Automation (ICRA) , 2016, pp. 3255-3260, doi: 10.1109/ICRA.2016.7487496.