問題概要#
Phase 4でExternal Reactionsモデルが既に完成しているのに、Phase 5計画で古いエンジン/プロペラモデルを前提とした再実装を提案してしまいました。
原因#
Phase 5計画書がPhase 4の最終成果物を確認せず、Phase 4開始前の設計を前提として作成されたことが原因です。
詳細な原因#
- 成果物の未確認: Phase 4完成品(RC_UAV_200g.xml)の存在を確認しなかった
- 誤った引き継ぎ: 引き継ぎプロンプトに「エンジンファイル・プロペラファイルを用意できず失敗」という誤った認識が記載されていた
- 真の原因の未理解: Phase 4で判明した真の原因(FGTrimの制限)を理解していなかった
- 車輪の再発明: 完成品を無視して、ゼロから再実装しようとした
本来の状況:
- ✅ Phase 4で機体XML完成(External Reactions推力モデル)
- ✅ 手動トリム探索実装済み
- ✅ トリム状態取得成功
- ✅ エンジン/プロペラファイル不要(External Reactionsのため)
解決方法#
正しいアプローチ(Phase 5)#
Phase 4完成品を活用:
- RC_UAV_200g.xml(Phase 4完成品)をそのまま使用
- 手動トリム探索で得られたトリム状態を初期条件として設定
- FlightGearと接続して可視化
- エンジン/プロペラファイルは不要
実装時間: 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時間 → 大幅短縮)
教訓:
- Phase間引き継ぎ時に最終成果物を必ず確認
- 引き継ぎプロンプトに推測を含めない(事実のみ記載)
- 既存成果物の再利用可能性を最優先で検討
- 「車輪の再発明」チェックを計画レビューに含める
完成品を無視して再実装する前に、必ず成果物を確認することが重要です。
関連記事#
- 【トラブル備忘】JSBSim FGTrimがExternal Reactionsで動作しない - 公式制限の理解(記事E-14)
© 2025 Yaaasoh. All Rights Reserved.