免費線上機器人模擬器 · Blockly · 數位分身
編程控制機器人完成理髮任務。安全驗證每一步。
HCR 是一項 Hair Cutting Robot 學術研究。參與者透過積木程式控制五關節 Service Robot,在體素髮型上完成任務;數位分身會先檢查每個動作,並拒絕會觸及頭部的運動。
客戶端在瀏覽器中執行,Rust 服務負責重播並評分提交的程式。無需實體機器人,關卡會依參與者的表現自適應調整。
或者 下載桌面應用程式 ,支援 macOS、Windows 與 Linux。適合沒有 Wi-Fi 的教室使用。
- shoulderRoll15°
- shoulder72°
- elbow10°
- elbow−48°
- baseYaw−30°
- baseYaw0°
- baseYaw30°
- wrist−20°
為什麼
機器人教學難以擴展
一台機器手臂,一名學生
實體機械臂價格高昂,一次只能供一名學生使用,還需要教師在旁監督。
同一課程,同一進度
全班只能按同一套課程推進。進度快的學生覺得無聊,跟不上的學生則容易放棄。
錯誤代價高昂
在實體硬體上,角度錯誤就可能造成碰撞。為了安全,初學者往往根本沒有操作機會。
學習循環
編寫、檢查、評分。修改一個數值,再試一次
三個步驟,第三步會帶你回到第一步。整個學習過程就在這個循環中完成。
- 1編程
拖放積木,無需輸入語法
伺服模式有三類積木:設定關節絕對角度、等待或重複。認證 Cutter Grid 練習增加六個固定世界方向與整數距離,並在執行前編譯為確定性關節計畫。
伺服角度 · Cutter Grid 移動 · 等待(0–5000 毫秒)· 重複(1–20 次)
- 2檢查
數位分身先行執行
機械臂移動前,同一程式會先在頭部幾何模型中進行掃掠檢測。可能進入頭部的動作會被拒絕;機械臂保持最後的安全姿態,並標示導致問題的積木。
連續掃掠接觸偵測 · 確定性計算,無物理引擎
- 3評分
這是分數,不是成績等級
出錯只意味著再試一次。評分依據是髮型與目標的吻合度、程式精簡程度以及預估執行時間。
0.60 completion + 0.25 efficiency + 0.15 time
自適應
每名學生都有合適的難度,而不是全班同一難度
每次嘗試後,平台都會重新估計學習表現並配對下一項挑戰。輕鬆完成便提高難度;遇到困難則降低一步。每名學生都有自己的學習級別。
- 能力值 θ
- 以 logit 尺度表示機器人編程能力,並根據每次程式重播更新。
- 採用 2PL,而非 3PL
- 正確髮型無法靠猜測得到,因此猜測參數固定為零,不從雜訊中估計第三個參數。
- 題目選擇
- 挑戰先按目前 θ 下的 Fisher 資訊量排序,再限制曝光率,避免同一批題目反覆分配給能力相近的學生。
- 部分得分
- 分數是連續值。更新能力估計前,服務會圍繞題目的精熟門檻重新映射原始分數,同時保留原值。
- 校準
- 新挑戰最初處於暫定狀態:限制曝光率,且不計入正式能力更新,直到收集足夠作答以重新擬合難度。
- 現階段使用單一 θ
- 目前版本只使用一個綜合能力值,同時為每次作答記錄向度標籤以供報告。真正的多向度模型屬於後續工作,並非目前系統的能力。
研究參與
研究開始前,請主動選擇是否參與
只有在參與者主動同意加入這項學術研究後,客戶端才會建立模擬器工作階段或玩家識別碼。
必要研究資料
用於重播、評分及分析的 Blockly 程式 IR、挑戰版本、分數,以及必要的技術工作階段或提交識別碼。
選填背景資料
主要語言只記錄為 zh、en 等粗略代碼;UTC 偏移只記錄目前分鐘數。「參與學術研究」預設開啟兩項,也可在「更多設定」中分別關閉。
不會主動收集
不收集瀏覽器指紋、精確 IANA 時區名稱、推斷位置、廣告識別碼或跨網站追蹤檔案。
資料匿名程度
研究記錄可能留有工作階段識別碼,伺服器也會保存例行安全日誌。因此,這些資料雖經去識別化處理,但並非完全匿名。
模式
獨自練習,或與全場對戰
單人練習
不限時。使用工作台完成一項挑戰,嘗試次數不限。
- 可以執行、暫停、繼續、逐條執行指令、停止或重設。重設後,程式仍會保留。
- 「測試」會在數毫秒內以無介面方式評估程式,無須等待動畫播放。
- 操作時可隨時顯示或隱藏目標髮型預覽。
對戰回合
房間內所有玩家會同時收到同一項挑戰。
- 回合採用固定的實際時間窗口,並以伺服器時鐘為準。
- 回合結束前,任何人都看不到分數,包括自己的分數。
- 可以不限次數重新提交,最終只計最佳成績。
- 程式在伺服器端重播,電腦更快不會帶來優勢。
未設定後端時,瀏覽器會為與腳本機器人的對戰回合評分。選單、大廳與計分板都會清楚標示這是練習。離線仍可遊玩,但本機分數絕不會顯示為正式成績。
以 Rust 建構
從伺服器端重播到嵌入式機器人韌體,皆採用 Rust
Rust 在 HCR 中並非裝飾性標籤,而是用於實作評分服務、適性引擎、協定處理與 no_std 嵌入式閘道。
技術架構
四個部分,一套協定
Simulator
HCR_Simulator_Frontend
React · TypeScript · Vite · React Three Fiber · Blockly
整個示範流程都在用戶端執行。未設定後端時,完全不會發出網路請求。
Service
hcr-backend
Rust · MQTT over WebSocket · HTTP binding
在伺服器端重播程式、執行適性題庫,並負責回合截止時間與排名。
協定
hcr-backend/schema
hcr.v1 · JSON and CBOR
每則訊息都使用一個封套,並透過 ULID 關聯。次要版本只允許新增欄位;接收端會忽略無法辨識的內容,而不會因此失敗。
硬體
hcr-fw
Rust (no_std) · ESP8266 · Arduino C++ as a hardware library
實體五伺服機械臂由 Rust 管理啟動策略、路由、HTTP/JSON 與伺服狀態;C++ 僅限於位元組型 C ABI 之後。閘道尚未實作 MQTT。