チームリポジトリ取得と動作確認(2023年度版) - wataniguchi/EV3RT GitHub Wiki

  1. 当Wikiの「RasPikeリポジトリ取得と動作確認」の手順に従い、ラズパイにRasPikeリポジトリを取得済みであることを仮定する。

  2. 当Wikiの「ラズパイ環境構築」の手順の最終部に従い、ラズパイにX11 forwarding付きでsshする。なお、X11 forwardingなしで当手順を実行すると、サンプルプログラム実行の段階でX11サーバへの接続が拒否されたという内容のエラーが発生する。この場合はsshし直してサンプルプログラムを実行する。エラーが発生しなかった事項についてはやり直しの必要はない。

    pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv $ ./testTraceCam01
    Unable to init server: Could not connect: Connection refused
    terminate called after throwing an instance of 'cv::Exception'
      what():  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. workspaceフォルダへ移動する。pi@peach:~ $ cd ~/etrobo/RasPike/sdk/workspace/

  2. Gitローカルリポジトリを初期化する。pi@peach:~/etrobo/RasPike/sdk/workspace $ git init

  3. リモートリポジトリを設定する。pi@peach:~/etrobo/RasPike/sdk/workspace $ git remote add origin https://github.com/wataniguchi/EV3RT.git

  4. リモートリポジトリのブランチ最新状況を反映する。pi@peach:~/etrobo/RasPike/sdk/workspace $ git fetch --all

  5. .gitignoreをリモートリボジトリから反映させたいので、予めローカルの.gitignoreを削除しておく。pi@peach:~/etrobo/RasPike/sdk/workspace $ rm .gitignore

  6. チームリボジトリ未取得の状態

    pi@peach:~/etrobo/RasPike/sdk/workspace $ ls -a
    .  ..  .git  Makefile  sample_c5
    
  7. リモートリポジトリのmasterブランチの情報および更新を取得する。pi@peach:~/etrobo/RasPike/sdk/workspace $ git pull origin master

  8. チームリボジトリ取得後の状態

    pi@peach:~/etrobo/RasPike/sdk/workspace $ ls -a
    .             2023base_pri  .git         msad2022_ent  test-sensor
    ..            aflac2019     .gitignore   msad2022_pri  test-thread
    2021base      aflac2020     loganalysis  sample_c5     test-thread2
    2022base_ent  ev3way-cpp    Makefile     sample_cpp5
    2022base_pri  EV3way_EV3RT  ms2021       test-opencv
    

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

  1. OpenCVサンプルフォルダへ移動する。pi@peach:~ $ cd ~/etrobo/RasPike/sdk/workspace/test-opencv

  2. サンプルプログラム"testTraceCam01"を実行する。pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv $ python testTraceCam01.py

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

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

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

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

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

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

  1. OpenCVサンプルフォルダへ移動する。pi@peach:~ $ cd ~/etrobo/RasPike/sdk/workspace/test-opencv

  2. サンプルプログラム"testTraceCam01"をコンパイル&リンクする。pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv $ g++ testTraceCam01.cpp -std=gnu++14 `pkg-config --cflags --libs opencv4` -I../2023base_pri -o testTraceCam01

  3. サンプルプログラム"testTraceCam01"を実行する。pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv $ ./testTraceCam01

  4. C++のサンプルプログラムは、Pythonと同一のロジックを表現している。

TOPPERS/ASP3ユーザプログラムからLinuxスレッドを生成するサンプルプログラムを動かす

  1. workspaceフォルダへ移動する。pi@peach:~ $ cd ~/etrobo/RasPike/sdk/workspace/

  2. サンプルプログラム"test-thread"をコンパイル&リンクする。pi@peach:~/etrobo/RasPike/sdk/workspace $ make img=test-thread

  3. コンパイル&リンクしたプログラムを"make start"コマンドにより実行する。

    pi@peach:~/etrobo/RasPike/sdk/workspace $ make start
    sudo env LD_PRELOAD=../common/setjmp/libssetjmp.so ./asp -d ../common/device_config.txt
    vdev initializer called
    initialize vdev
    DEVICE_CONFIG_VDEV_COM = SERIAL
    VDEV_SERIAL_DEV_NAME not found. Use default device name
    VDEV serial name=/dev/ttyAMA1
    Serial Opened fd=3
    DEVICE_CONFIG_VDEV_PROTOCOL = RASPIKE
    DEVICE_CONFIG_RESET_AREA_OFFSET=36
    DEVICE_CONFIG_RESET_AREA_SIZE=20
    
    TOPPERS/ASP3 Kernel Release 3.2.0 for RasPi (May 14 2023, 12:14:42)
    Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
                                Toyohashi Univ. of Technology, JAPAN
    Copyright (C) 2004-2017 by Embedded and Real-Time Systems Laboratory
                Graduate School of Information Science, Nagoya Univ., JAPAN
    
    brick_dri initialized.
       _____   ______ ___  ______
      / __/ | / /_  // _ \/_  __/
     / _/ | |/ //_ </ , _/ / /
    /___/ |___/____/_/|_| /_/
     
    ====================>Beta 7<=
     
    Powered by TOPPERS/ASP3 RTOS of Hakoniwa
    Initialization is completed..
    System logging task is started.
    vdev initializer called
    creating thread(s)...
    finished creating thread(s)!
    joining thread(s)...
    35::8:9:28:14:22:16:29:1:6:12:15:13:30:2:23:420::25:11:7:17:27:10:26:19:24:21:18:
    exiting...
    
  4. TOPPERS/ASP3を終了するにはターミナルでctrl-Cを入力する。