Skip to content

ロボットのエピソードをアノテーションする方法

ロボットの実演をフェーズに区切り、結果を判定し、密な報酬曲線を描く。なぜ「部分的成功」が実在の結果なのか、そしてなぜ時系列レーンが動画より重要なのか。

ロボットの実演とは、複数の同期したカメラストリームと複数の数値時系列であり、それについて問う価値のあることはすべて時間的です。 把持はいつ始まったのか、いつ失敗したのか、各時点でどれだけ完了に近かったのか。だからインターフェースはフォームではなくタイムラインでなければなりません。

信号を動画の隣に置く

上にカメラ映像、その下にアーム自身の信号をレーンとして、共有の時間軸で並べ、すべてのアノテーション層をその上に描きます。

これはレイアウトの好みの問題ではありません。把持の失敗は、たいていカメラで明白になる数フレーム前にグリッパーと手首の力の波形に現れます。公刊された研究もこれを支持しており、ATLAS(ウィーン工科大学)は、固有受容の時系列を動画と並べて表示すると、視覚のみのツールに対して境界の誤差が減ると報告しています。

実務上の帰結が二つあります。

  • レーンをタブの裏に隠さないこと。 アノテーターが探しに行かなければならないなら、彼らは探しません。
  • 極小・極大を保つ間引きを使うこと。 幅 300 ピクセルのレーンに描かれた一フレームだけの力の尖りは、平均による間引きでは完全に消えます。そしてその尖りこそが、しばしば当の事象なのです。

サブゴールで区切る

フェーズの境界は、ロボットの目的が変わる場所——リーチ、把持、搬送、設置、後退——であって、動画が切り替わる場所でも、アームがたまたま止まった場所でもありません。

フェーズの分類体系は課題の系統ごとに固有です。マニピュレーションとナビゲーションではまったく異なる一式が必要なので、これはツール側ではなく設定側に属します。

yaml
    phases:
      - {name: reach,     color: "#4ECDC4", key_value: "1"}
      - {name: grasp,     color: "#FFD93D", key_value: "2"}
      - {name: transport, color: "#6C8AE4", key_value: "3"}
      - {name: place,     color: "#95E1A3", key_value: "4"}
      - {name: retract,   color: "#C9A0DC", key_value: "5"}

結果は二つではなく三つ

successpartialfailure

実際のロボットデータでは部分的成功が最頻の結果です。 これを二値に押し込めると、そのデータセットをアノテーションする価値の源である信号が壊れます。対象をテーブルから持ち上げたが落としたエピソードは、まったく動かなかったエピソードとは違います。両者を同じものとして訓練された方策は、間違ったことを学びます。

失敗原因の分類体系——把持失敗、対象の滑落、衝突、対象違い、設置位置違い、タイムアウト——と組み合わせてください。そうすれば失敗が数えられるだけでなく分析できるようになります。

事後のラベル付け直し

記録された課題では失敗したエピソードが、別の課題の成功実演であることは頻繁にあります。そのエピソードが実際に示しているものを記録しておけば、破棄されるはずの録画が使える訓練データになります。

これはアノテーション時なら安く集められ、後からは取り戻せません。使うかどうか確信がなくても尋ねておいてください。

報酬層はコストが高い

密な進捗報酬曲線は、フェーズが秒単位なのに対してエピソードあたり数分かかります。必要なときだけ有効にし、アノテーション予算を支配することを見込んでおいてください。

一致度の測定

三つの層に三つの測度です。

測度
フェーズ境界時間 IoU
結果ラベルKrippendorff's α
報酬曲線ICC と Pearson

それぞれにカバー率を併記してください。 タイムラインの 5% で計算された相関は残り 95% について何も語らず、カバー率を伴わない係数は、あたかも全体を語っているかのように読まれます。

境界については特に、単一の閾値ではなく許容幅のスイープを報告してください。

形式

LeRobot v2、RLDS/TFDS、HDF5(RoboMimic と ALOHA)、ROS bag のいずれも取り込めます。データセットを書き換えるのではなく、フレームごとの JSONL サイドカーとして書き出してください。そうすれば読み取り専用の公開リリースでも、再公開せずにあなたのアノテーションを携えられます。

設定

yaml
annotation_schemes:
  - annotation_type: episode_annotation
    name: episode_review
    description: "Mark the phases, judge the outcome, and draw the progress."
    source_field: episode
    layers: [phases, outcome, reward]
    outcomes: [success, partial, failure]
    failure_causes: [missed grasp, object slipped, collision, timeout]
    reward_range: [0.0, 1.0]
    series_shown: [gripper, wrist_force]

動作する例:LeRobot のショーケース設計

関連ツール

ATLAS は ROS bag を対象に、単独アノテーターの境界精度に特化して作られています。ELAN と BORIS は行動コーディングの標準であり続けています。RerunFoxglove はロボティクスの可視化ツールとして最良であり、いまや構造化アノテーションも扱えます。

この領域における Potato 固有の貢献は、複数アノテーターに対応し、ウェブに配備でき、一致度統計を備えていることです。

参考文献