2009年5月16日 星期六

VB - Video Captrue

http://4rdp.blogspot.com/2009/05/vb-video-captrue.html

研究完 Bluetooth 通訊後,Cube Solver 還有一個重要功能必須加入,那就是顏色識別。當初我只購買 LEGO MINDSTORMS NXT 8527,沒有再添購其它特殊 Sensor,因此可以用來顏色識別的感測器只有 Light Sensor

所以我先測看看 Light Sensor 顏色識別度如何,結果大失所望,以下是我以 NXT View 所得的測試結果:

         LED OFF   LED ON
ORANGE    17        56
RED       16        55
YELLOW    19        53
WHITE     18        52
GREEN     14        46
BLUE      10        33
 

先說明 Light Sensor 工作原理,它是以感應光強度為主,越暗數值越接近零,反之越接近一百,先看 LED OFF 那一欄,魔術方塊藍色最暗沉,因此數值最小,綠色次之。測試當時是在家中客廳,照明為六顆燈泡色省電燈泡,感測器置於魔方正上方,所以讀值黃色最高,白色次之,橘色比紅色偏黃,因此橘色數值又比紅色高一點。開啟紅光 LED 後,橘色與紅色反射光較強,所以變成橘紅色數值最大。由這個實驗結果獲得結論為:週遭光源會影響 Light Sensor 顏色辨識情形,另外顏色之間辨識度不佳,非常容易誤判,我認為最起碼數值差異應超過 3,像藍與綠就壁壘分明,哈!這裡沒有政治影射的意思。


那是不是該買 Color Sensor?這是不必要的,這些感測器只能近距離小面積識別,若採用此種解決方案,NXT 機構設計會變複雜,要旋轉方塊一個一個顏色辨別而且速度慢,並且 Color Sensor 並不便宜,網購還要好幾天才拿得到,因此我去燦坤3C以 499 元買一個羅技 WebCAM (查不到 PN 960-000370,因此列出相近商品),用 VB 寫程式直接電腦擷取影像,這樣可以一次大面積攝影分辨顏色,才能有效縮短解魔術方塊時間。

這裡提供的攝影 VB 範例程式碼參考 http://andrew.csie.ncyu.edu.tw/Doc3A.htm,應該是嘉義大學洪燕竹教學網站多媒體系統講義。它利用 Windows avicap32.dll 來控制 WebCam 而且不限廠牌,只要先安裝好你所購買的 WebCam Windows driver,就可以使用本程式。研發養成所線上論壇放有範例程式,有興趣的人請加入群組會員下載。(原連結已遺失)





8 則留言:

  1. Dear Bridan:
    很感謝您提供這則非常棒的資訊。原本一直認為:非得要有什麼sensor才能做到特定的任務,況且光是一顆sensor動則價格不斐。如果什麼都要買一個來玩,其實也得花費不少錢。

    回覆刪除
  2. 薛老師您好

    可能研發做久了
    對於成本, 功能, 效率等項目都會綜合考量
    因此這裡提供的資訊
    儘可能實用讓大家方便運用

    謝謝你的回饋

    回覆刪除
  3. 用webcam似乎將受限nxt只能在筆電旁邊,如果要讓nxt背著跑,nxt專用的camera價格又很貴!

    回覆刪除
  4. 薛老師

    確實這方法適合 NXT 在固定位置,
    對於移動型機器人,
    另一解決方案可利用手機相機功能,
    不過這也是有成本與技術的困難度。

    回覆刪除
  5. 我是一個國中生
    只學過VB的一點皮毛
    想做一個解魔術方塊的機器人
    現在寫好了辨識Webcam圖片顏色的部分
    想直接用VB控制NXT
    是否能協助我?謝謝

    回覆刪除
  6. YK Wu 你好,

    你可以先閱讀本部落格 2009 四月中到五月底的文章,然後再討論你的問題。

    回覆刪除
  7. 目前只有不會控制NXT馬達 (想使用VB6)

    回覆刪除
  8. YK 您好,

    如果你可以使用 VB.NET 設計那是最好不過,因為 VB.NET 試用版永久免費,猜想你可能有你的難處非得用 VB6,可惜我沒有 VB6。

    想以 PC 控制 NXT,因為 USB 的 API 並沒有被公開,因此大家大多使用藍牙來控制 NXT,因此你接下來要研究的東西是 如何以 VB 透過藍牙與 NXT 通訊,等兩者能夠通訊後,再來看馬達控制。

    回覆刪除