imuslab
托比的實驗記錄部落格
便攜式冷氣機計劃
這篇文章主要記錄由 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 跑神經網絡吧?🤔🤔🤔)
山寨 NodeMCU 上傳設定
最近因為準備開發 Home Dynamic 家居自動化系統,所以入手了一塊 ESP8266 的 NodeMCU 0.9。實際上就是中國的山寨版而已。 http://arduino.esp8266.com/stable/package_esp8266com_index.json 首先把上面的連接加進去 Board Manager,然在再選擇 Install ESP8266。之後就跟一般的新模塊 / 開發版設定沒甚麼分別,但是得留意的是在這塊中國制的 Node MCU 上面,其上傳設定是這樣的: 因為網上面並沒有甚麼教學,只好自己全部試一次好了。 這篇東西先留著,遲點有需要再用作參考吧。 更新: NodeMCU 版本應該是 1.0 才對(如圖),不然在 9600 bandwidth 的時候會讀取出亂碼
ArOZ Online BETA 版開發中
ArOZ Online Alpha 版早在 2016 年就完成並運作好幾個月了。 Alpha 版用起來還算方便但是有很多想要的功能卻沒有,好像說看不到漫畫,傳不了信息還有多多少少很多不同的不方便。於是這樣的話就乾脆把 ArOZ Online 系統改成移動式雲端就好了。你想想看,如果有一個雲端處理系統能夠放在背包裡,然後用手機連上去之後就能夠看到自己的庫存漫畫、動漫、玩到小遊戲、也能夠做基本的文書處理和圖像處理(好像小畫家、筆記本之類的感覺),最重要的是把自己整個音樂庫也帶在這個移動雲端裡面,就不用每次聽歌都要上網到真正的雲端伺服器慢慢的下載下來了。 嘛,想是這樣想,可是要支援所有 OS 和平台的使用者界面…應該就只有 HTML 吧? 於是, ArOZ Online Alpha 這個多媒體串流網站計劃就這樣變成了 BETA 版的移動雲端網站應用系統了。 好吧,到底雲端怎樣移動呢?是要背一台伺服器上街麼?才不啦w 最近不是有那個甚麼 Raspberry Pi Zero W 嗎?這麼迷你的一台東西裡面已經包含了CPU, RAM, USB Port, Storage 之類伺服器需要用的資源了。所以在這裡面 Host 個 Web Server 就可以了吧。 然後再加上一塊聚合物鋰電池,一塊 Micro USB 的 Hub 擴展板,然後兩塊 64GB 的 USB 電路板(對,是要打開 USB 手指裡面把電路板拔出來),把兩塊 USB 做成 RAID 0,那樣就能夠把READ / WRITE 速度 x2了,又或者做成 RAID 1 的話也能更確保資料安全性。不過既然是放音樂、動漫之類不見了也不要緊的東西,當然是 RAID 0 較好用吧。 ArOZ Online BETA (實驗版) 雖然說還在開發中,可是基本上能用的實驗版已經出來了。大致上長這樣子: 全部的 Module 採用 Grid 的型式來顯示,找起來還算方便。每個 Module 也能自定封面和 description text。所以自由度非常大。 延續 ArOZ Online Alpha 版的傳統,ArOZ Online 系統必要有的 Module: 音樂,影片 和 相片 系統。這次的音樂庫做成了 Web App 的形式,在手機上看到這個網站也是跟一般的播放應用程式無異,就是不用安裝直接能用。 (下面的是 ArOZ Online Alpha 版的音樂播放界面) 相片模組的界面也不是變得太多,只是新系統加入了相片管理頁面,能夠把不同時間或是標題的相片分類儲存。 (下面的是舊版) 而影片播放器還沒寫好,所以留待下次更新再寫吧。 在 ArOZ Online BETA 之下新增了不少新的模組,包括有移植自 IMUS 實驗室標淮網頁服務的 Quick Send 和 Q/9 輸入法 新加入的模組就包括了 Home Dynamic (家居自動化控制器)、Manga Cafe (漫畫應用)、ArOZ Chat 、Memo 等 (Manga Cafe 應用) (Memo 牆) 而系統控制模組方面,現在已準備了 Pi DB(輕量化資料庫),Upload Manager (上載 API),Virtual File System,HELP 模組(Read me 收集器)等 (使用了 Upload Manager API 的 Audio Module) (HELP 模組會收集其他模組裡的 READ ME 然後整理顯示出來。) 待更新…
MA5887 USB 快速充電模擬 IC
這東西其實真的超爛,不知道是誰想出來的。 部分充電器可能因為廠商不想用家使用別家的充電器來充電,所以想出了在充電器裡面加入辨識裝置,如果不是自家的產品就減少輸出的電流量。也是因為這個原因,這粒 IC 就出現了。 這粒 IC 只要接上 USB 對應的 D+ 和 D- 就可以運作了。簡單來說就是「破解」所有品牌充電器的辦識機制,讓每個充電器都以為這是自家品牌的手機,於是全力輸出最高的電流量。可真是一山還有一山高啊。
鋰電池升壓模塊 5V 1.2A 升壓 IC HXN=AP
HXN=AP ,又稱 HX3242 ,是一款超浪費電力的升壓IC(沒錯,它的發熱量出奇的大),但是也有它的好處,就是這粒 IC 能輸出高達 5V 1.2A。 那即是說,相比起其他能夠在一粒 IC 內完成升壓,不必加入另外的 MOSFET 的電路來說,是流量輸出最高的一款 IC 了。 起初的電路圖長這個樣子,可是後來發現即使跟據這個電路圖來設計,也是會出現一點問題的。而最主要的是不知為啥這個設計無法像外面在賣的升壓模塊一樣用到這塊 IC 的最大輸出電流量。 外面賣的模塊(圖片只供參考) 就結論而言,理應是因為畫線不夠粗而導致的問題吧?於是在後來的改版中,另外特別為這一塊IC 重新設計過一塊電路板,而這次是使用單面半工藝板(即是說上面沒有那層綠色的油漆,只有一層銅的電路層),所有零件在焊上板之後再用錫線加厚電路,結果電流量還是不足 1.2A。之前也試過有幾塊 HXN=AP 的板子因為過熱而燒掉了,所以結論:不再使用 HXP=AP 作為升壓IC 了。
使用 MMD 模型在 Blender 內遇上「Bone heat weighting: failed to find solution for one or more bones」解決方法
如果你在 Blender 內 Import 了 MMD 模型之後,想替它加上動作,首先你需要加上骨架 (Bone),但是若你跟隨著網上的教學,你可能會遇上一個問題就是: 「Bone heat weighting: failed to find solution for one or more bones」 這個問題在網上基本上找不到答案,但是在幾經辛苦後終於找到一個日文的 Blog 說到解決方法: ※エラー「Bone heat weighting: failed to find solution for one or more bones」がでたら、結合前に戻し、次を行う。 Editモードでメッシュを全選択 → 左のパネル「Mesh Tools」 → 「Remove Doubles」 → 再度結合してみる http://teamian.blog.fc2.com/blog-entry-8.html 圖解如下: 1. 在 Object Mode 下選擇剛剛匯入的 MMD 模型 2. 選擇 Edit Mode,在 Mesh Tool 下面找到 "Remove Doubles" 3. 在 Remove Doubles 的選單下,把 Merge Distance 調高,但也不要調太高,不然會影響模型解像度 4. 回到 Object Mode,先點選模型,再點選骨架,按 Ctrl + P,選擇 Armature Deform,並選擇 With Automatic weights。 5. 選擇骨架,點選 Pose Mode 即可調整 MMD 模型的動作。 6. 之後就能夠按平常的方式使用 Timeline 製作動畫了。
3D 打印機除錯清單
如果你家裡 或者 學校擁有一台 3D 打印機而又出現了問題,在聯絡維修人員之前,你可以參考這一份除錯清單來自行檢查一下自己的打印機。 注意,這份除錯清單只適用於 Rep Rap 開源之下的打印機。 啟動相關問題 無法開動 請檢查電源供應是否正常,如果你的變壓器上有開關制,請檢查開關是否已經打開。如果電源已經打開,而且也無法開機,請更換一個變壓器或插頭再試一次。 液晶屏無反應(或白屏) 如果你在供電之後液晶屏有亮燈但是無顯示任何文字,你可以嘗試調轉連接到打印機主板的兩條排線。如果依然不行,很有可能你的 Arduino Mega (或控制板)內的控制程式因不知明原因而被消除了,你需要重新灌入驅動程式。 液晶屏顯示正常,可是步進電機不動 請確認已插入 12V 電源及所有步進電機已經接上主控制板 X / Y / Z 步進馬達相關問題 步進馬達只能向其中一個方向移動 如果以 Rep Rap Delta 為例,如其中一個馬達只向下移動而無法向上移動,請檢查位於滑軌最上方的 End Switch 是否卡住或電線接觸不良。 如果以 pursa i3 為例,如其中一個馬達只能順時針轉動,請檢查位於滑軌左右方之 End Switch 是否被卡住。 打印時某一層會移位 這個問題是因為負責 X / Y Axis (或 Z Axis 如果你是在用 Delta)的同步輪與步進馬達間的螺絲鬆脫,導致傳動出現問題。只要把螺絲上緊即可。 自動調平時即使擠出頭已經撞到平台,馬達仍不會停止 這是因為擠出頭上的 End Switch 安裝的位置不良,請嘗試調較 End Switch 與 平台間的距離(一般是用螺絲調整)。 掉步(Skipping Steps) 這是因為步進馬達的信號不良,或許是因為步進馬達的接頭還沒完全插進主控制板或者馬達的電線接觸不良,如果重新接線後仍無法解決建議買一個新的步進馬達。 E 步進馬達 (擠出機)相關問題 Hot End (擠出頭)沒出料 Hot End 沒有出料的問題有很多個,以下為除錯步驟: 先檢查噴頭有沒有加熱(不要用手碰,可以噴一點水上去看看噴頭是否高於 100度) 如噴頭是熱的,檢查在進料時 E 步進馬達是否有轉動 如果有轉動,檢查用作送料的同步輪是否有鬆脫 如沒有鬆脫,請檢查散熱器(噴頭上方)裡是否有「卡料」 如果以上全部檢查後都沒有問題,就需要更換噴頭或使用小火槍把噴頭加熱清理。 打印件表面不平 如果你是使用 ABS,請檢查是否已開啟所有風扇。 如果與風扇無關,可以按以下步驟進行除錯: 檢查傳動帶有沒有鬆動。如有,請調整螺絲使它收緊。 檢查擠出機的同步輪是否有鬆動。 如與硬件無關,請留意 Cura 裡 layer height 的設定。一般是於 0.1-0.3 之間的,大於此值會使打印表面不平。 無法換料(新料無法推進管子裡) 由於管子的快速接口處有一個凸位,所以如換料的時候先把快速接口拔出來,先把料穿過擠出機,再把快速接口套到新料的頭段。這會使換料的時候更方便。 熱床相關問題 熱床不夠熱 可能是你的電源供應 W 數不足,導致加熱速度較慢。建議更換電源。 打印機無法黏住熱床玻璃 請提高熱床的溫度,又或者在加熱後待玻璃表面溫度漸漸提高了再打印。 Cura 沒有熱床溫度設定 可能是因為你的機器本身不支援熱床,所以 Cura 不會顯示熱床設定。不然,部分賣家會提供一個特別版本的 Cura 給使用者,內裡包含了啟用熱床的設定,詳情請向你的供應需查詢。