2018年3月24日土曜日

Open3Dを動かしてみる

最近、話題のOpen3Dをビルドしてみた。
DesktopPC(Ryzen 1700)とRaspberry pi 3で動作させてみた。

ビルド方法

チュートリアルに書かれてある通りにビルド
$ git clone https://github.com/IntelVCL/Open3D
$ ./scripts/install-deps-ubuntu.sh
$ mkdir build
$ cd build
$ cmake ../src
$ make -j

Tutorial/Basicのコードを動かしてみる

Raspberry pi 3の場合、画面が重くてほとんど動かない。表示もおかしい。
チュートリアルのコードを実行すると
GLFW Error: X11: RandR gamma ramp support seems broken
が出力されているのでOpenGL?の問題もありそう。

手持ちの環境(Ryzen1700 と Raspberry pi 3)で処理時間を比較してみる。
処理時間の計測はPython3のtime.perf_counter()を使用。単位はすべて秒

rgbd_redwood.py


Open3D python apiRyzen 1700Raspberry pi 3
create_rgbd_image_from_color_and_depth0.0031308780.035566293
create_point_cloud_from_rgbd_image0.0031308780.146715472

rgbd_odometry.py


Open3D python apiRyzen 1700Raspberry pi 3
compute_rgbd_odometry(using RGB-D Odometery)0.7698600583.41303919
compute_rgbd_odometry(using Hybrid RGB-D Odometery)0.7833153363.615518965

odometeryの結果、RtはRyzen, Raspberry pi 3とも一致。
Ryzenの場合
Using RGB-D Odometry
[[ 9.99985161e-01 -2.24233601e-04 -5.44316453e-03 -4.82515882e-04]
 [ 1.46064327e-04  9.99896920e-01 -1.43571495e-02  2.89043658e-02]
 [ 5.44582281e-03  1.43561414e-02  9.99882115e-01  7.88078866e-04]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  1.00000000e+00]]
Using Hybrid RGB-D Odometry
[[ 9.99994666e-01 -1.00290832e-03 -3.10826679e-03 -3.75410519e-03]
 [ 9.64494137e-04  9.99923448e-01 -1.23356688e-02  2.54977515e-02]
 [ 3.12040039e-03  1.23326051e-02  9.99919082e-01  1.88139777e-03]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  1.00000000e+00]]
Raspberry pi 3の場合
[[ 9.99985161e-01 -2.24233601e-04 -5.44316453e-03 -4.82515882e-04]
 [ 1.46064327e-04  9.99896920e-01 -1.43571495e-02  2.89043658e-02]
 [ 5.44582281e-03  1.43561414e-02  9.99882115e-01  7.88078866e-04]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  1.00000000e+00]]
Using Hybrid RGB-D Odometry
[[ 9.99994666e-01 -1.00290832e-03 -3.10826679e-03 -3.75410519e-03]
 [ 9.64494137e-04  9.99923448e-01 -1.23356688e-02  2.54977515e-02]
 [ 3.12040039e-03  1.23326051e-02  9.99919082e-01  1.88139777e-03]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  1.00000000e+00]]

pointcloud.py


Open3D python apiRyzen 1700Raspberry pi 3
voxel_down_sample0.0153782820.136582671
estimate_normals0.0052679820.085729508
crop_point_cloud0.0284832150.285484762
paint_uniform_color0.0001464830.00105934

kdtree.py


Open3D python apiRyzen 1700Raspberry pi 3
KDTreeFlann0.0005339760.00671003
search_knn_vector_3d0.0000498730.000483227
search_radius_vector_3d0.0000223110.000134426

icp_registration.py


Open3D python apiRyzen 1700Raspberry pi 3
evaluate_registration0.0733231261.06074374
registration_icp
(point-to-point ICP)
1.19398570718.54412634
registration_icp
(point-to-plane ICP)
1.13801447217.36850839

Raspberry pi 3の場合、ほとんど表示されない(黒い点の集合だけ)。

いや、もっとPoint Couldのことを覚えないと。。。