2025年2月21日金曜日

実践!Chainerとロボットで学ぶディープラーニング(環境構築その2)

 テキストに沿ってEV3の実行環境を構築する。
(ページ249の「RaspberryPiの環境構築」から)

注) RaspberryPiのOSもバージョンアップしており設定の方法も随分変わっている。

ダウンロードしたev3chainer_setup.sh.tarを解凍して出来た5つのファイルをユーザーのrootディレクトリーにコピーする。

・ev3chainer_setup.sh
・ev3console.conf
・jupyter.service.conf
・jupyter_notebook.conf
・rules.conf

ターミナルからシェルスクリプトを実行する(オリジナルでは・・)

sh ev3chainer_setup.sh

ただし、このままだとPicameraを使う下記pythonプログラム

from picamera2 import Picamera2

でpicamera2のモジュールが無いとエラーになる。

新しいRaspiOSではpicamera2はプレインストールされているおり、ここで作った仮想環境で再度インストールしようとしても既にインストール済みと出てきてインストールが中断される。

仮想環境に関しては全くの素人だが、ev3chainer_setup.shの中身の

pyenv virtualenv 3.8.5 rpi2ev3

を下記に修正し

pyenv virtualenv system rpi2ev3 --system-site-packages

--system-site-packagesが必要かどうかは不明、とにかくシステムのpython環境を使うと指定して仮想環境を作成する。

従って数行上の、

pyenv install 3.8.5

は不要なのでコメントアウトしておく。

ここまで考えると、わざわざ仮想環境を作成してそこで作らなくても良さそうに思うが、RaspberryPiは使用時に仮想環境を作成して使うのが流儀のようで、一部のモジュールは仮想環境からではないと直接のシステム環境ではインストールでない仕様になっていてしかたがない。


仮想環境のアクティブ化

EV3の実行環境を構築するシェルスクリプトのev3chainer_setup.shでは、rip2ev3という仮想環境を作成し、その中で操作している。

従って、追加でモジュールをインストールする場合には、その仮想環境をアクティブにしてから作業を行う。

pyenv local rpi2ev3

仮想環境"rpi2ev3"をアクティブ化する。

source .pyenv/versions/3.8.5/envs/rpi2ev3/bin/activate


OpenCVのインストール

下記コマンドを実行する。

pip3 install opencv-contrib-python

OpenCVが正しく動作することの確認は、Pythonモードに入り、

まずcv2のインポート

>>> import cv2

続いてバージョンの確認

>>> cv2.__version__
'4.10.0'
のようにバージョンが表示されれば、インストール成功です。


画像処理ユーティリティモジュール imutils のインストール

下記コマンドを実行する。

pip install imutils





実践!Chainerとロボットで学ぶディープラーニング(環境構築その1)

 

WIFI環境の無い状態でRaspberryPiとPCを直接LANケーブルで接続し、過去の投稿で行った「実践!Chainerとロボットで学ぶディープラーニング」の環境構築を現在最新のRaspberryPi5で再構築した時のメモ書きです。

以下の設定はたまたま見つけた下記投稿が参考になっています。

Raspberry Pi 4をPCと有線LAN接続して外でも操作できるようにしてみた


①まずはRaspberry Pi Imagerを使ってRaspberry Pi OS をインストールする。 

 インストールしたOSは64bit fullバージョン


②パソコンとLANケーブルで接続します。


③PCのコントロールパネル ➡ ネットワークとインターネット ➡ ネットワークと共有センターを開きます。



「Wi-Fi※※」をクリックし、プロパティ ➡ 共有 をクリックします。


「ネットワークのほかのユーザーに…」にチェックを入れ、「OK」を押せば設定は完了です。


④コマンドプロンプトを開き、pingコマンドを実行して、ホスト名を使ってRaspberry PiのIPアドレスを調べる。

ping -4 ホスト名(raspberrypiなど).local

ホスト名は①のOSをインストールしたときに付けた名前。-4オプションをつけることでIPv4のアドレスを表示することがでる。

raspberrypi.local [192.168.137.226]に ping を送信しています 32 バイトのデータ:
192.168.137.226 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.137.226 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.137.226 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.137.226 からの応答: バイト数 =32 時間 <1ms TTL=64


⑤リモートデスクトップ アプリで接続
 リモートデスクトップ アプリに関しては、2021年12月19日投稿の「Raspberry Piの環境設定」を参照してください。

 PC名は③で調べたRaspberry Piのアドレス
注意)ここで設定したRaspberry Piのアドレスは固定されると何処かに書いてあったが、Raspberry Piを設定していく中で(Localisationの再確認設定のとき?)アドレスが変更になっていました。


【分かったこと原因】
PCとiphoneとを接続するのに、無線で接続するか、USBで接続するかで上の③の設定のやり直しが必要になる。今回はiphoneとPCとをUSBで接続したためにこのようなトラブルに遭遇した。




⑥これでログインを試みると画面が真っ暗のままで次に進めなかった。ネットで検索して次の投稿を参照して上手く行った。

4Bで動かすRaspberry Pi OS (bullseye)にRDPログインしようにも黒い画面が表示される問題の対応

ユーザー「pi」に対しては、下記の操作でRDP接続可能になります。

videoとrenderグループからユーザー「pi」を除外

sudo gpasswd -d pi video

sudo gpasswd -d pi render


デスクトップの自動ログイン無効化

sudo raspi-conofig

下記の選択で無効化して再起動したらRDP接続可能になる。

System options ➡ Boot / Auto Login ➡ Desktop GUI, requiring user to login



と言う事でRDP接続するには、画面が真っ暗になる事象を回避する必要があるなど面倒になりました。

過去においてRDP接続はVNC接続より利点があって優先的に使用していたと思うのですが、今ここでVNC接続に戻ることにしました。

使ったのはRealVNC Viewerアプリです。簡単です。おそらく昔はディスプレーの解像度が低く、使いづらかったのが一因だったと記憶しています。

また、Raspberrypiの初期設定には、コンソール画面(ターミナル)を開いてraspi-configを起動して行っていましたが、Raspberrypiにキーボード、マウスをUSB接続し、HDMI接続でディスプレーに直接出力してメニューにある「RaspberryPiの設定」からSSHならびにVNC接続をONにした方が設定が楽な気がします。