Shawn Chang

硬體 · 強化學習 · 應用程式

I design the PCB, train the model, and ship the app.

往下捲

全部專案

—

點任一格直接跳過去

01

2025

Dendrify

一句話定調這個專案在做什麼。
放這裡的句子會是讀者對它的第一印象。

  • Swift
  • SwiftUI
  • SwiftData

問題

放這個專案要解決的問題。為什麼現有的做法不夠好,是什麼情境讓你覺得需要自己做一個。兩三句就夠。

做法

放你的解法。用什麼架構、什麼關鍵決定,讓讀者知道這不是隨手拼的。

技術難點

放做的過程中真正卡住你的地方,以及你怎麼繞過去。這一段通常是整個專案最值得寫的部分。

結果

放最後做出了什麼、有沒有數字。有數字就放數字。

friction ? pose snapshot / frozen HL policy select / abort LL transformer frozen / blind subgoal LL hiddens 20x128d cross-attn no grad to LL loose .20 tight .65 friction

02

2026 · 進行中

Jenga 階層式 RL

高層策略看得到結構、看不到接觸。
這個研究量化「為它打開一條讀取低層執行狀態的通道」值多少。

  • PPO
  • Transformer
  • Cross-Attention
  • Isaac Sim

問題

積木的鬆緊只能透過互動知道 —— 任何靜態觀測都編碼不了它。高層策略手上只有回合內凍結的姿態快照,接觸面正在發生什麼,它看不到。

做法

階層分解:高層負責選哪一塊、什麼時候放棄,低層負責控制手臂把桿子推下去。低層是純粹為控制而訓練的,而且對全局失明。

技術難點

讓高層用 cross-attention 直接查詢低層的時序隱狀態。低層在高層訓練期間完全凍結、不接收任何梯度 —— 這是設計,不是缺陷:要證明的是「讀取」有價值,不是低層為高層重塑了表徵。

結果

先把任務變成可驗證的量測儀器:雙峰摩擦分佈、三項儀器診斷。成敗依賴性與無靜態洩漏都通過,接觸力通道的資訊上限也量了出來,直接構成基線的效能天花板。

motor lead screw esp32 hub board desk driver hub 46 cm

03

2026

升降桌 + 兩塊 PCB

四隻腳、兩塊自己畫的板子。
從機構到韌體整條做完的一台桌子。

  • KiCad
  • ESP32
  • C++
  • 步進馬達

問題

放為什麼要自己做一張升降桌 —— 市售的哪裡不夠、你想要什麼它給不了。

做法

放機構與電子的整體規劃:四隻腳怎麼同步、主控與面板為什麼要拆成兩塊板。

技術難點

放真正難的部分。四腳同步、失步偵測、限位、掉電記憶高度 —— 挑最有故事的寫。

結果

放最後的行程範圍、負載、升降速度這類數字,以及你現在每天真的在用它。

door graph / Dijkstra evacuation time monte carlo

04

2026

TISF 火災疏散模擬

階層式路徑規劃 + 隨機模擬。
火在燒、路在變,要問的不是「跑多久」而是「分佈長什麼樣」。

  • Python
  • D* Lite
  • Monte Carlo
  • Pygame

問題

疏散不是一次靜態的最短路徑問題。火會蔓延、路會斷、人的視野有限而且會怕。環境一直在變,路徑就得一直重算。

做法

把樓層抽象成一張門與出口的圖:上層用 Dijkstra 在門之間規劃路線,下層用 D* Lite 做房間內的即時移動。兩層分工,改變只讓需要重算的那一層重算。

技術難點

D* Lite 的增量重規劃、部分可觀測下的 agent 知識共享,還有火的擴散模型 —— 溫度、氧氣、煙霧、燃料四個場一起跑。

結果

平行化的蒙地卡羅,每次隨機化火源與起始位置,跑出疏散時間的統計分佈而不是單一數字。

1d 3d 7d 14d 30d

05

2025

單字雪球

給準備學測的高中生用的間隔重複。
不是再一個通用背單字 App,是只做這一件事。

  • Swift
  • SwiftUI
  • SRS

問題

放你觀察到的問題 —— 為什麼現成的背單字 App 對準備學測的高中生不夠用。

做法

放你的排程演算法與單字表的來源,以及「只服務學測」這個取捨換到了什麼。

技術難點

放實作上卡住的地方。排程狀態的同步、離線、大量卡片的效能,挑一個真正難的寫。

結果

放使用人數、留存、或你自己用它背完幾個字。有數字就放數字。

1 KEY jump + shoot win rate

06

2025

Basket RL

訓練 AI 去玩 Basket Random。
整個動作空間只有一顆按鍵,所以要學的就只有時機。

  • PyTorch
  • PPO
  • Playwright

問題

放你為什麼挑這個遊戲。ragdoll 物理、每回合隨機化的身體參數、單鍵操作 —— 說明它為什麼比看起來難。

做法

放你怎麼把一個網頁遊戲包成訓練環境:觀測怎麼來、獎勵怎麼設計、一步是多久。

技術難點

放最難的部分。瀏覽器的取樣速率、隨機物理造成的高變異、稀疏獎勵 —— 挑一個真的卡住你的。

結果

放最後的勝率、平均得分,或者它打得贏你了沒。

3D 列印計時機芯

用一句話說完這個專案。輕量專案只有這一句,所以要挑最有意思的那一面來講。

Floating Translation

用一句話說完這個專案。輕量專案只有這一句,所以要挑最有意思的那一面來講。

你在這

Grade Website

用一句話說完這個專案。輕量專案只有這一句,所以要挑最有意思的那一面來講。