📸

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

2021/04/25に公開

RealSenseとは

RealSense(リアルセンス)とはIntel製のDepthセンサ(3Dカメラ)です。Depthセンサは、最近はiPhoneにもついていますが、方式は異なります。

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

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

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

https://www.tegakari.net/2020/09/3dcamera_compare_1/

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

シリーズの使い分けは、RealSenseの中の人によると距離で使い分けるのが常套とのことです。

注:上図は、以下ツイートから引用させていただいたものです。

https://twitter.com/TakumiRealSense/status/1615158340241461248

ハードウェア情報

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

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

Windows(WSL2)

WSL2上でも動かせます。ただ、少し手順は多く比較的なれている人向けです。

まずは、以下記事を参考にWSL2上でUSB機器を使えるようにする設定をします。以下はWindows11が前提となっていますが、Windows10でも問題ありませんでした。

最初のwsl --updateもしなくて大丈夫です(カーネル 5.4.72でいけました)。

https://zenn.dev/pinto0309/articles/7c7ce81bea8b6c

私がハマったポイントは以下です。

  • <windows username>に必ずWindowsのユーザー名を入れる(2箇所あるので注意)
  • 管理者権限でターミナルを起動する
  • WSL2が起動しなくなったら C:\Users\<windows username>/.wslconfigを削除して復帰

上記設定が終わったら、WSL2上でLinuxと同じ要領でlibrealsenseをセットアップすればrealsense-viewerが使えます。

ROSで動かすことも可能です。

WSL2がもし起動しなくなったら以下記事参照ください。

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

追記:以下記事の末尾により最小の手順が記載されています。まだ試していませんが、ひょっとしたらよりお手軽に実現できるかもしれません。

https://yuji2yuji.hatenablog.com/entry/2022/03/15/135200

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 -DBUILD_PYTHON_BINDINGS=true -DPYTHON_EXECUTABLE:FILEPATH=<python_path> -G "Unix Makefiles"
$ make -j2
$ sudo make install

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

$ which python

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

pyrealsense2は以下コマンドでインストールできます。

$ pip install pyrealsense2 -f https://github.com/cansik/pyrealsense2-macosx/releases 

参考: How to install pyrealsense2 on Mac Os?

Linux(Ubuntu)

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

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

動作保証はありませんが、私の自作スクリプトで以下コマンド一発でインストールも可能です。

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

特定のバージョンを入れたい場合は、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

Pythonで使用する場合は以下記事参照ください。

https://qiita.com/karaage0703/items/39040f23cbb0611c0a0e

Realsenseの動作確認方法

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

$ realsense-viewer

以下起動画面です。

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

ROSでRealSenseを使う方法

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

無保証ですが、自作スクリプトでコマンド一発でインストールも可能です。以下リポジトリのREADME参照ください。

https://github.com/karaage0703/ubuntu-setup

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と基本的に共通なので参考にしてみてください。

SLAMにRealSenseを使う方法

以下記事参照ください。

https://zenn.dev/karaage0703/articles/8e3e84c0fe45ba

Unityで使う方法

UnityでRealsenseの情報を表示

UnityでRealSenseを使うことも可能です。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 TIPS

ハードウェア情報が知りたい場合

シリアルNoやファームウェアバージョンをCUIで知りたい場合は、以下コマンドを実行して下さい。

$ rs-enumerate-devices -o

GUIであれば、Realsense Viewerでハードウェア情報を確認できます。

まとめ

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://qiita.com/porizou1/items/92b8cfacdacda4aa0dee

https://qiita.com/comachi/items/14b358568365bc5ee474

https://ar-ray.hatenablog.com/entry/2022/11/14/080000

https://murasan-net.com/index.php/2022/11/22/intel-realsense-d435-summary/

https://ar-ray.hatenablog.com/entry/2024/01/06/150203

https://developer.mamezou-tech.com/robotics/vision/realsense-d435f-disparity-shift/

関連記事

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

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

https://karaage.hatenadiary.jp/entry/2018/03/12/073000

https://karaage.hatenadiary.jp/entry/2017/09/11/073000

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

変更履歴

  • 2023/12/30 微修正
  • 2023/01/17 リアルセンスの使い分けに関して追記
  • 2020/03/01 WSL2上での設定に関して追記

Discussion