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
などなど
ROSのセットアップ
ROSのcatkinワークスペースをつくっています。コマンドの詳細は、ROS Wikiを参照してください。
▶ROS Wiki:catkinのworkspace を作る
PCLのビルド
apt-getではバージョン指定できない
Linuxにおいて、PCLは「apt install」で下記のように簡単にインストールできますが、バージョンを指定することができません。インストールされるバージョンはOSによってデフォルトが固定されています。
sudo apt install libpcl-dev
デフォルト以外のバージョンをインストールするためには以下のようにソースコードからビルドする必要があります。
希望のバージョンをダウンロード
wgetで希望のバージョンのソースコードをダウンロードしています。
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.9.1.tar.gz
ダウンロードのURLは下図のようにコピーできます。
あとはダウンロードしたソースコードをビルドしていきます。Dockerfile内のコマンドの詳細は、下記のリンクで参照できます。
▶Compiling PCL from source on POSIX compliant systems
他のバージョン
他のPCLのバージョンをダウンロードしたい場合は下記のリンクから探すことができます。
▶PointCloudLibrary/pcl:Release
補足:EigenなどはROSに含まれている
PCLのビルドには本来、Boost、Eigen、FLANN、VTKなどのライブラリが必要です。ただし、ROSをインストールする際にこれらのライブラリもインストールされているので、特にDockerfileで記述する必要はありません。
Build
実装したDockerfileをもとにDockerイメージをビルドします。
docker build . -t velodyne_pointcloud_to_depthimage:latest
Run
ビルドしたイメージのコンテナに入るためには下記のコマンドでランします。
docker run -it --rm velodyne_pointcloud_to_depthimage:latest
さいごに
ROSでPCLが使えるような仮想環境をDockerで構築する方法例をまとめました。参考になれば幸いです。
以上です。
コメント