Jetson AGX Xavier上でPointCloud2のデータを生成してRviz2に表示


Jetson AGX Xavier上でPointCloud2のデータを生成してRVIz2に表示するためのメモ

CmakeのUpdate

Open3DのBuildにCMake 3.18以降が必要なので、CMake 3.19.5をインストール。

sudo apt -y remove cmake
wget https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5.tar.gz
tar xvf cmake-3.19.5.tar.gz
cd  cmake-3.19.5
./bootstrap && make -j6 && sudo make install

Open3DのBuildに必要なパッケージをインストール

sudo apt install python3-colcon-common-extensions
sudo apt-get install -y libsdl2-dev libc++-7-dev libc++abi-7-dev libxi-dev
sudo apt-get install -y clang-7

Open3DをBuild

git clone --recursive https://github.com/intel-isl/Open3D
cd Open3D
git submodule update --init --recursive
mkdir build
cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_CUDA_MODULE=ON \
    -DBUILD_GUI=ON \
    -DBUILD_TENSORFLOW_OPS=OFF \
    -DBUILD_PYTORCH_OPS=OFF \
    -DBUILD_UNIT_TESTS=ON \
    -DCMAKE_INSTALL_PREFIX=~/open3d_install \
    -DPYTHON_EXECUTABLE=/usr/bin/python3 \
    ..

このままBuildするとエラーがでるので、Open3D/cpp/open3d/core/linalg/BlasWrapper.h を修正。 #include "/usr/include/aarch64-linux-gnu/cblas-netlib.h"
を追加。

Open3D/cpp/open3d/core/linalg/BlasWrapper.h

#pragma once

#include "/usr/include/aarch64-linux-gnu/cblas-netlib.h"
#include "open3d/core/linalg/LinalgHeadersCPU.h"
#include "open3d/core/linalg/LinalgHeadersCUDA.h"
#include "open3d/utility/Console.h"
make -j6 & sudo make install-pip-package
ls /home/jetson/Open3D/build/lib/python_package/pip_package/
total 25268
  759703     4 ./
  758262     4 ../
19136964 25260 open3d-0.12.0+3ca4d62c0-cp36-cp36m-linux_aarch64.whl
sudo pip3 install /home/jetson/Open3D/build/lib/python_package/pip_package/open3d-0.12.0+3ca4d62c0-cp36-cp36m-linux_aarch64.whl 

ROS2-Point-Cloud-DemoをBuild

ROS2-Point-Cloud-Demoでply形式のファイルからPointCloud2Dのデータを生成

cd ~/ros_ws/src/
git clone https://github.com/SebastianGrans/ROS2-Point-Cloud-Demo
cd ~/ros_ws/
colcon build --symlink-install --packages-select pcd_demo
source install/setup.bash

実行

RVIz2を起動

ros2 run rviz2 rviz2

ply形式のデータからPointCloud2D形式のデータを生成。

ros2 run pcd_demo pcd_publisher_node ~/ros_ws/src/ROS2-Point-Cloud-Demo/resource/teapot.ply    

Rviz2でPointCloud2形式のデータを表示