ROSとPCLをインストールしたDocker環境の構築方法をまとめます。

【Docker】ROSとPCLのビルド

PCLはROSとよく一緒に使われます。

この記事では、Dockerを用いてROSでPCLが使えるような仮想環境を構築する方法をご紹介します。

今回ご紹介する仮想環境

この記事では、以下のような仮想環境を構築するDockerfileをご紹介します。

  • ROS Kinetic
  • PCL 1.9.1

ROSとPCLのバージョンはあくまで例です。もし別のバージョンの環境を構築したい場合でも、本記事のDockerfileの一部を変えることで対応できると思います。

Dockerfile

########## Pull ##########
FROM osrf/ros:kinetic-desktop-full
########## BASIS ##########
RUN	apt-get update &&\
apt-get install -y \
		vim \
		wget \
		unzip \
		git \
	build-essential
########## ROS setup ##########
RUN	mkdir -p /home/ros_catkin_ws/src && \
	cd /home/ros_catkin_ws/src && \
	/bin/bash -c "source /opt/ros/kinetic/setup.bash; catkin_init_workspace" && \
	cd /home/ros_catkin_ws && \
	/bin/bash -c "source /opt/ros/kinetic/setup.bash; catkin_make" && \
	echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc && \
	echo "source /home/ros_catkin_ws/devel/setup.bash" >> ~/.bashrc && \
	echo "export ROS_PACKAGE_PATH=\${ROS_PACKAGE_PATH}:/home/ros_catkin_ws" >> ~/.bashrc && \
	echo "export ROS_WORKSPACE=/home/ros_catkin_ws" >> ~/.bashrc
########## pcl 1.9.1 ##########
RUN	mkdir -p /home/pcl_ws && \
	cd /home/pcl_ws && \
	wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.9.1.tar.gz && \
	tar -zxvf pcl-1.9.1.tar.gz && \
	cd pcl-pcl-1.9.1 && \
	mkdir build && \
	cd build && \
	cmake .. && \
	make -j $(nproc --all) && \
	make -j $(nproc --all) install

解説

上記のDockerfileについて以下で解説します。

ベースイメージ

ベースイメージはosrf/rosからROS環境を取得(pull)しています。この記事では、Kineticのイメージを選択しました。

他のROSディストリビューションを取得したい場合は、下記のようなタグに書き換えることで指定できます。

  • osrf/ros:indigo-desktop-full
  • osrf/ros:melodic-desktop-full
  • osrf/ros:noetic-desktop-full
    などなど

osrf/ros:Tags

ROSのセットアップ

ROSのcatkinワークスペースをつくっています。コマンドの詳細は、ROS Wikiを参照してください。
ROS Wiki:catkinのworkspace を作る

PCLのビルド

apt-getではバージョン指定できない

Linuxにおいて、PCLは「apt install」で下記のように簡単にインストールできますが、バージョンを指定することができません。インストールされるバージョンはOSによってデフォルトが固定されています。

sudo apt install libpcl-dev

PCL公式:Downloads

デフォルト以外のバージョンをインストールするためには以下のようにソースコードからビルドする必要があります。

希望のバージョンをダウンロード

wgetで希望のバージョンのソースコードをダウンロードしています。

wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.9.1.tar.gz

ダウンロードのURLは下図のようにコピーできます。

download_pcl_sourcecode

あとはダウンロードしたソースコードをビルドしていきます。Dockerfile内のコマンドの詳細は、下記のリンクで参照できます。
Compiling PCL from source on POSIX compliant systems

他のバージョン

他のPCLのバージョンをダウンロードしたい場合は下記のリンクから探すことができます。
PointCloudLibrary/pcl:Release

補足:EigenなどはROSに含まれている

PCLのビルドには本来、Boost、Eigen、FLANN、VTKなどのライブラリが必要です。ただし、ROSをインストールする際にこれらのライブラリもインストールされているので、特にDockerfileで記述する必要はありません。

Dependencies

Build

実装したDockerfileをもとにDockerイメージをビルドします。

docker build . -t velodyne_pointcloud_to_depthimage:latest

Run

ビルドしたイメージのコンテナに入るためには下記のコマンドでランします。

docker run -it --rm velodyne_pointcloud_to_depthimage:latest

さいごに

ROSでPCLが使えるような仮想環境をDockerで構築する方法例をまとめました。参考になれば幸いです。


以上です。

Ad.