マジョカアイリス ハック その3

作業再開

4月の異動で引っ越し等いろいろバタバタして手をつけられてなかったマジョカアイリス ハックを再開。

ここまで、Raspberry Pi Zero(32bit版 Rasbperry Pi OS Lite)にマジョカアイリスLCD の ラズパイ用 mod ドライバ(fbtft)を導入、ROS2もインストールしてベースは整ったので、アプリ側の方をいろいろ調べてみる。

前回は動作確認はfbtestを使ったが、fbtftのサンプルプログラムをまだ動かしてなかったので、今回はそれを試す。

fbtftのサンプルプログラム

fbtftのサンプルプログラムとしてPythonで書かれたものが2つが提供されていた。

  • test_sushi.py : PIL(Python Imaging Library)を使ったスシの画像の表示
  • test_opencv.py : OpenCVを使ってカメラでキャプチャーした画像表示

これらを動かすためのPython環境を構築する。

Python環境構築

ここまででPython3は既に導入されているが、pip3が未導入だったのでインストール。

$ sudo apt install python3-pip

まずは、test_sushi.pyを動かすために、PILをpip3で導入。

$ sudo pip install pillow

それ以外にも、画像フォーマット関連で以下の2つのライブラリを導入

$ sudo apt install libopenjp2-7 libtiff5

これでまずはスシが表示された。

f:id:azuzuzu:20210523140929p:plain
スシ

OpenCV環境の構築

OpenCVをインストールした後にPythonに紐づけるのは手間がかかるとのことで、pipで導入。

$ pip3 install opencv-python

その後、test_opencv.pyを起動すると依存ライブラリのエラーが多数でるので、調べながら一個一個導入。

調査の中で以下の記事を見つけたのでいくつか参考にさせてもらった。

qiita.com

まとめるとこんな感じ

$ sudo apt install libilmbase23 libopenexr23 libavcodec-extra58 libavformat58 libswscale5 libgtk-3-0 libatlas-base-dev

test_opencv.pyの起動

起動の前にカメラを接続し、raspi-configでカメラを有効化。

その後、test_opencv.pyを起動すると、画面にキャプチャー画像が表示される。

f:id:azuzuzu:20210523141027p:plain
キャプチャ画像

が、

Traceback (most recent call last):
  File "test_opencv.py", line 61, in <module>
    cv2.imshow('frame',frame)
cv2.error: OpenCV(4.5.1) /tmp/pip-wheel-qd18ncao/opencv-python/opencv/modules/highgui/src/window_gtk.cpp:624: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'

となって、プログラムが終了する。

Rasbperry Pi OS LiteはGUIのないHeadless環境なので、そりゃエラーになるね。ので、ソースコードの以下の3行をコメントアウト

#    cv2.imshow('frame',frame)
#    if cv2.waitKey(1) & 0xFF == ord('q'):
#        break

さて、次はいよいよROS2のコードを書くとしよう。