便攜式冷氣機計劃
這篇文章主要記錄由 2014 年開始到 2018 年的便攜式冷氣機(空調)開發計劃的所有版本及失敗原因。由於此計劃已經完成,現在在此作開源處理。 授權:姓名標示-非商業性-禁止改作 3.0 香港 (CC BY-NC-ND 3.0 HK) Short for PA#, The version number is represented by #. Aim This project aims to design and create the world's first Thermoelectric Plate based portable air cooling devices with a target of handheld and at least 1 hour running time. Budget Limit The budget has been limited to less than 1000HKD per prototype. And the manufacturing price of raw material (excluding shipping) should be lower than 100HKD. The design of PA1 to PA5 did not have any prototype as there are still design problems inside the sketch that made the sketch not possible to manufacture. Reference design sketches are included as reference. PA01 PA02 PA03 PA04 PA04 rev2 PA05 PA06The first success prototype of the Portable Air Conditioner Project. System wiringPA07 The PA07 was similar to PA06 but with more solid casing with cardboard instead of paper cards. Cooling UnitPA08The PA08 was the first prototype for self contained Portable Air Conditioner with standard forward Peltier Design. Internal StructurePA09The portable air conditioner version 9 was the first version that…
Open Vtuber Studio 之構想
https://www.youtube.com/watch?v=REgILR5SThs 相信不少人已經知道甚麼是 Vtuber 或 Virtual Youtuber,這裡就不詳細介紹了。在這話題上應該有不少人對這新興的行業有不少的評論或見解,然而在這篇文章裡,我們先不要談到底這是不是一種好的文化或是對市場有甚麼影響,我要討論的主要是技術上的問題和系統構思。 Vtuber 跟 VR Gaming 有甚麼關系? Vtuber 的運作原理一般都可以簡單分成三個部分 動作輸入(如 HTC Vive 的 3D 追蹤技術,使用 Webcam 的神經網絡身體姿勢捕捉等)動作處理(就是把輸入的數據轉成模型可讀取的姿態信息,一般會碰及到 3D Matrix Transformation / Quaternion rotation 等等複雜的數學;通常使用 Unity 3D 作為引擎配合 UniVRM 插件使用)動作輸出 (把捕捉到的動作顯示到 3D模型上,一般使用 VRM / MMD 模型) 然後你有留意到嗎? 這根本就是跟 VR 遊戲所需要的裝備差不多啊。所以說,Vtuber 技術其實跟 VR 遊戲開發是沒甚麼差別的,就只是省卻了遊戲故事線開發的部分。 所以現在外面的 Vtuber 拍攝軟件有甚麼問題? 先從要付錢的說起好了。問題就是:要付錢(這應該沒甚麼好爭議的吧?我舉一個例子,Live2D + Facerig 系統,你需要先購買 Live2D,設計好自己的人物再購買 Facerig 系統作臉部追蹤,如果你只是想試著玩玩看的話也要先花費好一筆前置資金。 再看看開源的方案,現在市場上的不是只有很低的完成度就是需要好幾套不同的系統 / SDK 使用膠水把它們黏起來做成的。在真正開到 Rendering UI 之前你就要先經過好幾十處的技術難關。再者更不用說 Live2D 或 Unity 商業用的收費跟限制之類的了。 https://www.youtube.com/watch?v=Xo774VpWASE 提及的開源 Vtuber 動作捕捉方案 https://github.com/kwea123/OpenVTuberProject 提及的 Open Vtuber Project 方案 所以,我想開發一套不依賴 Unity + VR Headset 的方案 Open Vtuber Studio 裡面有個技術上的關鍵點是我想測試看看的,包括有最新的人型 3D 模型格式 VRM ,臉部辨識 API 跟 poseNet 身體姿態捕捉用的 Neural Network。而系統的完成條件列出來大約這樣: 不使用 Unity 及 Live2D 等非開源 / 要付費的商用渲染方案完整整合,不需要同時開幾個程式然後中間用膠水語言連接起來無需安裝,盡量做到 Portable + Lightweight不需要特別設計或指定品牌之電腦硬體,就算需要硬體也必須是輕易能在市場上買到,而且價錢不貴的 結論 就這個條件之下,整個系統架構就明確起來了。首先我們需要使用 Webcam 輸入影像,使用 HTML5 的 canvas 把影像複制,給予 face-api.js 跟 poseNet (Tensorflow.js)處理,最後結合 Three.js + ThreeVRM 3D渲染 工具來做到類似 Vtuber 動作捕捉的技術。 大致系統原理圖 那既然系統設計出來了,那就可以開始進行實驗了。之後就請等待下一篇與編程相關的文章更新吧!
ArOZ Online 的 WebSocket 伺服器與 JWT 登入方法
ArOZ Online 一向也被人吐槽說沒有 Database 只能用 PHP 怎樣做即時通訊的 Web APP 呢?對,這真是一個好問題。 現在處理即時資料的方法 現在的 Web Desktop 模式即時更新方式 沒錯,這可能比你想像中的還要簡單,現在在 ArOZ Online 上處理即時資料的方法就是每隔一段時間做一次 AJAX Request 問伺服器的 php script 要一次資料。簡單來說就是每一個需要即時資料的模塊裡都會出現一段類似這樣的代碼: setInterval(function(){ $.ajax({url: url, success: function(data){ doSomething(data); }}); },1000); 這有甚麼不好嗎? 不好,這十分不好。首先, ArOZ Online 系統並沒有標準的 Database,所以 SQL 甚麼的都不能用。而且大部分模組開發者也不會這麼有空把 SQLite 塞進去,不少模塊也是直接拿 JSON 或 CSV 檔來儲存資料,就結果而言這種存取方法只會讓系統被 IO 速度卡住,想快也快不了。 所以 AOBWS 就出現了 甚麼是 aobws? aobws 就是 ArOZ Online 基礎系統的 WebSocket 伺服器。這系統有以下幾個特點: 支援 ArOZ Cluster 的 JWT 登入模式類 Minecraft 式指令模式以 Channel 分隔的 Broadcast 模式支援單用家多視窗登入 要用它的話跟一般 WebSocket 的使用方法很接近,簡單來說就是使用 ao_module 的 ws 模塊進行 init() 即可。以下是一個簡單的例子 aobws 網頁端啟動 function 例子 完整例子: https://github.com/aroz-online/aobws_demo/blob/master/index.php 那作為開發者 JWT 的部分我要怎樣處理? 這系統的好處就是你可以不用處理,只要填入 token = "" 即可自動彈出視窗讓使用者輸入 JWT token 值,是不是滿方便呢? JWT 請求授權界面 就是這樣,你的模組就能很方便的使用 aobws 作即時通訊了。 備注:如果我想用 aobws 作其他用途怎辦? 可以喔,你也可以在同一個 aob 主系統下使用多個 aobws 作其他用途。你可以在 SystemAOB/system/aobws 下找到啟動檔然後自行更改啟動設定。(主要是更改啟動的 port 跟 登入授權檢查的 URL)。以下為 aobws 的啟動參數: Usage of aobws.exe: -cert string Certification for TLS encription (default "server.crt") -endpt string ShadowJWT Validation Endpoint (default "http://localhost/AOB/SystemAOB/system/jwt/validate.php") -key string Server key for TLS encription (default "server.key") -port string HTTP service address (default "8000") -tls Enable TLS support on websocket (aka wss:// instead of ws://). Reqire -cert and -key
在 Raspberry Pi 上使用 PHP 啟動 Miniconda 環境並運行 Tensorflow + keras 模型的方法
在做 FYP 時難得一次預上連在 StackOverflow 也找不到問題,結果被我試出來了。 問:如何在 Debian Linux 上用 www-data 權限運行屬於 pi 使用者的 miniconda 環境並運行 Tensorflow 答:shell_exec 以下指令: "echo raspberry | /bin/su -s /bin/bash -c './runmodel.sh {其他需要傳進去的參數} ' pi" (解釋: 第一個 echo raspberry 是帳戶密碼,後面的 pi 是帳戶名稱。) 然後在你要執行的 bash 檔裡面加上: cd /home/pi/miniconda3/bin/ source activate {環境名稱} (我想找不到的原因應該是沒有人拿 Raspberry Pi 跑神經網絡吧?🤔🤔🤔)