自分の LeRobot エピソードで Robot Reel を試す:初回試用キットの計時・報告・計上のしくみ

自分の LeRobot エピソードで Robot Reel を導入・書き出し・検証・計時して報告する初回試用。計上ルールと、固定コミットの記録が 0 件である意味。

タイムライン図:番号付きの 5 つの円が矢印で順につながり、その下に各ステップの説明があります。エピソードを選び問いを 1 つ書く、0.18.4 を導入し書き出し・検証・計時、index.html を開き問いに答える、試用報告を提出(失敗も報告)、収集スクリプトが RR-01 の計上を判定。
Robot Reel の初回試用の 5 ステップ。固定コミット 4ed6d4b の docs/first-use-trial.md と収集スクリプトに基づいて整理。ノードの大きさや色は測定値を表しません。

Robot Reel のリポジトリには、所要 20 分ほどの初回試用ガイドがあります。自分の LeRobotDataset のエピソードでインストール、書き出し、検証を行い、リプレイを開いてから、公開の報告を提出するという流れです。付属の収集スクリプトは、決まったルールで報告を集計し、ロードマップ RR-01 の進捗記録にまとめます。本記事では固定コミット 4ed6d4b に基づき、試用の進め方、報告の読み取りと計上の仕方、そして記録から言えること・言えないことを説明します。このコミットの時点で、記録に計上された独立した試用は 0 件です。

Robot Reel そのものについては本サイトの Robot Reel:ロボットの方策シミュレーションを、コマ単位で検証できる再生と 3D シーンに を、モデルの説明を照合する別の使い方については モデルの説明を元のロボット録画と照合する:Robot Reel の review-claims で示せること をご覧ください。本記事が扱うのは別の問題、つまり初めて使う人にとってツールが役に立つかをどう測るか、です。

RR-01 が測ろうとしているもの

ガイドは冒頭で目的を述べています。Robot Reel があなた自身のロボット録画を理解する助けになるか、どこで邪魔になるかを知りたい、というものです。RR-01 に必要なのはメンテナー以外の人による初回の試用で、失敗した試用や途中でやめた試用も数に入り、ガイドはそれらも報告するよう求めています。ガイドによれば、Robot Reel は手元のマシンで動作し、テレメトリーを送らず、フォルダーを 1 つ書き出すだけです。報告に何を書くかは参加者が決めます。

収集スクリプトには 3 つの目標が固定で書かれており、ガイドにも同じものが挙げられています。

  • 独立した試用 3 件
  • 最初の使えるリプレイまで 15 分以内
  • 少なくとも 2 人の参加者が 4 週間以内に別のエピソードで再び使う

ガイドは、記録が示すのは報告どおりの目標に対する進捗であり「それ以上ではない」と明記しています。固定コミットでは、docs/validation/external-trials.json の progress はすべて 0、median_minutes_to_first_replay は null、targets_met は false、trials は空です。除外された唯一の項目は issue 107 で、理由は “filed by a repository owner” です。この記録では目標と結果が分けて書かれており、現時点にあるのは目標だけです。

インストールの前に問いを 1 つ書く

ガイドは、始める前に具体的な問いを 1 つ書き留めるよう求めています。普段なら録画を見て答えるような問いです。例として次の 3 つが挙げられています。

  • グリッパーが指令より遅れて閉じるのはどこか
  • 手首カメラはシーンカメラと同期しているか
  • アームが指令に追従しなくなるのは何フレーム目か

データは自分の LeRobotDataset(v3.0 または v2.x、ローカルフォルダーでも Hub 上でも可)でも、任意の公開データセットでも構いません。先に問いを決めておくと、報告の「答えは見つかったか」に明確な基準ができます。「よさそうだった」で終わる試用は、普段のやり方と比べにくくなります。

インストール・書き出し・検証と計時

必要なのは Linux または macOS と、Python 3.12 以降です。YOUR/DATASET を Hub のリポジトリ ID またはローカルのデータセットのパスに、0 をエピソード番号に置き換えます。

start=$(date +%s)
python3 -m venv rr-trial && . rr-trial/bin/activate
python -m pip install 'robot-reel[lerobot]==0.18.4'
installed=$(date +%s)
robot-reel lerobot YOUR/DATASET --episode 0 --output my-episode
exported=$(date +%s)
robot-reel lerobot my-episode --verify --check-media
echo "install $((installed - start)) s · export $((exported - installed)) s"

読み方のポイントです。

  • インストールコマンドは robot-reel[lerobot]==0.18.4 を固定しているので、この手順で固定されるのはリポジトリ内の文書だけでなく、実行するツールのバージョンです。
  • 最終行に出る 2 つの時間は、それぞれ「仮想環境の作成と pip インストール」と「--output による書き出しコマンド 1 本」を対象にしています。その後の --verify --check-media による検証は計時に含まれません。
  • 非公開の Hub データセットでは、先に huggingface-cli login(または HF_TOKEN の設定)が必要です。ローカルのデータセットで --check-source も実行する場合は --dataset PATH を加えます。Windows では時間を手で記録します。
  • どれかのコマンドが失敗したら、そこで止めてエラーメッセージ全文を報告します。ガイドは、それ自体が役に立つ結果だと明言しています。

報告は公開の GitHub issue です。エラーメッセージを貼り付ける前に、トークン、非公開データセットの名前、ローカルのパスなど公開したくない情報が含まれていないか確認することをお勧めします。トークンは環境変数かログインキャッシュに置き、報告には書かないでください。これは本サイトからの提案で、ガイドの記載ではありません。

リプレイを開いて問いに答える

my-episode/index.html をブラウザーで直接開きます。サーバーは不要です。最初に使えるリプレイが得られた時刻を記録し、書き留めた問いに答えてみます。ガイドの説明では、このページはすべてのカメラを 1 つの時計にそろえて表示し、言語タスクと記録された各信号も表示します。action と observation.state に同名のチャンネルがある場合は、指令と測定値を重ねて表示し、両者の差が最大になる箇所へのリンクを示します。「グリッパーが指令より遅れて閉じる」「アームが指令に追従しなくなる」といった問いは、まさにこの重ね合わせ表示で扱うものです。

報告の「インストール開始から最初の使えるリプレイまでの分数」はインストールの開始から数えるため、前の手順のインストールと書き出しの時間も含みます。

報告はどう読み取られ、どう計上されるか

報告はリポジトリの 初回試用報告フォーム から提出します。ガイドの見積もりでは 5 分ほどです。始める前の質問は 試用募集のディスカッション へ、GitHub を使いたくない場合は同じ質問に Hugging Face の固定ディスカッション で答えることもできます。各報告にはボットが返信し、フォームから読み取った内容と、その試用が計上されるかどうかを示します。読み違いがあれば issue を編集して訂正でき、返信もそれに合わせて更新されます。

scripts/collect_first_use_trials.py は標準ライブラリだけを使い、first-use-trial ラベルの付いた issue を読み込みます。コードでは、次のいずれかに当たる報告は計上されません。

  1. 報告ではなく pull request である
  2. 作者とリポジトリの関係が OWNER、MEMBER、COLLABORATOR のいずれかである
  3. 「Confirmation」欄のチェックが 2 つ未満である(ガイドによれば、この 2 つはメンテナーではないことと、公開の要約に同意することの確認です)
  4. 「Did the replay open?」欄から回答を読み取れない

4 番目に注意してください。この欄に回答さえあれば、リプレイが開かなかった試用も計上されます。これは「失敗も数に入る」という方針と一致しています。その他の欠けた回答や解析できない回答は null のまま残り、スクリプトは推測をしません。

コードには、フォームの記入や記録の読み方に影響する細部もあります。

  • インストール秒数、書き出し秒数、分数は、いずれも回答中の最初の数字を取ります。仮の例を挙げると、「12 分くらい」は 12 と読まれますが、「1 時間 10 分」は 1 と読まれます。分数は数字 1 つだけで書くのが無難です。
  • 「リプレイが開いた」は回答が Yes で始まるものを数え、「問いに答えられた」は回答がちょうど Yes のものだけを数えます。
  • 中央値はソート後の len // 2 番目の値です。分数を読み取れた試用の数が偶数のときは、中央の 2 つのうち大きい方になります。
  • コード上の「再訪した参加者」は、計上された報告が 2 件以上ある参加者です。4 週間という期限も、別のエピソードを使ったかどうかも確認していません。この目標を確かめるには、各項目の reported_at と dataset も見る必要があります。
  • targets_met には、異なる参加者が 3 人以上(試用 3 件ではなく)、15 分以内の試用が 3 件以上、再訪した参加者が 2 人以上という条件がすべて必要です。

記録を自分で確かめたい読者は、リポジトリで python3 scripts/collect_first_use_trials.py --check を実行できます。GitHub から現在の issue を取得して集計し直し、コミットされたファイルと比較します。一致しなければメッセージを表示して 1 を返し、ファイルは書き換えません。引数なしで実行すると記録を書き換えます。GITHUB_TOKEN の設定は、匿名アクセスのレート制限を避けるためだけのものです。比較の対象は現在の issue なので、固定コミット上で --check を実行した結果は、その後に新しい報告が届いたかどうかで変わります。

制約と注意点

  • これは公開の試用ガイドと報告の収集ツールであり、それ自体は利用実績の証拠ではありません。固定コミット 4ed6d4b の記録で計上された独立した試用は 0 件で、除外された 1 件はメンテナー自身の報告です。空の記録からは、独立した試用の結果について何も言えません。
  • 記録にある時間、リプレイが開いたか、答えが見つかったかは、すべて参加者の自己申告です。スクリプトはそのまま写しており、独立した再現や測定は行われていません。
  • 「試用」と「参加者」は別々の数です。1 人が複数の報告を出せるため、independent_attempts と independent_participants は分けて読む必要があります。
  • 「何もアップロードしない、テレメトリーなし」はガイドによる Robot Reel の説明で、本サイトでは独自に確認していません。パッケージのインストールや Hub からのデータ取得には、それでもネットワーク接続が必要です。
  • 本記事の執筆にあたり、ガイドのコマンドは実行しておらず、試用報告も提出していません。リプレイページの機能はガイドの記述に基づいて紹介しています。

本サイトの フィジカルAIラボの講座概要 では、L2 で LeRobot のデータを使って方策を学習する実習回を予定していますが、まだ公開されていません。その前に自分のエピソードでこの試用を一度行っておくと、LeRobotDataset に含まれるカメラ、指令、状態の信号に慣れることができます。

リンク