OpenCV AI KIT (以下OAK)を、Raspberry Pi OSから操作するためのインストール方法を紹介いたします。
作業を行った環境
- Raspberry Pi 3 model B
- Raspberry Pi OS 10.7
- Python 3.7.3
- pip 21.0
- virtualenv 20.4.0
今回の作業は、Raspberry Piへの接続機器による電力負荷を少しでも減らすため、WindowsPCからリモートデスクトップ接続で行いました。Raspberry PiにはRealVNCというVNC-Serverが既にインストールされているため、Windows側に新たにVNC-Viewerをインストールするだけで直ぐに使用できます。
①Python実行環境の構築
DepthAI APIのpython用モジュール(Python API)を利用するため、最初にPython環境を構築していきます。以下の手順で必要なパッケージをインストールしてください。
手順1:必要なパッケージをインストール
まず、DepthAIライブラリの実行に必要なシステム依存関係を調べ、不足しているパッケージをインストールします。次のコマンドをTerminalに入力し、[Enter]キーを押します。
sudo curl -fL http://docs.luxonis.com/_static/install_dependencies.sh | bash
コマンドが完了するまで、しばらくそのまま待機します。コマンドプロンプトが表示されたら完了です。
手順2:DepthAI APIのインストール
次にDepthAI APIのpython用モジュールをインストールします。Terminalに次のコマンドを入力し、[Enter]キーを押します。
python3 -m pip install depthai
以上で、Python環境の構築が終了しました。あとはDepthAI APIを利用するためのプログラムを用意するだけとなりました。
②DepthAI APIを利用する
DepthAI APIを利用するためのPython版デモ用プログラムが、開発元のLuxonis社から公開されていますので、今回はそれをダウンローして使用します。
手順3:デモ用プログラムをダウンロードする
まずTerminalで、今回の作業用に適当な名前のディレクトリを作成し移動しておきます。そこで次のコマンドを実行します。
git clone https://github.com/luxonis/depthai.git
これで現在のディレクトリ直下に「depthai」フォルダが作成され、そこにリポジトリのクローンがダウンロードされました。さらに、次のコマンドでリポジトリのあるディレクトリに移動しておきます。
cd depthai
以降の作業を実施すると、既存のPython環境に変更が加えられる可能性があります。システム上の他のPythonツールや環境に影響が生じないようにするためには、仮想環境で実行する必要があります。特に運用中の環境もなく、手っ取り早く作業を行いたい場合は、仮想環境を作成せずに【手順5】に進んでください。
手順4:Virtualenvで仮想環境を作成する
Raspberry Piなどリソースに制約のあるシステムの場合は、Conda、Pipenv、またはVirtualenvと言ったツールを使用して仮想環境を作成します。今回は、Virtualenvを使用する方法を紹介いたします。
Virtualenvを未だインストールされていない方は、こちらのコマンドでインストールを行ってください。
sudo pip install virtualenv
Virtualenvがインストールされたら、先程移動した「depthai」ディレクトリに「venv」という名前で仮想環境を設定し、「有効化」を行うためのコマンドを実行します。
virtualenv venv && source venv/bin/activate
コマンドプロンプトのユーザー名の前に(venv)という文字が追加されていれば設定完了です。
(venv) pi@raspberrypi:~/depthai $
手順5:ライブラリーの依存関係をチェックする
デモ用プログラムの実行に必要なライブラリーをチェックするため、Terminalに次のコマンドを入力し、[Enter]キーを押します。
python3 install_requirements.py
必要なパッケージを確認し、不足している場合はダウンロードしながらインストールが行われます。少々時間がかかりますのでしばらく待機します。再びコマンドプロンプトが表示されたら完了です。
これで、ようやくDepthAI APIを利用するためのプログラムの準備も整いました。
③OAKとPCを接続する
OAK-1
手始めに、OAK-1の接続を行ってみたいと思います。OAK-1はUSBコネクターがある方が上になります。付属のUSBケーブルのタイプC(形が小さい方)のコネクタをデバイスに差し込み、反対側のタイプAをRaspberry PiのUSBコネクタに差し込みます。(下の写真では、撮影のため電源用のUSBケーブルは抜いています)
接続が完了したらプログラムを実行させるため、Terminalに次のコマンドを入力し、[Enter]キーを押します。
python3 depthai_demo.py
コマンドが実行されてからしばらくすると、画面に「previewout-rgb」という名前の小さなウインドウが表示されました。(あらかじめ学習済みの)オブジェクトが認識されると、境界ボックスで結果を表示することができるAPIが呼び出されたようです。試しにGoogleの画像検索で「車」を検索し、一覧表示させた画面を撮影してみました。
困ったことに、画面に右上に「電圧不足」の表示が出てしまいました。時折、パチンという音とともにリレーが働きOAK-1側の電源が入ったり切れたりを繰り返しました。故障の元になると危険なので、長時間のテストは断念しました。少し電源周りの見直しが必要かもしれません。
実行中のプログラムを終了するには、「previewout-rgb」ウィンドウをアクティブにした状態でキーボードの「q」キーを押します。
OAK-D
次にOAK-Dで試してみました。OAK-Dでは電力が供給できる仕様になっているため、OAK-1のようなことが起きないことを祈り、電源アダプターを使用しました。(下の写真では、撮影のため電源用のUSBケーブルなどは抜いています)
OAK-1と同様、OAK-Dも簡単に動作確認がとれました。そして「電圧不足」の表示に関しては、電源アダプターを使用していることもあり問題ありませんでした。
ちなみに、試しにOAK-D側の外部電源を外してみると、直ぐに「電圧不足」の表示が出てしまいました。Raspberry Piで使用する場合は、できれば外部電源が供給可能なOAK-Dを使用した方が無難かもしれません。
補足情報:
テスト使用したRaspberry Pi 3 model Bの場合、電源定格がDC5Vに対し本体の消費電流が1.3A、さらにすべてのUSBポートを使用した際のUSBデバイスの総電力が1.2Aまでの制限があります。ちなみにOAKは最大1A(通常500mA程度)の電力を使用するとのことなので、今回のようにUSBデバイスをOAKのみにした場合は、まだ余裕があるはずです。Raspberry Pi用の入力電源で使用したアダプターかUSBケーブルを質の良いものに交換するか、Raspberry PiのUSBポートとOAKの間に電源付きのUSBハブを使用することで改善できる可能性があります。
今回使用したデモ用プログラムのより詳しい使い方については、別の記事で紹介していますので参考にしてください。