跳去主要內容

免費網上機械人模擬器 · Blockly · 數碼分身

編程控制機械人完成剪髮任務。每一步都先做安全檢查。

HCR 係一項 Hair Cutting Robot 學術研究。參與者用積木程式控制五關節 Service Robot,喺體素髮型上完成任務。數碼分身會先檢查每個動作,任何可能碰到頭部嘅運動都會被拒絕。

客戶端直接喺瀏覽器運行,Rust 服務會重播同評分提交嘅程式。參與者唔需要實體機械人,關卡亦會按表現調整。

或者 下載桌面應用程式 ,支援 macOS、Windows 同 Linux。適合冇 Wi-Fi 嘅課室使用。

俐落短髮運行中
  1. shoulderRoll15°
  2. shoulder72°
  3. elbow10°
  4. elbow−48°
  5. baseYaw−30°
  6. baseYaw
  7. baseYaw30°
  8. wrist−20°
完成度57.6
剪走保留

點解

機械人教學好難擴展

一部機械臂,一個學生

實體機械臂成本高,一次只可以畀一個學生用,仲要老師喺旁邊睇住。

同一課程,同一進度

全班只可以跟同一套課程。學得快嘅會覺得悶,跟唔上嘅就容易放棄。

出錯代價高

喺實體硬件上,角度錯咗就可能撞機。為咗安全,初學者往往冇機會親手控制。

學習循環

編寫、檢查、評分。改一個數值,再試多次

三個步驟,去到第三步就會返去第一步。成個學習過程就係呢個循環。

  1. 1編程

    拖積木,唔使打語法

    伺服模式有三類積木:設定關節絕對角度、等待或者重複。認證 Cutter Grid 練習加入六個固定世界方向同整數距離,再喺運行前編譯成確定性關節計劃。

    伺服角度 · Cutter Grid 移動 · 等待(0–5000 毫秒)· 重複(1–20 次)

  2. 2檢查

    數碼分身會行先一步

    機械臂郁之前,同一套程式會先喺頭部幾何模型做掃掠檢查。任何可能進入頭部嘅動作都會被拒絕;機械臂會停喺最後安全姿態,並標示出問題積木。

    連續掃掠接觸偵測 · 確定性計算,冇物理引擎

  3. 3評分

    呢個係分數,唔係成績等級

    做錯只係再試一次。評分會睇髮型有幾接近目標、程式有幾精簡,同埋預計要行幾耐。

    0.60 completion + 0.25 efficiency + 0.15 time

可解性保證

每個挑戰都保證完成到。

先畫好目標髮型,再寄望機械臂掂得到,係行唔通嘅。早期有一個挑戰要求剪走 91 塊頭髮,但機械臂只掂到 20 塊。任務根本冇可能完成,關卡亦冇任何提示。

而家會先運行求解器。候選目標先喺無碰撞關節空間掃掠,再交畀參考求解器;做唔到嘅目標會喺生成階段淘汰,唔會派畀學習者。求得嘅解亦會成為關卡嘅參考成本同參考時間。

早期一個人手畫嘅挑戰

關卡要求剪走嘅頭髮91
機械臂掂得到嘅頭髮20

挑戰本身根本做唔到,畫面卻冇講明。學生好容易將設計缺陷當成自己失敗。

自適應

每個學生都有啱自己嘅難度,唔係全班同一級

每次試完,平台都會重新估計學習表現,再揀合適嘅下一關。輕鬆完成就加難;遇到困難就退一步。每個學生都有自己嘅級別。

能力值 θ
用 logit 尺度表示機械人編程能力,每次程式重播後都會更新。
用 2PL,唔用 3PL
正確髮型唔可以靠估,所以猜測參數固定為零,唔會由雜訊估計第三個參數。
揀題
挑戰先按目前 θ 嘅 Fisher 資訊量排序,再限制曝光率,避免同一批題目不停派畀能力相近嘅學生。
部分得分
分數係連續值。更新能力估計之前,服務會按題目嘅掌握門檻重新映射原始分數,同時保留原值。
校準
新挑戰最初係暫定:會限制曝光率,亦唔計入正式能力更新,直到收集到足夠作答去重新擬合難度。
現階段用單一 θ
目前版本只用一個綜合能力值,同時為每次作答記錄維度標籤方便報告。真正嘅多維模型係下一步,唔係現有功能。

參與研究

研究開始之前,請先揀選參唔參與

參與者主動同意加入學術研究之後,客戶端先會建立模擬器工作階段或玩家識別碼。

必要研究資料

重播、評分同分析所需嘅 Blockly 程式 IR、挑戰版本、分數,以及必要嘅技術工作階段或提交識別碼。

自選背景資料

主要語言只記錄 zh、en 呢類粗略代碼;UTC 偏移只記錄目前分鐘數。「參與學術研究」預設會開啟兩項,亦可以喺「更多設定」逐項關閉。

唔會主動收集

唔收集瀏覽器指紋、精確 IANA 時區名稱、推斷位置、廣告識別碼或跨網站追蹤檔案。

資料匿名程度

研究記錄可能留有工作階段識別碼,伺服器亦會保存一般安全日誌。因此,呢啲資料雖然經過去識別化處理,但並非完全匿名。

模式

自己練習,或者同全場對戰

單人練習

唔限時。用工作台完成一個挑戰,想試幾多次都得。

  • 你可以運行、暫停、繼續、逐條執行指令、停止或者重設。重設之後,程式仍然會保留。
  • 「測試」會喺幾毫秒內以無畫面方式評估程式,唔使等動畫播完。
  • 操作期間可以隨時顯示或者隱藏目標髮型預覽。

對戰回合

房入面所有玩家會同一時間收到同一個挑戰。

  • 回合有固定嘅實際時間,並以伺服器時鐘為準。
  • 回合完之前,任何人都睇唔到分數,包括自己嗰個。
  • 可以任你重新提交,最後只計最好嗰次。
  • 程式會喺伺服器端重播,電腦快啲都冇優勢。

未設定後端時,瀏覽器會為同腳本機械人嘅對戰回合評分。選單、大堂同計分板都會清楚標示呢啲係練習。離線一樣玩到,但本機分數絕對唔會當成正式成績。

以 Rust 建構

由伺服器端重播到嵌入式機械人韌體,都採用 Rust

Rust 喺 HCR 唔係裝飾性標籤,而係用嚟實作評分服務、適性引擎、協定處理同 no_std 嵌入式閘道。

伺服器端重播協定Rust 韌體(目標方案)
了解 HCR 入面嘅 Rust

技術架構

四個部分,一套協定

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。

試吓

一個平台,結合自適應編程、遊戲、模擬同教學。

唔使買機械人。全班可以一齊學,每個學生都有啱自己嘅難度。睇完研究說明,決定參唔參與,再開始第一關。