チームリポジトリ取得と動作確認 - wataniguchi/EV3RT GitHub Wiki

  1. 当Wikiの「ラズパイ環境構築」の手順の冒頭部の手順により、ラズパイにX11 forwarding付きでsshする。
    なお、X11 forwardingなしで当手順を実行すると、サンプルプログラム実行の段階でX11サーバへの接続が拒否されたという内容のエラーが発生する。

    (vpypy3) pi@robot:~/EV3RT/test-opencv-usbcam $ pypy3 testTraceCam01.py
    [ WARN:[email protected]] global /home/wataru/Library/opencv4/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (862) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
    Traceback (most recent call last):
    File "/home/pi/EV3RT/test-opencv-usbcam/testTraceCam01.py", line 22, in <module>
    cv2.namedWindow("testTrace1")
    cv2.error: OpenCV(4.6.0) /home/pi/Library/opencv4/opencv-4.6.0/modules/highgui/src/window_gtk.cpp:635: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'

MSADモード2チームリポジトリを取得する

  1. Gitのグローバル設定を行う。
    git config --global user.email "your_address@your_domain.com"
    git config --global user.name "Your Full Name"
    
  2. ホームディレクトリにチームリポジトリを複写する。
    cd ~
    git clone https://github.com/wataniguchi/EV3RT.git
    

OpenCVライブラリを使うPythonサンプルプログラムを動かす

  1. Python仮想環境へ入る。

    source vpypy3/bin/activate
    
  2. 仮想環境内ではコマンドプロンプトに仮想環境名が付加されることに注意する。

    pi@robot:~ $ source vpypy3/bin/activate
    (vpypy3) pi@robot:~ $

  3. OpenCVサンプルフォルダへ移動する。

    cd ~/EV3RT/test-opencv-usbcam/
    
  4. サンプルプログラム"testTraceCam01"を実行する。

    pypy3 testTraceCam01.py
    
  5. サンプルプログラムは無限ループ構造になっている。実行を終了するには、画像またはトラックバーのウィンドウがアクティブの状態でキーボードから"q"または"Q"を入力するか、ターミナルでctrl-Cを入力する。

  6. サンプルプログラムの目的は、以下のとおり:

    1. testTraceCam01.py
      2値化に使うHSVの閾値をトラックバーで変化させながらラインの色変化や環境光の変化に強い閾値を見出すこと。
      スクリーンショット 2023-05-14 11 36 14

    2. testTraceCam02.py
      ラインのエッジの検出と追跡目標の設定プロトタイピング。丸点は検知中のラインの重心。垂線は追跡目標としたエッジの重心。
      スクリーンショット 2023-05-14 11 44 13

    3. testTraceCam03.py
      より実用的なエッジ追跡コード。青四角がROI(Region Of Interest)、黄緑がROI内のライン、赤点が追跡目標。
      2値化にはHSVではなくグレイスケールを使っている。
      スクリーンショット 2023-05-14 11 45 01

    4. testLocateTreasure01.py
      マスクの適用により最も面積の大きな赤色領域を識別すること。BGRの下限および上限閾値をトラックバーで変化させながら最適点を見つける。
      スクリーンショット 2024-06-30 14 45 28

    5. testLocateDecoy01.py
      マスクの適用により1番目と2番目に面積の大きな青色領域を識別すること。BGRの下限および上限閾値をトラックバーで変化させながら最適点を見つける。
      スクリーンショット 2024-06-30 14 46 05

    6. testIdentLine03.py
      サークル直上に配置された赤色・青色オブジェクトを識別するためのより実用的なコード。走行体が追跡してあるであろう仮想線上の赤色・青色領域のみを選択している他、ドーナツ形の領域を除外したり縦横比の制約を設けることでより正確にオブジェクトを識別しようとしている。
      スクリーンショット 2024-06-30 14 44 19

⚠️ **GitHub.com Fallback** ⚠️