ラズパイ環境構築 - wataniguchi/EV3RT GitHub Wiki

  1. RasPike Wiki Raspi_setupページに従い、ラズパイで使用するSDカードにPCからイメージを書き込む。Raspberry Pi OSのバージョンは、Debian version: 12 (Bookworm) 64bit版を使う。デスクトップ環境は不要。Raspberry PI ImagerのOS選択プルダウンメニューから「Raspberry Pi OS (other)」、「Raspberry Pi OS Lite (64bit)」の順に選択する。

  2. ラズパイをブートして、 RasPike Wiki Connect_pc_raspiページの「PCとRaspberry Piの接続」の手順を参考に、PCからラズパイへssh接続する。同ページの「IPアドレスでの接続」の手順を、IPアドレスを確認するための参考として利用する。

    • Win10からの接続を行うには: 確認したIPアドレスを、当Wikiの「PC (Win10) 環境構築」の手順Xサーバを準備する際にデスクトップに保存したVcXsrv設定ファイルへ反映させる。以降、デスクトップに保存した設定ファイルをダブルクリックするだけでラズパイへsshできる。
    • Macからの接続を行うには: 確認したIPアドレスを使って、ラズパイへsshでログインする。「-XY」は、X11 forwardingを行うためのオプション。macpc:~ user01$ ssh -XY [email protected]
  3. ssh接続したラズパイのシェル上で当チーム固有の設定を行う。

    1. aptパッケージ管理システム用のパッケージを最新化する。
      sudo apt update
      sudo apt upgrade
      
    2. gitをインストールする。
      sudo apt install -y git
      
    3. Debianパッケージの依存関係を一気に解決するためのツールであるgdebiをインストールする。
      sudo apt install -y gdebi
      
    4. この後インストールするPythonライブラリpydotの依存パッケージであるGraphvizをインストールする。
      sudo apt install -y graphviz
      
    5. X11 forwarding中のlibGLエラーを回避するために、予め環境変数を設定しておく。
      echo "export LIBGL_ALWAYS_INDIRECT=1" >> ~/.bashrc
      
    6. 当チームは一般的なPythonの実装であるCPythonに替えてPyPyを利用することでリアルタイム性の高い走行体制御を行う。PyPyのプリコンパイルドバイナリをダウンロードして、/optディレクトリ以下へ展開する。/usr/local/binにシンボリックリンクを作成することにより、パス指定なしにpypy3あるいはpypy3.11を実行可能とする。
      curl -OL https://downloads.python.org/pypy/pypy3.11-v7.3.19-aarch64.tar.bz2
      bzcat pypy3.11-v7.3.19-aarch64.tar.bz2 | sudo tar -C /opt -xvf -
      sudo ln -s /opt/pypy3.11-v7.3.19-aarch64/bin/pypy3 /usr/local/bin/pypy3
      sudo ln -s /opt/pypy3.11-v7.3.19-aarch64/bin/pypy3.11 /usr/local/bin/pypy3.11
      
    7. OpenCVライブラリ+pypy3バインディングのDebianパッケージをラズパイへダウンロードする。このファイルは、ラズパイ上でソースコードからビルドしたOpenCV-4.6.0をcheckinstallでパッケージ化したものである。
    8. ダウンロードしたDebianパッケージをgdebiにより依存関係を解決しながらインストールする。更に、インストールした共有ライブラリの依存関係を更新して、動的利用可能にする。
      sudo gdebi libopencv-pypy3.11-relwithdebinfo_4.6.0-1_arm64.deb
      sudo ldconfig
      
  4. Python仮想環境を準備し、当チーム固有のPythonライブラリをインストールする。

    1. Python仮想環境を作成する。この例ではvpypy3という名前の環境を作成し、activateコマンドにより仮想環境に入っている。

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

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

    3. Python用のパッケージマネージャであるpipを最新化する。

      pip install --upgrade pip
      
    4. 引き続き、利用するライブラリをインストールする。

      pip install numpy==2.2.3
      pip install simple_pid
      pip install pydot
      pip install py-trees
      
    5. LEGO® Education SPIKE™ PrimeとラズパイをUSB接続して、ラズパイ上でSPIKE-RTのAPIを使ってSPIKEを制御するためのOSネイティブライブラリであるlibraspike-art (Raspike Almost Real Time Library)をETロボコン事務局が開発・提供している。libraspike-artをPythonから利用するためのバインディング・ラッパーであるlibraspike-art-pythonをインストールする。libraspike-art-pythonは今年度当チーム用に開発し、広く公開したものである。

      pip install libraspike-art-python
      
    6. libraspike-art-pythonを利用しやすいように、東北学院大学の武田教授が作成したETロボコンのためのpythonミドルウェアであるetrobo-pythonを今年度当チーム用に拡張した。この拡張版をインストールする。なお、拡張分はプルリク済みであり、武田教授によるテストで問題がなければmasterブランチへマージされる見込みである。

      pip install git+https://github.com/wataniguchi/etrobo-python.git
      
    7. 仮想環境から出る。

      deactivate
      
  5. libraspike-art READMEの環境セクションの記述に従い、ラズパイとSPIKEハブの最初の設定を行う。なお、同ページの記述には一部誤りがある。SPIKEへの受け側プログラムの書き込みを完了後にハブの電源を投入してLED表示されるのは「♾️」であり「ET」ではない。