目次
AWS IoT FleetWise 完全ガイド v2.0
初心者から実務者向けの包括的解説
AWS IoT FleetWise は、自動車・商用車フリートから CAN バス・OBD-II・ROS2・カメラ・LiDAR データを選択的に収集・標準化し、クラウドで分析する車両フリート管理プラットフォームです。常時全データ送信ではなく「急ブレーキ検出時に前後 30 秒のセンサー全て送信」等の条件ベース収集で帯域・通信コストを最小化(従来比 70% 削減)。SageMaker との統合で自動運転・予知保全・ドライバー行動分析モデルを構築。Edge Agent による車載処理で通信断環境での継続動作。自動車メーカー・フリート管理・オートテック企業向けのエンタープライズグレードの車両データプラットフォームです。
目次
- 概要
- IoT FleetWise が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- 主要ユースケース
- Signal Catalog 設計
- Decoder Manifest
- Campaign 設定
- Edge Agent 詳細
- 設定・操作の具体例
- Vision System Data
- 類似サービス比較表
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース・参考文献
- 実装例・チェックリスト
- まとめ
概要
AWS IoT FleetWise とは
AWS IoT FleetWise は 車両データ収集・整理・分析の統合プラットフォーム として機能し、以下を統合提供します:
- Signal Catalog: 車両データモデルの定義(エンジン回転数・速度・ブレーキ圧等)
- Decoder Manifest: CAN バス / OBD-II シグナル ↔ Signal Catalog のマッピング
- Vehicles & Fleets: 車両・フリート登録・グループ管理
- Campaigns: 時間ベース / 条件ベースの収集ルール定義・デプロイ
- Edge Agent: 車載で動作。通信断時のローカル処理・選択的送信
- Timestream / S3 Integration: 高スループット時系列 DB + 大容量ストレージ
- API: 走行データの取得・分析・命令送信
ユースケースの広がり
- OEM(自動車メーカー): コネクテッドカー 100万台からのテレメトリ収集
- Tier 1 サプライヤー: コンポーネント(トランスミッション・ブレーキ)開発向けの走行データ
- フリート管理(物流・タクシー): 燃費・安全運転・予知保全データ
- テレマティクス: ドライバー保険向けの運転評価データ
- 自動運転企業: AV モデル開発向けの大量センサーデータ
- EV メーカー: バッテリー劣化・充電パターン分析
IoT FleetWise が解決する課題
| 課題 | 従来の方法 | IoT FleetWise での解決 |
|---|---|---|
| 大量センサーデータの通信コスト | 常時全シグナル送信 → $100-500/車両/月 | 条件ベース送信 → $5-20/車両/月(70% 削減) |
| CAN バス・OBD-II の標準化 | メーカーごとに異なるフォーマット管理 | Signal Catalog で統一。自動スケーリング |
| 走行データの品質・タイムライン | 複数ベンダーツール・フォーマット混在 | Signal Catalog で統一フォーマット・タイムスタンプ |
| Edge での条件判定の複雑性 | センサーデータ全て送信 → クラウド判定 | Edge Agent で「急ブレーキ検出」等をローカル実行 |
| 通信断環境での動作 | Wi-Fi 切れたら停止。データ損失 | Edge Agent がローカルバッファ・再接続時送信 |
| デバイス多様性管理 | 同一モデルの車でも年式・仕向地で異なる | Fleet Provisioning で自動登録・設定 |
| データセット構築の時間 | 月単位で手動データ収集・整理 | 自動で標準化→ ML 学習用データセット準備完了 |
主な特徴
✅ インテリジェントデータ収集
常時全データ送信ではなく、条件をトリガーに必要なデータのみを送信:
通常時(毎分):
- エンジン回転数
- 速度
- 燃料量
→ 1KB/分 のデータ
急ブレーキ検出(条件トリガー):
- 前 30 秒 + 後 30 秒の全シグナル(エンジン・ブレーキ・ステアリング・ABS等)
→ 60KB の追加データ送信
→ 全センサー常時送信比で 99% 削減
✅ CAN バス・OBD-II 対応
多くの自動車メーカーのプロトコルに統一対応:
✓ CAN 2.0B (ISO 11898-1)
✓ CAN FD (Flexible Data-rate)
✓ OBD-II (ISO 14230 / ISO 15765)
✓ Ethernet / Automotive Ethernet (100Mbps)
✓ ROS 2(車両 Robot Operating System)
✅ Vision System Data(カメラ・LiDAR)
2025 年新機能:カメラ・レーダ・LiDAR からの動画・ポイントクラウド収集:
- ✓ Camera: MP4 動画・画像フレーム
- ✓ LiDAR: ポイントクラウド(.pcd / .ply)
- ✓ Radar: 検出オブジェクト(JSON)
- ✓ Automatic Sync: センサーデータとの自動同期タイムスタンプ
✅ Edge Agent(車載処理)
Automotive Grade Linux(AGL)/ ROS 2 での実行:
- ✓ CAN データ → シグナル変換(Decoder)
- ✓ 条件判定: if (speed > 100 && accel < -0.8) then [send burst data]
- ✓ ローカルバッファ: Wi-Fi 切断時も 1-7 日のバッファ保持
- ✓ 暗号化送信: TLS 1.3 over MQTT
✅ Timestream 統合
高スループット時系列データベース(4000 TPS/車両):
✓ 自動スケーリング(10万車両 × 10 Hz = 100万 TPS 対応)
✓ 即座にクエリ可能(インデックスなし)
✓ ホット・コールド階層化(最近 1 ヶ月はホット・その他はコールド)
✓ SageMaker との直接連携で ML 学習
✅ Cellular IoT 対応(LTE-M・NB-IoT)
Wi-Fi 非搭載車向けのセルラー通信サポート:
- ✓ LTE-M: 低帯域・低消費電力・長距離対応
- ✓ NB-IoT: IoT 専用低速通信(50-250 kbps)
- ✓ eSIM: リモートから通信事業者切り替え
- ✓ Cost 最適化: セルラー + 条件ベース送信で月額 $15-30/車両
アーキテクチャ
┌─────────────────────────────────────────────────────────────┐
│ 車両(コネクテッドカー) │
├─────────────────────────────────────────────────────────────┤
│ CAN Bus / OBD-II / Ethernet / ROS 2 / Camera / LiDAR │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ AWS IoT FleetWise Edge Agent │ │
│ │ ┌────────────────────────────────────────────────┐ │ │
│ │ │ Signal Decoder: CAN → Signal Catalog マッピング │ │ │
│ │ ├────────────────────────────────────────────────┤ │ │
│ │ │ Condition Evaluator: if (speed > 100) ... │ │ │
│ │ ├────────────────────────────────────────────────┤ │ │
│ │ │ Local Buffer: Wi-Fi 断時バッファ (1-7 days) │ │ │
│ │ ├────────────────────────────────────────────────┤ │ │
│ │ │ TLS Encryption: MQTT over TLS 1.3 │ │ │
│ │ └────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└────────────────┬─────────────────────────────────────────────┘
│
┌─────────────▼──────────────────┐
│ AWS IoT FleetWise (Cloud) │
├────────────────────────────────┤
│ Signal Catalog │
│ Decoder Manifest │
│ Campaign Management │
│ Fleet Provisioning │
└────────────┬────────────────────┘
│
┌─────────────┼─────────────┬─────────────┐
│ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Timestream S3 SageMaker Grafana
時系列 DB 大容量 ML 学習 ダッシュ
ストレージ ボード
コアコンポーネント
1. Signal Catalog(シグナルカタログ)
車両データモデルの定義。Branch(フォルダ)と Sensor(実値)で階層構造:
{
"name": "automotive-signal-catalog",
"nodes": [
{
"branch": {
"fullyQualifiedName": "Vehicle",
"description": "Vehicle root"
}
},
{
"branch": {
"fullyQualifiedName": "Vehicle.Engine",
"description": "Engine data"
}
},
{
"sensor": {
"fullyQualifiedName": "Vehicle.Engine.RPM",
"dataType": "UINT16",
"description": "Engine revolutions per minute",
"unit": "rpm",
"min": 0,
"max": 8000
}
},
{
"sensor": {
"fullyQualifiedName": "Vehicle.Speed",
"dataType": "FLOAT",
"unit": "km/h",
"min": 0,
"max": 300
}
},
{
"sensor": {
"fullyQualifiedName": "Vehicle.Brake.PedalPosition",
"dataType": "FLOAT",
"unit": "%",
"min": 0,
"max": 100
}
},
{
"sensor": {
"fullyQualifiedName": "Vehicle.Transmission.Gear",
"dataType": "STRING",
"enum": ["P", "R", "N", "D", "S", "L"]
}
}
]
}
特性:
- Fully Qualified Name で階層パス定義(ドット区切り)
- データ型: UINT8 / INT16 / FLOAT / STRING / DOUBLE / LONG
- ユニット: rpm・km/h・°C・V・A 等
- Min / Max: 値の範囲バリデーション
2. Decoder Manifest(デコーダーマニフェスト)
CAN バス → Signal Catalog シグナル のマッピング:
{
"name": "vehicle-decoder",
"modelManifestArn": "arn:aws:iotfleetwise:...:model-manifest/automotive-signal-catalog",
"signalDecodersToAdd": [
{
"fullyQualifiedName": "Vehicle.Engine.RPM",
"type": "CAN_SIGNAL",
"canSignal": {
"messageId": 0x100, // CAN ID
"isBigEndian": true,
"isSigned": false,
"startBit": 0,
"offset": 0, // オフセット (値の変換)
"factor": 0.25, // スケール係数
"length": 16 // ビット長
}
},
{
"fullyQualifiedName": "Vehicle.Speed",
"type": "CAN_SIGNAL",
"canSignal": {
"messageId": 0x200,
"isBigEndian": true,
"isSigned": false,
"startBit": 0,
"factor": 0.1,
"length": 16
}
}
]
}
CAN 信号の計算式:
Physical Value = (Raw Value × Factor) + Offset
例: RPM = (Raw_RPM × 0.25) + 0
例: Speed = (Raw_Speed × 0.1) + 0
3. Vehicle(車両登録)
{
"vehicleName": "vehicle-001",
"modelManifestArn": "arn:aws:iotfleetwise:...:model-manifest/automotive-signal-catalog",
"decoderManifestArn": "arn:aws:iotfleetwise:...:decoder-manifest/vehicle-decoder",
"attributes": {
"make": "Toyota",
"model": "Prius",
"year": "2024",
"vin": "JTDRF5C50L5123456",
"gpsDeviceId": "device-001",
"oilChangeInterval": "10000" // カスタム属性
}
}
4. Fleet(フリート)
複数車両をグループ化:
{
"fleetName": "taxi-fleet-tokyo",
"description": "Tokyo taxi fleet for ride-sharing",
"signalCatalogArn": "arn:aws:iotfleetwise:...:signal-catalog/automotive-signal-catalog",
"vehicles": [
"vehicle-001",
"vehicle-002",
"vehicle-003"
]
}
5. Campaign(キャンペーン)
データ収集ルールの定義・デプロイ:
{
"name": "hard-braking-detection",
"targetArn": "arn:aws:iotfleetwise:...:fleet/taxi-fleet-tokyo",
"signalCatalogArn": "arn:aws:iotfleetwise:...:signal-catalog/automotive-signal-catalog",
"collectionScheme": {
"conditionBasedCollectionScheme": {
"expression": "(Vehicle.Brake.PedalPosition > 80) && (Vehicle.Speed > 30)",
"triggerMode": "RISING_EDGE", // 条件成立時のみ
"conditionLanguageVersion": 1,
"minimumTriggerIntervalMs": 5000 // 5 秒以内の連続トリガー防止
}
},
"signalsToCollect": [
{
"name": "Vehicle.Speed",
"maxSampleCount": 200, // 最大 200 サンプル
"minimumSamplingIntervalMs": 100 // 0.1 秒ごと
},
{
"name": "Vehicle.Engine.RPM",
"maxSampleCount": 200,
"minimumSamplingIntervalMs": 100
},
{
"name": "Vehicle.Brake.PedalPosition",
"maxSampleCount": 200,
"minimumSamplingIntervalMs": 50 // より高速サンプリング
},
{
"name": "Vehicle.Transmission.Gear"
}
],
"dataDestinationConfigs": [
{
"timestreamConfig": {
"timestreamTableArn": "arn:aws:timestream:us-east-1:...:database/FleetWiseDB/table/VehicleData",
"executionRoleArn": "arn:aws:iam::...:role/FleetWiseRole"
}
},
{
"s3Config": {
"bucket": "fleet-data-bucket",
"prefix": "hard-braking-events/",
"executionRoleArn": "arn:aws:iam::...:role/FleetWiseRole"
}
}
],
"startTime": "2024-05-01T00:00:00Z",
"expiryTime": "2024-12-31T23:59:59Z"
}
収集スキーム種類:
- Time-based: 10 秒ごと → 定期的なデータ
- Condition-based: if (speed > 100) → イベントドリブン
- Hybrid: 両者の組み合わせ
主要ユースケース
✅ 1. 自動運転・先進運転支援システム(ADAS)開発
データ収集:
- 急ブレーキ・急ハンドル イベント時の全センサーデータ
- カメラ映像・LiDAR ポイントクラウド
- GPS 位置・天気・路面状態
用途:
- SageMaker で CNN モデル学習(画像認識)
- 走行パターン分析→ ADAS アルゴリズム改善
効果:
- テスト車両 10 台 → 月 100TB データ自動収集
- モデル精度向上 5-10%
✅ 2. 予知保全(Predictive Maintenance)
監視信号:
- エンジン温度・油圧・回転数
- トランスミッション挙動
- ブレーキシステム圧力
分析:
- Timestream でトレンド分析
- SageMaker で故障予測モデル構築
- 「部品交換までの走行距離」予測
効果:
- 故障率 30% 削減
- 修理コスト $500/車両/年 削減
✅ 3. ドライバー行動分析・安全スコアリング
監視信号:
- 急加速・急ブレーキ検出
- 信号無視・速度超過
- ハンドル操作の急激性
分析:
- ドライバー別安全スコア(0-100)
- リスクランク分類(Safe / Caution / Risk)
- 保険料算出
効果:
- 安全ドライバー: 保険料 10-20% 割引
- 危険運転検出率 95%
✅ 4. EV バッテリー劣化予測
監視信号:
- 充放電曲線・温度・電圧
- 内部抵抗(セル不均衡)
- 充電速度・深放電回数
分析:
- バッテリー劣化度(SOH: State of Health)
- 残寿命予測(RUL: Remaining Useful Life)
- バッテリー交換時期通知
効果:
- バッテリー劣化を 6 ヶ月前に検知
- 交換コスト最適化(早期・遅延交換回避)
✅ 5. 燃費最適化・CO2 削減
監視信号:
- 走行パターン(市街地・高速・郊外)
- エンジン效率・ギア選択
- 外気温・交通渋滞状況
分析:
- 走行距離別燃費ランキング
- ドライバー別燃費改善提案
- ルート最適化
効果:
- フリート燃費 5-15% 改善
- CO2 排出量 10% 削減
- 年間燃料コスト $5000/100台削減
✅ 6. OEM 品質改善・リコール対応
監視信号:
- 異常振動・異音(オーディオ分析)
- 電装系の異常コード(DTC)
- トランスミッション不具合
分析:
- リコール対象部品の早期検知
- 大量デプロイ前の潜在問題発見
- サプライチェーン品質改善
効果:
- リコールコスト $10-50M/年 削減
- ブランド信頼度向上
✅ 7. フリート管理・運行効率化
監視信号:
- 走行時間・走行距離・停止時間
- 回転数・アイドル時間
- ドアオープン・バック時間
分析:
- 車両稼働率(年 70-90%)
- ドライバー生産性スコア
- メンテナンススケジュール最適化
効果:
- 車両稼働時間 20% 向上
- ドライバー管理コスト 30% 削減
✅ 8. 自動車盗難防止・GPS 追跡
監視信号:
- GPS 位置・速度
- エンジン状態(ON / OFF)
- ドア・イグニッション操作
分析:
- 異常走行パターン検出(夜間・異常速度)
- 盗難の兆候検知
- リアルタイム GPS トラッキング
効果:
- 盗難検知速度 < 5 分
- 盗難率 60% 削減
✅ 9. V2X(Vehicle-to-Everything)通信テスト
監視信号:
- 他車との通信ログ
- 路側機(RSU)との通信
- インフラセンサー情報
分析:
- 通信安定性・遅延分析
- 協調運転シミュレーション
- C-V2X / DSRC 規格検証
効果:
- 協調運転テストコスト 40% 削減
- 通信信頼度 99.9% 達成
✅ 10. 車両ダイナミクス研究(研究機関向け)
監視信号:
- 加速度(3 軸)・角速度
- 操舵角・サスペンション圧
- タイヤ温度・グリップ
分析:
- 車両動力学モデル改善
- サスペンション設計最適化
- タイヤ性能テスト
効果:
- ハンドリング特性向上
- 安全性マージン 10-15% 向上
✅ 11. 商用車(トラック・バス)の遠隔診断
監視信号:
- エンジンオイル温度・圧力
- ブレーキ圧力・パッド摩耗度
- ミッション油温・スリップ
分析:
- 整備時期の自動判定
- 部品交換の優先度付け
- 出張修理の事前通知
効果:
- ダウンタイム 50% 削減
- 修理予約効率 40% 向上
✅ 12. 配送・物流の可視化・最適化
監視信号:
- GPS 位置・走行経路
- 配送停止時間・ドア開閉回数
- 冷蔵車温度・湿度(生鮮物流向け)
分析:
- ドライバー効率スコア
- 最適ルート提案
- 配送遅延の早期予測
効果:
- 配送時間 10-20% 短縮
- ドライバー給与最適化 5%
Signal Catalog 設計
階層構造の設計方針
❌ フラット設計(スケール困難)
Vehicle.RPM
Vehicle.Speed
Vehicle.TorqueConvert_Temperature
Vehicle.TransmissionFluidTemp
✅ 階層設計(保守性・スケール性)
Vehicle
├── Engine
│ ├── RPM
│ ├── Temperature
│ ├── OilPressure
│ └── FuelConsumption
├── Transmission
│ ├── Gear
│ ├── FluidTemp
│ └── TorqueOut
├── Brake
│ ├── PedalPosition
│ ├── Pressure
│ └── PadWear
├── Suspension
│ ├── FrontLeft_Pressure
│ ├── FrontRight_Pressure
│ ├── RearLeft_Pressure
│ └── RearRight_Pressure
└── Environmental
├── ExternalTemp
├── Humidity
└── AmbientLight
データ型の選択
{
"dataType": "UINT8", // 0-255 (1 byte) - 状態フラグ・ギア
"dataType": "INT16", // -32768-32767 (2 bytes) - 温度・圧力
"dataType": "UINT16", // 0-65535 (2 bytes) - RPM・速度
"dataType": "FLOAT", // 単精度浮動小数点 - センサー値の変換
"dataType": "DOUBLE", // 倍精度浮動小数点 - 高精度(GPS 座標)
"dataType": "LONG", // 64 bit 整数 - ミリ秒タイムスタンプ
"dataType": "STRING" // テキスト - VIN・エラーコード
}
Unit(ユニット)定義
速度: km/h, m/s, mph, knots
回転数: rpm, rad/s
温度: °C, °F, K
圧力: bar, psi, kPa, Pa
電圧: V, mV
電流: A, mA
電力: W, kW
エネルギー: J, kWh
燃料: L, gal
距離: km, m, mile
時間: ms, s, h
加速度: m/s², g
角速度: rad/s, °/s
Decoder Manifest
CAN フレーム構造の理解
CAN Message ID: 0x123 (291 decimal)
DLC: 8 (Data Length: 8 bytes = 64 bits)
Byte Layout:
┌────┬────┬────┬────┬────┬────┬────┬────┐
│ B0 │ B1 │ B2 │ B3 │ B4 │ B5 │ B6 │ B7 │
└────┴────┴────┴────┴────┴────┴────┴────┘
Bit: 0-7 8-15 16-23 ... 63
Signal "RPM":
- startBit: 0 (Byte 0 の Bit 0 から開始)
- length: 16 bits
- isBigEndian: true
- factor: 0.25
- offset: 0
計算例:
Raw data (Hex): 0x04 0x00 = 0x0400 (Big Endian)
= 1024 (decimal)
Physical = 1024 × 0.25 + 0 = 256 rpm
マルチバイト信号のマッピング
{
"fullyQualifiedName": "Vehicle.Engine.RPM",
"type": "CAN_SIGNAL",
"canSignal": {
"messageId": 256, // 0x100
"isBigEndian": true, // Motorola byte order
"isSigned": false,
"startBit": 0,
"offset": 0,
"factor": 0.25,
"length": 16
}
}
Campaign 設定
条件ベース収集の Expression
-- Expression Language (JavaScript-like)
-- 単純な条件
Vehicle.Speed > 100
-- AND / OR 組み合わせ
(Vehicle.Brake.PedalPosition > 80) && (Vehicle.Speed > 30)
-- 複雑な条件
(Vehicle.Engine.RPM > 6000) ||
(Vehicle.Transmission.Gear == "S") && (Vehicle.Speed > 150)
-- 関数利用(計画中)
abs(Vehicle.Acceleration) > 0.8 // 急加速・急ブレーキ
データ蓄積・転送戦略
┌────────────────────────────────────┐
│ Edge Agent(車載) │
├────────────────────────────────────┤
│ Local Buffer (SSD) │
│ • 7 日分のコンディション満たさない│
│ データ保持 │
│ • サイズ: 最大 50GB │
├────────────────────────────────────┤
│ Condition Evaluator │
│ • 条件チェック: 100ms ごと │
│ • トリガー時: バースト送信 (1MB) │
├────────────────────────────────────┤
│ Network Manager │
│ • Wi-Fi 優先・セルラーフォールバック
│ • オフピーク時間帯での送信 │
│ • 圧縮率: 70% │
└────────────────────────────────────┘
Edge Agent 詳細
Edge Agent の構成
AWS IoT FleetWise Edge Agent
├── Signal Decoder
│ ├── CAN バス受信
│ ├── Decoder Manifest マッピング
│ └── Raw → Signal 変換
├── Campaign Engine
│ ├── Condition Evaluator
│ └── Collection Executor
├── Local Data Store
│ ├── SSD バッファ(1-7 日)
│ └── 消費電力最適化
├── Connectivity Manager
│ ├── MQTT over TLS 1.3
│ ├── Auto-reconnect(指数バックオフ)
│ └── Cellular / Wi-Fi 自動選択
└── Security
├── X.509 証明書認証
├── データ暗号化(TLS + AES-256)
└── Over-the-Air(OTA)更新対応
Automotive Grade Linux(AGL)への統合
# AGL での Edge Agent インストール
wget https://github.com/aws/aws-iot-fleetwise-edge/releases/\
download/v1.2.0/aws-iot-fleetwise-edge-arm64.tar.gz
tar -xzf aws-iot-fleetwise-edge-arm64.tar.gz
sudo ./install.sh
# コンフィグ設定
cat > /etc/aws-iot-fleetwise/config.json << 'EOF'
{
"vehicleName": "vehicle-001",
"region": "us-east-1",
"certificatePath": "/opt/aws-iot-fleetwise/certs/device.pem",
"privateKeyPath": "/opt/aws-iot-fleetwise/certs/private.key",
"canInterface": "vcan0",
"bufferSize": "50GB",
"sampleInterval": "100ms"
}
EOF
# サービス起動
sudo systemctl start aws-iot-fleetwise
sudo systemctl enable aws-iot-fleetwise
ROS 2 との連携
# ROS 2 Node として Edge Agent を動作
# Topic から Signal を抽出
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Imu
class FleetWiseNode(Node):
def __init__(self):
super().__init__('fleetwise_node')
self.subscription = self.create_subscription(
Imu, '/imu/data', self.imu_callback, 10)
self.fleetwise_publisher = self.create_publisher(
Float64, '/fleetwise/acceleration', 10)
def imu_callback(self, msg):
# IMU データ → FleetWise Signal 変換
acceleration = msg.linear_acceleration.x
self.fleetwise_publisher.publish(acceleration)
def main(args=None):
rclpy.init(args=args)
node = FleetWiseNode()
rclpy.spin(node)
if __name__ == '__main__':
main()
設定・操作の具体例
CLI による Campaign 作成
# 1. Signal Catalog 作成
aws iotfleetwise create-signal-catalog \
--name vehicle-signals \
--nodes file://signal-catalog.json
# 2. Fleet 作成
aws iotfleetwise create-fleet \
--fleet-name taxi-fleet \
--signal-catalog-arn arn:aws:iotfleetwise:...:signal-catalog/vehicle-signals
# 3. Vehicle 登録
aws iotfleetwise create-vehicle \
--vehicle-name vehicle-001 \
--model-manifest-arn arn:aws:iotfleetwise:...:model-manifest/vehicle-manifest \
--decoder-manifest-arn arn:aws:iotfleetwise:...:decoder-manifest/vehicle-decoder
# 4. Campaign 作成・デプロイ
aws iotfleetwise create-campaign \
--name hard-braking-capture \
--target-arn arn:aws:iotfleetwise:...:fleet/taxi-fleet \
--signal-catalog-arn arn:aws:iotfleetwise:...:signal-catalog/vehicle-signals \
--collection-scheme file://campaign.json \
--signals-to-collect file://signals.json \
--data-destination-configs file://destinations.json
# 5. Campaign デプロイ
aws iotfleetwise start-campaign \
--campaign-name hard-braking-capture
# 6. キャンペーン状態確認
aws iotfleetwise get-campaign \
--name hard-braking-capture
SDK(Python)での操作
import boto3
import json
client = boto3.client('iotfleetwise')
def create_and_deploy_campaign():
# Campaign 作成
response = client.create_campaign(
name='predictive-maintenance',
targetArn='arn:aws:iotfleetwise:...:fleet/fleet-001',
signalCatalogArn='arn:aws:iotfleetwise:...:signal-catalog/signals',
collectionScheme={
'timeBasedCollectionScheme': {
'periodMs': 10000 # 10 秒ごと
}
},
signalsToCollect=[
{
'name': 'Vehicle.Engine.Temperature',
'maxSampleCount': 100
},
{
'name': 'Vehicle.Engine.OilPressure',
'maxSampleCount': 100
}
],
dataDestinationConfigs=[
{
'timestreamConfig': {
'timestreamTableArn': 'arn:aws:timestream:...',
'executionRoleArn': 'arn:aws:iam::...:role/FleetWiseRole'
}
}
]
)
# Campaign デプロイ
client.start_campaign(name='predictive-maintenance')
return response
# 実行
campaign = create_and_deploy_campaign()
print(f"Campaign created: {campaign['campaignId']}")
Timestream クエリでデータ分析
-- 過去 24 時間の平均 RPM
SELECT measure_time, AVG(measure_value::double) as avg_rpm
FROM vehicle_data
WHERE measure_name = 'Vehicle.Engine.RPM'
AND measure_time > ago(24h)
GROUP BY measure_time, vehicle_id
ORDER BY measure_time DESC;
-- 急ブレーキイベントの抽出
SELECT measure_time, vehicle_id, measure_value::double as brake_pedal
FROM vehicle_data
WHERE measure_name = 'Vehicle.Brake.PedalPosition'
AND measure_value::double > 80
AND measure_time > ago(7d)
ORDER BY measure_time DESC
LIMIT 1000;
-- 複数シグナルの結合分析
SELECT v1.measure_time, v1.vehicle_id,
v1.measure_value::double as speed,
v2.measure_value::double as rpm,
v3.measure_value::double as brake_pedal
FROM vehicle_data v1
JOIN vehicle_data v2
ON v1.measure_time = v2.measure_time
AND v1.vehicle_id = v2.vehicle_id
JOIN vehicle_data v3
ON v1.measure_time = v3.measure_time
AND v1.vehicle_id = v3.vehicle_id
WHERE v1.measure_name = 'Vehicle.Speed'
AND v2.measure_name = 'Vehicle.Engine.RPM'
AND v3.measure_name = 'Vehicle.Brake.PedalPosition'
AND v1.measure_time > ago(1d)
LIMIT 10000;
IaC(Terraform)での構築
# Terraform: IoT FleetWise セットアップ
resource "aws_iotfleetwise_signal_catalog" "vehicle_signals" {
name = "vehicle-signals"
node {
branch {
fully_qualified_name = "Vehicle"
}
}
node {
sensor {
fully_qualified_name = "Vehicle.Engine.RPM"
data_type = "UINT16"
unit = "rpm"
}
}
node {
sensor {
fully_qualified_name = "Vehicle.Speed"
data_type = "FLOAT"
unit = "km/h"
}
}
}
resource "aws_iotfleetwise_fleet" "taxi_fleet" {
name = "taxi-fleet"
signal_catalog_arn = aws_iotfleetwise_signal_catalog.vehicle_signals.arn
}
resource "aws_iotfleetwise_campaign" "hard_braking" {
name = "hard-braking-detection"
fleet_arn = aws_iotfleetwise_fleet.taxi_fleet.arn
signal_catalog_arn = aws_iotfleetwise_signal_catalog.vehicle_signals.arn
collection_scheme {
condition_based_collection_scheme {
expression = "(Vehicle.Brake.PedalPosition > 80) && (Vehicle.Speed > 30)"
trigger_mode = "RISING_EDGE"
minimum_trigger_interval_ms = 5000
}
}
signals_to_collect {
name = "Vehicle.Speed"
max_sample_count = 200
minimum_sampling_interval_ms = 100
}
signals_to_collect {
name = "Vehicle.Brake.PedalPosition"
max_sample_count = 200
}
data_destination_configs {
timestream_config {
timestream_table_arn = aws_timestream_table.vehicle_data.arn
execution_role_arn = aws_iam_role.fleetwise.arn
}
}
}
Vision System Data
2025 年新機能:カメラ・レーダ・LiDAR からの動画・センサーデータ統合収集:
{
"name": "vision-system-campaign",
"targetArn": "arn:aws:iotfleetwise:...:fleet/av-testing-fleet",
"signalCatalogArn": "arn:aws:iotfleetwise:...:signal-catalog/vision-signals",
"collectionScheme": {
"conditionBasedCollectionScheme": {
"expression": "Vehicle.Perception.Confidence < 0.8", // 低信頼度検出時
"triggerMode": "RISING_EDGE",
"minimumTriggerIntervalMs": 1000
}
},
"dataDestinationConfigs": [
{
"s3Config": {
"bucket": "av-test-data",
"prefix": "vision-events/",
"compressionFormat": "GZIP"
}
}
],
"visionSystemDataInputs": [
{
"cameraDeviceId": "camera-front",
"dataFormat": "MP4",
"resolution": "1920x1080",
"frameRate": 30,
"bitRate": "5Mbps"
},
{
"lidarDeviceId": "lidar-top",
"dataFormat": "PCD",
"pointsPerSecond": 2000000,
"includeIntensity": true
}
]
}
類似サービス比較表
| 特性 | FleetWise | Cerence Drive | Sonatus Vehicle Cloud | Bosch Fleet Management | Fleet Complete |
|---|---|---|---|---|---|
| CAN / OBD-II | ✅ 完全対応 | ✅ 対応 | ✅ 対応 | ✅ 対応 | △ 限定的 |
| 条件ベース収集 | ✅ Expression | △ テンプレート | △ 限定 | ✅ ルールエンジン | △ 基本的 |
| Vision System | ✅ GA(2025) | △ 限定 | ✅ カメラ重視 | △ 非対応 | △ 非対応 |
| Edge Agent | ✅ AGL / ROS 2 | △ クラウド処理 | △ クラウド処理 | ✅ Edge 対応 | △ クラウド処理 |
| Cellular IoT | ✅ LTE-M/NB-IoT | △ Wi-Fi 主体 | △ 回線依存 | ✅ マルチ回線 | ✅ マルチ回線 |
| Data Cost | 💰 $5-30/車両/月 | 💰💰 $50-100/月 | 💰💰 $40-80/月 | 💰💰💰 $100+/月 | 💰💰 $30-60/月 |
| Timestream | ✅ 統合 | △ 外部 DB | △ 外部 DB | △ 独自 DB | △ 独自 DB |
| SageMaker | ✅ 統合 | △ API 連携 | △ API 連携 | △ 統合困難 | △ 統合困難 |
| 学習曲線 | 🟩 中程度 | 🟥 複雑 | 🟥 複雑 | 🟩 中程度 | 🟥 複雑 |
| マネージド | ✅ AWS マネージド | △ SaaS | ✅ SaaS | △ ハイブリッド | ✅ SaaS |
ベストプラクティス
✅ 1. Signal Catalog の設計・バージョン管理
❌ フラット&変更困難な Signal 定義
再デプロイ時に全キャンペーン停止必要
✅ 階層的・拡張性重視の Signal 設計
新 Signal 追加時も既存キャンペーン無影響
Version = Signal Catalog の更新日時で管理
✅ 2. Edge Agent のローカルバッファ活用
❌ Wi-Fi 断 = 全データ喪失
→ 通信コストのみ発生。エラーデータなし
✅ 条件ベース Collection + Local Buffer
→ イベント時の詳細データ保持
→ 再接続後の一括送信
→ 通信コスト大幅削減
✅ 3. Campaign の段階的デプロイ
❌ 全フリート同時に新 Campaign デプロイ
→ リソース枯渇・データ品質低下
✅ A/B テスト的な段階的デプロイ
→ 1% のフリートで 1 週間テスト
→ 品質確認後に 100% ロールアウト
✅ 4. Timestream の層化保存
ホット層(最近 1 ヶ月): SSD
→ 高速クエリ・SageMaker 学習
コールド層(1-12 ヶ月): HDD
→ 低コスト保存・アーカイブ
削除: 1 年以上前のデータ
→ コンプライアンス条件に応じて設定
✅ 5. データ圧縮・フィルタリング
# Edge Agent で送信前に圧縮・フィルタ
def preprocess_signals(signals):
# 1. ノイズ除去(移動平均)
signals = moving_average(signals, window=3)
# 2. 不要な精度削減(4 小数点 → 1 小数点)
signals = round_values(signals, precision=1)
# 3. GZIP 圧縮
signals = gzip_compress(signals)
# 結果: データサイズ 70% 削減
return signals
✅ 6. エラーハンドリング・リトライ戦略
接続失敗の段階的対応:
1. 即座リトライ(1 秒後)
2. 指数バックオフ(2・4・8・16 秒)
3. セルラー通信へのフォールバック
4. ローカルバッファへの保存
✅ 7. Security・認証管理
# デバイス証明書の自動ローテーション
aws iotfleetwise create-certificate \
--validity-period-days 365
# IAM ロール・ポリシー最小権限設定
{
"Effect": "Allow",
"Action": "iotfleetwise:GetCampaignData",
"Resource": "arn:aws:iotfleetwise:...:campaign/campaign-name"
}
トラブルシューティング
| 現象 | 原因 | 対策 |
|---|---|---|
| Edge Agent が起動しない | CAN インターフェース非検出 / 証明書エラー | ip link show vcan0 で確認。証明書パス検証 |
| Campaign が Campaign が展開されない | Signal Catalog との不一致 | Campaign の signals と Catalog の FQN 一致確認 |
| Timestream にデータが入らない | IAM ロール権限不足 / テーブル名誤り | IAM ポリシー・Timestream テーブル名を確認 |
| データ送信量が多すぎる | Condition 定義が緩すぎる | minimumTriggerIntervalMs を増加・Condition 再評価 |
| 通信が頻繁に断になる | セルラー電波品質低下 | Wi-Fi への切り替え検討・地域確認 |
| CAN シグナルの解析誤り | Decoder Manifest の factor / offset 誤り | CAN ドキュメントで bit layout 再確認 |
| Edge Agent のメモリ不足 | ローカルバッファサイズ過大 | バッファサイズを 10GB に削減 |
| S3 エクスポートが遅い | データサイズ × ファイル数が多すぎる | Parquet フォーマット・パーティション戦略見直し |
2025-2026 最新動向
📰 1. Vision System Data 正式 GA
- カメラ・LiDAR・レーダデータの統合収集が本格化
- 自動運転企業との連携強化
📰 2. Cellular IoT(LTE-M・NB-IoT)完全サポート
- Wi-Fi なし環境での運用効率化
- Cost per Vehicle さらに 20% 削減見通し
📰 3. SageMaker との深い統合
- Edge Agent での推論(オンデバイス ML)実装予定
- マルチモーダル学習(センサー + ビジョン)
📰 4. Zero Trust Vehicle Security
- デバイス証明書の短命化(24h rotate)
- V2X 通信の暗号化・認証強化
学習リソース・参考文献
公式ドキュメント(8+)
- AWS IoT FleetWise Developer Guide
- Key Concepts and Features
- Signal Catalog Design
- Decoder Manifest
- Campaign Configuration
- Edge Agent Setup
- AWS IoT FleetWise Pricing
- AWS IoT FleetWise FAQs
パートナー・ベンダー リソース(5+)
- AWS IoT FleetWise Edge GitHub
- ROS 2 Integration Guide
- Automotive Grade Linux(AGL)
- CAN Protocol Reference
- OBD-II Data Standards
実装例・チェックリスト
チェックリスト: IoT FleetWise 導入前評価
- [ ] 車両フリートが 100+ 台以上か?
- [ ] CAN バス / OBD-II データの収集が必要か?
- [ ] Edge 処理(条件ベース収集)で通信コスト削減 50%+ が可能か?
- [ ] SageMaker で走行データ分析が必要か?
- [ ] 自動運転・ADAS 開発が計画中か?
- [ ] Timestream + Grafana のダッシュボード が必要か?
- [ ] セルラー IoT(LTE-M・NB-IoT)対応が必要か?
チェックリスト: Signal Catalog・Campaign 設計
- [ ] Signal Catalog を階層的に設計(Vehicle > Engine > RPM)
- [ ] CAN ID・Bit Layout・Factor・Offset を正確にマッピング
- [ ] Campaign の条件 Expression を実装・テスト
- [ ] minimumTriggerIntervalMs を適切に設定(通信コスト vs データ品質)
- [ ] Timestream テーブル・S3 バケット作成済み
- [ ] IAM ロール・ポリシー設定(最小権限)
チェックリスト: Edge Agent 展開準備
- [ ] Automotive Grade Linux / ROS 2 環境構築済み
- [ ] Edge Agent のコンパイル・テスト完了
- [ ] CAN インターフェース(vcan0 等)確認
- [ ] デバイス証明書生成・Edge Agent に配置
- [ ] ローカルバッファサイズ設定(推奨 10-50GB)
- [ ] 通信テスト(Wi-Fi・セルラー両方確認)
チェックリスト: 本番運用準備
- [ ] Campaign を 1-5% のフリートで A/B テスト(1 週間)
- [ ] データ品質確認(Timestream でのクエリ結果が正常)
- [ ] Timestream の層化保存設定(ホット・コールド)
- [ ] SageMaker での ML パイプライン構築・テスト
- [ ] 監視・アラート設定(CloudWatch)
- [ ] Cost Estimation(車両数 × $5-30/月 + Timestream)
- [ ] ドキュメント・チーム教育完了
まとめ
AWS IoT FleetWise は、自動車・商用車フリート向けの統合データ収集・分析プラットフォームです。CAN バス・OBD-II・ROS2・ビジョンシステム(カメラ・LiDAR)から条件ベースで選択的にデータを収集し、Timestream・S3・SageMaker で大規模分析を実現。Edge Agent による車載処理で通信コストを 70% 削減、通信断環境での継続運用を確保します。
主な利点:
- 通信コスト削減: 常時全データ送信比で 70-90% 削減
- 自動運転開発加速: 月 10-100TB の標準化データを自動収集
- 予知保全: 故障予測で部品交換コスト 30-50% 削減
- ドライバー分析: 安全スコアリング・保険料最適化
- EV バッテリー監視: 劣化予測・寿命管理
- エンタープライズグレード: OEM・Tier 1・テレマティクス企業向けに最適
OEM・フリート管理企業・自動運転企業向けに、2026 年以降の標準的な車両データプラットフォーム として展開が加速します。
最終更新:2026-04-26 バージョン:v2.0