diff --git "a/docs/03_TECH/TECH_02_\343\202\267\343\202\271\343\203\206\343\203\240\346\247\213\346\210\220\344\273\225\346\247\230.txt" "b/docs/03_TECH/TECH_02_\343\202\267\343\202\271\343\203\206\343\203\240\346\247\213\346\210\220\344\273\225\346\247\230.txt" index 836ba62..4e477d1 100644 --- "a/docs/03_TECH/TECH_02_\343\202\267\343\202\271\343\203\206\343\203\240\346\247\213\346\210\220\344\273\225\346\247\230.txt" +++ "b/docs/03_TECH/TECH_02_\343\202\267\343\202\271\343\203\206\343\203\240\346\247\213\346\210\220\344\273\225\346\247\230.txt" @@ -56,8 +56,11 @@ 2-3. 操舵量計算 - ・Theil-Sen 直線近似と PD 制御により操舵量を計算する. - ・速度は傾きに応じて動的に調整する. + ・3 種類の制御手法を GUI から切り替えて使用できる: + - PD 制御: 位置偏差・傾き・微分項で操舵,曲率で速度を調整 + - 2点パシュート制御: 近い点と遠い点の偏差で操舵,曲がり度合いで速度を調整 + - Theil-Sen PD 制御: Theil-Sen 直線近似と PD 制御のハイブリッド, + 傾きで速度を調整 ・レートリミッターで急激な操舵変化を抑制する. ・十字路判定: SVM 分類器で十字路を検出し,直進に切り替える. ・コースアウト復帰: 一定時間線を検出できない場合に復帰動作を行う. diff --git "a/docs/04_ENV/ENV_01_\346\212\200\350\241\223\343\202\271\343\202\277\343\203\203\343\202\257\351\201\270\345\256\232.txt" "b/docs/04_ENV/ENV_01_\346\212\200\350\241\223\343\202\271\343\202\277\343\203\203\343\202\257\351\201\270\345\256\232.txt" index 5a48670..74e4f3b 100644 --- "a/docs/04_ENV/ENV_01_\346\212\200\350\241\223\343\202\271\343\202\277\343\203\203\343\202\257\351\201\270\345\256\232.txt" +++ "b/docs/04_ENV/ENV_01_\346\212\200\350\241\223\343\202\271\343\202\277\343\203\203\343\202\257\351\201\270\345\256\232.txt" @@ -64,17 +64,28 @@ 2-3. 画像処理: OpenCV(cv2) ・用途: Pi 側・PC 側での画像処理・線検出 - - グレースケール変換 - - ガウシアンブラー - - 二値化 - - 多項式フィッティング・Theil-Sen 近似 + - グレースケール変換・ガウシアンブラー・二値化(固定・適応的閾値) + - CLAHE(コントラスト制限付き適応ヒストグラム均等化) + - モルフォロジー処理(Opening・Closing・Black-hat・距離変換) + - 画像リサイズ・JPEG 圧縮 ■ 選定理由 ・ライントレースに必要な処理がすべて揃っている. ・NumPy ベースで PySide6 への画像受け渡しが容易である. ・既存コードでの使用実績がある. - 2-4. カメラ制御: Picamera2 + 2-4. 数値計算: NumPy + + ・用途: Pi 側・PC 側での数値計算・配列操作 + - 多項式フィッティング(numpy.polyfit) + - Theil-Sen 直線近似・RANSAC 外れ値除去 + - 画像の配列操作・統計処理 + + ■ 選定理由 + ・OpenCV と同一のデータ形式(ndarray)で連携が容易である. + ・多項式フィッティングや統計処理の関数が揃っている. + + 2-5. カメラ制御: Picamera2 ・用途: Pi 側でのカメラフレーム取得 @@ -82,7 +93,7 @@ ・Raspberry Pi カメラの標準ライブラリである. ・既存コードでの使用実績がある. - 2-5. モーター制御: RPi.GPIO + 2-6. モーター制御: RPi.GPIO ・用途: Pi 側での TB6612FNG モータードライバ制御 @@ -91,7 +102,7 @@ ・PWM 制御・GPIO 出力に必要な機能が揃っている. - 2-6. 機械学習: scikit-learn + 2-7. 機械学習: scikit-learn ・ライブラリ: scikit-learn, joblib ・用途: 十字路分類モデルの学習(PC 側)・推論(Pi 側・PC 側) @@ -107,7 +118,7 @@ ・PyTorch/TensorFlow: 入力が 1200 特徴量と小さく, 深層学習フレームワークは過剰である. - 2-7. 環境変数管理: python-dotenv + 2-8. 環境変数管理: python-dotenv ・用途: .env ファイルから環境変数を読み込む - PC の IP アドレス @@ -127,6 +138,7 @@ ・Picamera2: カメラフレーム取得 ・RPi.GPIO: モーター制御 ・OpenCV: 画像処理・線検出 + ・NumPy: 多項式フィッティング・Theil-Sen 近似・配列操作 ・scikit-learn: 十字路分類モデルの推論 ・joblib: モデルとスケーラの読み込み ・pyzmq: PC との通信 @@ -136,6 +148,8 @@ ・PySide6: GUI アプリケーション ・OpenCV: 画像処理・線検出 - ・scikit-learn: 十字路分類モデル + ・NumPy: 多項式フィッティング・Theil-Sen 近似・配列操作 + ・scikit-learn: 十字路分類モデルの学習・推論 + ・joblib: モデルとスケーラの保存・読み込み ・pyzmq: Pi との通信 ・python-dotenv: 環境変数管理 diff --git "a/docs/04_ENV/ENV_02_PC\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.txt" "b/docs/04_ENV/ENV_02_PC\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.txt" index 86621d4..50997a0 100644 --- "a/docs/04_ENV/ENV_02_PC\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.txt" +++ "b/docs/04_ENV/ENV_02_PC\347\222\260\345\242\203\346\247\213\347\257\211\346\211\213\351\240\206.txt" @@ -30,7 +30,7 @@ プロジェクトルートで以下を実行する. - $ cd c:\Users\rinto\source\RobotCar + $ cd <プロジェクトルート> $ python -m venv .venv ・`.venv/` ディレクトリが作成される.