Newer
Older
RobotCar / docs / 04_ENV / ENV_04_ディレクトリ構成.txt
========================================================================
ディレクトリ構成 (Directory Structure)
========================================================================


1. 概要 (Overview)
------------------------------------------------------------------------

    1-0. 目的

    自律走行システムのソースコードのディレクトリ構成を定義する.
    ディレクトリ構成を変更した場合は本ドキュメントも更新すること.

    1-1. 状態の表記

    ・(未実装): 今後作成予定のファイル.
    ・表記なし: 実装済み,またはディレクトリ.


2. ディレクトリ構成 (Directory Structure)
------------------------------------------------------------------------

    2-1. 全体構成

        RobotCar/
        ├── CLAUDE.md
        ├── requirements_pc.txt
        ├── requirements_pi.txt
        ├── pytest.ini                     テスト設定(pythonpath・testpaths)
        ├── deploy.sh                      Pi への転送スクリプト
        ├── .env.example                   環境変数テンプレート
        ├── docs/                          ドキュメント
        ├── params/                        パラメータ・モデル(.gitignore)
        ├── data/                          学習データ(.gitignore)
        │   ├── raw/                       収集した二値画像(未仕分け)
        │   └── confirmed/                 仕分け済み画像
        │       ├── intersection/          十字路画像
        │       └── normal/               通常画像
        ├── tests/                         ユニットテスト
        ├── src/                           自律走行用ソースコード
        │   ├── common/                    共通設定(PC・Pi 両方で使用)
        │   ├── pc/                        PC 側
        │   └── pi/                        Pi 側
        └── .venv/                         仮想環境(.gitignore)

    2-2. src/common/

        common/
        ├── config.py                      ネットワーク・画像・通信設定
        ├── json_utils.py                  JSON 読み書き共通ユーティリティ
        ├── vision/                        画像処理(PC・Pi 共通)
        │   ├── line_detector.py           線検出 API(データクラス・手法ディスパッチ)
        │   ├── fitting.py                 直線・曲線近似(Theil-Sen・RANSAC・外れ値除去)
        │   ├── morphology.py              形態学的処理ユーティリティ
        │   ├── intersection.py            十字路分類モデルの推論
        │   └── detectors/                 検出手法の実装
        │       ├── current.py             現行(CLAHE + 固定閾値)
        │       ├── blackhat.py            案A(Black-hat 中心)
        │       ├── dual_norm.py           案B(二重正規化)
        │       ├── robust.py              案C(最高ロバスト)
        │       └── valley.py              案D(谷検出+追跡)
        └── steering/                      操舵量計算(PC・Pi 共通)
            ├── base.py                    共通基底クラス(線検出・レートリミッター・reset)
            ├── pd_control.py              PD 制御の実装
            ├── pursuit_control.py         2点パシュート制御の実装
            ├── ts_pd_control.py           Theil-Sen PD 制御の実装
            └── recovery.py                コースアウト復帰

    ・PC・Pi 間で共有する設定値・画像処理・操舵量計算を定義する.
    ・config.py: ネットワーク設定,画像フォーマット,通信設定,
        テレメトリバージョン,表示倍率,ログ間隔等.
    ・json_utils.py: JSON ファイル読み書きとパラメータディレクトリの定義.
    ・vision/: 線検出パイプライン・検出手法・十字路分類を共通化.
    ・steering/: PD 制御・パシュート制御・Theil-Sen PD 制御・復帰制御を共通化.

    2-3. src/pc/

        pc/
        ├── main.py                        エントリーポイント
        ├── review.py                      データ仕分け GUI エントリーポイント
        ├── gui/                           GUI 関連
        │   ├── main_window.py             メインウィンドウ(レイアウト・ライフサイクル管理)
        │   ├── telemetry_display.py       テレメトリ受信・映像表示・オーバーレイ
        │   ├── command_sender.py          コマンド構築・dirty 管理・ZMQ 送信
        │   ├── manual_controller.py       キー入力 → throttle/steer 変換
        │   └── 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/                          学習データ収集・仕分け・学習
        │   ├── __main__.py               学習スクリプトエントリーポイント
        │   ├── collector.py               二値画像のラベル付き保存
        │   ├── reviewer.py               仕分けレビュー GUI
        │   ├── dataset.py                データ読み込み
        │   └── train.py                  モデル学習・評価・保存
        ├── steering/                      PC 固有の操舵パラメータ管理
        │   ├── param_store.py             プリセット保存・読み込み
        │   └── auto_params.py             パラメータ自動保存・復元
        └── vision/                        PC 固有の画像処理
            └── overlay.py                 デバッグオーバーレイ描画

    2-4. src/pi/

        pi/
        ├── main.py                        エントリーポイント(自律制御ループ)
        ├── comm/                          通信関連
        │   └── zmq_client.py              ZMQ テレメトリ送信・コマンド受信
        ├── camera/                        カメラ関連
        │   └── capture.py                 フレーム取得
        └── motor/                         モーター関連
            └── driver.py                  TB6612FNG 制御