2009/3/26

who I am

當具備多種不同專長能力後, 很多事情到後來是對生活態度跟生活方式的選擇. 每個選擇, 會有現實的理由, 當然也有抽象的原因. 很多時候, 人的一部分自我都活在別人的猜測跟想像中, 真實的那個, 本人可能都不見得認的清吧!

所有抽象具像化, 唯一的結果就是失真. 我很想解釋, 但是唯一的方式就是用失真的範例, 透過破碎的共同認知, 傳達一個注定模糊無意義的訊息.

我只知道, 我愛音樂, 也愛電腦及各式科技帶來的可能性. 每個人在某個時間點, 都會遇到 Neo pick pill 的問題. And, you never know what the choice means...

Life is still moving forward...

2009/3/25

專注力 - Ichiro

昨天很難得的, 有閑也有心情看棒球經典賽. 打開電視的時候, 日本還以 1 分領先, 後來一連串拉鋸的過程很精采, 但是我真正有興趣的一瞬, 是 ichiro 面對 10 局上, 面對命運之神帶著一點挑臖意味, 關鍵打席的表現.

我對於 Ichiro 的印象就是 baseball monk, 就是把棒球運動當成是一種修行, 包括練習的態度, 對球具的尊重...等. 而修行的成果, 可以從一路以來, 在比賽中的穩定表現看出來.

10 局上, Ichiro 站上運命的位置後, 一直很注意他的眼神跟動作, 我很好奇, 在這麼關鍵時間, 關鍵位置, 關鍵表現. 到底是: 苦修的專注力勝利? 還是球是圓的, 一切都是運氣?

就在 Ichiro 跟投手展開一連串的纏鬥, 連挖地瓜的球都擊成界外後, 我突然覺得, Ichiro 的穩定表現不是僅是個人專注力, 專注力更進一步的影響了整個氣氛. 運氣變成專注力有機會表現的舞台.

最後, 很 Ichiro 的安打, 結束了兩隊的糾纏. 運氣也許讓他站上了決定勝敗的關鍵位置. 但我想, 在那一瞬間, 我只能從 Ichiro 眼中看到專注力, 沒有運氣.

It's a great game - thanks to all players in this game!!!

2009/3/13

FreeRunner 一堆使用上的小 trick


Neng-Yu Tu (Tony Tu)

一些使用上的小 trick, 陸續增加中.

* 抓圖

在 FreeRunner 上抓圖可以很簡單, 或是很複雜 ;) 最簡單也最原始的方式就是直接:

#./cat /dev/fb0 > file.raw

當然, 你也可以把 raw 的圖, cat 回螢幕上.

#./cat file.raw > /dev/fb0

作假的程式或預覽效果還蠻方便的 :-) Android 的 fb0 的路徑不太一樣, 在 screen/display 下.

接著透過 fb2png 將 raw 的圖檔變成標準 png 檔

#./fb2png file.raw file_not_raw.png 9 480 640 16

fb2png Binary 可以從以下網址取得:
http://t0ny.net/openmoko/samples/bin/fb2png/

* 使用 VM 上的 Linux 連結 FR

拜台灣 Windows 盛行之賜, 很多 Developer 都是透過 VM (virtual box/vmware/virtual pc/others) 使用 Linux 系統. 但是透過這種方式連接 FR 時, 需要注意連接 FR 時, "記得" 視窗的 focus 要在 VM 上. 這樣 VM 才抓的到新加入的 device (FR).

透過 VM 做 ssh 跟 dfu 其實都是 ok 的, 但是 dfu 在 VM 下有時速度會很慢, 或是 dfu 到一半中斷. 同時, 請記得 ssh 連線時要把 suspend (休眠) 關掉, 不然 ssh 連線會一直斷.

* Windows 直接連 FR
Windows 是可以直接 ssh 進 FR 的, 不過你要安裝 Windows RNDIS 驅動程式:
http://t0ny.net/openmoko/driver/neo_rndis/ 然後透過 putty 或是 tunnelier (http://www.bitvise.com/tunnelier), 做 ssh 或 scp.

基本上, 你可以把 FR 是一台小的 linux 電腦, 可以透過 USB/Wi-Fi/BT 甚至 GPRS 做 ssh/scp 的工作.

2009/3/11

使用 Freerunner 的三軸動作感應器 (3 axis accelerometer) - motion sensor


Neng-Yu Tu (Tony Tu)

自從任天堂的 Wii 跟蘋果的 iPhone 出現以後, 動作感應器 (or 微機電 MEMS 系統) 感覺一下子變成顯學. 這幾年也看到越來越多的應用出現在 iPhone 或其他的 Device 上, 最常見的還是拿來當樂器或是其他控制器使用. 例如:




不過這個 air guitar 跟 Accelerometer 可能沒什麼直接關係 ;) 只是提神用!!!

Freerunner 有 2 個 ST LIS320DL 的三軸動作感應器, 一個位在機器的左上方靠近 Aux 鍵的位置, 一個在主板的右下方靠近麥克風的位置. 一般的手機只需用到 1 顆, 就可以偵測目前手機的機身狀態 (朝哪個方向傾斜/加速度). ST LIS320DL 規格是偵測區間可調 +- 2g 或 +-8g, 丟資料的頻率可設成 100 Hz 或 400 Hz. 它還有可以設定的 interrupt 腳位. 可以在特定狀況下(自由落體, 靜止突然移動), 才發出 interrupt. 這兩個 motion sensor 一個有接到可把 CPU 從 suspend 喚醒的腳位上. 詳細的 datasheet 可參考下面的網址: http://www.st.com/stonline/products/literature/ds/12726/lis302dl.htm

這兩個三軸動作感應器可以同時使用. 但是在大部分狀況下, 1 顆就已經足夠. 2 顆 motion sensor 組合起來是可以做比較複雜跟精準動作偵測 (偵測角加速度, 而不是只是單純 3 軸), 或是進一步作 gyro sensor, 生物動作特徵辨認等 or something you could dream of ;-)

簡單來說, 有一點像是原先的 Wii Remote + MotionPlus





* 設定 Accelerometer

設定 Accelerometer 可以透過 /sys 下面完成, 不過因為 kernel 版本關係, 2.6.28 版之後, 相關的 sysfs 設定會出現在

/sys/class/i2c-adapter/i2c-0/0-0073/lis302dl.{12}

root@om-gta02:/sys/devices/platform/lis302dl.1# ls
driver duration modalias sample_rate threshold wakeup
dump full_scale power subsystem uevent

可以設定包括 threshold (觸發臨界值), sample (取樣頻率) 以及其他的 Accelerometer 參數. 可以直接透過 cat threshold 或是 echo 72 > threshold 的方式改變設定數值. 同時, 設定數值有時並不是以 1 為基數, 以 threshold 來說, 就是 18 的倍數.

* 讀取 Accelerometer 數值

Openmoko wiki 一樣有詳細如何讀取 motion sensor 資料的方法, 請參考:
http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval

最簡單的存取方式 motion sensor 方式, 就是直接 cat Accelerometer 的 event 輸出.

root@om-gta02:/# cat /dev/input/event2
root@om-gta02:/# cat /dev/input/event3

event2 及 event3 分別是第 1 顆及第 2 顆 Accelerometer 的資料輸出.

Accelerometer 輸出的資料格式如下:

root@om-gta02:/# cat /dev/input/event3 hexdump
0000000 3fec 3896 ebe5 0000 0002 0000 ffb8 ffff
0000010 3fec 3896 ebf2 0000 0002 0001 0036 0000
0000020 3fec 3896 ebf7 0000 0002 0002 0414 0000
0000030 3fec 3896 ebfd 0000 0000 0000 0000 0000
0000040 3fec 3896 ee80 0000 0002 0000 ffb8 ffff
0000050 3fec 3896 eea9 0000 0002 0001 0036 0000
0000060 3fec 3896 eeaf 0000 0002 0002 0132 0000
0000070 3fec 3896 eeb5 0000 0000 0000 0000 0000

以第一筆資料來說:

3fec 3896 ebe5 0000 是時間
0000 0002 是事件的種類
接下來的 0000 是 X 軸, 而 0001, 0002 分別是 Y 軸及 Z 軸
ffb8 ffff 是 Accelerometer 的數值.

你可以參考 http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval 的內容, 用 perl/python, 或是 C 來讀取 accelerometer 數值. Community 的 rui 也 donate 了一個程式 rotate, 可以偵測手機機身的狀態. Source code 可以從這取得:

http://t0ny.net/openmoko/samples/src/rotate/ 執行結果如下.

root@om-gta02:~# ./test
Types: a(2), b(2), c(2)
Codes: a(0), b(1), c(2)
Value: a(-792), b(-252), c(522)
left
Types: a(2), b(2), c(2)
Codes: a(0), b(1), c(2)
Value: a(-810), b(-252), c(558)
left
Types: a(2), b(2), c(2)
Codes: a(0), b(1), c(2)
Value: a(-810), b(-270), c(540)
left
Types: a(2), b(2), c(2)
Codes: a(0), b(1), c(2)
Value: a(-774), b(-270), c(504)
left
Types: a(2), b(2), c(2)
Codes: a(0), b(1), c(2)
Value: a(-792), b(-270), c(522)
left

* 利用 Accelerometer 作動作捕捉

基本上像 Wii Sport 之類的遊戲, 都是透過比較複雜的動作捕捉方式來完成, 並不是單純的讀某一個時間的 Accelerometer 數值達成. 動作捕捉並不需要 2 顆 Accelerometer (模擬 gryo sensor 才需要), 但是需要比較/紀錄不同 Accelerometer 資料以及作加速度計算等. 在 GSoC (Google Summer of Code) 上, 有一個透過 FreeRunner 來做動作捕捉的範例.





Source code 及可安裝的 ipk 在此, 還意外的看到了 bb 檔 ;)
http://code.google.com/p/accelges/source/browse/#svn/trunk

論文位址如下:
http://dev.borza.ro/demo/Motion-based%20Gesture%20Recognition%20with%20an%20Accelerometer/Paper.pdf
另一個有關把 motion sensor 專案當成遙控器的專案是 ReMoko, 程式分為 target 端及 server 端:
Source 在:

Google Developer 也有官方的 sample

http://developer.android.com/resources/samples/AccelerometerPlay/index.html

呵, 突然發覺還是有 tube 有真相.

2009/3/10

FreeRunner 的 Koolu Android 及 Android cupcake source 位置及 image 安裝


Neng-Yu Tu (Tony Tu)

Cupcake 是 Android 在 release 1.0 之後, 開發人員根據 Android 的 roadmap 及問題, 提供的 update 版本 (接下來的 codename 根據 wiki 好像是甜甜圈). 這個版本基本上是以一個 development branch 的方式進行, 所提供的 update 及 bugfix 最終會 merge 到下一個 Android 的 release 版本.
cupcake branch 的詳細內容 http://source.android.com/roadmap/cupcake
目前 android on Freerunner 已經 host 在 google code 上 (http://code.google.com/p/android-on-freerunner/), 完整 freerunner android cupcake source 放在 http://gitorious.org/android-on-freerunner 的 git 上.

Koolu 是 Openmoko 在北美地區的經銷商, 專注在 Android 在 FreeRunner 上的應用. 從某個角度來說, Koolu 是 FreeRunner 的 Android distro maintainer. 所以 Koolu 的 Android image 會每個月更新. Koolu Android maintainer 是 brian code 及 maddog, 相關的討論可以到 koolu 的 forum 找到:

http://forum.koolu.org/

Koolu Android Beta 4 開始, 提供了更簡單的 FreeRuuner 安裝方式. 同時, Beta4 及 cupcake beta1 最大的改變是取消了原來 FR Android 需要 SD 卡的限制. 同時, 安裝程序簡單許多. 安裝步驟如下:

* 到 http://koolu.com/~marcelo/ , http://code.google.com/p/android-on-freerunner/downloads/listhttp://t0ny.net/openmoko/images/android/ 下載 Beta4 或 cupcake 的壓縮檔.
* 將檔案解壓縮後, 直接 copy 到 fat 格式的 SD 卡 (不需要分割)
* 將 Copy 完的 SD 卡放入 FR, 按下 Aux 鍵後按 Power 鍵開機, 用 Aux 鍵選 Boot From SD card
* 安裝程式會自動完成安裝動作, 重新開機後即可進入 Android. 同時 ... SD 卡可移除!!!
另外, debug 的連現在 beta4/rc1 有一些改變, 以前 USB connection 都是 hook 在 usb0, Koolu beta4/rc1 開始 hook 在 eth3 (or ethx) 上.
原先的 debug 連線命令:
#ifconfig usb0 192.168.0.200 netmask 255.255.255.0
#ADBHOST 192.168.0.202 ./adb shell
新的 debug 連線命令:
#ifconfig eth3 192.168.0.200 netmask 255.255.255.0
#ADBHOST 192.168.0.202 ./adb shell
ADB tools 是 SeanMcNeil 提供的 tool, 可以從 http://t0ny.net/openmoko/util/target/ 下載 adb binary
 
Creative Commons License
著作 係採用創用 CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款授權.