目的
Open3DはRealSense
SDK(librealsense)が組み込まれている。
ソースビルドした際、デフォルトではlibrealsenseをローカルでビルドし、静的リンクしている。Open3DのビルドオプションはFORCE_RSUSB_BACKEND=ONであったりするため、できればpre-install済みのバイナリを使いたい場合もある。
ビルド時に「USE_SYSTEM_LIBREALSENSE」を指定すればpre-install済みのバイナリをリンクするはずなのだが、実際には動作していないことがわかった。
このため、CMakeを修正し、「USE_SYSTEM_LIBREALSENSE」でpre-install済みのlibrealsenseをリンクするように対応する。
動機
前回のブログ「Jetson Nano(JetPack 4.5)でlibrealsenseをソースビルドする」でRealSense SDKをソースビルドしてインストールした。
このlibrealsenseを使ってOpen3DのRealSense IFを使ってみたかった。
リファレンス
-
RealSense with Open3D
-
Support USE_SYSTEM_LIBREALSENSE flag(Open3D issue)
-
Support USE_SYSTEM_LIBREALSENSE flag. (Open3d Pull request)
-
これ、ほんと?
— nb.o (@Nextremer_nb_o) February 15, 2021
ソース検索してもUSE_SYSTEM_LIBREALSENSE使われなさそうだけど…
これ、絶対librealsenseビルドするよね??https://t.co/nnWJQ0aWOK - Python RSBagReader.open() crash on Ubuntu (Open3D issue)
手順
Open3Dに出したPull requestはマージされたのでcommit 41fcfdc 以降でビルドすればOK。
前回のブログのJetson
Nano(librealsenseをソースビルドしてインストール)でビルドした(x86のUbuntuでも確認済み)。
Jetson Nanoの場合は、ARM supportの手順に従ってビルドする。
cmakeの際に
- 「BUILD_LIBREALSENSE」と「USE_SYSTEM_LIBREALSENSE」をONにする。
-
「GLIBCXX_USE_CXX11_ABI」をONにする。
フラグをOFFにするとOpen3DとlibrealsenseのC++ ABIの違いで#2985の問題が発生する。
このため、GLIBCXX_USE_CXX11_ABI=OFFを指定するとUSE_SYSTEM_LIBREALSENSEはOFFにしている。
$ git clone --recursive https://github.com/intel-isl/Open3D $ cd Open3D $ mkdir build && cd build $ cmake \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_CUDA_MODULE=OFF \ -DBUILD_GUI=ON \ -DPYTHON_EXECUTABLE=$(which python3) \ -DBUILD_LIBREALSENSE=ON \ -DUSE_SYSTEM_LIBREALSENSE=ON \ -DGLIBCXX_USE_CXX11_ABI=ON .. $ make -j3 $ sudo make install $ sudo make install-pip-package
動作確認
Jetson Nanoで確認。
Pythonで接続したRealSense(L515)を認識していること。
$ python Python 3.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import open3d as o3d >>> o3d.t.io.RealSenseSensor.list_devices() [Open3D INFO] [0] Intel RealSense L515: f0220613 [Open3D INFO] depth_resolution: [320,240] [Open3D INFO] depth_format: [RS2_FORMAT_Z16] [Open3D INFO] visual_preset: [RS2_L500_VISUAL_PRESET_CUSTOM | RS2_L500_VISUAL_PRESET_DEFAULT | RS2_L500_VISUAL_PRESET_LOW_AMBIENT | RS2_L500_VISUAL_PRESET_MAX_RANGE | RS2_L500_VISUAL_PRESET_NO_AMBIENT | RS2_L500_VISUAL_PRESET_SHORT_RANGE] [Open3D INFO] color_fps: [15 | 30 | 6] [Open3D INFO] depth_fps: [30] [Open3D INFO] color_resolution: [640,480] [Open3D INFO] color_format: [RS2_FORMAT_BGR8 | RS2_FORMAT_BGRA8 | RS2_FORMAT_RGB8 | RS2_FORMAT_RGBA8 | RS2_FORMAT_Y16 | RS2_FORMAT_YUYV] [Open3D INFO] Open3D only supports synchronized color and depth capture (color_fps = depth_fps). True >>>
RealSenseRecorderのサンプルが動作すること。
💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯 pic.twitter.com/tyO0pUgA2t
— nb.o (@Nextremer_nb_o) February 18, 2021
やった〜!
PRもマージされて、Open3DのContributorになったぞ〜!!
やった〜✌
— nb.o (@Nextremer_nb_o) February 20, 2021
Open3Dにだしたプルリクエスト、マージされた〜👍 https://t.co/fGrF8IEhxJ
0 件のコメント:
コメントを投稿