免費網上機械人模擬器 · 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。