RealsenseをセットアップしてROSやUnityで使う方法

5 min read読了の目安(約4900字

Realsenseとは

Depthセンサ(3Dカメラ)です。Depthセンサは、最近はiPhoneにもついていますが、方式は異なります。

Depthセンサの詳細は、割愛します。以下あたりの記事がとても詳しく参考になります。

https://aru47.hatenablog.com/entry/2021/03/14/212846

https://cyberagent.ai/blog/research/agent/survey-of-3d-sensors

その中でも、比較的安価で使いやすいのがIntelのRealsense D400シリーズです。

ハードウェア情報

Realsense D400シリーズは、いくつか機種があるのですが、比較的広角で普段使い(?)しやすいD435を使って説明していきます。Amazonでも買えますね。

https://amzn.to/3eqwwYp

ソフトウェアセットアップ

公式情報

以下の公式ドキュメントを頼りにセットアップしていきましょう。

https://dev.intelrealsense.com/docs

https://github.com/IntelRealSense/librealsense/

昔は、カーネルにパッチ当てたり、ビルドの手間が多かったり動かすまで大変だったのですが、最近は、かなり簡単になりました。

以下に、Windows, Mac, Linux, Raspberry Pi, Jetson Nano各プラットフォームでのインストール方法を記載します。

Windows

すみません、あまり使わないので省略します。マウスをポチポチしていけば、普通に使えると思います。

Mac(Apple Silicon/Intel)

以下コマンドで必要なソフトを事前にインストールします。

$ brew install libusb pkg-config
$ brew install homebrew/core/glfw3
$ brew install cmake

以下コマンドでソースからビルドしてインストールします。

$ git clone --depth 1 https://github.com/IntelRealSense/librealsense.git
$ cd librealsense
$ mkdir build && cd build
$ cmake .. -DBUILD_EXAMPLES=true -DBUILD_WITH_OPENMP=false -DHWM_OVER_XU=false -G Xcode
$ make -j2
$ sudo make install

PythonからRealsenseを使いたい場合は、cmakeのコマンドが少し変わって以下となります。

$ cmake .. -DBUILD_EXAMPLES=true -DBUILD_WITH_OPENMP=false -DHWM_OVER_XU=false -G Xcode

<python_path>のところには、以下コマンドで表示されるパスを入力します。

$ which python

すでにcmake済みの場合はbuildフォルダを削除してやりなおしましょう。

Linux(Ubuntu)

基本的には以下公式サイト参考にしましょう。Installing the packagesのところのコマンドを打ち込めばOKです。

https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md

特定のバージョンを入れたい場合は、apt listコマンドを使いましょう。例えば以下です。

$ apt list -a librealsense2

どうしても安定しない場合などは、ソースからビルドを試したほうが良いかもしれません。ソースからビルドする手順は以下となります。

https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

Raspberry Pi

以下記事を参照ください。

https://zenn.dev/karaage0703/articles/808d3922a1671b

Jetson Nano

以下記事を参照ください。

https://qiita.com/karaage0703/items/cb9bbe1b4f2504f8ad0d

Realsenseの動作確認方法

インストール完了したら、realsense-viewerを起動して動作確認しましょう。以下コマンドで起動します。

$ realsense-viewer

以下起動画面です。

Realsenseのファームウェアもここからアップグレードできます。基本的に、最新版にしておくのが良いです。

ROSでRealsenseを使う方法

ROS(Robot Operating System)というロボット向けのミドルウェアでRealsenseを使うと、ROSの豊富な機能が使えて便利です。基本的にはLinux(Ubuntu)で使うことになります。ROSのインストール方法は、公式のWikiに書かれています。

はUbuntu18.04であれば、以下コマンドでインストールできます(こちらは、自作のスクリプトなので、無保証です)。

$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-ros-melodic.sh | /bin/bash

ROSでRealsenseを使うには、librealsenseに加えてrealsense-rosというROSのパッケージが必要になります。Realsenseのファームウェア、librealsense,realsense-rosの動作するバージョンの組み合わせがあるので注意してください。Releasesに推奨のバージョン情報が記載されています。基本的には、全て最新版にしておけば大丈夫です。

インストール方法は、以下参照ください。

https://github.com/IntelRealSense/realsense-ros

ROSでRealsenseは、Jetson NanoやRaspberry Piでも使えます。ROSに関しては省略します。以下で紹介するRaspberry PiやJetson Nanoと基本的に共通なので参考にしてみてください。

Unityで使う方法

UnityでRealsenseの情報を表示

Unityでリアルセンスを使うことも可能です。Macで試しましたが、Windows, Linuxも同じ要領で使えると思います。

各プラットフォームへのUnityのインストール方法は省略します。バージョンは2020.2.7f1を使いました。

librealsenseにはUnityのwrapperが準備されているので、それを使用します。

https://github.com/IntelRealSense/librealsense/releases

上記サイトからIntel.RealSense.unitypackageをダウンロードします。

Unityを起動したら、Projectsを右クリックしてimport package -> custom packageを選択して、ダウンロードしたIntel.RealSense.unitypackageをインポートしましょう。

RealSenseSDK2.0/Scenes/SamplesにたくさんサンプルがあるのでRealsenseをつないだ状態で、実行してみます。以下はTexturesDepthAndColor.unityというサンプルを動かした例です。

Unity上でRealsenseの情報が扱えているのが分かります。

UnityとRealsenseでkeijiro氏のこちらのリポジトリとか使うと、以下のようなビジュアルエフェクトが試せそうなのですが、バージョンの違いなのか残念ながらうまく動かせていません…

https://www.youtube.com/watch?v=uvGX8GPdfTE

Unityでの使い方は、以下が参考になりそうです。

http://tips.hecomi.com/entry/2019/06/04/235243

3Dスキャン

realsense-viewerで保存した点群データ(.ply)をUnityで表示することもできます。
3Dスキャンをする方法は、Realsense以外にもいくつかあります。詳細は、以下記事を参照ください。

https://zenn.dev/karaage0703/articles/9bd4ad8604317d

ただ、これは色がついておらず、がっかりな結果ですね。うまくtextureを書き出せればカラーも出せるのですが、今のところ満足いくクオリティではできていません。3Dスキャンに関しては、うまくできたら別記事で紹介したいと思います。

まとめ

RealsenseのインストールからROSやUnityの使い方までまとめてみました。ROSは豊富な可視化ソフトや、ROSの様々なパッケージが使えることが魅力ですね。Unityに関しては、まだ初めて試したところなのですが、色々なプラットフォームで使えるが魅力的だと感じています。

参考リンク

https://zenn.dev/nackan/articles/2027b891180b17

https://psychic-vr-lab.com/blog/unity/afjk_unity_2_realsenses/

https://www.andreasjakl.com/capturing-3d-point-cloud-intel-realsense-converting-mesh-meshlab/

http://www.pointcloud.jp/blog_n22/

https://www.intelrealsense.com/3d-scanning-an-environment/

関連記事

https://karaage.hatenadiary.jp/entry/2021/04/21/073000

https://karaage.hatenadiary.jp/entry/2019/06/07/073000