2023年8月27日日曜日

azure kinectをubuntu22.04で動かすためのdebファイルを作った


背景

azure kinectとはmicrosoftが作ったtof(time of flight, 深さを取得できる)カメラです。
公式が配布しているsdkのdebファイルはubuntu22.04向けにインストール出来なかったのでインストールできるようにコードを更新してpull requestを作成したものの取り込まれる気配がありません。
そのため、更新したコードをdebファイルにまとめて利用可能にしました。
debファイルのurlなどを共有します。

なお、azure kinectは2023.08.17に生産終了が発表された(ITmediaの記事microsoftのブログ)ため、今後使う場合はmicrosoftがazure kinect後継品として紹介しているFemto Bolt(2023年後半発売予定)などを使うのが良さそうです。

使ったもの

  • ubuntu22.04
  • azure kinect

インストール

githubのリリースページアップロードしたdebファイルをダウンロードしてaptでインストールします。
エラーが発生したらこの記事のコメントなどで内容を共有していただけると嬉しいです。
wget -P /tmp https://github.com/asukiaaa/Azure-Kinect-Sensor-SDK/releases/download/2923-08-26-ubuntu-22-04/libk4a1.4_1.4.1_amd64.deb
sudo apt install /tmp/libk4a1.4_1.4.1_amd64.deb

上記のdebudevのrules(usbの接続設定ファイル)を含んでいるので、インストール後にazure kinectのusbを抜き差しして再認識させてください。

pythonのwrapperで動作確認

pyk4aというpython向けのwrapperを利用して動作を確認します。
sudo apt install python3-pip
pip3 install pyk4a

深さ情報を表示するプログラムをダウンロードして実行します。
上記プログラムの実行にはexampleディレクトリにあるhelpersも必要なので一緒にダウンロードします。
wget -P /tmp https://raw.githubusercontent.com/etiennedub/pyk4a/master/example/helpers.py https://raw.githubusercontent.com/etiennedub/pyk4a/master/example/viewer_depth.py
python3 /tmp/viewer_depth.py

距離情報を表示できました。


アンインストール

アンインストール時はパッケージ名を指定します。
sudo apt autoremove libk4a1.4

余談: ビルドスクリプト

debファイルをビルドするスクリプトをgithubで公開しています。
似たようなことをしたい場合は参考になると思います。

https://github.com/asukiaaa/k4a-build-scripts/blob/main/build-for-ubuntu2204.sh

余談: 炎天下での利用は最長認識可能距離が1~2mに縮まる

屋内だと5mほどの距離を認識してくれますが、炎天下では認識が悪くなり2m弱になりました。
信号が直角に当たる壁は認識できていますが、信号が斜めに当たり太陽光が直角近くに当たる地面は認識できていないので、日中屋外で1m以上離れた物を認識させる用途には不向きでした。



おわり

コードを更新して作ったdebファイルを利用してazure kinectをubuntu22.04で動かせました。
この記事を書く10日前にazure kinectの販売が終了すると発表されてしまいましたが、やりたいことをやり遂げられたので良かったです。

参考

azure kinect
microsoft/Azure-Kinect-Sensor-SDK
Support ubuntu 22.04 #1941
pyk4a

0 件のコメント :