小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

2013年9月22日 星期日

派特的幸福劇本 Silver Linings Playbook


雖然 MOD 上有不少我平常會選的影片,如鋼鐵人三、闇黑無界:星際爭霸戰,不過我最近選的影片是名魔生死鬥、派特的幸福劇本這類比較小品的東西,原因是不想讓小孩經過旁邊時,看到太多暴力場景(雖然看了才發現,其實這兩部的內容也不太適合小孩看,特別是名魔生死鬥)。
名魔生死鬥及派特的幸福劇本的故事結構還挺類似的,降到谷底的主角,最後又找回春天,老套到不行。所以情節大綱老套根本不是缺點,就像螢幕比例 16:9、棒球比九局、烤雞是拿雞來烤一樣,只是一種套路規則。重點在於如何處理及敘述這樣的故事。
名魔生死鬥不算太差,我不後悔花錢看,也得到一定的娛樂,但就算我沒看過,肯定也不會覺得遺憾。
相對來說,我比較喜歡派特的幸福劇本。嚴格來說,就算錯過這部影片,我大概也不會覺得太遺憾,但我很高興我選了這部電影,特別是這個片名對我的吸引力很低。
整體的調性來說,介於沒問題先生及充氣娃娃之戀中間。整部片的幽默與情感起伏,都很平淡,但是看起來很舒服。


以下有劇透,我覺得以這部影片來說,沒看過之前先不要看內容比較好。


主角剛從精神病院出來,被許多人視為避之惟恐不及的瘋子。主角的確在情緒及精神上有些障礙及困擾,但現實生活中,每個人多多少少都有類似的困擾,憑什麼來判定誰是瘋子而誰不是?這條線由誰決定?我想,每個人都有自己的一把尺,而且多少有點主觀。
結局的給分象徵了這回事情。5.0 以上是沒問題,不到 5.0 是壞的,即使多數人給了你低於 5.0 的分數,但真正重要的是有人給你超過 5.0 的分數。
主角一開始對很多事情感到憤怒與執著,最後發現了許多人都在用自己的方式在幫助與愛他,(雖然有些幫助的方式,看起有點討人厭),但轉念一想,就像主角跟他哥哥說的,我能給你的只有愛了。每個人都不完美,都有能力上的限制,只要能對不完美有所包容,就能接受與欣賞別人的這些舉動了。
這些舉動包含派特的父親找他看球賽、他母親一碰到家庭緊張氣氛就提供點心食物、女主角主動獻身,甚至他哥哥老是要用言語酸他。
主角最後接受了這些愛,而且反過來用自己的方式回饋這些關心他的人。事實上,有時候接受別人的愛與幫助本身就是一種回饋。
另外一個有趣的點,就是提醒我們「有策略的瘋狂」很重要,因為這就是你的特質。
片名的劇本或者 Playbook,就是指戰略、策略。女主角說:"there's always gonna be part of me that's dirty. But I like it"。每個人都有自己瘋狂的一部分,保持正面的態度來看問題,才能找到一線曙光(雖然有點多餘,還是強調一下,不只是正面,還要看問題)。


Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(下)


RPi

我只裝了以及跑了一下 RPi,安裝上面還算容易。儘管官方的版本跑的是 LXDE,感覺跑完整的圖形環境還是太吃力。連帶的,我也比較難利用零碎的時間測試一下原本想測試的 WIFI USB Adapter 和無線鍵盤滑鼠。
我想過利用 RPi 來在某種有限制的環境下做軟體/程式設計教學的可能性,不過主要的困難一個是上述圖形環境太慢的問題,二是要找個適合而且便宜的螢幕才行。

Beaglebone Black

BBB 在價格上不會比 RPi 貴多少,大致上 Arduino 和 RPi 能做的, BBB 也都能做。不過網路資源和社群比 RPi 和 Arduino 要小,不過也還算充足。
不過軟體穩定度還不夠成熟。除了一開始 ssh 的狀況外,完全按照網路上的說明來裝 usb wifi adapter 是無法成功的。我依照經驗,覺得是 kernel 版本的的問題,只是不知道是目前的 image 比文件新還是比文件舊。不過裝軟體沒有越裝越舊的道理,所以就往前追到最新的 image, upgrade 所有套件。不過還是失敗,因為文件上面用的版本在更舊的 image。最新版本的 image 裡面所附的 usb wifi driver 其實不管用,跟不上 kernel 更新的速度。得要另外抓最新的 driver 自己 compile 才行。
所以這裡面表示了兩個問題,一個是文件更新的速度不夠,另外一個是官方提供的 image 不夠成熟穩定。
再來就是我拿類比輸入做了些實驗,發現大多數的文件都只告訴你怎麼讀取一次資料。當然你可以重複一直讀取資料,不過這樣採樣的頻率只有 1~2khz ,遠遠不及硬體 ADC 規格能辦到的 24Mhz。新的 kernel 其實有人修正改寫,已經能連續讀取,我實際照樣操作,繞過一些小問題後,的確能辦到連續讀取。不過還無法控制採樣頻率。
所以雖然相較 Arduino 來說強了很多,但是也複雜很多,對 Linux 不熟或者沒有耐性的話,入門可能會碰到一些困難或限制。

Arduino 和結論

Arduino 前面已經說得很清楚,很適合外行而且自學的初學者。能與他相比的,只有 RPi,不過 RPi 的面向有點不同。
雖然長期以來,就已經有許多電子零件、套件、開發版、入門套件、教程,這一波起來的開源硬體,難道只是個噱頭嗎?
也許類似傳統武功傳授及精武體育會的差異吧。

2013年9月14日 星期六

Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(中)

這大概是這隻 AlphaRex 的遺照了

 

NXT 的心得

除了 Macbook Air 藍牙的問題外,官方軟體大致上沒有問題。Mindstorms 圖形化程式設計相當簡單直覺,很容易上手,至少簡單的程式碼是如此。我沒有也不打算嘗試用它來寫較大的程式碼。
有非常多的語言可以在 NXT 上寫程式,包含 C-like languages,甚至 Python 語言(參考 wikipedia)。
不過我一開始就打算用遠端控制的方式,最多綁一台手機或者 RPi 之類的小電腦上去就行了。
像是 nxt-python 就能讓你在電腦上用 python 寫程式,然後遠端控制 NXT。
我一開始在 mac 上安裝 nxt-python 碰到了一些困難,因為 nxt-python 告訴我找不到裝置,不管是 usb 還是 藍牙。

所以先在 Linux 上試試看(總要先確定 nxt-python 本身能跑)。Linux 完全沒有問題就能很簡單將 nxt-python 安裝成功,然後配合 USB 控制 NXT。
不過我的 Linux 是桌機,連著一條線不太方便,所以還是想辦法追蹤了一下程式碼,成功裝在 Macbook 上。
其實都是一些 python level 的 driver 問題。像是藍牙,因為 nxt-python 支援兩套 pybluez 和 lightblue,但是 lightblue 的支援是自己寫了個 wrapper 用 lightblue 來模擬 pybluez 的 API,所以有些問題。而 Mac 上只支援 lightblue。
這些 python-level 的問題解決之後,就順利能用 USB 及藍牙控制 NXT 了。
有趣的是,官方不支援 macbook 的藍牙,但這種第三方的方式,反而不用 hack 就能支援了。

NXT 本身有機械硬體上的限制,藍牙的反應和速度,較 USB 要差很多。
我一開始的構想,是實作真實版的 Tom Cat(就是那個會學人說話的貓)。不過第一個問題是 NXT 2.0 裡面沒有聲音感測器,而且由於 NXT 採樣頻率的限制,也不可能有類似電腦裡面的錄音功能(雖然還是有人用這樣有限的硬體做出了聲控),所以我決定用遠端的方式處理。
電腦端錄音什麼的沒太大問題,但問題是,怎麼讓將處理過的聲音檔放到 NXT 播放?
答案是你要將想播放的聲音存成一個特別格式的檔案,然後送到 NXT 上。這個格式不是普通的 WAV 或 MP3,而是一種專有格式。有點討厭,但資料都找得到,不難。
但即使是短短 10K 的檔案,透過藍牙傳送到 NXT,也需要令人難耐的延遲(嚴格來說,已經脫離了延遲的等級,應該叫做等待)。
USB 好一點,但仍有讓人能夠察覺的延遲。也許要用修改的 firmware 才能解決這點。

雖然其面寫的看起來像是缺點,但果不是存心自找麻煩,只要乖乖對硬體上的限制認命,其實網路上資源很多。
新的 EV3 在很多方面,也改善了硬體上的限制。

2013年9月6日 星期五

Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(上)

我對電子以及機械認識只有高中物理的程度,而且還已經過了半衰期了,說是門外漢不為過。拜網際網路掀起的開放知識革命之賜,跟風了這一波的 Open hardware 以及 Maker 風潮。買了一些玩具來自學玩玩。
左起: Arduino Uno, Beaglebone Black, Raspberry Pi(Model B)
這一陣子先後買了 Arduino Uno, Beaglebone Black, 以及 Raspberry Pi。早一年多,還買了套 Mindstorms NXT。當時照著做了簡單的機器人,嚇得那時還只會扶著走的小松鼠到處亂爬。前一陣子,拿來自主研發了個畫圖機器人,用小松鼠的玩具畫板來作畫。後來也按圖索驥把人形機器人 Alpha Rex 組了起來,用藍牙配合 macbook air,做成聲控機器人。

Mindstorms 組的畫圖機器人
Arduino 做過
  • 手搖式 LED 視覺暫留顯示器,
  • 紅外線萬能遙控器(因為房間的冷氣晚上會結冰,找人修了幾次都沒修好,就用程式控制,每半小時送風休息一下,參考 Adafruit tutorial, IRremote, 及 IRLib),
  • 樂器(用軟 Soft Potentiometer 控制, buzzer 發聲),
  • PCM 語音 Player(把 Macbook 的語音傳到 arduino 上,用 buzzer 播放,一開始用 loop 硬幹,後來用 interrput
還有其他像 LED Matrix 、溫度感測、亮度感測之類的小實驗。

 
 手搖視覺暫留

BeagleBone Black(簡稱 BBB)弄過用巧虎手偶改裝的機器巧虎

Raspberry Pi(簡稱 RPi) 則...開過機。

以上大概是我目前淺薄的經驗,所以以下的心得就當成初學者的經驗參考。

比較表:


Arduino UnoRPiBBBNXT EV3
USD$ 定價29.953545279.99 (8457)349.99 (31313)
NT$ (市價)320130016001350014999
CPU/Microcontroller16Mhz ATmega328P700 MHz ARM111 GHz ARM Cortex-A848Mhz ARM7/8Mhz ATMega48300Mhz ARM9
Memory32 KB Flash
2 KB SRAM
1 KB EEPROM
512 MB
SD Slot
512 MB DDR3
2GB flash
MicroSD Slot
64 KB RAM
256 KB Flash
64 MB RAM
16 MB Flash
microSD Slot
Video HDMImicroHDMI單色 LCD 100 x 64 單色 LCD 178 x 128
AudioAudio Jack/HDMImicroHDMI內建揚聲器內建揚聲器
USB與 PC 通訊與 PC 通訊
2 USB Port
與 PC 通訊
1 USB Port
與 PC 通訊與 PC 通訊
有 USB Port
網路Ethernet 10/100, RJ45Ethernet 10/100, RJ45
藍牙
低階擴充性14 x GPIO (含 6 x PWM, 2 x serial, 4 x SPI, 1 x LED)
6 x 類比輸入 (10bit)
26 pin 腳位 含:
17 x GPIO (8 x free, 含 1 x PWM)
I²C, SPI, UART

92 腳位 含:
65 x GPIO
(32 x free, 含8 x PWM)
7 x 類比輸入
(12bit)
I²C, SPI, UART
4 個數位/類比感應
3 馬達(可感應位置)
4 個數位/類比感應
4 馬達(可感應位置)
系統無/可刷Linux
(可刷其他)
Linux
(可刷其他)
Lego系統
(可刷其他)
Linux
(可刷?)
台幣價格為露天拍賣查到的大約價格,一些會附額外配件。

 入手:

價格來說,Mindstorms 貴很多,但這個售價包含積木、齒輪、感應器、馬達還有軟體。比方 Mindstorms(NXT 2.0 家用版)裡面有三個能傳回位置的馬達,超音波距離、顏色、碰撞感知器。
積木本身是有一定價值的。不然像我用廢棄免洗筷、橡皮筋、紙盒等等組成機器巧虎骨架,材料費雖然是零,但很脆弱麻煩。
RPi 及 Arduino 應該很容易買到,BBB 則稍微少一點。Mindstorm 則有教育及家用兩種管道,拍賣上也不少。

由於我是外行,所以我一開始先買了 arduino 官方的 starter kit。 露天上的價格約 3600 台幣。

硬體/擴充性:

BBB, RPi 用的都是 Arm 系列的單核心 CPU,跑 Linux, 512M ram。BBB 可能要快一點,但都在同一等級(至少跟 NXT 及 Arduino 比起來)。

RPi 的優點是 HDMI 可以上 1920x1080,有 audio jack,兩個 USB 插槽可以外接週邊。
缺點是沒有 PWM,類比輸入,而且 GPIO 的頭是公端,比較難接,要有杜邦頭才行。
只有攝影機之類的少數專屬擴充設備,但有額外的擴充硬體能讓 RPi 使用 Arduino 的 Shield。

BBB 的有較多的 GPIO 接頭,還有 Analog input pins。
HDMI 沒有 full HD(BBB 2013.9.04 最新的 image 可以有限程度的支援 1920x1080@24,不過至今我沒有讓 BBB 連上 HDMI 過)
沒有獨立的聲音輸出入。
而類比輸入的電壓是 1.8V,這點要小心一點。
雖然沒有 Arduino 那麼多 Shield,但是也有不少專屬的擴充 Cape。

BBB 和 RPi 都很方便能接網路線,因為有 USB,也可以接上 USB 的無線網卡或藍牙卡,但前提是 Linux 能支援。

Arduino 也有一定數量的 GPIO 及 類比輸入,不過處理器速度較慢,而 ADC 的極限大約也只有 10Khz。
優點是社群大、資源及教學都多,各式各樣的擴充 Shield 都有。

Mindstorm 使用專屬的接頭,不過至少前兩代來說,已經有不少文件、教學、以及轉接版,可以皆額外的硬體。
NXT 用藍牙通訊速率以及感應器的採樣速率都不算快。

上手性:
Lego:
本質上是玩具,上手性方面沒話說,小朋友照著做都可以。
軟體方面還好安裝,Win/Mac 都行。不過在新版 OSX 下,與 MacBook Air 藍牙晶(broadcom)片不相容(解法是DYLD_LIBRARY_PATH 舊版的 IOBLUETOOTH)。除此之外,照著圖解,很容易上手。
圖形化的程式設計照著做,很容易就上手,也很有趣。
積木很容易 prototyping 自己的機械設計。
唯一的缺點是,即使接上 USB 線連上電腦,NXT 本身還要裝一大堆乾電池才行(有些版本有附充電電池)。對於手上沒有

Arduino:
下載安裝程式後,將 Arduino 用 USB 連上電腦即可寫程式,不用其他電源。
我一開始買的 arduino starter kit 非常好上手,手冊中很簡潔的把原理以及注意事項講得很清楚。不要說我這種高中物理程度的知識,即使是國中生甚至國小生應該都能上手,而且能學到東西(不過手冊是英文的)。
對我來說,有 kit 的好處是至少東西齊全。像我們這種門外漢,問題就是零件要從何買起都搞不清楚。一旦有個基本的電路出來,如果只是差個幾樣關鍵零件,就知道要怎麼買了。
(所以我又買了 BBB 和其他零件來玩)
標準的程式語言差不多就是 C,IDE 也堪用,能把正確的函式名稱標出顏色這點,對於初學者很有幫助。

BBB:
插上電腦的 USB 就能 SSH 進去或用 Web 介面了(不用其他電源線, ip 為 192.168.7.2)。至少,我的 ubuntu 是如此。從插入電源到真正能連進去感覺上約 30 秒。
Win 或者 Mac 則可能要裝驅動程式(如果你還沒有的話),但 BBB 的優點是,插上電腦號,會被電腦當成 USB 隨身碟,而隨身碟裡面就有驅動程式了!
所以假如剛好停電,所有網路都不通了,只要你有台筆電,你還是可以接上 BBB 馬上開始入門。
Web 介面有軟硬體介紹文件,有 Cloud9 IDE,還有範例程式碼和硬體電路圖。
以上是官方建議的開始方式。應該也可以如 RPi 一樣接上電源、USB 鍵盤、滑鼠,HDMI 後單獨開機使用。
(不過沒有附電源線、microHDMI 線,又只有一個 USB port)
不過我一開始用 Macbook 接的時候,碰到了 ssh 進不去的狀況,花了一點時間才解決。
官方文件裡面介紹的程式語言是 javascript 配合 bonescript lib 和 cloud9。不過反正是 linux, 用 C, C++, python, livescript 也很方便,而且也稱不上非官方。

RPi:
由於我有一台電腦本來就是接上 HDMI 電視,RJ45,USB 鍵盤及滑鼠的,所以將作業系統放入 SD 卡然後插入 RPi,接上電源,然後就能直接用 RPi 取代了那台電腦。
不過要注意, USB 或 5v Powersupply,SD 卡,還有各接線都要自備。雖然這些線材都很常見,有很大的可能性會跟我一樣,剛好都有。
安裝過程使用英文,很順利。安裝的是 Raspbian 系統,桌面上有一些 python 遊戲,還有圖形程式語言 Scratch。
Scratch 我完了一下,搞不懂怎麼跑 script。
整體執行速度感覺有點緩慢。

(待續)