Mapry M4-0 フォレンジック証拠プレゼンテーション
S/N: M4-00001 | 分析者: 劉 建志 | SDカード SHA256検証済み | syslog 218,000行超
標高約1,258m MSL | 24.5989°N, 121.0883°E | 91航点測量ミッション
| セッション | 種別 | 高度範囲(MSL) | 備考 |
|---|---|---|---|
| Session 0 | 地上待機 | 1,247〜1,250m | Home位置: 24.5989°N, 121.0883°E |
| Session 1 | 地上待機 | 1,247〜1,250m | GPS微動のみ |
| Session 2(飛行A) | 自動測量+RTL帰還 | 1,254〜1,406m | 91WP測量→WP#33でRTL→Home帰還 |
| Session 3(飛行B) | 宮田氏手動操縦 | 1,267〜1,388m | 樹木衝突寸前2〜3回→緊急中止 |
| 項目 | 値 |
|---|---|
| 緯度 | 24.5978400°N |
| 経度 | 121.0868956°E |
| 高度MSL | 1,337.80m |
| 推定AGL | 約79m(1338−1259) |
| イベント | BATT_CAPACITY誤設定によりSOC%誤判定 → RTL強制発動 → Home帰還・着陸 |
| WP# | 種別 | 緯度 | 経度 | 高度(AGL) |
|---|---|---|---|---|
| 0 | Home | 24.59888 | 121.0883 | 1258.68m MSL |
| 3 | WP | 24.60006 | 121.0876 | 60.00m |
| 6 | WP | 24.60020 | 121.0874 | 68.55m |
| 8 | WP | 24.60029 | 121.0872 | 71.57m |
| 10 | WP | 24.60036 | 121.0871 | 72.58m |
| 12 | WP | 24.60030 | 121.0873 | 69.09m |
| 14 | WP | 24.60025 | 121.0875 | 63.02m |
| 34 | WP | 24.60095 | 121.0863 | 63.99m |
| 36 | WP | 24.60097 | 121.0863 | 64.44m |
| 88 | WP | 24.60196 | 121.0870 | 60.00m |
| 90 | RTL | MAV_CMD_NAV_RETURN_TO_LAUNCH | ||
正常範囲: 185〜875 | 全計測で上限を超過
磁力計(Compass)はEKF(拡張カルマンフィルタ)で方位を推定する中核センサー。上限875を最大5.2倍超過する状態では、機体の方位制御が正常に機能しない。
原因:分解写真(IMG_8240〜8247)により、電源線と信号線が遮蔽なしで密着配線されていることを確認。Here4 GNSSモジュールから5cm未満の位置にモーター電源線(ピーク182A)が通過している。
RPi時計凍結のためログ上"Dec 19"。実際は2026/2/3。
ハードウェアの欠陥を修正する代わりに、ソフトウェアで安全機構を系統的に無効化
| パラメータ | Mapry設定 | 正常値(6S) | 効果 |
|---|---|---|---|
| BATT_CAPACITY | 3,300 | 35,000 | SOC%が3.6分で0%表示 |
| BATT_CRT_VOLT | 0 | 約20V | 危急電圧でも無反応 |
| BATT_FS_CRT_ACT | 0 | 2(着陸) | 電池枯渇でも着陸しない |
| BATT_ARM_VOLT | 0 | 約21V | 低電圧でも離陸可能 |
| BATT_LOW_MAH | 0 | 約10,500 | 低容量でも無反応 |
意図的バイパスの証拠:BATT_CAPACITYを修正せずにFailsafe自体を無効化した。
ARMING_CHECK = 4364(bitmask)→ 20項目中わずか4項目のみ有効。
さらに set_boot_init_params.sh がsystemdサービスとして起動時に自動でパラメータを変更(bash_history Line 450〜527で確認)。
結果:磁力計4,509(上限の5.2倍)でもARM許可 → 飛行可能。
Mapry自社APPでは電池電圧・SOC%・Failsafe警告が一切表示されない → 事実上のブラインドフライト。
SOC% = (BATT_CAPACITY − used_mAh) / BATT_CAPACITY × 100| 飛行時間 | 消費(mAh) | ArduPilot表示 | 実際SOC% | 偏差 |
|---|---|---|---|---|
| 1分 | 917 | 72% | 97.4% | −25% |
| 3.6分 | 3,300 | 0%(電池空と判定) | 90.6%(ほぼ満充電) | −91% |
| 5分 | 4,583 | 0%(クランプ) | 86.9% | — |
| 10分 | 9,167 | 0%(クランプ) | 73.8% | — |
離陸後わずか3.6分で「電池残量0%」と表示。実際にはまだ90%以上残存。
| Boot# | PreArm件数 | 主要エラー |
|---|---|---|
| 14〜19 | 18〜72件 | Compass not healthy 連続 |
| 21 | 73件 | Need Position Estimate ×73 |
| 22〜23 | 62〜128件 | 磁力計898〜1826 + Battery critical |
| 24〜29 | 17〜45件 | 磁力計989〜3220 + Battery critical |
| 30 | 538件 | 1セッションで538件のPreArmエラー |
| 31〜36 | 11〜60件 | 磁力計997〜2815 + GCS Failsafe |
| 37 | 82件 | 磁力計異常のまま飛行テスト強行 |
| 欠陥 | 出荷前(日本) | 事故当日(台湾) | 改善 |
|---|---|---|---|
| 磁力計超過 | 898〜4,509(5.2倍) | 947〜4,285(4.9倍) | なし |
| Battery低電圧 | 101回(地上2.5h) | 48回(地上) | なし |
| GCS Failsafe | 24回以上 | 18回 | なし |
| Radio Failsafe | 5回 | アンテナ脱落 | 悪化 |
| BATT_CAPACITY | 3,300(誤) | 3,300(未修正) | なし |
これは「設定ミス」や「過失」ではない。
ハードウェアエラーを繰り返し確認した上で、
ソフトウェアにより安全機構を系統的に無効化し、
出荷を可能にした意図的な行為である。