diff --git "a/docs/02_PLAN/PLAN_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\346\246\202\350\246\201.txt" "b/docs/02_PLAN/PLAN_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\346\246\202\350\246\201.txt" index b5b3a30..0d2d747 100644 --- "a/docs/02_PLAN/PLAN_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\346\246\202\350\246\201.txt" +++ "b/docs/02_PLAN/PLAN_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\346\246\202\350\246\201.txt" @@ -59,18 +59,19 @@ 3-2. 操舵量計算の方針 - ・制御方式: PD 制御,2点パシュート制御,Theil-Sen PD 制御の - 3手法を切り替えて使用する(デフォルトは Theil-Sen PD). ・偏差の算出: カメラ画像から黒線の位置を検出し, 画像中心からのずれを偏差として用いる. ・操舵: 偏差に基づく制御で操舵量を決定する. + 複数の制御手法を GUI から切り替えて使用できる. ・速度: カーブの度合いに応じて動的に調整する(カーブ減速,直線加速). - ※ 詳細な計算方法・パラメータは別ドキュメントにて定義する. + ※ 制御手法・計算方法・パラメータの詳細は + `TECH_01_操舵量計算仕様.txt` を参照する. 3-3. 実行環境 - ・Raspberry Pi を使用する. ・制御ループ(カメラ取得→画像処理→操舵計算→モーター制御)は Pi 内で完結させ,通信遅延の影響を排除する. ・PC はモニタリング GUI・パラメータ調整・手動操作を担当する. + ※ Pi と PC の役割分担・通信の詳細は + `TECH_02_システム構成仕様.txt` を参照する. diff --git "a/docs/03_TECH/TECH_01_\346\223\215\350\210\265\351\207\217\350\250\210\347\256\227\344\273\225\346\247\230.txt" "b/docs/03_TECH/TECH_01_\346\223\215\350\210\265\351\207\217\350\250\210\347\256\227\344\273\225\346\247\230.txt" index 5ca614b..505df76 100644 --- "a/docs/03_TECH/TECH_01_\346\223\215\350\210\265\351\207\217\350\250\210\347\256\227\344\273\225\346\247\230.txt" +++ "b/docs/03_TECH/TECH_01_\346\223\215\350\210\265\351\207\217\350\250\210\347\256\227\344\273\225\346\247\230.txt" @@ -176,7 +176,6 @@ GUI のコンボボックスで検出手法を切り替えられる. 手法ごとに使用するパラメータが異なり, GUI では選択中の手法に関連するパラメータのみ表示される. - 詳細は `TECH_04_線検出精度向上方針.txt` を参照する. 1. 現行手法(CLAHE + 固定閾値) ・撮影解像度: 320×240(処理時は 40×30 に縮小) @@ -188,50 +187,9 @@ ・クロージング横幅(close_width): 25 ・クロージング高さ(close_height): 3 - 2. 案A: Black-hat 中心型 - ・Black-hat カーネルサイズ(blackhat_ksize): 45 - ・二値化閾値(binary_thresh): 80 - ・等方クロージングサイズ(iso_close_size): 15 - ・距離変換閾値(dist_thresh): 3.0 - ・最小線幅(min_line_width): 3 - - 3. 案B: 二重正規化型 - ・背景ブラーカーネルサイズ(bg_blur_ksize): 101 - ・固定閾値(global_thresh): 0(0 で無効,適応的閾値との AND) - ・適応的閾値ブロックサイズ(adaptive_block): 51 - ・適応的閾値定数 C(adaptive_c): 10 - ・等方クロージングサイズ(iso_close_size): 15 - ・距離変換閾値(dist_thresh): 3.0 - ・最小線幅(min_line_width): 3 - - 4. 案C: 最高ロバスト型 - ・Black-hat カーネルサイズ(blackhat_ksize): 45 - ・適応的閾値ブロックサイズ(adaptive_block): 51 - ・適応的閾値定数 C(adaptive_c): 10 - ・等方クロージングサイズ(iso_close_size): 15 - ・距離変換閾値(dist_thresh): 3.0 - ・最小線幅(min_line_width): 3 - ・RANSAC 閾値(ransac_thresh): 5.0 - ・RANSAC 反復回数(ransac_iter): 50 - - 5. 案D: 谷検出+追跡型 - ・行ごとガウシアンカーネルサイズ(valley_gauss_ksize): 15 - ・谷として認識する最小深度(valley_min_depth): 15.0 - ・追跡予測からの最大許容偏差(valley_max_deviation): 40.0 - ・検出失敗時の予測継続フレーム数(valley_coast_frames): 3 - ・多項式係数の指数移動平均係数(valley_ema_alpha): 0.7 - - ■ 共通後処理パラメータ(案A〜D で使用,GUI で調整可能) - - ・段階クロージング第1段サイズ(stage_close_small): 5 - ・孤立除去の最小面積(stage_min_area): 0(0 で無効) - ・段階クロージング第2段サイズ(stage_close_large): 0(0 で無効) - ・画像下端での期待線幅(width_near): 0(0 で無効) - ・画像上端での期待線幅(width_far): 0(0 で無効) - ・幅フィルタの上限倍率(width_tolerance): 1.8 - ・中心点列の移動メディアンフィルタサイズ(median_ksize): 7 - ・近傍外れ値除去の閾値(neighbor_thresh): 10.0 - ・残差反復除去の閾値(residual_thresh): 8.0 + 2. 案A〜D および共通後処理パラメータ + 各手法のパイプライン・パラメータ・デフォルト値は + `TECH_04_線検出精度向上方針.txt` を参照する. ■ PD 制御パラメータ(GUI で調整可能) @@ -366,23 +324,8 @@ 9. コースアウト復帰 (Course-Out Recovery) ------------------------------------------------------------------------ - 9-1. 概要 - 自動操縦中に黒線を一定時間検出できなかった場合に, 最後に検出した方向へ旋回しながら走行して復帰を試みる機能. 全制御手法に共通で適用される. + 判定ロジック・復帰動作・パラメータ・GUI 仕様・実装ファイルの 詳細は `TECH_05_コースアウト復帰仕様.txt` を参照する. - - 9-2. パラメータ一覧(GUI で調整可能) - - ・enabled(有効/無効): True - ・timeout_sec(判定時間): 0.5 秒 - ・steer_amount(操舵量): 0.5 - ・throttle(速度): -0.3(負で後退,正で前進) - - 9-3. 実装ファイル - - ・src/common/steering/recovery.py: RecoveryParams,RecoveryController - ・src/pi/main.py: Pi 側での復帰ロジックの統合 - ・src/pc/gui/panels/recovery_panel.py: RecoveryPanel - ・src/pc/gui/main_window.py: 復帰パラメータ管理・Pi への送信