> ## Documentation Index
> Fetch the complete documentation index at: https://avala.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 失敗データの取り込み

> ロールアウトと失敗を Avala に送信する方法と、Avala がそれらを失敗タクソノミーとギャップレポートに変える方法

ループは、ロボットが実際に行うことから始まります。お客様は、失敗と介入を含むロールアウトを送信します。Avala はそれらを読み込み、パターンを見つけ、どのデータが欠けているかをお伝えします。

## フォーマット

| フォーマット | 届け方 |
| - | - |
| MCAP | フリートレコーディングのアップロード、または `avala import folder --data-type mcap` |
| ROS バッグ（`.bag`、`.db3`） | `avala import rosbag`、または MCAP に変換してフリートレコーディングとしてアップロード |
| LeRobot データセット | Hugging Face Hub またはローカルディレクトリから `avala import lerobot` |
| ログ付きの動画 | 動画は `avala import folder --data-type video` で送信します。Avala はプログラムの一部としてログを動画に合わせます。 |
| Inspect Robots の評価ログ | `avala import inspect-robots`。後述の「評価ログをインポートする」をご覧ください。 |

MCAP はすべてのトピックを保持するため、最も完全な全体像が得られます。ROS バッグのインポーターはカメラトピック（`sensor_msgs/Image` と `sensor_msgs/CompressedImage`）を変換し、関節状態やその他の数値・テキストのトピックも保持します。点群などのバイナリペイロードはスキップされます。すべてのトピックを保持する必要がある場合は MCAP を送信してください。

## ロールアウトをフリートレコーディングとして送信する

各アップロードは既存のフリートレコーディングに入ります。Avala は、プログラムの開始時に登録済みデバイス用のレコーディングを用意します。それらを一覧してレコーディング UID を確認します。

```python Python theme={null}
from avala import Client

client = Client()  # reads AVALA_API_KEY

page = client.fleet.recordings.list(device_id="<device-uid>", limit=20)
for recording in page:
    print(recording.uid, recording.status, recording.started_at)

# Upload a local directory of rollout files into one recording.
session = client.fleet.uploads.upload_recording(
    "<recording-uid>",
    "./rollouts/2026-09-29",
)
print(session.uid, session.status)
```

```bash CLI theme={null}
# Preview what will be uploaded
avala fleet recordings upload \
  --source ./rollouts/2026-09-29 \
  --recording <recording-uid> \
  --dry-run

# Upload and wait for server-side processing
avala fleet recordings upload \
  --source ./rollouts/2026-09-29 \
  --recording <recording-uid> \
  --wait
```

`upload_recording` は、同じソースの中断されたアップロードを再開します。呼び出しが完了すると、処理がキューに入ったことを意味します。`client.fleet.recordings.get(uid).status` が `ready` になるまで確認してください。

## 失敗と介入をイベントとしてマークする

フリートイベントは、レコーディング内のある瞬間にラベルを付けます。Avala がすばやく見つけられるように、各失敗と各介入をマークしてください。イベントのクラスには `type` を使い、モデルバージョンやタスクなど、お客様のスタックが記録する情報には `metadata` を使います。

```python Python theme={null}
from avala import Client

client = Client()

event = client.fleet.events.create(
    recording="<recording-uid>",
    device="<device-uid>",
    type="anomaly",
    label="Plate slipped during placement",
    timestamp="2026-09-29T14:03:12Z",
    severity="warning",
    duration_ms=1800,
    tags=["failure", "regrasp"],
    metadata={"model_version": "your-policy@2026-09-20", "task": "load_dishwasher"},
)
print(event.uid)

# Many events at once
created = client.fleet.events.create_batch(
    events=[
        {
            "recording": "<recording-uid>",
            "device": "<device-uid>",
            "type": "state_change",
            "label": "Operator took over",
            "timestamp": "2026-09-29T14:03:15Z",
            "tags": ["intervention"],
        },
    ]
)
print(created)
```

```typescript TypeScript theme={null}
import Avala from "@avala-ai/sdk";

const avala = new Avala(); // reads AVALA_API_KEY

const event = await avala.fleet.events.create({
  recording: "<recording-uid>",
  device: "<device-uid>",
  type: "anomaly",
  label: "Plate slipped during placement",
  timestamp: "2026-09-29T14:03:12Z",
  severity: "warning",
  durationMs: 1800,
  tags: ["failure", "regrasp"],
  metadata: { model_version: "your-policy@2026-09-20", task: "load_dishwasher" },
});
console.log(event.uid);
```

```bash CLI theme={null}
avala fleet events create \
  --recording <recording-uid> \
  --device <device-uid> \
  --type anomaly \
  --label "Plate slipped during placement" \
  --timestamp 2026-09-29T14:03:12Z \
  --severity warning
```

イベントの `type` は `error`、`warning`、`info`、`state_change`、`anomaly`、`custom` のいずれかです。`severity` は `info`、`warning`、`error`、`critical` のいずれかです。[レコーディングルール](/docs/visualization/fleet/recording-rules.md)でイベントを自動作成することもできます。

## ROS バッグと LeRobot データセットをインポートする

ロールアウトがフリートの外にある場合は、データセットとしてインポートします。先にフォーマット用の extra をインストールしてください。

```bash theme={null}
pip install "avala[rosbag]"
avala import rosbag ./rollout_0412.bag --name "Rollouts 0412" --slug rollouts-0412 --wait

pip install "avala[lerobot]"
avala import lerobot --repo-id your-hf-user/your-rollouts --name "Rollouts" --slug rollouts --wait
```

LeRobot インポーターの詳細は[エクスポート](/docs/ja/fleet-learning/exports.md)で説明しています。

## 評価ログをインポートする

オープンソースの評価ツールである [Inspect Robots](https://github.com/robocurve/inspect-robots) でポリシーを評価している場合は、その JSON 評価ログをインポートします。各試行（1 つのエポックにおける 1 つのシーン）が、1 つのシーケンスに[結果ラベル](/docs/ja/fleet-learning/sequence-metadata.md)を付けます。失敗した試行は、絞り込み、レビューし、収集作業に変えられるシーケンスになります。

```bash theme={null}
pip install "avala[inspect]"

# Preview the trial-to-outcome mapping. Reads the log only.
avala import inspect-robots logs/load-dishwasher_1a2b3c4d.json --dataset your-org/dishwasher-eval --dry-run

# Label the sequences that already exist in the dataset, one per trial
avala import inspect-robots logs/load-dishwasher_1a2b3c4d.json --dataset your-org/dishwasher-eval

# Or create the dataset from each trial's recorded actions, plus camera frames if the run stored them
avala import inspect-robots logs/load-dishwasher_1a2b3c4d.json --dataset your-org/dishwasher-eval --create
```

| Inspect Robots の試行 | 結果 |
| - | - |
| 成功スコアが `--success-threshold` 以上で、評価スコアが `--expert-threshold` 以上 | `expert_success` |
| 成功スコアが `--success-threshold` 以上で、評価スコアが `--expert-threshold` 未満 | `partial_success` |
| 成功スコアが `--success-threshold` 未満 | `failure` |
| 試行がエラーになった、またはキャンセルされた | `aborted` |
| 成功スコアラーが値を出さなかった | ラベルなし |

インポートされたラベルはすべて、`source` が `imported`、`evaluation_membership` が `held_out_eval`、`autonomy_level` が `autonomous` になります。`model_version` は実行のポリシーです。実行のタスクは、試行全体にわたる 1 つのサブタスクになります。人またはモデルが書いたラベルは、`--overwrite` を渡さない限り保持されます。オプションの完全な一覧は [CLI リファレンス](/docs/sdks/cli.md#inspect-robots-evaluation-logs)にあります。

## MCP サーバーでレコーディングとイベントを確認する

MCP サーバーはフリートデータを読み取ります。アシスタントに最近の失敗について尋ねるか、ツールを直接呼び出してください：

* レコーディングには `fleet_list_recordings` と `fleet_get_recording`
* `recording`、`device`、`type`、`severity` で絞り込んだ `fleet_list_events`
* フリート全体の概要には `get_fleet_health`

アップロードとイベントの作成は SDK または CLI で行います。接続方法は[AI で Avala を使う](/docs/ja/getting-started/mcp.md)をご覧ください。

## Avala がロールアウトで行うこと

以下のステップは、Avala がプログラムの一部として行うサービスです。これらを呼び出す API はありません。

1. **セグメンテーション。** Avala は各ロールアウトを、状態変化の点でシーケンスとサブタスクに分割します。お客様のイベントが失敗の瞬間の目印になります。
2. **ラベリング。** 各シーケンスに、その[シーケンスメタデータ](/docs/ja/fleet-learning/sequence-metadata.md)の両方の軸を付けます。技術的妥当性のチェックと結果ラベルです。
3. **クラスタリング。** Avala は、何がどのような条件でうまくいかなかったかによって失敗をグループ化します。クラスターは、お客様のプログラム用にバージョン管理された失敗タクソノミーに対応付けられます。新しいクラスターはタクソノミーを拡張します。
4. **ギャップ分析。** Avala は、失敗のクラスターを、既存のトレーニングデータと評価コホートのカバレッジと比較します。

## ギャップレポート

Avala は、ロールアウトのバッチごとにギャップレポートを納品します。

| セクション | 内容 |
| - | - |
| 範囲 | レコーディング、期間、モデルバージョン、タクソノミーのバージョン。 |
| 失敗タクソノミー | 各失敗モード、その定義、シーケンス例。 |
| 分布 | モードごと、モデルバージョンごと、カバレッジセルごとの失敗数と失敗率。 |
| 欠けているカバレッジ | 各失敗モードの背後にある[カバレッジセル](/docs/ja/fleet-learning/coverage.md)のうち、トレーニングデータに欠けている、または薄いもの。 |
| 提案する実験 | 優先度の高い失敗条件ごとに 1 つの[能力実験](/docs/ja/fleet-learning/capability-experiments.md)の草案。仮説と対象セルを含みます。 |

お客様はギャップレポートを確認し、優先順位を決めます。承認された実験が次の収集ブリーフになります。
