OAK と Raspberry Pi
OAK と Raspberry Pi
私たちのデバイスはRaspberry Pi(RPi)のような小さなシングルボードコンピュータにも接続できます。RPiにDepthAIをインストールするには、依存関係をインストールし、pip
でライブラリをインストールする必要があります。DepthAIライブラリには、piwheels上にRPi用のwheelがあらかじめ組み込まれています。
設定済みのRPi OSイメージを使用する
DepthAIとそのすべての依存関係がプリインストールされたRaspberry Pi OSイメージを提供しています。イメージはこちらから入手できます。
- OAK_CM4_POE:RPi OS(デフォルト)を使用し、DepthAIがプリインストールされています。8GB以上のuSDカードが必要です。このイメージはOAK-D-CM3、 OAK-D-CM4、OAK-D CM4 PoEに付属するuSDカードでフラッシュされます。2枚目のuSDカードを有効にするには、こちらの回避策をご覧ください。すべてのOAKカメラにこのイメージを使用することを推奨します。
- KS_Rpi_OS_Full:RPi Full OSを使用し、DepthAIとCEPがプリインストールされています。32GB以上のuSDカード、4GB RAM搭載のRPi 4が必要です。このイメージは KickStarter の支援者に送られたuSDカードでフラッシュされたものです。CEPプラットフォームが必要な場合のみ、このイメージを使用してください。
これらのイメージの作成手順と変更履歴はここにあります。
uSDカードをフラッシュする
-
Google Drive(上部のリンク)からRPiイメージ、Balena Etcherプログラムをダウンロードします。RPi Imagerを使うこともできますが、問題が発生することがあります。
-
Balena Etcherを開きます。AppImageをダウンロードした場合は、その上で右クリックし、プログラムを起動するためにRunをクリックする必要があるかもしれません。
-
Flash from fileをクリックし、ダウンロードした.zipイメージを選択します。
-
対象のuSDカードを選択します。
-
Flash!をクリックし、終了するまで待ちます。
-
フラッシュが完了したら、uSDカードを安全に取り出してRPiに挿入し、RPiの電源を入れます。
RPiからOAKへの電源供給
RPiのドキュメントには、Raspberry Pi 2以降のモデルはUSBポートから最大1.2Aを供給できると記載されています。最大負荷時でもOAKカメラの消費電力は1A未満であるため、以下の場合を除き、USB-Cケーブル経由でRPiからOAKカメラに直接電力を供給することができます。
- RPiのUSBポートに接続されているUSBデバイスの消費電流が大きすぎる場合。RPiは合計で1.2Aを供給できるため、すべてのUSBデバイスが1.2Aを超える電流を消費すると、ブラウンアウトが発生します。
- OAKカメラのProバージョンを利用する場合。IRレーザードットプロジェクターとIRイルミネーションLEDを搭載しているため、追加で最大0.25Aを消費します。
OAKカメラへの外部電源供給は、バレルジャック(古いデバイスの場合)またはYアダプターを使用することをお勧めします。その理由は、OAKには電流スパイクがあり(特にVideo Encoderを使用し、AI推論を実行している場合)、ブラウンアウトにつながる可能性があるからです。
RPiにSSH接続する
設定済みのRPi OSイメージを使用している場合、SSHサーバーはすでに有効になっています。そうでない場合は、bootページ内にssh
ファイルを作成し、起動時にSSHサーバーが有効になるようにする必要があります(チュートリアルはこちら)。
RPiをWiFi接続する場合は、ブートタブ内にwpa_supplicant.conf
を作成(編集)することで、WiFi SSID/パスワードを設定できます(チュートリアルはこちら)。
RPiをイーサネット/WiFi経由でコンピュータと同じLANに接続したら、以下のコマンドでRPiにSSH接続します。RPiとコンピュータが同じLAN内にない場合は、luxonis.local
(設定済みのRPiイメージのRPiのデフォルト名)の代わりにRPiのIPを指定する必要があります。
ssh pi@luxonis.local -X
-X
引数は LinuxでX11転送を有効にします。 OpenCV のimshow
イメージはSSH経由でコンピュータに転送されます。MacOSでは、X11はデフォルトではインストールされていないので、ダウンロードする必要があります。(詳しい説明はこちら)
RPiに初めてSSH接続すると、以下のログのように認証について警告が出ます。
The authenticity of host 'raspberrypi.local (192.168.1.222)' can't be established.
ECDSA key fingerprint is SHA256:stb5mbRQeX6veOq8Wzg81rz9IHonxJR2++Q8bDYryTo.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
続行するにはyes
と入力してください。
このコマンドの後、パスワードを入力する必要があります。デフォルトのRPi OSのパスワードはraspberry
です。ご自身で変更することをお勧めします。
SSHが成功したら、サンプルアプリを実行してみましょう。
python depthai-python/examples/MobileNet/rgb_mobilenet.py
イメージの制限
OAK_CM4_PoEでは、イメージV8以降、2枚目のuSDカードサポートが無効になっています。これは、uSDカードのサポートが(ストレージ目的で)有効になると、WiFi接続が無効になるためです。2枚目のuSDカードのサポートを有効にする(そしてWiFi接続を無効にする)には、/boot/config.txt
を編集し、ファイルの最後にあるdtoverlay=sdhost,poll_once=off
という行のコメントを解除し、システムを再起動します。
eMMCにイメージをフラッシュする
OAK-D-CM4とOAK-D CM4 PoEにはRaspberry Pi Compute module 4 (CM4)が搭載されています。OAK-D-CM4バッチのほとんどはCM4にeMMCメモリを搭載しており、OAK-D CM4 PoEボードのほとんどはCM4 Liteを搭載していますが、これにはeMMCメモリを搭載しておらず、代わりにuSDカードから起動します。uSDカードにイメージをフラッシュする方法は簡単で、ここではCM4上のeMMCにイメージをフラッシュする手順を説明します。
これはOAK-D-CM4で、下の画像の赤い矢印で示したeMMCメモリを搭載したCM4です。CM4 Liteバージョンには、このチップは搭載されていません。
CM4 eMMCにイメージをフラッシュするには(公式RPiガイド)、まずヘッダーピンでUSB_BOOTを有効にする必要があリます。デフォルトでは、コネクタはDIS
(disable)と表示されている2つのヘッダーピンにあるので、コネクタをEN
(enabledd)ピンに移動する必要があります。
ピンコネクターをEN
に切り替えた後、コンピューターからマイクロUSBケーブルを上の画像の赤い四角で示したマイクロUSBコネクターに接続します。マイクロUSBを接続したら、5Vバレル・ジャックから電源を供給します。
マイクロUSBと電源の両方を接続したら、RPiのUSBブートを有効にする必要があります。ここではチュートリアルに従いましょう。プログラムをビルドして実行すると、以下と同じようなものが表示されるはずです。
/Documents/usbboot$ sudo ./rpiboot
RPIBOOT: build-date Apr 21 2022 version 20220315~121405 445356e1
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Second stage boot server
Loading embedded: start4.elf
File read: start4.elf
Second stage boot server done
ブートが完了すると、Raspberry Pi ImagerかBalena Etcher(今回使用したもの、下のスクリーンショットを参照)にeMMCメモリが表示されるはずなので、簡単に希望のイメージをeMMCにフラッシュできます。フラッシュが完了したら、USBブートを無効にして(コネクタをもう一度切り替えて)、デバイスを再起動してください。新しくフラッシュされたイメージから起動するはずです!
Raspberry Pi Zero
Raspberry Pi Zeroは、コストパフォーマンスに優れたシングルボードコンピュータ(SBC)です。512MBのRAM、1GHzのシングルコアCPUを搭載しています。BluetoothとWiFi接続なタイプ(RPI Zero W)もあります。消費電力は約0.5Wです。
RPi Zeroは、メタデータ(NNの結果)のストリーミング、低解像度でエンコードされたビデオ、または負荷の軽いコンピューティングには十分の性能です。一方で、高解像度の動画をストリーミングしたり、重い計算(OpenCVなど)や後処理を行う場合は、RPi Zeroはホストコンピュータとして最適ではない場合もあります。
OAKカメラとRPI Zeroの接続
RPI Zeroには周辺機器用のマイクロUSBコネクタが1つあります。標準的なUSB-C(からUSB-A)ケーブルを使用できますが、OAKカメラをRPI Zeroに接続するにはOTGコネクタ/ケーブルが必要です。
Luxonisとは無関係ですが、Aliexpressで左のコネクタと右のコネクタ を入手しました。
また、テストでは、RPi Zeroは外部電源(電源ジャックまたはYアダプタ)なしでOAK-Dに十分な電力を供給することができました。
RPiのトラブルシューティング
RPiがロックする / RPiでOAKがクラッシュする
Raspberry PiのUSBポートには最大1.2Aの制限があり、OAKカメラは最大1A(最大電力時、通常は500mA近く)まで使用できます。 そのため、ロックアップが発生する場合は、USBデバイスの総電力がPiから引き出された結果、この1.2Aの制限を超えている可能性があります。この現象はUSBハブを使用すること、またはUSB経由でPiから給電する他のものを減らすことで防ぐことができます。 また、OAKがPi上でランダムにクラッシュすることもあります。これは、OAKが一度に多くのことをするように設定されている場合に特によく起こります。DepthAIがより多くのことを一度にできるようになり、OAKが引き出せる最大電力が増えるにつれて、この可能性はますます高くなっています。OAKからのピークパワー(電流)スパイクがPiが処理できる範囲を超え、OAKがブラウンアウトしてエラーを返すことがあるようです。
もしあなたがRPi上でDepthAIの安定性に問題がある場合、OAKカメラに電源やUSBハブを介して電力を供給し、エラーが消えるか試してみてください。
X11転送をせずにSSH接続する
RPiに-x
引数なしでSSH接続し、フレームを表示しようとすると(例えばcv2.imshow()
)、以下のようなエラーが発生します。
(-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'
qt.qpa.xcb: could not connect to display. qt.qpa.plugin: Could not load the Qt platform plugin "xcb".
This application failed to start because no Qt platform plugin could be initialized.
解決方法は、RPiにSSH接続するときにX11転送を使うことです。こちらを参照してください。
質問がありますか? 技術サポートやその他の質問については、ディスカッションフォーラムへどうぞ。
出典 : Luxonisの資料 - OAK & Raspberry Pi
https://docs.luxonis.com/projects/hardware/en/latest/pages/guides/raspberrypi/
*このガイドはLuxonis社の許可を得て、スイッチサイエンスが翻訳しています。