機器人結合手機的重要拼圖: Android + openCV達成視覺辨識

CAVE於去年出版的[Android / NXT 機器人大戰:智慧型手機控制機器人]內容在討論Android手機上的各樣硬體如何與機器人結合, 包括觸控螢幕, 感測器控制等。 類似的功能也能透過簡易版的Android開發環境, 也就是App Inventor來達成。

我們也有專文[Google Map 路徑追蹤機器人]來討論如何讓機器人根據Google Map的路徑分析結果來移動, 雖然精度受限於手機的GPS晶片, 但已經有基本的雛形。歡迎來信索取source code。

Google Play上也上架了四隻程式, 有興趣的朋友可以下載來玩玩看。當然, 也歡迎來信索取source code。

當時尚未討論到的是如何利用手機進行視覺辨識, 讓機器人得以利用手機上優秀的相機鏡頭來進行各種動作。 我們初步的構想是讓機器人透過手機來跟著手電筒光源跑移動。由於相機所擷取到的資訊對於機器人而言太多也太雜, 所以希望將資訊單純化。所以需要借重openCV這個專門的視覺處理函式庫, 將它轉到Android平台上執行。 這需要做一些步驟, 包含下載openCV的Android SDK, 下載cygwin以及Android NDK等等。因此我們將另外以專文來介紹如何順利在您的Android手機上build up openCV環境。

對於物體追蹤來說, 很重要的一個步驟就是邊界偵測(Edge detection)來說, 我們假設一個像素的周圍8個點顏色都是相近的, 如果周圍像素的顏色出現大幅度變化, 代表這裡很有可能是邊緣。 下圖是擷取網路的示範效果。

各位可以從下圖CAVE老師手中的相機畫面看到, 我們已經順利將手機相機擷取畫面二值化並可擷取物體(畫面中亮部)的坐標與XY分量。 如此就能根據手電筒光源位於畫面的左/右側來控制機器人左右修正, 試圖保持光源位於畫面中央。另外也可透過光源所占像素面積來判斷遠近。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *