このプロジェクトについて

このリポジトリはフライトコントローラ全スタックのマルチリポジトリ向けアンブレラ(Umbrella)プロジェクトで、git submoduleにより9つの独立したサブリポジトリを取り込み、全体アーキテクチャ、プロジェクト説明、連携方法を集中管理する。サブリポジトリは独立して進化し、アンブレラプロジェクトはバージョンスナップショットとドキュメントのみを記録する。 プロジェクト構成: - flyctrl/:フライトコントローラファームウェア(Rust no_std、EKF、PID、フライトモード、FDIR、MAVLinkアップリンクを含む) - fly-simulater/:物理シミュレーションプラットフォーム(fly-sim-core、plant、controller、sensor、wind、SILを含む) - mcu_simulater/:MCU命令レベルシミュレータ(Unicorn STM32F407 + 仮想ペリフェラル I2C/UART/USB) - joc-base/:RTOSカーネル + ボードレベル(STM32F407 minimal、ファームウェアELFベース、devブランチ) - joc-rtos-app-sdk/:アプリケーションSDK(Rust no_std、ログ/デバイス/タスク、180Bログバッファ) - mavlink-core/:MAVLinkエンコード/デコード(フレーム/列挙/COMMAND_LONG) - physics/:物理エンジン phy-sdk(fly-sim-coreのオプション依存、SIL実物理) - groundctrl/:地上局(Rust) - joc-drvtest-app/:ドライバテストアプリケーション(ペリフェラルドライバデバッグ) クイックスタート: 1. サブモジュール初期化:`git submodule update --init --recursive` 2. ファームウェアビルド:`./scripts/build.sh real-sensors` または `./scripts/build.sh hil`、成果物は /tmp 配下 3. ワンクリック回帰:`./scripts/verify.sh` 4. ワンクリック連携:`./scripts/integrate.sh`(すべて)または `unlock`、`firmware` などのステップを指定 サブモジュールURLはすべてSSH形式で、別マシンでの取得にはSSHキー権限が必要。file transportエラーが発生した場合は、`git -c protocol.file.allow=always submodule update --init --recursive` を使用できる。 連携成果物のパス規約:環境変数(JOC_BASE_ELF、JOC_APP_FLYCTRLなど)を優先し、次にアンブレラプロジェクトの標準レイアウト(例:joc-base/build_hil/stm32f407_minimal.elf)、最後に履歴パスへフォールバックする。新規マシンの手順:サブモジュール初期化 → ファームウェアビルド → 全連携実行。 バージョンスナップショットはアンブレラプロジェクトが固定し、サブモジュールのコミットは `git submodule status` で確認する。更新後はアンブレラプロジェクトに新しいスナップショットを記録し、再現性を確保する。 ドキュメントナビゲーション: - docs/architecture.md:全体アーキテクチャ(3層シミュレーションスタック/データフロー/責務) - docs/engineering.md:各プロジェクトの機能詳細 - docs/integration.md:連携方法(仮想ペリフェラル/SIL/HIL/故障注入/アンロック飛行) - docs/postmortem-rtos-pendsv-fallback.md:PendSV空キュー時のフォールバック不具合修正の振り返り - scripts/integrate.sh:ワンクリック連携スクリプト - scripts/verify.sh:ワンクリック回帰スクリプト