RealSense を利用するためのメモ
RealSense は深度を計測することができる深度カメラとして知られている。その利用方法を記す。
公式ビューアによる RealSense の利用
ここでは、Intel による公式ビューア RealSenseViewer で RealSense を利用する方法を紹介する。
もちろん、事前に、RealSense を Windows に USB 接続しておく必要がある。
なお、USB 3.0 以降の USB 端子に RealSense を接続する必要がある。また、USB 端子から供給される電流が少ない場合も認識に失敗する。
Windows の場合
こちらから、Intel.RealSense.Viewer.exe をダウンロードして実行すれば良いだろう。
Ubuntu の場合
貸与した「Ubuntu 20.04 搭載 Let's Note」に「RealSense」を接続した場合の RealSenseViewer の利用方法を記す。
RealSense の公式アプリケーションを実行するには、ターミナルを開き、下記のコマンドを実行すれば良い。
(終了するときは、コマンド実行中のターミナルで Ctrl-C である)
realsense-viewer
Windows / Ubuntu 共通の RealSense Viewer の操作方法
現われた RealSense Viewer ウインドウで、右上の「2D | 3D 」の切替えを「2D」にし、
画面左側の Stereo Module と RGB Camera のチェックを ON にすることで映像が現われる。
Stereo Module は、距離に応じて色づけされていることがわかる。
このように「通常のカメラ」と「距離を計測するカメラ」との 2 つの機能があるのが RealSense の基本機能である。
RealSense による人物認識
公式の RealSenseViewer を実行するとわかるように、RealSense は「通常のカメラ」と「距離を計測するカメラ」との 2 つの機能があるセンサであり、
人物認識の機能があるわけではない。
もし RealSense で人物認識を行いたければ、自分で人物認識のプログラムを書くしかない。
RealSense はそれなりに高価なセンサであるため (5万円以上)、便利なプログラムを書いて公開してくれている人は多くはないためである。
すなわち、RealSense + (mediapipe / openpose / lightweight openpose / yolov7 / posenet) のように、
RealSense で映像を取得し、これまで体験した人物認識機能を適用して結果を表示するプログラムを自分で書く、ということである。
ちなみに、それは皆さんにとってはかなり難易度の高いタスクであると言えるだろう。
ここでは、RealSense で映像を取得し、さらに RGB カメラの映像と mediapipe から得られた骨格を RGB カメラと深度カメラの両方に上書きする Python3 プログラムを作成したので紹介する。
下記のファイルを、「リンクを右クリックして『名前をつけてリンク先をダウンロード』」などでダウンロードする。
ダウンロードの保存先は、mediapipe のプログラム (sample_pose.py など) があるフォルダとすること。
その場所に保存しないと動作しない。
Windows での実行
上記の RealSense + mediapipe のプログラムは mediapipe が動くよう設定した仮想環境 tf2 で実行するのが良いだろう。
mediapipe 用のライブラリは、先頭に (tf2) がついたターミナルで以下のコマンドでインストールできる。
pip install pyrealsense2
なお、皆さんに貸与した GPU 搭載ノート PC ではこの操作は実行済みである。
なお、RealSense + mediapipe は GPU は特に必要としない。
後は、 realsense_mediapipe_pose.py というプログラムを 仮想環境 tf2 の Spyder で実行すればよい。
なお、Spyder (tf2) で realsense_mediapipe_pose.py を開いたら、
Spyder (tf2) の 「実行」→「ファイルごとの設定」を以下のように設定すること。
- 「カスタム設定でファイルを実行」にチェック
- コンソール:「外部システムターミナルで実行」にチェック
(そうしないとプログラムが正常終了しないし、三次元プロットが正常に動作しない)
- 一般設定:「コマンドラインオプション」にチェックして 「 --plot_world_landmark 」 を記述。
(必須ではないが、このコマンドラインオプションにより三次元プロットが表示される)
このプログラムのポイントは、以下の通りである。
- 各関節 (landmark) の脇に、RealSense で計測した距離 z (単位は [m]) が表示される
- 三次元プロットの (x, y, z) のうち、z は上と同じく RealSense で計測した距離 (単位は [m]) が用いられる。
(x, y) の方は mediapipe 内で pose_world_landmarks (WorldLandmark) と呼ばれる座標が用いられており、
画像の幅と高さをそれぞれ 1 に正規化した座標となっている。
なお、この pose_world_landmarks (WorldLandmark) は三次元プロットでしか用いられていない。
Ubuntu での実行
Ubuntu で RealSense + mediapipe のプログラムを動かすには、pip3 をインストールしてから、その pip3 で pyrealsense2 をインストールすればよい。
sudo apt -y install python3-pip
sudo pip3 install pyrealsense2
realsense-lab-sample ディレクトリに置かれた realsense_mediapipe_pose.py がプログラムである。
新規に起動したターミナルで以下のコマンドを順に実行すれば結果を見ることができるだろう。
cd realsense-lab-sample
python3 realsense_mediapipe_pose.py
こちらは、画面上でキーボードの「q」をタイプすれば終了するように設定してある。
なお、プログラム実行時に下記のように「--plot_world_landmark」というコマンドラインオプションをつければ、mediapipe で得られた骨格を三次元推定したものも表示される。
python3 realsense_mediapipe_pose.py --plot_world_landmark