HOWTO: 在Macbook上DIY窮人的multi-touch (Part 1)

April 16th, 2008 by vgod

Apple雖然已經把multi-touch擴展到iPhone以外的Macbook Air和Macbook Pro,可是唯獨Macbook還是沒有multi-touch trackpad能用。在看了前陣子CMU HCII的PhD學生Johnny Lee利用Wiimote做了個multi-touch demo後,就讓我興起在自己的Macbook上也搞一個來玩的念頭。這整個過程我會發表在這blog上,讓有興趣的人可以參考。

簡介

multi-touch的實做方法很多,最簡單的一種稱為 FTIR (Frustrated Total Internal Reflection)。FTIR是在壓克力面板內打入紅外線,當手指按上去時會產生反射,接著在面板後用一個紅外線攝影機去追蹤這些因為反射而亮起來的地方。

在Johnny Lee的Wiimote demo中,其實也是用了相同的概念。他用自製的紅外線LED燈(注意看影片,上面可是有100顆LED…)往user的方向照,而紅外線碰到手指會反射回去(他在手指上貼了反射片,能拉大手指和身體其他部位反射的差距),最後再利用Wiimote內建的紅外線攝影機來做tracking。這裡要特別說明的是,Wiimote非常神奇的內建了硬體的光點追蹤(blob tracking),最多可以支援到四個光點,而Johnny Lee就是利用了這個內建功能輕易的完成了multi-touch控制器(嚴格說起來沒有”touch”,應該叫做multi-point才對)。

根據以上的說明,我們可以知道要自己DIY一個最簡單的multi-touch device需要下列材料:

  1. 紅外線LED x N
  2. 紅外線攝影機 x 1
  3. 一塊壓克力板, 或是可以貼在手指上的反射片
  4. 光點追蹤軟體或硬體

目標

整個project最後目標是能接到Mac OS X底層的API,讓這個DIY裝置的輸出直接變成OS X能接受的event。後來研究一下才發現,Apple根本就還沒公佈什麼multi-touch API,雖然我猜已經有未公開的API了,但我不知道怎麼查,如果有人知道請告訴我,我會非常感激你的 :-D

因為我想在Macbook上做到multi-touch control,又不想破壞我的愛機,所以只好採用非接觸式的控制方式,也就是像Johnny Lee那樣在空中揮動手指就能感應。

我上個星期趁放假花了三天,已經完成了第一階段的prototype,證實這個idea是真的能運作的。
有圖有真相:

這篇先寫到這,下一篇將開始介紹硬體部份的製作。

“HOWTO: 在Macbook上DIY窮人的multi-touch (Part 1)” 有20則留言

  1. MyAvatars 0.2 apum1230 說:

    真的太酷了~
    著個真的能應用在很多地方
    如果不須要wiiremote就更容易普及

    - 回覆留言(Reply)

  2. MyAvatars 0.2 Apple » HOWTO: 在Macbook上DIY窮人的multi-touch (Part 1) 說:

    [...] Anguilla Travel Guide wrote an interesting post today on HOWTO: å¨Macbookä¸DIY窮人çmulti-touch (Part 1)Here’s a quick excerpt Apple雖然已經把multi-touch擴展到iPhone以外的Macbook Air和Macbook Pro,可是唯獨Macbook還是沒有multi-touch trackpad能用。在看了前陣子CMU HCII的PhD學生Johnny Lee利用Wiimote做了個multi-touch demo後,就讓我興起在自己的Macbook上也搞一個來玩的念頭。這整個過程我會發表在這blog上,讓有興趣的人可以參考。 簡介 multi-touch的實做方法很多,最簡單的一種稱為 FTIR (Frustrated Total Internal Reflection)。FTIR是在壓克力面板內打入紅外線,當手指按上去時會產生反射,接著在面板後用一個紅外線攝影機去追蹤這些因為反射而亮起來的地方。 在Johnny Lee的Wiimote demo中,其實也是用了相同的概念。他用自製的紅外線LED燈(注意看影片,上面可是有100顆LED…)往user的方向照,而紅外線碰到手指會反射回去(他在手指上貼了反射片,能拉大手指和身體其他部位反射的差距),最後再利用Wiimote內建的紅外線攝影 [...]

  3. MyAvatars 0.2 Mr. Monday 說:

    哈, 真是有趣 :) 我現在也正在 DIY Multitouch Table, 不過我想等我一次完成後再來跟大家分享 :) 祝你成功 :)

    - 回覆留言(Reply)

  4. MyAvatars 0.2 vgod 說:

    Hi Mr. Monday,

    原來你也在DIY multi-touch table,難怪UIUI上每天都是multi-touch的文章..:-D
    很少看到台灣的blog有這種hardware hacking的介紹,我很期待你的DIY分享 :-D

    - 回覆留言(Reply)

  5. MyAvatars 0.2 » vgod on Multi-Touch 說:

    [...] 最近在它的 Blog 介紹了如何簡單 DIY Multitouch,vgod 的目標是把 Johnny Lee 的 Project 移植到 Mac 上面去。非常酷,看起來完全 [...]

  6. MyAvatars 0.2 Apple » Blog Archive » vgod’s blog: HOWTO: ???Macbook???DIY?????????multi-touch (Part 1) 說:

    [...] Emerce – Business, Marketing & Technologie wrote an interesting post today on vgod’s blog: HOWTO: ???Macbook???DIY?????????multi-touch (Part 1)Here’s a quick excerptApple???????????????multi-touch????????… [...]

  7. MyAvatars 0.2 Iphone » vgod’s blog: HOWTO: ???Macbook???DIY?????????multi-touch (Part 1) 說:

    [...] No Impact Man wrote an interesting post today on vgod’s blog: HOWTO: ???Macbook???DIY?????????multi-touch (Part 1)Here’s a quick excerptApple???????????????multi-touch????????… [...]

  8. MyAvatars 0.2 APPLE 說:

    如果是一般的網路攝影機或是一般的攝影機
    是否也能實作?
    還是一定得要有夜視功能或是什麼紅外線感應的才OK
    還是只要有遙控功能的(就是像電視遙控器指著鏡頭就有感應的)也行
    我想說內建的功能應該不會太複雜
    我也看過蘋果官網MACBOOK中的內建鏡頭DM並沒有很強調有紅外線功能
    我也想在桌上型PC試試看(但沒有內建攝影機)
    因為文中提過用內建的+自製濾光片就可以當成紅外線功能的用
    所以不曉得一般的攝影機能否實作
    希望各位能夠答覆
    謝謝

    - 回覆留言(Reply)

  9. MyAvatars 0.2 vgod 說:

    Hi Apple,

    其實一般的攝影機都是能看到紅外線的。可是有許多攝影機會故意加上阻擋紅外線的濾光片,讓鏡頭只會接收到可見光。這種攝影機大多把濾光片黏死在鏡頭上,要拆也不容易。所以實做前還是先拿個遙控器對攝影機按按看,只要能看到遙控器發光就可以了。

    - 回覆留言(Reply)

  10. MyAvatars 0.2 APPLE 說:

    謝謝你 Vgod
    我還有一個問題
    紅外線LED燈如果買IR LED來兜
    是不是用發射型的LED

    - 回覆留言(Reply)

  11. MyAvatars 0.2 vgod 說:

    Apple:
    沒錯, 要能發射紅外線光的LED.
    在電子材料行應該會看到兩種大小, 買大的就對了.

    - 回覆留言(Reply)

  12. MyAvatars 0.2 » DIY Surface Table (I): NUI & 實作的總類 說:

    [...] 不然你也可以參考 Johnny Lee 的方式來把 Wii 當成 Multitocuh Device 來用,但是你最多只能支援四個點,在 vgod 的部落格上面有介紹其中一個做法: [...]

  13. MyAvatars 0.2 » MMDays - Mr. Monday - DIY Surface Table (I): NUI & 實作的總類 說:

    [...] 不然你也可以參考 Johnny Lee 的方式來把 Wii 當成多點觸控 (Multitouch) 儀器來用,但是你最多只能支援四個點,在 vgod 的部落格上面有介紹其中一個做法: [...]

  14. MyAvatars 0.2 APPLE 說:

    發現外接視訊攝影機一個問題了
    如果把鏡頭面對自己如VGOD提供的上圖
    就會有左右相反的問題
    真的很麻煩
    OPENCV內建的好像也沒有左右對調的讀取鏡頭
    但是把鏡頭放在後面和人一樣面對螢幕左右才正常
    不知道該如何是好

    - 回覆留言(Reply)

  15. MyAvatars 0.2 APPLE 說:

    OPENCV內建光點追蹤我有點問題
    CAMSHIFT和MEANSHIFT我看手冊(155頁左右)不曉得差別在哪
    各位有沒有一個比較易懂的範例
    就是光點追蹤和產生對應物件
    OPENCV中文HP給的範例不太懂
    http://www.opencv.org.cn/index.php/%E8%AE%BE%E5%AE%9A%E8%B7%9F%E8%B8%AA%E7%9B%AE%E6%A0%87%E5%9B%BE%E7%89%87%E7%9A%84%E6%94%B9%E8%BF%9Bcamshift%E4%BE%8B%E5%AD%90
    說明我還大概了解
    把要追蹤物體圖片存起來在放大區域算直方圖
    但是一些具體(基本的動作是哪些和哪些是額外的功能)
    例子代碼又加了很多我不懂和追蹤光點有什麼關聯的
    希望對這方面有所認識
    謝謝

    - 回覆留言(Reply)

  16. MyAvatars 0.2 vgod 說:

    APPLE:
    iSight也有左右相反的問題, 只是我在文章中沒有提到, 但我的程式裡有處理:p
    OpenCV有堤供翻轉畫面的函式, cvFlip. 把畫面丟進去, flip_mode設成1就可以左右翻轉了

    - 回覆留言(Reply)

  17. MyAvatars 0.2 asa717 說:

    請問可以交我如何使用opencv擷取攝影機的原始圖案嗎

    因為我弄了很久始終不懂.而且我也找不到什麼書

    拜託你了…謝謝

    - 回覆留言(Reply)

  18. MyAvatars 0.2 vgod 說:

    請參考本系列第三篇, 裡面就有說明怎麼擷取攝影機的畫面.

    - 回覆留言(Reply)

  19. MyAvatars 0.2 APPLE 說:

    我可以跟你拿執行檔嗎
    我編譯器VC6編不出來
    G++好像是LINUX在用的
    謝謝
    asm783@yahoo.com.tw

    - 回覆留言(Reply)

  20. MyAvatars 0.2 vgod 說:

    我只有Mac OS X上的執行檔, Windows我也沒有喔…

    - 回覆留言(Reply)

留下您的意見

To comment, click below to log in.

或是留下您的資料: