チームリポジトリ取得と動作確認(2024年度版) - wataniguchi/EV3RT GitHub Wiki
-
当Wikiの「ラズパイ環境構築」の手順の最終部に従い、ラズパイにX11 forwarding付きでsshする。
なお、X11 forwardingなしで当手順を実行すると、サンプルプログラム実行の段階でX11サーバへの接続が拒否されたという内容のエラーが発生する。この場合はsshし直してサンプルプログラムを実行する。エラーが発生しなかった事項についてはやり直しの必要はない。
pi@peach:~/etrobo/test-opencv $ pypy3 testTraceCam01.py Unable to init server: Could not connect: Connection refused Traceback (most recent call last): File "/home/pi/etrobo/test-opencv/testTraceCam01.py", line 19, in <module> cv2.namedWindow("testTrace1") cv2.error: OpenCV(4.6.0) /home/pi/Library/opencv-4.6.0/modules/highgui/src/window_gtk.cpp:635: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'
-
作業用フォルダをホームディレクトリに作成する。
pi@peach:~ $ cd ~
pi@peach:~ $ mkdir etrobo
-
作業用フォルダでGitローカルリポジトリを初期化する。
pi@peach:~ $ cd etrobo
pi@peach:~/etrobo $ git init
-
リモートリポジトリを設定する。
pi@peach:~/etrobo $ git remote add origin https://github.com/wataniguchi/EV3RT.git
-
リモートリポジトリのブランチ最新状況を反映する。
pi@peach:~/etrobo $ git fetch --all
-
.gitignoreをリモートリボジトリから反映させたいので、予めローカルの.gitignoreを削除しておく。
pi@peach:~/etrobo $ rm .gitignore
-
チームリボジトリ未取得の状態
pi@peach:~/etrobo $ ls -a . .. .git
-
リモートリポジトリのmasterブランチの情報および更新を取得する。
pi@peach:~/etrobo $ git pull origin master
-
チームリボジトリ取得後の状態
pi@peach:~/etrobo $ ls -a . 2023base_pri .gitignore msad2023_pri test-thread .. aflac2019 loganalysis sample_cpp5 test-thread2 2021base aflac2020 ms2021 test-asyncio 2022base_ent ev3way-cpp msad2022_ent test-opencv 2022base_pri EV3way_EV3RT msad2022_pri test-opencv-cam3 2023base_ent .git msad2023_ent test-sensor
(2024/6/10追加) これらのサンプルプログラムは新しいPicamera2ライブラリを使用してラズパイカメラにアクセスしている。ただし、コマンドライン引数として「--legacy」を指定することにより(例:$ pypy3 testTraceCam01.py --legacy
)従来のレガシーカメラインターフェースでも動作する。
注意:新しいカメラインターフェースと従来のレガシーインターフェースは排他であり、raspi-configコマンドで設定を行いOSブートにより反映させる必要がある。当チームが利用しているRaspberry Pi OS Bullseyeはレガシーカメラインターフェースをサポートする最後のバージョンであり、Bookwormでは既にレガシーインターフェースは廃止されている。
-
OpenCVサンプルフォルダへ移動する。
pi@peach:~ $ cd ~/etrobo/test-opencv
-
サンプルプログラム"testTraceCam01"を実行する。
pi@peach:~/etrobo/test-opencv $ pypy3 testTraceCam01.py
-
サンプルプログラムは無限ループ構造になっている。実行を終了するには、画像またはトラックバーのウィンドウがアクティブの状態でキーボードから"q"または"Q"を入力するか、ターミナルでctrl-Cを入力する。
-
サンプルプログラムの目的は、以下のとおり:
-
testTraceCam01.py
2値化に使うHSVの閾値をトラックバーで変化させながらラインの色変化や環境光の変化に強い閾値を見出すこと。
-
testTraceCam02.py
ラインのエッジの検出と追跡目標の設定プロトタイピング。丸点は検知中のラインの重心。垂線は追跡目標としたエッジの重心。
-
testTraceCam03.py
より実用的なエッジ追跡コード。青四角がROI(Region Of Interest)、黄緑がROI内のライン、赤点が追跡目標。
2値化にはHSVではなくグレイスケールを使っている。
-
testLocateTreasure01.py
マスクの適用により最も面積の大きな赤色領域を識別すること。BGRの下限および上限閾値をトラックバーで変化させながら最適点を見つける。 -
testLocateDecoy01.py
マスクの適用により1番目と2番目に面積の大きな青色領域を識別すること。BGRの下限および上限閾値をトラックバーで変化させながら最適点を見つける。
-
testIdentLine03.py
サークル直上に配置された赤色・青色オブジェクトを識別するためのより実用的なコード。走行体が追跡してあるであろう仮想線上の赤色・青色領域のみを選択している他、ドーナツ形の領域を除外したり縦横比の制約を設けることでより正確にオブジェクトを識別しようとしている。
-