Ubuntu で OpenNI と Kinect ドライバのインストール

Kinect センサーを使う

この Web ページで行うこと

OpenNI に登録できるモジュールには,3D センサー,RGB カメラ,IR カメラ,オーディオ・デバイスがある。ミドルウエアの要素 (middleware component) としては,全身解析,手の点 (hand point) に関する解析,ジェスチャ解析,シーン解析(背景分離,床面の座標系,シーン内のフィギュアの識別)がある。

現在の提供状況:OpenNI の本家組織は 2014 年に解散し,openni.org での配布は終了した。OpenNI2 のソースコードは Structure(旧 Occipital)が公開するフォークが後継である。Ubuntu の universe リポジトリには OpenNI 1.5.4 と OpenNI2 2.2.0 のパッケージが引き続き収録されており,これを用いる。ミドルウエア NITE はクローズドソースであり,配布元が閉鎖したため Ubuntu のリポジトリには存在せず,正規の入手経路はない。骨格追跡やジェスチャ認識を行う場合は,NITE ではなく MediaPipe や Nuitrack などの現行のライブラリを用いる。

ハードウェアについては,Kinect v1(Xbox 360 用)と Kinect v2(Xbox One 用)はいずれも生産終了である。後継の Azure Kinect DK も 2023 年 8 月に販売終了となり,Orbbec Femto Bolt が互換の後継機として提供されている。

関連する外部ページhttps://structure.io/openni

関連する外部ページhttps://github.com/OpenKinect/libfreenect

関連する外部ページhttps://github.com/OpenKinect/libfreenect2

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

JDK のインストール

OpenNI の Java バインディング(libopenni-java)を使う場合に必要である。Java を使わない場合は省略してよい。 端末で,次のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install openjdk-21-jdk
java -version

JDK のインストールと設定(Ubuntu 上): 別ページ »で説明

OpenNI のインストール(Ubuntu 上)

Ubuntu で OpenNI 1.5 と,Kinect センサーモジュールをインストールしたいときの操作手順例。 端末で,次のコマンドを実行する。 libopenni-sensor-pointclouds は Microsoft Kinect 用,libopenni-sensor-primesense は PrimeSense 系センサー(Xtion など)用のモジュールである。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install libopenni0t64
sudo apt -y install libopenni-dev
sudo apt -y install libopenni-java
sudo apt -y install libopenni-sensor-pointclouds0
sudo apt -y install libopenni-sensor-pointclouds-dev
sudo apt -y install libopenni-sensor-primesense0
sudo apt -y install libopenni-sensor-primesense-dev
sudo apt -y install openni-doc
sudo apt -y install openni-utils

Kinect を USB に接続し,NiViewer を実行して動作確認を行う。 端末で,次のコマンドを実行する。

# 接続の確認 (Microsoft Corp. Xbox NUI ... が表示されることを確認)
lsusb
NiViewer

OpenNI2 のインストール(Ubuntu 上)

Ubuntu で OpenNI2 をインストールしたいときの操作手順例。 端末で,次のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install libopenni2-0
sudo apt -y install libopenni2-dev
sudo apt -y install openni2-doc
sudo apt -y install openni2-utils

Kinect を USB に接続し,NiViewer2 を実行して動作確認を行う。 端末で,次のコマンドを実行する。

# 接続の確認
lsusb
NiViewer2

libfreenect のインストール(Kinect v1 用ドライバ,Ubuntu 上)

Kinect v1 を OpenNI 経由ではなく直接扱う場合は,libfreenect を用いる。 端末で,次のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install freenect
sudo apt -y install libfreenect-dev
sudo apt -y install libfreenect-bin
# 動作確認 (深度画像と RGB 画像が表示される)
freenect-glview

一般ユーザーで実行したときに USB デバイスを開けない場合は,udev ルールを追加してユーザーを video グループに所属させる。 端末で,次のコマンドを実行する。設定を反映するには再ログインが必要である。

sudo usermod -a -G video $USER
sudo udevadm control --reload-rules
sudo udevadm trigger

Kinect v2 を使う場合は,libfreenect ではなく libfreenect2 をソースコードからビルドする。手順は https://github.com/OpenKinect/libfreenect2 で説明されている。