2017年11月29日 星期三

IN117 Team Song


詞:Pacess, Johnson, Mandy

想起那天一同前行 全力一拼衝極限
意識到我唯有去愛 才令世上添新機
交出我心方能完全 朝著我路總未倦
理想方向全力去拼 終可會得到

願為理想 全力去幹不怨命
若遇挫時 仍然毫無懼與驚
若沒跌到 其實也已肯定
若犯錯時 容我 Break Through 再起
能時常懷自信 令你令我添力量
有勇氣創高峰 跨過千百山嶺
讓昨日無數夢 能一一的得到
我發亮尤如耀晚星

想起那天一同前行 全力一拼衝極限
意識到我唯有去愛 才令世上添新機
交出我心方能完全 朝著我路總未倦
理想方向全力去拼 終可會得到

為著理想 誰亦要去起革命
若遇挫時 仍然毫無懼與驚
為著理想 寒夜裡也不間斷
若犯錯時 容我 Let Go 說清
能時常懷自信 令你令我添力量
有勇氣創高峰 跨過千百山嶺
讓昨日無數夢 能一一的得到
我發亮尤如耀晚星

想起那天一同前行 全力一拼衝極限
意識到我唯有去愛 才令世上添新機
交出我心方能完全 朝著我路總未倦
理想方向全力去拼 終可會得到
<Repeat Twice>

停望障礙 忘記過去 終可會衝線

2017年11月26日 星期日

相信自己,隨心出發


應承了同事在十一月內完成某個功能,這兩天努力趕工,但還是徒勞。進度行慢,很多部份都不似預期,很有壓力、很想放棄。承諾了就要做到,但思想混亂,程式更易出錯。怎麼好?畫了一張畫鼓勵自己:「相信自己,隨心出發」。

2017年11月23日 星期四

支持你


這兩天悶悶不樂,有點情緒,想抓點抒發的渠道,於是用畫作來達成。在午飯時間隨手畫了四個公仔,我最喜歡這張。神態鬆容自然,好像有個少女在背後默默支持自己一樣。公仔的造型是一位我很著緊的同事,同時也是為她而繪,希望能支持到她的心靈。

2017年11月19日 星期日

IN117


IN117,誠信網絡 Integrity Network 第 117 班。轉眼間已經畢業了十八個年頭。今日再次相聚,大家繼續成為領袖,生活也有很多轉變。Buddy 的孩子,由當初的小朋友變得婷婷玉立、有的 Buddy 成家立室、有的將近退休、有的已經成為導師。IN117 出產的導師應該是歷屆 IN 之冠。

很懷念當日的衝刺,也懷念自己在 IN 期間的創作。人生第一首 Team Song 歌詞、第一個團體標誌設計、第一輯海報設計、第一套 Team 衫設計。當時我更準備多一套作為紀念。再一次多謝各位 Buddy 的支持。沒有你們,沒有我今日的成就。I am proud of IN117.

2017年11月13日 星期一

在 AR Studio 用腳本播放音效


舊同事在 Facebook 求救,想知道怎樣在 AR Studio 內用腳本播放音效。這個我沒有試過,也想學習一下,於是查看 Facebook 的說明文件。翻來找去,還是不清楚要如何播放音效。示範程式也沒有相關的內容。教學影片又只叫人看文檔。在沒有任何資源下,只好不斷嘗試。AudioSource 沒有屬性及函數,所以不是直接呼叫。而它是基於 Scene 的,所以要從 Scene 著手。找到原來要用 Audio.play(Scene.root.child('audiosource0')); 就會成功。

2017年11月10日 星期五

Robi 技術研究・五


要開發編輯器,得先讓程式讀懂 RM4 檔案內容,變成一個個物件,方便重新組合及排列。

於是,我著手解析 RM4 內的結構,自行編寫匯入程式;可是,這不是件容易的工作,有很多不同的處理。像是如 medit 般有開始的標籤,也有完結的標籤;像 return 是一句都尾;像 block 是有很多不同的參數;要準確讀取,得下很多功夫。於是我在想,PHP 應該有現成的功能去處理自訂 XML,結果找到 xml_parse_into_struct()。

我把 RM4 內容直接拋給 xml_parse_into_struct(),結果只有第一個 medit 發其內在句子能解讀成功。估計是因為程序把 XML 內第一個標籤當為根,當同一個標籤完結時,程序便會結束。於是的為 RM4 內容外圍包一層 <robi></robi>,結果能解讀出更多內容。不過,還算不上是成功;因為結果中出現很多不知明的部份,而程序也只能解讀到包含日文字參數為止;即是上圖中的「立ち状態?」。研究過後,那些不知明的部份是用 \r\n 引發,於是利用 str_replace() 把它們清除。至於日文字參數方面,則用 mb_convert_encoding() 把原本為 Shift-JIS 的日文編碼轉換為 UTF-8 無國籍碼,問題便得到解決。可是,還是遇到新的問題,程序還未能完整解讀 RM4 內容。追查之下,發現有參數的數值內容包含 << 及 >>,導致 XML 解讀失敗。今次我同樣用 str_replace() 把它們清除。最後,能成功解讀了。

2017年11月9日 星期四

先相信後成真


最近聽到同事的一個回應是「人地做到,我都做到」。不約而同,前拍檔也有跟我這麼說。回顧一下,我是有說這番話,但次數應該不多;為何大家都有相同的感覺?當然,我心底裡一直有這股信念。

兒童時代,不可上街,只能留在家中拼砌樂高積木,砌得膩了,便嘗試模仿、嘗試修改、嘗試創造。建立了只要肯研究,別人能做的事情,我也能做的信念。複製是我的強項,創造也不弱。很多時候,只要有參考,便能造出差不多的東西。學習多了、技術累積了,造出來的東西更加專業。人就應該要不斷學習、不斷成長、不斷進步。突破了界限後,事情變得一般,可以再找新挑戰。

有時,不要小看自己,有信念便能突破難關。我跟一位很夾的同事都有著相同的信念:「先相信後成真」。

2017年11月8日 星期三

Robi 技術研究・四


Robi 的資源及程式都存放在 SD 卡內。香港版內置的 SD 卡有 4GB 容量,但程式連內容則只有約 612MB。當中仍然保留了很多日語音效,相信是沒有使用。單單聆聽日語語音檔,回答「係」這個音,起碼有十款不同的錄音,有長有短、有神氣的、有淘氣的、有消沉的。意味著原來日本版有很多細緻的地方,在香港版都刪除掉,變得很基本。既聲音檔案然沒有用,又沒有拿走檔案;雖然騰出的空間也沒有用處,但感覺十分馬虎。


朋友問 Robi 內置了多少首歌。查看 /voice/Music 目錄,發現有五首歌。當中只有 osouji.wav 及 timer.wav 是廣東話,其他都是日文歌。除此之外,日本版 SD 卡分為三個版本:Robi Heart, Robi Heart 2, Robi Heart 2DX。最後一個版本於 2016 年中推出,賣 9800yen 再加稅,裡面共有六首歌及多了幾支舞。不過,香港只有第一代版本。

朋友又問:「可否自行加入歌曲?」。原本 Robi 沒有這個設計,不過有日本用家把 Robi 的 XML 程式修改,使得能自行加入;但由於沒能加入更多聲控指令,歌曲一是取代原本的,又或者是修改程式,變成隨機出現。我相信還有其他可行性,正在研究編寫網頁版修改程式;畢竟目前只有 Windows 版本,我全家是 Mac 機,要用模擬器才能使用。以下網頁有詳細的 XML 編碼解說:

週刊ロビ 増刊71号:ロビのココロを探る1
週刊ロビ 増刊72号:ロビのココロを探る2
週刊ロビ 増刊73号:ロビのココロを探る3
週刊ロビ 増刊74号:ロビのココロを探る4

2017年11月7日 星期二

把圖片設定為 360 格式

同事為我慶祝生日,我們用了一台 360 影相機拍照。照片經過 WhatsApp 傳送後變成普通相片,上傳到 Facebook 也無法變回 360 照片。這是因為相片中的 360 Metadata 消失了。解決方法是到 https://www.sno.phy.queensu.ca/~phil/exiftool/index.html 下載 ExifTool;它支援 Mac, Windows, Linux。用它補回 Metadata,指令如下:

exiftool -ProjectionType="equirectangular" birthday.jpeg

2017年11月6日 星期一

Robi 技術研究・三


要把 Robi 改造成遙控版本,需要東芝 FlashAir W-03 或 W-04。在觀塘樓上舖找到了東芝 FlashAir W-04 版本,售價為 HK$268。與觀塘廣場的 W-03 32GB 版本相差 HK$18,但無線傳送速度由 10.8Mbps 提升到 31.4Mbps、支援 Eyefi Connected。花這 HK$18 很值得。



把 FlashAir 插進 MacBook Pro,看到初設的檔案結構是:


跟 W-03 的檔案結構相比,少了 /GUPIXINF 目錄。我先把 /SD_WLAN/CONFIG 拷貝一份為 CONFIG_ORIGINAL 以作不時之需。然後在 iPhone 上安裝 FlashAir 應用程式。連上 flashair_xxxxxxxx 的 WiFi 後,在應用程式內進行設定,如:修改 SSID 名稱及 Mastercode。


起初設定 Master Code 時出現錯誤,後來發現 Code 的長度一定要為 12 字符:


回到 FlashAir 的 /SD_WLAN 目錄,比較一下原廠設置,多了數行。而我們需要手動加入 WEBDAV=2 及 UPLOAD=1:

這樣便能遙距對 FlashAir 進行讀寫動作。

最後,我在 iPhone 上看一看連線內容。IP 地址是 192.168.0.x:

2017年11月5日 星期日

Robi 技術研究・二


其中一項改造,是把原本聲控的 Robi 改為遙控。目前最方便的做法是使用支援 WEBDAV 的 Toshiba FlashAir W-03 或 W-04。今日在觀塘廣場見到 W-03 版本,16GB 要 HK$208,32GB 要 HK$250。另外,在網上找到香港也有 W-04 版本出售,32GB 約 HK$268。

只要為 Robi 加入 MicroSD 轉 SD 卡接線,將 Robi Heart SD 卡內的檔案拷到 FlashAir,配合修改過的程式檔及 HTML 控制介面,插入 FlashAir 便能以電腦或手機控制。我在收集有關資料及購買所需零件,成功後會分享出來。至於 FlashAir 相關資料要參考日文版網頁 https://flashair-developers.com/ja/discover/overview/w04/,因為最新的資料在日文版,其次是英文版。這張 FlashAir 除了是一張帶有連線能力的 SD 卡外,還支援 Lua 編程及 GPIO 控制,對於改造 Robi 來說有更大的想像空間。

2017年11月4日 星期六

Robi 技術研究


砌好了 Robi,試了幾個動作指令:Balance game、sit up、唱歌、跳舞...等,同事看得很開心,甚至覺得能做出平衡動作是很驚訝的事情;而我,則想 Robi 做得更多;於是著手研究它的構造。

網上有很多關於 Robi 的資料。我是先讀 Robi 技能強化,然後再讀 うちのロビ&ロボホンROBOMICコンピュータ制御システム ロビ/ロボゼロ編。上圖是 Robi 附帶的日本版 SD 卡內容。香港版及台灣版在動作上有不同,語音也不同。原來 Robi 在啟動時,會載入 STARTUP.XML:

主要是設定 Robi 名稱「deago4」,那段 0x64,0x65,0x61,0x67,0x6f,0x34 就是「deago4」的 ASCII 碼。然後設定音量、伺服機的參數及 LED 顏色。如要修改音量,可把 <mem_w size="2" adr="0x0046">0x0000</mem_w> 中的 0x0000 最大,改為 0x0001 大、0x0002 中、0x0003 小。在 STARTUP.XML 最後一句是跳到「main5_InitFlag確認補完無し_シーン1固定0415_test2.RM4」動作設定檔。

2017年11月2日 星期四

香港粵語版 Robi 初起動問題


花了接近兩個星期的拼砌,終於完成了 Robi 組合工作,可以首次正式啟動。


啟動後是設定程序,用以設定 Robi 的性格。可是無論我怎樣回答「係」還是「唔係」,Robi 都沒有反應。以為是咪高峰裝得不好,於是拆開頭部及身體,重新接合電線;可是結果一樣。後來在 YouTube 發現台灣也有相同遭遇的用家,原來回答「係」,需要接著說「Robi」。我太心急沒有看清楚說明書。這樣回答後,Robi 也成功設定好,可以直接聲音操作。