PCL Docker
(PCL) Docker
Docker Hubを探せばあるがPCL環境の構築作業メモ
コンテナ内でsshdを起動してもホスト側からログインできない。(Linuxはできる) あらかじめポート転送の設定 -p 2022:22 (外向けport 2022コンテナport 22)が必要。これを忘れるとX転送が使えない。
glxがどうにもならない対策として-p 5901:5901を指定してVNC接続する。
ある程度進めてから誤りに気付いた場合にはdocker commitを使ってどうにかする(一番下参照)
メニューに表示されるアイコンからPreferencesを選び,AdvancedでCPUとメモリを確保する必要がある。デフォルトだとCPU2個,メモリ2GBなのでビルドでコケる。 makeで-j指定する数はこのCPU数が限界。
とりあえずコンテナを作る。--security-opt seccomp=unconfinedオプションを付けないとgdbが動かない(セキュリティレベルを下げることになるので他の用途に使わない)
Ubuntuの場合、元ネタにあるようにX11のソケットを共有するのが手っ取り早い。
docker run -it --name ub_pcl --security-opt seccomp=unconfined -e DISPLAY=$DISPLAY -v/tmp/.X11-unix:/tmp/.X11-unix -v$HOME/dockermount:/mnt ubuntu /bin/bash
docker run -it --name ub_pcl --security-opt seccomp=unconfined -p 2022:22 -v$HOME/dockermount:/mnt ubuntu /bin/bash
nvidia-docker run -it --name ub_pcl --security-opt seccomp=unconfined -e DISPLAY=$DISPLAY -v/tmp/.X11-unix:/tmp/.X11-unix -v$HOME/dockermount:/mnt nvidia/cuda:8.0-devel /bin/bash
apt update
apt install -y vim
vim /etc/apt/source.lst
として
:%s/\/arc/\/jp\.arc/g
で日本のサイトに振る。
apt update
apt upgrade -y
apt install -y zlib1g-dev libbz2-dev build-essential \
libgl1-mesa-dev mesa-utils libglew-dev \
libsdl2-dev libsdl2-image-dev libglm-dev \
libfreetype6-dev aptitude git \
libqt5opengl5-dev libvtk5-dev libvtk5.8-qt4 libeigen3-doc \
libeigen3-dev libflann-dev libqhull-dev \
libqhull-doc libqwt5-qt4-dev libopenni2-dev \
libopenni2-0 openni2-doc cmake \
cmake-qt-gui cmake-curses-gui python-dev \
python-sphinx python-sphinxcontrib-docbookrestapi \
openssh-server libproj-dev libboost-all-dev \
net-tools curl libsuitesparse-dev
※VTKは5.8だとTutorialのQtが使える。指定するとQVTK_INCLUDE_DIRとQVTK_LIBRARYの項目が出てくる。
QVTK_INCLUDE_DIR /usr/include/vtk-5.8
QVTK_LIBRARY /usr/lib/libQVTK.so.5.8
UnaNancyOwen氏のサイトの方法を使うとQt5だけでTutorialのQVTKが使えるようになる。
apt update
apt upgrade -y
apt install -y zlib1g-dev libbz2-dev build-essential \
libgl1-mesa-dev mesa-utils libglew-dev \
libsdl2-dev libsdl2-image-dev libglm-dev \
libfreetype6-dev aptitude git \
libqt5opengl5-dev libeigen3-doc \
libeigen3-dev libflann-dev libqhull-dev \
libqhull-doc libopenni2-dev \
libopenni2-0 openni2-doc cmake \
cmake-qt-gui cmake-curses-gui python-dev \
python-sphinx python-sphinxcontrib-docbookrestapi \
openssh-server libproj-dev libboost-all-dev \
net-tools curl libsuitesparse-dev \
libqt5x11extras5-dev libqt5designercomponents5 qttools5-dev-tools \
qttools5-dev qttools5-private-dev qtxmlpatterns5-dev-tools qtsystems5-dev qtquick1-5-dev
KitwareのサイトからVTK7.xのソースを持ってきて展開し、
mkdir VTK-7.x.x/build
cd VTK-7.x.x/build
ccmake ..
でVTK_Group_QtをON、VTK_QT_VERSIONを5、VTK_RENDERING_BACKENDをOpenGLにしてConfigure->Generate
make -j8
make install
で下のPCLのビルドへ。QVTK_INCLUDE_DIRが/usr/local/include/vtk-7.x、QVTK_LIBRARYが/usr/local/plugins/designer/libQVTKWidgetPlugin.soに、VTK_DIRが/usrlocal/lib/cmake/vtk-7.1になる。
qt_visualizerのサンプルをcloneしてcmakeしてmakeすると確認できる。 CMakeLists.txtのCMakeのバージョン指定を消さないとエラーになる(UbuntuのCMakeはバージョンが古い)。
tar xvjf /mnt/boost_1_62_0.tar.bz2
cd boost_1_62_0
./bootstrap.sh
./b2 install
Eigen3.3由来のバグでfeaturesの一部でコケる。computeするタイミングをデバッガで追ってみてEigen周りで
AssignEvaluator.h:xxx
なメッセージが出てきたら当たり。Ubuntu 14.xでは発生せずEigen3.3なUbuntu 16.xで発生する。その問題を踏んでしまった場合にはソースからのビルドが必要。
cd /tmp
git clone https://github.com/PointCloudLibrary/pcl.git
cd pcl
mkdir build
cd build
ccmake ..
適当にオプションをオンにする。Eigenの場所は[t]で詳細を表示すると出てくる。 nvidia-dockerだとCUDAも使えるようになる。
make -j8
make install
コンテナ上で
ifconfig
か,ホスト側で
docker inspect (ContainerID)
でIPを控えておく。コンテナ上でsshdを起動
service ssh start
ユーザを作成
adduser (USERNAME)
ホスト側から-Yオプション付きのssh接続でウィンドウも開く(WindowsだとXサーバが必要)
ssh -Y (USERNAME)@(IP)
port転送した場合は
ssh -Y -p 2022 localhost
で接続できる。
vncserver
でホスト側で
localhost:5901
を指定すれば良い。
現在のコンテナの状態をcommitでイメージ化して,それをコンテナにする。当然容量を食うので注意
docker commit [-m "(説明)"] (ContainerID) (NewImageName)
docker images
commitをやると結構時間がかかる。その後でimagesでNewImageNameが並ぶか確認し,成功してたらコンテナはdocker rmで消して良い(怖いなら後で)。あとは新しいイメージでrunする。
docker run -it --name ub_pcl -p 2022:22 -v$HOME/dockermount:/mnt (NewImageName) /bin/bash
- 3ds_max
- Android
- Books
- Caffe
- Chainer
- CloudCompare
- colinux
- colmap
- Cygwin
- DeepLearning
- DICOM
- dlib
- docker
- Everun
- Excel
- EyeX
- FANN
- FDS
- Felica
- FreeBSD
- FreeNAS
- GAlib
- gnuplot
- JetsonNano
- JetsonTK1
- JetsonTX2
- Kinect
- LAPACK
- LaTeX
- LTspice
- MacOSX
- MATLAB
- Memo
- MicroEnableIII
- Mono
- MSVC
- nano
- nvidia-docker
- ODE
- Open3D
- OpenCV
- OpenCVSharp
- OpenMVG
- OpenOffice
- OpenVSLAM
- OSG
- ParaView
- PCL
- Phidgets
- PlaidML
- PLplot
- POVRay
- PowerPoint
- Python
- R
- RaspberryPi
- Realsense
- ROS
- RSJ2011
- Ruby
- Scilab
- SHOGUN
- SUSE
- SVM
- Tensorflow
- TrueCrypt
- Ubuntu
- uEye
- Unix
- VMWarePlayer
- Vim
- VTK
- Windows
- WSL2
- 文書作成
- 文献調査
- 立体映像
- 論文メモ