問題概要#

Phase 4でExternal Reactionsモデルが既に完成しているのに、Phase 5計画で古いエンジン/プロペラモデルを前提とした再実装を提案してしまいました。

原因#

Phase 5計画書がPhase 4の最終成果物を確認せず、Phase 4開始前の設計を前提として作成されたことが原因です。

詳細な原因#

  1. 成果物の未確認: Phase 4完成品(RC_UAV_200g.xml)の存在を確認しなかった
  2. 誤った引き継ぎ: 引き継ぎプロンプトに「エンジンファイル・プロペラファイルを用意できず失敗」という誤った認識が記載されていた
  3. 真の原因の未理解: Phase 4で判明した真の原因(FGTrimの制限)を理解していなかった
  4. 車輪の再発明: 完成品を無視して、ゼロから再実装しようとした

本来の状況:

  • ✅ Phase 4で機体XML完成(External Reactions推力モデル)
  • ✅ 手動トリム探索実装済み
  • ✅ トリム状態取得成功
  • ✅ エンジン/プロペラファイル不要(External Reactionsのため)

解決方法#

正しいアプローチ(Phase 5)#

Phase 4完成品を活用:

  1. RC_UAV_200g.xml(Phase 4完成品)をそのまま使用
  2. 手動トリム探索で得られたトリム状態を初期条件として設定
  3. FlightGearと接続して可視化
  4. エンジン/プロペラファイルは不要

実装時間: 1-2時間(Phase 5計画の見積もり5-8時間に対し大幅短縮)

Phase 5計画の誤った提案(実施不要)#

以下の作業はすべて不要:

  • ❌ エンジンファイル(electric_motor_200g.xml)作成
  • ❌ プロペラファイル(prop_5inch.xml)作成
  • ❌ 推力データの重複調査
  • ❌ トリム計算の重複実装

理由: External Reactionsモデルは推進系ファイル不要、トリム探索も実装済み

教訓#

1. Phase間の引き継ぎ時に最終成果物を必ず確認#

確認すべき項目:

  • 完成したファイルの実在確認(ファイルパス、サイズ、最終更新日)
  • 動作確認結果(テスト実行ログ、スクリーンショット)
  • 実装された機能の一覧

悪い例:

Phase 4は失敗しました。エンジンファイルが準備できませんでした。

良い例:

Phase 4完了:
- 成果物: out_phase3_final/RC_UAV_200g/RC_UAV_200g.xml(実在確認済み)
- 推力モデル: External Reactions(エンジンファイル不要)
- トリム探索: 手動実装済み(test_manual_trim_search.py)
- 動作確認: トリム状態取得成功(ログ参照: trim_result.log)

2. 引き継ぎプロンプトに推測を含めない#

悪い例:

エンジンファイルを用意できなかったため、Phase 4は失敗した。

良い例:

Phase 4の真の原因: FGTrimがExternal Reactionsに対応していない(JSBSim Issue #1010)
解決方法: 手動トリム探索を実装(scipy.optimize使用)
結果: 成功(RC_UAV_200g.xmlでトリム状態取得完了)

3. 既存成果物の再利用可能性を最優先で検討#

新規Phase計画作成前に、以下を確認:

  • 前Phaseの成果物は再利用可能か?
  • 新規実装は本当に必要か?
  • 既存成果物を修正・拡張する方が効率的ではないか?

4. 「車輪の再発明」チェックを計画レビューに含める#

チェック項目:

  • この作業は既に完了していないか?
  • 同じ機能が別の形で実装されていないか?
  • 過去のPhaseで作成されたコード・ファイルを活用できないか?

まとめ#

Phase 5計画の誤認問題は、Phase 4完成品の未確認が根本原因です。

原因:

  • Phase 4最終成果物(RC_UAV_200g.xml)を確認しなかった
  • 引き継ぎプロンプトに誤った認識(推測)が記載されていた
  • 真の原因(FGTrimの制限)を理解していなかった

正しいアプローチ:

  • Phase 4完成品をそのまま使用
  • 手動トリム探索の結果を初期条件に設定
  • エンジン/プロペラファイル不要(External Reactionsのため)
  • 実装時間: 1-2時間(5-8時間 → 大幅短縮)

教訓:

  1. Phase間引き継ぎ時に最終成果物を必ず確認
  2. 引き継ぎプロンプトに推測を含めない(事実のみ記載)
  3. 既存成果物の再利用可能性を最優先で検討
  4. 「車輪の再発明」チェックを計画レビューに含める

完成品を無視して再実装する前に、必ず成果物を確認することが重要です。


関連記事#

  • 【トラブル備忘】JSBSim FGTrimがExternal Reactionsで動作しない - 公式制限の理解(記事E-14)

© 2025 Yaaasoh. All Rights Reserved.