無料オンラインロボットシミュレーター · Blockly · デジタルツイン
ロボットを動かして髪を整える。安全確認は毎回。
HCRはHair Cutting Robotの学術研究です。参加者はブロックを組み、5関節のService Robotでボクセル状の髪型を整えます。デジタルツインが動作を先に確認し、頭部に触れる可能性がある動きは実行しません。
クライアントはブラウザーで動作し、Rustサービスが提出プログラムを再生して採点します。実機は不要で、課題は参加者の成績に合わせて変わります。
または デスクトップアプリをダウンロード はmacOS、Windows、Linuxに対応しています。教室にWi-Fiがない場合に便利です。
- shoulderRoll15°
- shoulder72°
- elbow10°
- elbow−48°
- baseYaw−30°
- baseYaw0°
- baseYaw30°
- wrist−20°
背景
ロボット教育を広げるのは難しい
アーム1台に学習者1人
実機のロボットアームは高価で、一度に使えるのは一人だけです。教師の付き添いも必要です。
1つの授業、1つの進度
クラス全員が同じ順序で学ぶと、早い生徒は退屈し、つまずいた生徒は諦めやすくなります。
ミスの代償が大きい
実機では角度の誤りが衝突につながるため、初心者に操作させないことが最も安全になってしまいます。
学習ループ
作る、確認する、採点する。数値を一つ変えて再挑戦
3つ目の手順が1つ目へ戻します。この反復が学習そのものです。
- 1プログラム
構文を書かず、ブロックを動かす
サーボモードには絶対角度、待機、繰り返しの3種類があります。認証済みCutter Grid練習では6つの固定世界方向と整数距離を追加し、実行前に決定論的な関節計画へコンパイルします。
サーボ角度 · Cutter Grid移動 · 待機(0~5000 ms)· 繰り返し(1~20回)
- 2チェック
デジタルツインが先に実行
アームを動かす前に、同じプログラムを頭部の幾何モデル上で連続検査します。頭部へ入り込む動作は拒否し、最後の安全姿勢を保って原因のブロックを示します。
連続掃引による接触判定・決定論的・物理エンジン不使用
- 3採点
成績ではなくスコア
失敗しても、もう一度試すだけです。目標髪型との一致度、プログラムの簡潔さ、推定実行時間で採点します。
0.60 completion + 0.25 efficiency + 0.15 time
適応型
クラス一律ではなく、一人ひとりに合うレベル
試行のたびに学習状況を推定し直し、次の課題を選びます。余裕をもって解ければ難しくし、苦戦すれば一段戻します。
- 能力値 θ
- ロボットプログラミング能力をlogit尺度で表し、プログラムの再実行ごとに更新します。
- 3PLではなく2PL
- 正しい髪型を当てずっぽうで作ることはできないため、推測パラメータを0に固定し、ノイズから第3パラメータを推定しません。
- アイテム選択
- 現在の θ におけるFisher情報量で課題を順位付けし、同じ少数の課題が同レベルの全員に偏らないよう出題頻度を制限します。
- 部分点
- スコアは連続値です。能力推定を更新する前に、各課題の習熟閾値を基準に生スコアを再写像し、元の値も保存します。
- 校正
- 新しい課題は暫定扱いで始まり、回答数が十分になって難易度を再推定できるまで、出題頻度を制限し正式な能力更新から除外します。
- 現時点では単一の θ
- 本バージョンでは能力を単一の合成値として扱い、報告用に各回答へ次元タグを記録します。真の多次元モデルは今後の課題であり、現行機能ではありません。
研究への参加
研究を始める前に参加するか選んでください
参加者が学術研究への参加を選ぶまで、クライアントはシミュレーターのセッションやプレイヤーIDを作成しません。
研究に必要なデータ
再生、採点、分析に必要なBlocklyプログラムIR、課題のバージョン、得点、技術的なセッションIDまたは提出ID。
任意の背景情報
主要言語はzhやenなどの大まかなコード、UTCオフセットは現在の分数だけを記録します。「学術研究に参加」では両方が有効になり、「詳細設定」で個別に無効にできます。
意図的に収集しない情報
ブラウザー指紋、正確なIANAタイムゾーン名、推定位置、広告ID、サイト横断の追跡プロファイルは収集しません。
データの位置づけ
このデータを完全匿名とは呼びません。研究記録にセッション識別子が残る場合があり、サーバーも通常のセキュリティログを保存するため、非識別化データと説明します。
モード
一人で練習、または全員で対戦
一人練習
時間制限なし。ワークベンチと課題を使い、何度でも試せます。
- 実行、一時停止、再開、1命令ずつのステップ実行、停止、リセットができます。リセットしてもプログラムは残ります。
- 「テスト」はアニメーションを待たず、画面なしでプログラムを数ミリ秒以内に評価します。
- 作業中に目標髪型のプレビューを表示・非表示にできます。
対戦ラウンド
ルーム内の全員に同じ課題が同時に配られます。
- 固定の実時間枠を使い、各プレイヤーではなくサーバーの時計で判定します。
- ラウンド終了まで、自分の分も含めて誰にもスコアは見えません。
- 何度でも再提出でき、最良の結果だけが採用されます。
- プログラムはサーバーで再実行されるため、端末の速さは有利になりません。
バックエンドが未設定の場合、ブラウザーがスクリプトBotとの対戦を採点します。メニュー、ロビー、スコアボードには練習であることを明記します。オフラインでも遊べますが、ローカル得点を公式結果として表示することはありません。
Rustで構築
サーバー再生から組み込みロボットファームウェアまでRustで実装
HCRにおいてRustは単なる飾りではありません。採点サービス、適応エンジン、プロトコル処理、no_std組み込みゲートウェイを実装しています。
技術構成
4つの要素、1つのプロトコル
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
各メッセージを1つのエンベロープに収め、ULIDで対応付けます。マイナーバージョンでは追加のみを認め、受信側は未知の内容をエラーにせず破棄します。
ハードウェア
hcr-fw
Rust (no_std) · ESP8266 · Arduino C++ as a hardware library
5サーボの実機では、起動方針、ルーティング、HTTP/JSON、サーボ状態をRustが担い、C++はバイト指向C ABIの背後に限定されます。ゲートウェイのMQTTは未実装です。
試してみる
適応型コーディング、ゲーム、シミュレーション、教育を一つの基盤に。
ロボットを購入する必要はありません。クラス全員が同時に、それぞれに合う難易度で学べます。研究説明を読み、参加するか選んで最初の課題を始めてください。