Open12

DepthAIカメラ OAK-Dで遊んでみる

karaage0703karaage0703

Mac(Intel)へのインストール

Python環境には、MiniForgeを使っています。以下記事参照ください。

https://zenn.dev/karaage0703/articles/f3254b14898b4d

MiniForgeのセットアップが終わったら、ドキュメントを参考にインストールします。

具体的には、以下コマンドでMiniForge環境に関連ライブラリとdepthaiライブラリをインストールします。

$ conda create --name depthai python=3.8
$ conda activate depthai
$ bash -c "$(curl -fL http://docs.luxonis.com/_static/install_dependencies.sh)"
$ python3 -m pip install depthai

Mac(Apple Silicon)へのインストール

Apple Siliconでもセットアップできました。

以下を参考に構築したPython環境でpip3 install depthaiでOKです。
https://zenn.dev/karaage0703/articles/5e77eb77571727

以下はうまくいかなかった例です。以下記事のとおり環境設定して

https://zenn.dev/karaage0703/articles/665e0cbdbd69f0

https://zenn.dev/karaage0703/articles/0ab9e654cfb0ec

以下のように実行します。

$ conda create --name depthai python=3.8
$ conda activate depthai
$ conda install opencv
$ bash -c "$(curl -fL http://docs.luxonis.com/_static/install_dependencies.sh)"
$ python3 -m pip install depthai

一見うまくいったように見えますが、実行すると以下のエラーでうまくいきません。

$ python3 rgb_preview.py 
Traceback (most recent call last):
  File "rgb_preview.py", line 4, in <module>
    import depthai as dai
ImportError: dlopen(/Users/karaage/miniforge3/envs/depthai/lib/python3.8/site-packages/depthai.cpython-38-darwin.so, 2): no suitable image found.  Did find:
	/Users/karaage/miniforge3/envs/depthai/lib/python3.8/site-packages/depthai.cpython-38-darwin.so: mach-o, but wrong architecture
	/Users/karaage/miniforge3/envs/depthai/lib/python3.8/site-packages/depthai.cpython-38-darwin.so: mach-o, but wrong architecture

参考

https://docs.luxonis.com/projects/api/en/latest/install/#macos

karaage0703karaage0703

OAK-Dのハードウェア

外観



メモ

  • カメラとしての動作だけなら、外部電源無し(USB給電のみ)でも動く。ディープラーニングを走らせると落ちる
karaage0703karaage0703

応用例

姿勢推定(depthai_movenet)

最新(2.7.1)のdepthaiライブラリで動作しました。

$ git clone https://github.com/geaxgx/depthai_movenet
$ cd depthai_movenet
$ python3 demo.py

以下は人形なので、うまく推定できていませんが、人だとちゃんと検出できていました。

https://github.com/geaxgx/depthai_movenet

姿勢推定(depthai_blazepose)

このリポジトリは、試したら一回だけ動いて、以下OAK-Dが動かなくなってしまった。
requirements.txtが古い(2.3.0)depthaiライブラリのバージョンを要求しているのが原因。最新(2.7.1)のdepthaiだと動かない。

$ git clone https://github.com/geaxgx/depthai_blazepose
$ cd depthai_blazepose/
$ python3 -m pip install -r requirements.txt
$ python3 demo.py

https://github.com/geaxgx/depthai_blazepose

ハンドトラッキング

通常のモード(ホストモード)で動かす方法

$ git clone https://github.com/geaxgx/depthai_hand_tracker
$ cd depthai_hand_tracker
$ python3 demo.py

16FPS程度

DepthAI側で主に計算するエッジモードで動かす場合は、以下のように-eオプションを付けます。

$ python3 demo.py -e

倍以上の39FPS!

その他様々なオプションがあります。リポジトリのREADME参照ください。

https://github.com/geaxgx/depthai_hand_tracker

karaage0703karaage0703

トラブルシューティング

突然OAK-Dが動かなくなった

$ python3 depth_preview.py 
depth_preview.py:18: DeprecationWarning: create[Node]() is deprecated, use create([Node]) instead.
  monoLeft = pipeline.createMonoCamera()
depth_preview.py:19: DeprecationWarning: create[Node]() is deprecated, use create([Node]) instead.
  monoRight = pipeline.createMonoCamera()
depth_preview.py:20: DeprecationWarning: create[Node]() is deprecated, use create([Node]) instead.
  depth = pipeline.createStereoDepth()
depth_preview.py:21: DeprecationWarning: create[Node]() is deprecated, use create([Node]) instead.
  xout = pipeline.createXLinkOut()
Traceback (most recent call last):
  File "depth_preview.py", line 32, in <module>
    depth.initialConfig.setConfidenceThreshold(200)
AttributeError: 'depthai.node.StereoDepth' object has no attribute 'initialConfig'

トラブル時は、CommunityのDiscordの #support で問い合わせるのが良いです。

スーパーエンジニアのPINTOさんにTwitterで教えていただきました。
https://twitter.com/PINTO03091/status/1416372275285135367

https://discord.com/invite/EPsZHkg9Nx

結局、色々調べてもらった結果、私の使っているソフトバージョンが古いという話になりました。バージョン確認は以下。

$ python3 -c "import depthai as d; print(d.__version__)"
2.3.0.0.dev+c90abbb7634da0042375560362d1c30322634101

アップデートは以下で実施できます。

$ git fetch --all
$ git checkout origin/main
$ python3 install_requirements.py 

すでに2.3から2.7にバージョンが進んでいました。

$ python3 -c "import depthai as d; print(d.__version__)"
2.7.1.0.dev+4a36b560195f91874aa884221a47d77bd9f88875

バージョンアップ後、再度サンプル実行したら、何事もなく動きました。嬉しい!

$ python3 depth_preview.py