跳去主要內容

模擬器

由 Blockly 驅動嘅免費 3D 機械臂模擬器

喺瀏覽器數碼分身入面網上學習機械人編程。左邊編寫 Blockly 程式,中間模擬五關節機械臂,右邊查看碰撞檢測同評分。

機械臂

五個串聯關節

伺服模式每次將一個關節移到絕對角度,由學習者自己計角度。認證 Cutter Grid 練習係例外:固定世界座標移動會喺執行前經確定性逆向運動學編譯。

關節鏈順序、旋轉軸、角度範圍、初始角度同速度
JointAxisRangeInitialSpeed
底座偏航baseYawX30° … 150°90°60°/s
肩部滾轉(只限模擬)shoulderRoll-45° … 45°0°45°/s
肩關節shoulderY30° … 150°90°45°/s
手肘關節elbowZ17.5° … 162.5°90°60°/s
手腕關節wristB0° … 180°90°75°/s

X、Y、Z、B 軸同停放嘅刀具軸 E 都由韌體 Home 值 90° 開始。Shoulder Roll 只喺模擬器入面存在,初始值係 0°。幾何偏移會將呢個硬件狀態映射成一個安全顯示姿態,冇隱藏嘅第二個初始姿態。

積木

三種伺服積木,加上認證 Cutter Grid 移動

伺服模式使用角度、等待同重複積木。Cutter Grid 練習加入六個固定世界方向同整數距離。Blockly 輸出經驗證嘅 Program IR,唔係 JavaScript;規劃器會喺重播前凍結確定性關節軌跡。

set <joint> to <angle>°

將一個關節郁到絕對角度。可用關節由挑戰定義,超出範圍嘅角度會喺運行前被拒絕。

wait <ms>

保持目前姿態,可以設定 0 至 5000 毫秒。

repeat <n> times

將入面嘅積木重複 1 至 20 次。循環只計一個積木,唔係 n 個,所以可以大幅提高效率分數。

頭部安全距離

拒絕危險動作,唔使等到撞咗先停

頭部唔係體素,亦都剪唔到。模擬器執行命令之前,會連續掃掠工具路徑同頭部幾何體做檢查。呢個係幾何約束,所以快速移動都唔會穿過容差。

如果掃掠偵測到接觸,運行會停喺最後一個安全姿態,並標示引起問題嘅積木;模擬器之後會進入可以復原嘅錯誤狀態。畫面唔會收埋修正:機械臂一停,介面就會指出邊一個積木引起問題。

日誌顯示嘅內容

12:04:31 開始運行 · 挑戰 neat-short-haircut

12:04:31 shoulderRoll → 15°

12:04:32 shoulder → 72°

12:04:33 手肘關節 → 10° 被拒絕 · 頭部淨空不足 · 保持最後安全姿態

12:04:33 狀態 → 錯誤(可以復原)· 積木 3

評分

分數點樣組成

三個子分數都限制喺 0–100,再按固定權重合併。介面顯示一位小數,內部計算保留完整精度。

完成度

×0.60

|Target ∩ Result| / |Target ∪ Result| × 100

用目標髮型計算體素 IoU。剪多同剪少扣分一樣。

效率

×0.25

min(100, ReferenceProgramCost / ProgramCost × 100)

程式成本係來源積木數,再加每條已執行指令 0.25。用循環會比逐條寫出相同動作更省。

時間

×0.15

min(100, ReferenceTimeMs / EstimatedDurationMs × 100)

時間按關節行程同速度估算,唔會用瀏覽器實測。電腦慢唔會令你失分。

最終分數

0.60 × Completion + 0.25 × Efficiency + 0.15 × Time

如果提供者畀嘅權重加埋唔等於 1,模擬器會清楚報錯,唔會靜靜將佢標準化。

校準基準:俐落短髮

Reference blocks5
Reference program cost6.25
Reference time5645 ms

起始程式完成任務最少有 80 分,同時刻意留低改進空間。做到同佢一樣唔代表已經到頂。

控制

運行程式

運行
由挑戰嘅初始狀態開始運行。
暫停/繼續
暫停再重新計時,機械臂姿態唔會變。
單步
喺閒置或者暫停狀態,只運行一條原子命令。
停止
結束運行但唔記錄分數,面板只顯示暫時計算嘅完成度。
重設
將模擬恢復到初始狀態,同時保留程式。
測試
用同一個引擎喺背景評估程式,幾毫秒內得到相同結果。

如實講

仲未整好嘅功能

而家講清楚限制,總好過上堂先至發現。

  • 帳號同工作區儲存
  • 認證 Cutter Grid 規劃器以外嘅通用執行期逆向運動學
  • 剪刀驅動或者物理引擎
  • 真實髮絲(模擬器用體素)
  • 機械人自碰撞
  • 專用流動版
  • 應用程式內 MQTT 傳輸(已有規格,仲未接入)
  • 登入同經驗證嘅玩家身分

問題

常見問題

要唔要買機械人?
唔需要。模擬器本身就係產品,可以直接喺瀏覽器運行。實體機械臂確實存在,韌體亦已開源,但教學唔依賴實體設備。
支援咩裝置?
請喺桌面電腦用 Chrome 或 Edge,建議解像度至少 1280×720。3D 工作台要用鍵盤同指標裝置,目前冇專用流動版。
學生可唔可以改分數作弊?
對戰回合會喺伺服器重播程式,並以伺服器評分為準。瀏覽器回報嘅結果唔會直接信任;執行時間按關節行程計算,唔係實際量度,所以裝置快慢唔會影響分數。
機械人會唔會撞到個頭?
唔會。頭部安全距離由連續掃掠幾何檢查保證,唔係靠有容差嘅物理模擬。檢測到接觸時,機械臂會停喺最後安全姿態,再進入可恢復錯誤狀態。
要唔要帳號?
單人練習唔使帳號。帳號同工作區儲存仲未整好;下面列出其他待完成功能。
個項目整好未?
公開網頁客戶端同 Rust API 已部署。伺服流程、Cutter Grid 練習同課程、單人同對戰模式都可以使用,並通過 Chrome 同 Edge 驗收。帳號、儲存工作區、應用程式端 MQTT 同專用流動裝置支援暫未實作。