========================================================================
ディレクトリ構成 (Directory Structure)
========================================================================
1. 概要 (Overview)
------------------------------------------------------------------------
1-0. 目的
自律走行システムのソースコードのディレクトリ構成を定義する.
ディレクトリ構成を変更した場合は本ドキュメントも更新すること.
1-1. 状態の表記
・(未実装): 今後作成予定のファイル.
・表記なし: 実装済み,またはディレクトリ.
2. ディレクトリ構成 (Directory Structure)
------------------------------------------------------------------------
2-1. 全体構成
RobotCar/
├── CLAUDE.md
├── requirements_pc.txt
├── requirements_pi.txt
├── deploy.sh Pi への転送スクリプト
├── .env.example 環境変数テンプレート
├── pd_params.json パラメータ保存ファイル(.gitignore)
├── docs/ ドキュメント
├── src/ 自律走行用ソースコード
│ ├── common/ 共通設定(PC・Pi 両方で使用)
│ ├── pc/ PC 側
│ └── pi/ Pi 側
└── src_old/ 旧コード(参照用)
2-2. src/common/
common/
├── config.py
└── json_utils.py JSON 読み書き共通ユーティリティ
・PC・Pi 間で共有する設定値・ユーティリティを定義する.
・config.py: ネットワーク設定,画像フォーマット,通信設定等.
・json_utils.py: JSON ファイル読み書きとパラメータディレクトリの定義.
2-3. src/pc/
pc/
├── main.py エントリーポイント
├── review.py データ仕分け GUI エントリーポイント
├── gui/ GUI 関連
│ ├── main_window.py メインウィンドウ(モニタリング専用)
│ └── panels/ パラメータ調整パネル群
│ ├── collapsible_group_box.py 折りたたみ GroupBox
│ ├── control_param_panel.py 制御パラメータ
│ ├── image_param_panel.py 二値化パラメータ
│ ├── intersection_panel.py 十字路判定
│ ├── overlay_panel.py デバッグ表示
│ └── recovery_panel.py コースアウト復帰
├── comm/ 通信関連
│ └── zmq_client.py ZMQ テレメトリ受信・コマンド送信
├── data/ 学習データ収集・仕分け・学習
│ ├── collector.py 二値画像のラベル付き保存
│ ├── reviewer.py 仕分けレビュー GUI
│ ├── dataset.py データ読み込み
│ └── train.py モデル学習・評価・保存
├── steering/ 操舵量計算(パラメータ保存・復元用)
│ ├── base.py 共通インターフェース
│ ├── pd_control.py PD 制御の実装
│ ├── pursuit_control.py 2点パシュート制御の実装
│ ├── ts_pd_control.py Theil-Sen PD 制御の実装
│ ├── param_store.py プリセット保存・読み込み
│ ├── recovery.py コースアウト復帰パラメータ
│ └── auto_params.py パラメータ自動保存・復元
└── vision/ 画像処理(PC 側は表示・データ収集用)
├── line_detector.py 線検出 API(データクラス・手法ディスパッチ)
├── fitting.py 直線・曲線近似(Theil-Sen・RANSAC・外れ値除去)
├── morphology.py 形態学的処理ユーティリティ
├── intersection.py 十字路分類モデルの推論
├── overlay.py デバッグオーバーレイ描画
└── detectors/ 検出手法の実装
├── current.py 現行(CLAHE + 固定閾値)
├── blackhat.py 案A(Black-hat 中心)
├── dual_norm.py 案B(二重正規化)
├── robust.py 案C(最高ロバスト)
└── valley.py 案D(谷検出+追跡)
2-4. src/pi/
pi/
├── main.py エントリーポイント(自律制御ループ)
├── comm/ 通信関連
│ └── zmq_client.py ZMQ テレメトリ送信・コマンド受信
├── camera/ カメラ関連
│ └── capture.py フレーム取得
├── motor/ モーター関連
│ └── driver.py TB6612FNG 制御
├── vision/ 画像処理(Pi 側で実行)
│ ├── line_detector.py 線検出(現行手法のみ)
│ ├── fitting.py 直線・曲線近似
│ ├── morphology.py 形態学的処理ユーティリティ
│ └── intersection.py 十字路分類モデルの推論
└── steering/ 操舵量計算(Pi 側で実行)
├── base.py 共通インターフェース
├── ts_pd_control.py Theil-Sen PD 制御の実装
└── recovery.py コースアウト復帰