From d2e0b3c00c208d92a879167de50fdb3c69cf5032 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 1 Sep 2018 15:31:07 +0800 Subject: [PATCH 01/24] fix alias cdlf --- setup_environment.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup_environment.sh b/setup_environment.sh index 33a77ca..c44a5e7 100644 --- a/setup_environment.sh +++ b/setup_environment.sh @@ -19,4 +19,8 @@ export SUPER4PCS_BASE_DIR=$HOME/software_tools/nmellado-Super4PCS-c77cc4a export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIRECTOR_INSTALL_DIR/lib -alias cdlf='cd $LABELFUSION_SOURCE_DIR' +cdlf() +{ + cd $LABELFUSION_SOURCE_DIR +} +export -f cdlf \ No newline at end of file From a2be8f91f202d4ffe134ccd8c13ddbc5dea7d234 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 1 Sep 2018 15:31:17 +0800 Subject: [PATCH 02/24] add env settings --- .gitignore | 3 ++- .python-version | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 .python-version diff --git a/.gitignore b/.gitignore index 4280df8..1a17d42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ data/ *pyc automation/scp_config.yaml -src/ply \ No newline at end of file +src/ply +docker/director-build/* \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..4712731 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +2.7.12 From 943742b5582c4120327bb07c00321ed6ca199e9b Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 8 Sep 2018 12:48:55 +0800 Subject: [PATCH 03/24] change input number --- docker/docker_run.sh | 3 ++- modules/labelfusion/rendertrainingimages.py | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docker/docker_run.sh b/docker/docker_run.sh index b29f5fc..73cba19 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -10,7 +10,8 @@ # also mounted as a volume. # -image_name=robotlocomotion/labelfusion:latest +#image_name=robotlocomotion/labelfusion:latest +image_name=ianre657/labelfusion:latest source_dir=$(cd $(dirname $0)/.. && pwd) diff --git a/modules/labelfusion/rendertrainingimages.py b/modules/labelfusion/rendertrainingimages.py index afad18d..8260d07 100644 --- a/modules/labelfusion/rendertrainingimages.py +++ b/modules/labelfusion/rendertrainingimages.py @@ -15,6 +15,8 @@ from . import utils +import pprint +pp = pprint.PrettyPrinter(indent=4) class RenderTrainingImages(object): @@ -25,9 +27,14 @@ def __init__(self, view, viewOptions, pathDict): self.view = view self.viewOptions = viewOptions self.pathDict = pathDict + + print "self.pathDict:" + pp.pprint(self.pathDict) + self.objectData = utils.loadObjectData() self.storedColors = {} - self.colors = cm.nipy_spectral(np.linspace(0, 1, 12)) + self.colors = cm.nipy_spectral(np.linspace(0, 1, 18)) # 18 is the total count of the labeled data. + # change this number to fit the number listed in the object_data.yml self.colors = np.append(self.colors, [[0.5, 0.5, 0.5, 1.0]], axis=0) self.objectToWorld = dict() self.initialize() From 35eb7c7ab050eab4ba26f1929f3fd9acfc9efe45 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 12 Sep 2018 22:22:43 +0800 Subject: [PATCH 04/24] expand nvidia-docker command into mult-line --- docker/docker_run.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docker/docker_run.sh b/docker/docker_run.sh index 73cba19..2c87e73 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -28,5 +28,13 @@ if [ ! -z "$1" ]; then fi xhost +local:root; -nvidia-docker run -it -e DISPLAY -e QT_X11_NO_MITSHM=1 -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v $source_dir:/root/labelfusion $data_mount_arg --privileged -v /dev/bus/usb:/dev/bus/usb $image_name + +nvidia-docker run -it \ + -e DISPLAY \ + -e QT_X11_NO_MITSHM=1 \ + -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ + -v $source_dir:/root/labelfusion $data_mount_arg \ + --privileged \ + -v /dev/bus/usb:/dev/bus/usb $image_name + xhost -local:root; From 88a1d9a8fe7fee981357ba470285a6ce109c68ab Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 15 Sep 2018 18:16:07 +0800 Subject: [PATCH 05/24] seperate the install_dependcies.sh for readability --- docker/docker_build.sh | 2 +- docker/docker_run.sh | 19 +++++- docker/install_dependencies.sh | 107 +++++++++++++++++++++++---------- docker/labelfusion.dockerfile | 14 +++-- 4 files changed, 102 insertions(+), 40 deletions(-) diff --git a/docker/docker_build.sh b/docker/docker_build.sh index c7413ac..85e8b24 100755 --- a/docker/docker_build.sh +++ b/docker/docker_build.sh @@ -7,6 +7,6 @@ set -exu root_dir=$(cd $(dirname $0)/../ && pwd) -tag_name=robotlocomotion/labelfusion:test +tag_name=ianre657/labelfusion:new_docker docker build -f $root_dir/docker/labelfusion.dockerfile -t ${tag_name} $root_dir/docker diff --git a/docker/docker_run.sh b/docker/docker_run.sh index 2c87e73..e623b70 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -11,7 +11,7 @@ # #image_name=robotlocomotion/labelfusion:latest -image_name=ianre657/labelfusion:latest +image_name=ianre657/labelfusion:new_docker source_dir=$(cd $(dirname $0)/.. && pwd) @@ -29,12 +29,25 @@ fi xhost +local:root; -nvidia-docker run -it \ +# it is required to have +docker run -it \ + --runtime=nvidia \ -e DISPLAY \ -e QT_X11_NO_MITSHM=1 \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ -v $source_dir:/root/labelfusion $data_mount_arg \ --privileged \ - -v /dev/bus/usb:/dev/bus/usb $image_name + -v /dev/bus/usb:/dev/bus/usb\ + nvidia/cudagl:9.2-devel-ubuntu18.04 + +# docker run -it \ +# --runtime=nvidia +# -e DISPLAY \ +# -e QT_X11_NO_MITSHM=1 \ +# -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ +# -v $source_dir:/root/labelfusion $data_mount_arg \ +# --privileged \ +# -v /dev/bus/usb:/dev/bus/usb\ +# $image_name xhost -local:root; diff --git a/docker/install_dependencies.sh b/docker/install_dependencies.sh index 6a7c819..2cc8320 100755 --- a/docker/install_dependencies.sh +++ b/docker/install_dependencies.sh @@ -7,38 +7,83 @@ set -ex apt-get update -apt-get install -y \ - bash-completion \ - build-essential \ - cmake \ - freeglut3-dev \ - git \ - libboost-all-dev \ - libglew-dev \ - libjpeg-dev \ - libeigen3-dev \ - libopencv-dev \ - libopenni2-dev \ - libqhull-dev \ + +# basic packages +apt-get install -y --no-install-recommends \ + sudo git bash-completion + +# dependency for Director +apt-get install -y --no-install-recommends \ + build-essential cmake libglib2.0-dev \ + libx11-dev libxext-dev libxt-dev \ libqt4-dev \ - libqwt-dev \ - libsuitesparse-dev \ - libudev-dev \ - libusb-1.0-0-dev \ - libvtk5-dev \ - libvtk5-qt4-dev \ - mesa-utils \ - openjdk-8-jdk \ - zlib1g-dev \ - libyaml-cpp-dev \ - python-dev \ - python-matplotlib \ - python-numpy \ - python-pip \ - python-scipy \ - python-vtk \ - python-yaml \ - sudo + python-dev python-lxml python-numpy python-scipy python-yaml + +# dependency for QT5 +apt-get install -y --no-install-recommends \ + qt5-default + +# dependency for VTK7 +apt-get install -y --no-install-recommends \ + vtk7 + + +# original one deleted +# apt-get install -y \ +# libboost-all-dev \ +# libglew-dev \ +# libjpeg-dev \ +# libeigen3-dev \ +# libopencv-dev \ +# libopenni2-dev \ +# libqhull-dev \ +# libqwt-dev \ +# libsuitesparse-dev \ +# libudev-dev \ +# libusb-1.0-0-dev \ +# mesa-utils \ +# openjdk-8-jdk \ +# zlib1g-dev \ +# libyaml-cpp-dev \ +# python-matplotlib \ +# python-pip \ +# python-vtk \ + + +# Figure out the dependencies +# original one +# apt-get install -y \ +# bash-completion \ +# build-essential \ +# cmake \ +# freeglut3-dev \ +# git \ +# libboost-all-dev \ +# libglew-dev \ +# libjpeg-dev \ +# libeigen3-dev \ +# libopencv-dev \ +# libopenni2-dev \ +# libqhull-dev \ +# libqt4-dev \ +# libqwt-dev \ +# libsuitesparse-dev \ +# libudev-dev \ +# libusb-1.0-0-dev \ +# libvtk5-dev \ +# libvtk5-qt4-dev \ +# mesa-utils \ +# openjdk-8-jdk \ +# zlib1g-dev \ +# libyaml-cpp-dev \ +# python-dev \ +# python-matplotlib \ +# python-numpy \ +# python-pip \ +# python-scipy \ +# python-vtk \ +# python-yaml \ +# sudo # optional cleanup to make the docker image smaller diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index 1de14fa..ba8b0f0 100644 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -1,11 +1,15 @@ -FROM nvidia/cuda:8.0-devel-ubuntu16.04 +#FROM nvidia/cuda:8.0-devel-ubuntu16.04 + +# ubuntu 18.04 only support cuda9.2 with tesla, +#FROM nvidia/cudagl:9.2-devel-ubuntu18.04 +ianre657/ros-melodic-desktop-full-nvidia:latest WORKDIR /root -COPY install_dependencies.sh /tmp -RUN /tmp/install_dependencies.sh +#COPY install_dependencies.sh /tmp +#RUN /tmp/install_dependencies.sh -COPY compile_all.sh /tmp -RUN /tmp/compile_all.sh +# COPY compile_all.sh /tmp +# RUN /tmp/compile_all.sh ENTRYPOINT bash -c "source /root/labelfusion/docker/docker_startup.sh && /bin/bash" From 7ec942ecb26034f3da648b1b8f780ead5da6aa2a Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 18 Sep 2018 01:12:33 +0800 Subject: [PATCH 06/24] successfully compiled director --- docker/build_scripts/compile_director.sh | 49 +++++++++++++++++ docker/build_scripts/compile_elasticfusion.sh | 53 +++++++++++++++++++ .../install_dependencies.sh | 8 +-- docker/labelfusion.dockerfile | 45 ++++++++++++++-- 4 files changed, 146 insertions(+), 9 deletions(-) create mode 100755 docker/build_scripts/compile_director.sh create mode 100755 docker/build_scripts/compile_elasticfusion.sh rename docker/{ => build_scripts}/install_dependencies.sh (93%) diff --git a/docker/build_scripts/compile_director.sh b/docker/build_scripts/compile_director.sh new file mode 100755 index 0000000..79cc0d7 --- /dev/null +++ b/docker/build_scripts/compile_director.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# +# This script is run by the dockerfile during the docker build. +# + +set -exu + +root_dir=$(pwd) +install_dir=$root_dir/install + +build_director() +{ + cd $root_dir + #git clone https://github.com/RobotLocomotion/director.git + + git clone https://github.com/ianre657/director.git + #cd director + #git remote add pf https://github.com/peteflorence/director.git + #git fetch pf + #git checkout pf/corl-master + #cd .. + + mkdir director-build + cd director-build + + cmake ../director/distro/superbuild \ + -DUSE_EXTERNAL_INSTALL:BOOL=ON \ + -DUSE_DRAKE:BOOL=OFF \ + -DUSE_LCM:BOOL=ON \ + -DUSE_LIBBOT:BOOL=ON \ + -DUSE_SYSTEM_EIGEN:BOOL=ON \ + -DUSE_SYSTEM_LCM:BOOL=OFF \ + -DUSE_SYSTEM_LIBBOT:BOOL=OFF \ + -DUSE_SYSTEM_VTK:BOOL=ON \ + -DUSE_PCL:BOOL=ON \ + -DUSE_APRILTAGS:BOOL=ON \ + -DUSE_KINECT:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX:PATH=$install_dir \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DDD_QT_VERSION:STRING=5 + + #make -j1 + make -j$(nproc) -l$(nproc) + + # cleanup to make the docker image smaller + cd .. + #rm -rf director-build +} +build_director \ No newline at end of file diff --git a/docker/build_scripts/compile_elasticfusion.sh b/docker/build_scripts/compile_elasticfusion.sh new file mode 100755 index 0000000..af7897c --- /dev/null +++ b/docker/build_scripts/compile_elasticfusion.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# +# This script is run by the dockerfile during the docker build. +# + +set -exu + +root_dir=$(pwd) +install_dir=$root_dir/install + + +build_elasticfusion() +{ + cd $root_dir + git clone https://github.com/peteflorence/ElasticFusion.git + cd ElasticFusion + git checkout pf-lm-debug-jpeg + + git clone https://github.com/stevenlovegrove/Pangolin.git + cd Pangolin + mkdir build + cd build + cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON + make -j$(nproc) + cd ../.. + + export CMAKE_PREFIX_PATH=$install_dir + cd Core + mkdir build + cd build + cmake ../src + make -j$(nproc) + + cd ../../GPUTest + mkdir build + cd build + cmake ../src + make -j$(nproc) + + cd ../../GUI + mkdir build + cd build + cmake ../src + make -j$(nproc) + + ln -s $(pwd)/ElasticFusion $install_dir/bin + + # cleanup to make the docker image smaller + cd ../.. + find . -name \*.o | xargs rm +} + +build_elasticfusion diff --git a/docker/install_dependencies.sh b/docker/build_scripts/install_dependencies.sh similarity index 93% rename from docker/install_dependencies.sh rename to docker/build_scripts/install_dependencies.sh index 2cc8320..81ede73 100755 --- a/docker/install_dependencies.sh +++ b/docker/build_scripts/install_dependencies.sh @@ -10,7 +10,10 @@ apt-get update # basic packages apt-get install -y --no-install-recommends \ - sudo git bash-completion + sudo git bash-completion lsb-core +# for debuuging +apt-get install -y --no-install-recommends \ + cmake-curses-gui # dependency for Director apt-get install -y --no-install-recommends \ @@ -33,16 +36,13 @@ apt-get install -y --no-install-recommends \ # libboost-all-dev \ # libglew-dev \ # libjpeg-dev \ -# libeigen3-dev \ # libopencv-dev \ # libopenni2-dev \ # libqhull-dev \ -# libqwt-dev \ # libsuitesparse-dev \ # libudev-dev \ # libusb-1.0-0-dev \ # mesa-utils \ -# openjdk-8-jdk \ # zlib1g-dev \ # libyaml-cpp-dev \ # python-matplotlib \ diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index ba8b0f0..a8b73fa 100644 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -2,14 +2,49 @@ # ubuntu 18.04 only support cuda9.2 with tesla, #FROM nvidia/cudagl:9.2-devel-ubuntu18.04 -ianre657/ros-melodic-desktop-full-nvidia:latest +FROM ianre657/ros-melodic-desktop-full-nvidia:latest WORKDIR /root -#COPY install_dependencies.sh /tmp -#RUN /tmp/install_dependencies.sh -# COPY compile_all.sh /tmp -# RUN /tmp/compile_all.sh +COPY build_scripts /tmp/build_scripts + +RUN apt-get update && apt-get upgrade -y +# install_dependencies + # basic packages +RUN apt-get update && apt-get install -y --no-install-recommends \ + sudo git bash-completion lsb-core + + # for debuuging +RUN apt-get update && apt-get install -y --no-install-recommends \ + cmake-curses-gui vim apt-file && apt-file update + + # dependency for Director +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential cmake libglib2.0-dev \ + libx11-dev libxext-dev libxt-dev \ + libqt4-dev \ + python-dev python-lxml python-numpy python-scipy python-yaml python3-vtk7 \ + qtmultimedia5-dev libqwt-qt5-dev openjdk-8-jdk qtbase5-private-dev \ + libeigen3-dev liblua5.2-dev libyaml-cpp-dev + + # dependency for ElasticFusion + + # vtk qt +RUN apt-get update && apt-get install -y \ + qt5-default vtk7 libvtk7-dev \ + libvtk7-java libvtk7-jni libvtk7-qt-dev + +# fix Eigen3's inlcude path +RUN ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen && \ + ln -sf /usr/include/eigen3/unsupported /usr/include/unsupported && \ + ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so && \ + ln -s /usr/bin/vtk7 /usr/bin/vtk + +#RUN /tmp/build_scripts/install_dependencies.sh + +# compile two projects +RUN /tmp/build_scripts/compile_director.sh +RUN /tmp/build_scripts/compile_elasticfusion.sh ENTRYPOINT bash -c "source /root/labelfusion/docker/docker_startup.sh && /bin/bash" From 9060e1915a3985bc0cfd646a89cc1d78452ec20d Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 18 Sep 2018 01:23:08 +0800 Subject: [PATCH 07/24] install elastic fusion's dependencies --- docker/compile_all.sh | 89 ----------------------------------- docker/labelfusion.dockerfile | 5 ++ 2 files changed, 5 insertions(+), 89 deletions(-) delete mode 100755 docker/compile_all.sh diff --git a/docker/compile_all.sh b/docker/compile_all.sh deleted file mode 100755 index ded201e..0000000 --- a/docker/compile_all.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# This script is run by the dockerfile during the docker build. -# - -set -exu - -root_dir=$(pwd) -install_dir=$root_dir/install - -build_director() -{ - cd $root_dir - git clone https://github.com/RobotLocomotion/director.git - cd director - git remote add pf https://github.com/peteflorence/director.git - git fetch pf - git checkout pf/corl-master - cd .. - - mkdir director-build - cd director-build - - cmake ../director/distro/superbuild \ - -DUSE_EXTERNAL_INSTALL:BOOL=ON \ - -DUSE_DRAKE:BOOL=OFF \ - -DUSE_LCM:BOOL=ON \ - -DUSE_LIBBOT:BOOL=ON \ - -DUSE_SYSTEM_EIGEN:BOOL=ON \ - -DUSE_SYSTEM_LCM:BOOL=OFF \ - -DUSE_SYSTEM_LIBBOT:BOOL=OFF \ - -DUSE_SYSTEM_VTK:BOOL=ON \ - -DUSE_PCL:BOOL=ON \ - -DUSE_APRILTAGS:BOOL=ON \ - -DUSE_KINECT:BOOL=ON \ - -DCMAKE_INSTALL_PREFIX:PATH=$install_dir \ - -DCMAKE_BUILD_TYPE:STRING=Release - - make -j$(nproc) - - # cleanup to make the docker image smaller - cd .. - rm -rf director-build -} - -build_elasticfusion() -{ - cd $root_dir - git clone https://github.com/peteflorence/ElasticFusion.git - cd ElasticFusion - git checkout pf-lm-debug-jpeg - - git clone https://github.com/stevenlovegrove/Pangolin.git - cd Pangolin - mkdir build - cd build - cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON - make -j$(nproc) - cd ../.. - - export CMAKE_PREFIX_PATH=$install_dir - cd Core - mkdir build - cd build - cmake ../src - make -j$(nproc) - - cd ../../GPUTest - mkdir build - cd build - cmake ../src - make -j$(nproc) - - cd ../../GUI - mkdir build - cd build - cmake ../src - make -j$(nproc) - - ln -s $(pwd)/ElasticFusion $install_dir/bin - - # cleanup to make the docker image smaller - cd ../.. - find . -name \*.o | xargs rm -} - - -build_director -build_elasticfusion diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index a8b73fa..fcc4b7c 100644 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -29,6 +29,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libeigen3-dev liblua5.2-dev libyaml-cpp-dev # dependency for ElasticFusion +RUN apt-get update && apt-get install -y --no-install-recommends \ + git libsuitesparse-dev cmake-qt-gui build-essential libusb-1.0-0-dev libudev-dev \ + freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev +#cuda-7-5 +#openjdk-7-jdk # vtk qt RUN apt-get update && apt-get install -y \ From a707067dc3202aff4bcf7cbf549b478f05c30508 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 19 Sep 2018 16:11:20 +0800 Subject: [PATCH 08/24] compiled successfully --- docker/build_scripts/compile_elasticfusion.sh | 23 ++++++++++--------- docker/labelfusion.dockerfile | 15 ++++++++---- 2 files changed, 23 insertions(+), 15 deletions(-) mode change 100644 => 100755 docker/labelfusion.dockerfile diff --git a/docker/build_scripts/compile_elasticfusion.sh b/docker/build_scripts/compile_elasticfusion.sh index af7897c..23ce3a6 100755 --- a/docker/build_scripts/compile_elasticfusion.sh +++ b/docker/build_scripts/compile_elasticfusion.sh @@ -12,36 +12,37 @@ install_dir=$root_dir/install build_elasticfusion() { cd $root_dir - git clone https://github.com/peteflorence/ElasticFusion.git + git clone https://github.com/ianre657/ElasticFusion.git cd ElasticFusion + #git checkout rs2_labelfusion git checkout pf-lm-debug-jpeg git clone https://github.com/stevenlovegrove/Pangolin.git - cd Pangolin - mkdir build - cd build - cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON - make -j$(nproc) - cd ../.. + cd Pangolin + mkdir build + cd build + cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON + make -j$(nproc) -l$(nproc) + cd ../.. export CMAKE_PREFIX_PATH=$install_dir cd Core mkdir build cd build cmake ../src - make -j$(nproc) + make -j$(nproc) -l$(nproc) cd ../../GPUTest mkdir build cd build cmake ../src - make -j$(nproc) + make -j$(nproc) -l$(nproc) cd ../../GUI mkdir build cd build - cmake ../src - make -j$(nproc) + cmake ../src -DCMAKE_PREFIX_PATH="/opt/ros/melodic" + make -j$(nproc) -l$(nproc) ln -s $(pwd)/ElasticFusion $install_dir/bin diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile old mode 100644 new mode 100755 index fcc4b7c..0d72232 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -13,11 +13,12 @@ RUN apt-get update && apt-get upgrade -y # install_dependencies # basic packages RUN apt-get update && apt-get install -y --no-install-recommends \ - sudo git bash-completion lsb-core + sudo git bash-completion lsb-core wget # for debuuging RUN apt-get update && apt-get install -y --no-install-recommends \ - cmake-curses-gui vim apt-file && apt-file update + cmake-curses-gui vim apt-file \ + && apt-file update # dependency for Director RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -31,7 +32,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # dependency for ElasticFusion RUN apt-get update && apt-get install -y --no-install-recommends \ git libsuitesparse-dev cmake-qt-gui build-essential libusb-1.0-0-dev libudev-dev \ - freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev + freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev \ + gcc-5 g++-5 + +# add realsense2 +RUN apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE && \ + add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u +RUN apt-get update && apt-get install -y --no-install-recommends \ + librealsense2-dev librealsense2-dbg #cuda-7-5 #openjdk-7-jdk @@ -46,7 +54,6 @@ RUN ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen && \ ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so && \ ln -s /usr/bin/vtk7 /usr/bin/vtk -#RUN /tmp/build_scripts/install_dependencies.sh # compile two projects RUN /tmp/build_scripts/compile_director.sh From a4866a219601ecc4da5f943f33f80f4cc0b0f032 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 20 Sep 2018 22:28:14 +0800 Subject: [PATCH 09/24] change docker run options --- docker/docker_run.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docker/docker_run.sh b/docker/docker_run.sh index e623b70..4a31abf 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -27,18 +27,24 @@ if [ ! -z "$1" ]; then data_mount_arg="-v $data_dir:/root/labelfusion/data" fi -xhost +local:root; - +xhost + # it is required to have docker run -it \ + --rm \ --runtime=nvidia \ -e DISPLAY \ + -e XAUTHORITY \ + --privileged \ -e QT_X11_NO_MITSHM=1 \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ + --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \ -v $source_dir:/root/labelfusion $data_mount_arg \ - --privileged \ - -v /dev/bus/usb:/dev/bus/usb\ - nvidia/cudagl:9.2-devel-ubuntu18.04 + -v /dev/bus/usb:/dev/bus/usb \ + ianre657/labelfusion:new_docker + + # --privileged \ +# -e XDG_RUNTIME_DIR \ +# -v $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR:rw \ # docker run -it \ # --runtime=nvidia @@ -50,4 +56,4 @@ docker run -it \ # -v /dev/bus/usb:/dev/bus/usb\ # $image_name -xhost -local:root; +xhost - From b95473c815e51e14eb07d89c1093f07c1cf6ef2e Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 4 Oct 2018 21:56:42 +0800 Subject: [PATCH 10/24] fix dependency for ubuntu 16.04 --- docker/build_scripts/compile_director.sh | 2 +- docker/build_scripts/compile_elasticfusion.sh | 18 +++--- docker/docker_build.sh | 2 +- docker/docker_run.sh | 12 +--- docker/labelfusion.dockerfile | 60 ++++++++++++------- 5 files changed, 52 insertions(+), 42 deletions(-) diff --git a/docker/build_scripts/compile_director.sh b/docker/build_scripts/compile_director.sh index 79cc0d7..3002664 100755 --- a/docker/build_scripts/compile_director.sh +++ b/docker/build_scripts/compile_director.sh @@ -37,7 +37,7 @@ build_director() -DUSE_KINECT:BOOL=ON \ -DCMAKE_INSTALL_PREFIX:PATH=$install_dir \ -DCMAKE_BUILD_TYPE:STRING=Release \ - -DDD_QT_VERSION:STRING=5 + -DDD_QT_VERSION:STRING=4 #make -j1 make -j$(nproc) -l$(nproc) diff --git a/docker/build_scripts/compile_elasticfusion.sh b/docker/build_scripts/compile_elasticfusion.sh index 23ce3a6..547807c 100755 --- a/docker/build_scripts/compile_elasticfusion.sh +++ b/docker/build_scripts/compile_elasticfusion.sh @@ -12,18 +12,17 @@ install_dir=$root_dir/install build_elasticfusion() { cd $root_dir - git clone https://github.com/ianre657/ElasticFusion.git + git clone -b pf-lm-debug-jpeg https://github.com/ianre657/ElasticFusion.git cd ElasticFusion #git checkout rs2_labelfusion - git checkout pf-lm-debug-jpeg git clone https://github.com/stevenlovegrove/Pangolin.git - cd Pangolin - mkdir build - cd build - cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON - make -j$(nproc) -l$(nproc) - cd ../.. + cd Pangolin + mkdir build + cd build + cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON + make -j$(nproc) -l$(nproc) + cd ../.. export CMAKE_PREFIX_PATH=$install_dir cd Core @@ -41,7 +40,8 @@ build_elasticfusion() cd ../../GUI mkdir build cd build - cmake ../src -DCMAKE_PREFIX_PATH="/opt/ros/melodic" + cmake ../src \ + -DCMAKE_PREFIX_PATH="/opt/ros/melodic" make -j$(nproc) -l$(nproc) ln -s $(pwd)/ElasticFusion $install_dir/bin diff --git a/docker/docker_build.sh b/docker/docker_build.sh index 85e8b24..c79dee3 100755 --- a/docker/docker_build.sh +++ b/docker/docker_build.sh @@ -7,6 +7,6 @@ set -exu root_dir=$(cd $(dirname $0)/../ && pwd) -tag_name=ianre657/labelfusion:new_docker +tag_name=ianre657/labelfusion:16.04-latetest docker build -f $root_dir/docker/labelfusion.dockerfile -t ${tag_name} $root_dir/docker diff --git a/docker/docker_run.sh b/docker/docker_run.sh index 4a31abf..dfe6d6f 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -11,8 +11,8 @@ # #image_name=robotlocomotion/labelfusion:latest -image_name=ianre657/labelfusion:new_docker - +#image_name=ianre657/labelfusion:new_docker +image_name=ianre657/labelfusion:16.04-latetest source_dir=$(cd $(dirname $0)/.. && pwd) @@ -33,18 +33,12 @@ docker run -it \ --rm \ --runtime=nvidia \ -e DISPLAY \ - -e XAUTHORITY \ --privileged \ -e QT_X11_NO_MITSHM=1 \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ - --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \ -v $source_dir:/root/labelfusion $data_mount_arg \ -v /dev/bus/usb:/dev/bus/usb \ - ianre657/labelfusion:new_docker - - # --privileged \ -# -e XDG_RUNTIME_DIR \ -# -v $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR:rw \ + $image_name # docker run -it \ # --runtime=nvidia diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index 0d72232..5fd1602 100755 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -1,20 +1,21 @@ -#FROM nvidia/cuda:8.0-devel-ubuntu16.04 +FROM ianre657/ros-kinetic-xenial-qt4vtk7 -# ubuntu 18.04 only support cuda9.2 with tesla, -#FROM nvidia/cudagl:9.2-devel-ubuntu18.04 -FROM ianre657/ros-melodic-desktop-full-nvidia:latest +# The taraget environment is VTK7.1.1 + Qt4.8.7 WORKDIR /root COPY build_scripts /tmp/build_scripts +# unknown +# libboost-all-dev libopencv-dev libqhull-dev + RUN apt-get update && apt-get upgrade -y # install_dependencies # basic packages RUN apt-get update && apt-get install -y --no-install-recommends \ - sudo git bash-completion lsb-core wget - + apt-utils && apt-get install -y --no-install-recommends \ + sudo git bash-completion lsb-core wget software-properties-common # for debuuging RUN apt-get update && apt-get install -y --no-install-recommends \ cmake-curses-gui vim apt-file \ @@ -22,41 +23,56 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # dependency for Director RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential cmake libglib2.0-dev \ + build-essential cmake libglib2.0-dev libqt4-dev\ libx11-dev libxext-dev libxt-dev \ - libqt4-dev \ - python-dev python-lxml python-numpy python-scipy python-yaml python3-vtk7 \ - qtmultimedia5-dev libqwt-qt5-dev openjdk-8-jdk qtbase5-private-dev \ - libeigen3-dev liblua5.2-dev libyaml-cpp-dev + python-dev python-lxml python-numpy python-scipy python-yaml python-vtk \ + libqwt-dev openjdk-8-jdk qtbase5-private-dev \ + libboost-all-dev libeigen3-dev liblua5.2-dev libyaml-cpp-dev libopencv-dev libqhull-dev # dependency for ElasticFusion RUN apt-get update && apt-get install -y --no-install-recommends \ git libsuitesparse-dev cmake-qt-gui build-essential libusb-1.0-0-dev libudev-dev \ - freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev \ + freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev libopenni2-dev \ gcc-5 g++-5 # add realsense2 RUN apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE && \ - add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u + add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u RUN apt-get update && apt-get install -y --no-install-recommends \ librealsense2-dev librealsense2-dbg -#cuda-7-5 -#openjdk-7-jdk - # vtk qt -RUN apt-get update && apt-get install -y \ - qt5-default vtk7 libvtk7-dev \ - libvtk7-java libvtk7-jni libvtk7-qt-dev # fix Eigen3's inlcude path RUN ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen && \ ln -sf /usr/include/eigen3/unsupported /usr/include/unsupported && \ ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so && \ - ln -s /usr/bin/vtk7 /usr/bin/vtk - + ln -s /usr/local/cuda-8.0 /usr/local/cuda # compile two projects -RUN /tmp/build_scripts/compile_director.sh + + +# compile director +#RUN /tmp/build_scripts/compile_director.sh +RUN git clone https://github.com/ianre657/director.git \ + && mkdir director-build && cd director-build \ + && cmake ../director/distro/superbuild \ + -DUSE_EXTERNAL_INSTALL:BOOL=ON \ + -DUSE_DRAKE:BOOL=OFF \ + -DUSE_LCM:BOOL=ON \ + -DUSE_LIBBOT:BOOL=ON \ + -DUSE_SYSTEM_EIGEN:BOOL=ON \ + -DUSE_SYSTEM_LCM:BOOL=OFF \ + -DUSE_SYSTEM_LIBBOT:BOOL=OFF \ + -DUSE_SYSTEM_VTK:BOOL=ON \ + -DUSE_PCL:BOOL=ON \ + -DUSE_APRILTAGS:BOOL=OFF \ + -DUSE_KINECT:BOOL=OFF \ + -DCMAKE_INSTALL_PREFIX:PATH=/root/install \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DDD_QT_VERSION:STRING=4 \ + && make -j"$(nproc)" -l"$(nproc)" + +# compile elasticfusion RUN /tmp/build_scripts/compile_elasticfusion.sh ENTRYPOINT bash -c "source /root/labelfusion/docker/docker_startup.sh && /bin/bash" From 11b02a0c6929593ee63b12636e6bfccd75559d2a Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Fri, 5 Oct 2018 02:15:02 +0800 Subject: [PATCH 11/24] use the older version of director --- docker/labelfusion.dockerfile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index 5fd1602..0e42d98 100755 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -1,4 +1,4 @@ -FROM ianre657/ros-kinetic-xenial-qt4vtk7 +FROM ianre657/ros-kinetic-xenial-qt4vtk5 # The taraget environment is VTK7.1.1 + Qt4.8.7 @@ -23,9 +23,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # dependency for Director RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential cmake libglib2.0-dev libqt4-dev\ + build-essential cmake libglib2.0-dev libqt4-dev \ libx11-dev libxext-dev libxt-dev \ - python-dev python-lxml python-numpy python-scipy python-yaml python-vtk \ + python-dev python-lxml python-numpy python-scipy python-yaml python-vtk \ + libvtk5-qt4-dev libvtk5-dev \ libqwt-dev openjdk-8-jdk qtbase5-private-dev \ libboost-all-dev libeigen3-dev liblua5.2-dev libyaml-cpp-dev libopencv-dev libqhull-dev @@ -53,7 +54,7 @@ RUN ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen && \ # compile director #RUN /tmp/build_scripts/compile_director.sh -RUN git clone https://github.com/ianre657/director.git \ +RUN git clone -b labelFusion-director https://github.com/ianre657/director.git \ && mkdir director-build && cd director-build \ && cmake ../director/distro/superbuild \ -DUSE_EXTERNAL_INSTALL:BOOL=ON \ @@ -66,7 +67,8 @@ RUN git clone https://github.com/ianre657/director.git \ -DUSE_SYSTEM_VTK:BOOL=ON \ -DUSE_PCL:BOOL=ON \ -DUSE_APRILTAGS:BOOL=OFF \ - -DUSE_KINECT:BOOL=OFF \ + -DUSE_KINECT:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX:PATH=/root/install \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DDD_QT_VERSION:STRING=4 \ From bd32cf753ca9fe2a0dc40c7f333040472b8a6bd2 Mon Sep 17 00:00:00 2001 From: Daichou Date: Fri, 5 Oct 2018 10:23:53 +0800 Subject: [PATCH 12/24] add elasticfusion camera.cfg --- scripts/prepareForObjectAlignment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepareForObjectAlignment.py b/scripts/prepareForObjectAlignment.py index c2dc6ec..062508d 100644 --- a/scripts/prepareForObjectAlignment.py +++ b/scripts/prepareForObjectAlignment.py @@ -34,7 +34,7 @@ lcmlog_filename = dataMap["lcmlog"] # call ElasticFusion -os.system(path_to_ElasticFusion_executable + " -l ./" + lcmlog_filename) +os.system(path_to_ElasticFusion_executable + " -l ./" + lcmlog_filename + " -cal camera.cfg") # rename posegraph # TODO: give error if multiple posegraph files From f2bab1657f56519cb77700b0fe66c9a997e7525a Mon Sep 17 00:00:00 2001 From: Daichou Date: Fri, 5 Oct 2018 10:24:52 +0800 Subject: [PATCH 13/24] add D435 camera parameter to render train image proccess --- modules/labelfusion/rendertrainingimages.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/labelfusion/rendertrainingimages.py b/modules/labelfusion/rendertrainingimages.py index 8260d07..944d22f 100644 --- a/modules/labelfusion/rendertrainingimages.py +++ b/modules/labelfusion/rendertrainingimages.py @@ -321,7 +321,7 @@ def setCameraIntrinsics(view, principalX, principalY, focalLength): def setCameraInstrinsicsAsus(view): principalX = 320.0 principalY = 240.0 - focalLength = 528.0 + focalLength = 617.0 setCameraIntrinsics(view, principalX, principalY, focalLength) ####################################################################################### From f4d1bb62a73da7257183e7ff6ecba49587c1ca5e Mon Sep 17 00:00:00 2001 From: Daichou Date: Fri, 5 Oct 2018 10:35:27 +0800 Subject: [PATCH 14/24] add intel realsense camera usage --- README.rst | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/README.rst b/README.rst index 58bf576..56d27e6 100644 --- a/README.rst +++ b/README.rst @@ -44,6 +44,69 @@ In another, run: Your data will be saved in current directory as :code:`lcmlog-*`. +Collect raw data from Realsense +--------------------------- + +First, install +.. _librealsense: https://github.com/IntelRealSense/librealsense +, +.. _intel_ros/relasense: https://github.com/intel-ros/realsense +and +.. _rgbd_ros_to_lcm: https://github.com/MobileManipulation/rgbd_ros_to_lcm + +Second, :code:`cdlf && cd data/logs`, then make a new directory for your data. In one terminal, run: + +:: + + roscore + +In one, run: + +:: + + roslaunch realsense2_camera rs_rgbd.launch + +modify rgbd_ros_to_lcm topic: +modify this file ~/catkin_ws/src/rgbd_ros_to_lcm/launch/lcm_republisher.launch to + +:: + + + + + + + + # input parameters + subscribe_point_cloud: false + rgb_topic: /camera/color/image_raw + depth_topic: /camera/aligned_depth_to_color/image_raw + cloud_topic: /camera/depth_registered/points + + # output parameters + output_lcm_channel: "OPENNI_FRAME" + compress_rgb: true + compress_depth: true + + debug_print_statements: true + + + + +and run + +:: + + roslaunch rgbd_ros_to_lcm lcm_republisher.launch + +In another, run: + +:: + + lcm-logger + +Your data will be saved in current directory as :code:`lcmlog-*`. + Process into labeled training data ---------------------------------- From e69be5ee3d177d08b205cd07c719a5d0cb0d0c33 Mon Sep 17 00:00:00 2001 From: Dai chou Date: Fri, 5 Oct 2018 10:50:11 +0800 Subject: [PATCH 15/24] Update README.rst --- README.rst | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/README.rst b/README.rst index 56d27e6..18a5dc1 100644 --- a/README.rst +++ b/README.rst @@ -47,11 +47,11 @@ Your data will be saved in current directory as :code:`lcmlog-*`. Collect raw data from Realsense --------------------------- -First, install +First, install librealsense .. _librealsense: https://github.com/IntelRealSense/librealsense -, +, `intel_ros/relasense`. .. _intel_ros/relasense: https://github.com/intel-ros/realsense -and +and `rgbd_ros_to_lcm`. .. _rgbd_ros_to_lcm: https://github.com/MobileManipulation/rgbd_ros_to_lcm Second, :code:`cdlf && cd data/logs`, then make a new directory for your data. In one terminal, run: @@ -69,29 +69,27 @@ In one, run: modify rgbd_ros_to_lcm topic: modify this file ~/catkin_ws/src/rgbd_ros_to_lcm/launch/lcm_republisher.launch to -:: - - - - - - - - # input parameters - subscribe_point_cloud: false - rgb_topic: /camera/color/image_raw - depth_topic: /camera/aligned_depth_to_color/image_raw - cloud_topic: /camera/depth_registered/points - - # output parameters - output_lcm_channel: "OPENNI_FRAME" - compress_rgb: true - compress_depth: true - - debug_print_statements: true - - - +.. code_block:: + + + + + + # input parameters + subscribe_point_cloud: false + rgb_topic: /camera/color/image_raw + depth_topic: /camera/aligned_depth_to_color/image_raw + cloud_topic: /camera/depth_registered/points + + # output parameters + output_lcm_channel: "OPENNI_FRAME" + compress_rgb: true + compress_depth: true + + debug_print_statements: true + + + and run From 61cc999ff5ec49e97ce9482498296964305a63ed Mon Sep 17 00:00:00 2001 From: Dai chou Date: Fri, 5 Oct 2018 10:55:19 +0800 Subject: [PATCH 16/24] update realsense operation guide --- README.rst | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 18a5dc1..bfb1218 100644 --- a/README.rst +++ b/README.rst @@ -47,12 +47,9 @@ Your data will be saved in current directory as :code:`lcmlog-*`. Collect raw data from Realsense --------------------------- -First, install librealsense -.. _librealsense: https://github.com/IntelRealSense/librealsense -, `intel_ros/relasense`. -.. _intel_ros/relasense: https://github.com/intel-ros/realsense -and `rgbd_ros_to_lcm`. -.. _rgbd_ros_to_lcm: https://github.com/MobileManipulation/rgbd_ros_to_lcm +First, install `librealsense `_ +, `intel_ros_relasense `_ +and `rgbd_ros_to_lcm `_ Second, :code:`cdlf && cd data/logs`, then make a new directory for your data. In one terminal, run: @@ -69,7 +66,7 @@ In one, run: modify rgbd_ros_to_lcm topic: modify this file ~/catkin_ws/src/rgbd_ros_to_lcm/launch/lcm_republisher.launch to -.. code_block:: +.. code-block:: From 85c598168e127033ebf4cda4476fae68456f81c8 Mon Sep 17 00:00:00 2001 From: Dai chou Date: Fri, 5 Oct 2018 11:05:41 +0800 Subject: [PATCH 17/24] Add camera calibration parameter doc --- README.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.rst b/README.rst index bfb1218..94621f7 100644 --- a/README.rst +++ b/README.rst @@ -26,6 +26,23 @@ This is the quick version. If you'd prefer to go step-by-step manually, see Pip .. _Pipeline_Instructions: https://github.com/RobotLocomotion/LabelFusion/blob/master/docs/pipeline.rst +Camera intrinsic calibration +--------------------------- + +For ElasticFusion calibration, create camera.cfg file into your lcm-log folder. camera.cfg is :code:`fx fy px py` in one line. + +For render training image, edit :code:`LabelFusion/modules/labelfusion/rendertrainingimages.py` "setCameraInstrinsicsAsus" fuction. + +.. code-block:: python + + def setCameraInstrinsicsAsus(view): + principalX = 320.0 + principalY = 240.0 + focalLength = 617.0 # fx = fy = focalLength + setCameraIntrinsics(view, principalX, principalY, focalLength) + + + Collect raw data from Xtion --------------------------- From 6d3a6845b7bb387f8dcf074d6de2612ac454b5b9 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 6 Oct 2018 02:56:19 +0800 Subject: [PATCH 18/24] combine multiple RUN command and stop from sourcing other scripts --- docker/labelfusion.dockerfile | 112 +++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 42 deletions(-) diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index 0e42d98..9fbd203 100755 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -1,56 +1,48 @@ -FROM ianre657/ros-kinetic-xenial-qt4vtk5 - -# The taraget environment is VTK7.1.1 + Qt4.8.7 +FROM ianre657/cuda8gl:latetest WORKDIR /root - -COPY build_scripts /tmp/build_scripts - -# unknown -# libboost-all-dev libopencv-dev libqhull-dev +#COPY build_scripts /tmp/build_scripts RUN apt-get update && apt-get upgrade -y # install_dependencies - # basic packages RUN apt-get update && apt-get install -y --no-install-recommends \ - apt-utils && apt-get install -y --no-install-recommends \ - sudo git bash-completion lsb-core wget software-properties-common - # for debuuging -RUN apt-get update && apt-get install -y --no-install-recommends \ - cmake-curses-gui vim apt-file \ - && apt-file update - + apt-utils \ + && apt-get install -y --no-install-recommends \ + \ + # basic packages + sudo git bash-completion lsb-core wget software-properties-common \ + \ + # for debugging + \ + cmake-curses-gui vim apt-file \ + && apt-file update \ + \ + \ && apt-get update && apt-get install -y --no-install-recommends \ + # vtk5 with qt4 + qt4-default qt4-dev-tools libqt4-opengl-dev libqt4-dev libgl1-mesa-dev \ + libglu1-mesa-dev freeglut3-dev libvtk-java openjdk-8-jdk \ + \ # dependency for Director -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential cmake libglib2.0-dev libqt4-dev \ - libx11-dev libxext-dev libxt-dev \ - python-dev python-lxml python-numpy python-scipy python-yaml python-vtk \ - libvtk5-qt4-dev libvtk5-dev \ - libqwt-dev openjdk-8-jdk qtbase5-private-dev \ - libboost-all-dev libeigen3-dev liblua5.2-dev libyaml-cpp-dev libopencv-dev libqhull-dev - + build-essential cmake libglib2.0-dev libqt4-dev \ + libx11-dev libxext-dev libxt-dev \ + python-dev python-lxml python-numpy python-scipy python-yaml python-vtk \ + libvtk5-qt4-dev libvtk5-dev \ + libqwt-dev openjdk-8-jdk qtbase5-private-dev \ + libboost-all-dev libeigen3-dev liblua5.2-dev libyaml-cpp-dev libopencv-dev libqhull-dev \ + \ # dependency for ElasticFusion -RUN apt-get update && apt-get install -y --no-install-recommends \ - git libsuitesparse-dev cmake-qt-gui build-essential libusb-1.0-0-dev libudev-dev \ - freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev libopenni2-dev \ - gcc-5 g++-5 - -# add realsense2 -RUN apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE && \ - add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u -RUN apt-get update && apt-get install -y --no-install-recommends \ - librealsense2-dev librealsense2-dbg + git libsuitesparse-dev cmake-qt-gui build-essential libusb-1.0-0-dev libudev-dev \ + freeglut3-dev libglew-dev libeigen3-dev zlib1g-dev libjpeg-dev libopenni2-dev \ + gcc-5 g++-5 -# fix Eigen3's inlcude path +# fix some path issue RUN ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen && \ ln -sf /usr/include/eigen3/unsupported /usr/include/unsupported && \ ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so && \ ln -s /usr/local/cuda-8.0 /usr/local/cuda -# compile two projects - # compile director #RUN /tmp/build_scripts/compile_director.sh @@ -68,13 +60,49 @@ RUN git clone -b labelFusion-director https://github.com/ianre657/director.git \ -DUSE_PCL:BOOL=ON \ -DUSE_APRILTAGS:BOOL=OFF \ -DUSE_KINECT:BOOL=ON \ - -DCMAKE_INSTALL_PREFIX:PATH=/root/install \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DDD_QT_VERSION:STRING=4 \ - && make -j"$(nproc)" -l"$(nproc)" + && make -j"$(nproc)" -l"$(nproc)" \ + #cleanup to make the docker image smaller + && cd .. && rm -rf director-build # compile elasticfusion -RUN /tmp/build_scripts/compile_elasticfusion.sh - -ENTRYPOINT bash -c "source /root/labelfusion/docker/docker_startup.sh && /bin/bash" +#RUN /tmp/build_scripts/compile_elasticfusion.sh +ARG root_dir=/root +ARG install_dir=/root/install +RUN git clone -b pf-lm-debug-jpeg https://github.com/ianre657/ElasticFusion.git \ + && cd ElasticFusion \ + \ + # Build Pangolin + && git clone https://github.com/stevenlovegrove/Pangolin.git && cd Pangolin \ + && mkdir build && cd build \ + && cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON \ + && make -j$(nproc) -l$(nproc) \ + && cd ../.. \ + \ + # Build Elasticfusion + && export CMAKE_PREFIX_PATH=$install_dir \ + && cd Core \ + && mkdir build && cd build \ + && cmake ../src \ + && make -j$(nproc) -l$(nproc) \ + && cd ../.. \ + && cd GPUTest \ + && mkdir build && cd build \ + && cmake ../src \ + && make -j$(nproc) -l$(nproc) \ + && cd ../.. \ + && cd GUI \ + && mkdir build && cd build \ + && cmake ../src \ + && make -j$(nproc) -l$(nproc) \ + && cd ../.. \ + && ln -s /root/ElasticFusion/GUI/build/ElasticFusion $install_dir/bin \ + \ + # cleanup to make the docker image smaller + && find . -name \*.o | xargs rm + + +RUN rm -rf /var/lib/apt/lists/* +ENTRYPOINT bash -c "source /root/labelfusion/docker/docker_startup.sh && /bin/bash" \ No newline at end of file From 670c8013384b57e77f10002c2106b1f08b77313f Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 6 Oct 2018 02:56:52 +0800 Subject: [PATCH 19/24] clean up code and use the latetest docker image --- docker/docker_run.sh | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/docker/docker_run.sh b/docker/docker_run.sh index dfe6d6f..6c526ba 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -11,7 +11,6 @@ # #image_name=robotlocomotion/labelfusion:latest -#image_name=ianre657/labelfusion:new_docker image_name=ianre657/labelfusion:16.04-latetest source_dir=$(cd $(dirname $0)/.. && pwd) @@ -28,7 +27,6 @@ if [ ! -z "$1" ]; then fi xhost + -# it is required to have docker run -it \ --rm \ --runtime=nvidia \ @@ -39,15 +37,4 @@ docker run -it \ -v $source_dir:/root/labelfusion $data_mount_arg \ -v /dev/bus/usb:/dev/bus/usb \ $image_name - -# docker run -it \ -# --runtime=nvidia -# -e DISPLAY \ -# -e QT_X11_NO_MITSHM=1 \ -# -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ -# -v $source_dir:/root/labelfusion $data_mount_arg \ -# --privileged \ -# -v /dev/bus/usb:/dev/bus/usb\ -# $image_name - xhost - From e3b24494948b9f56ebe0fcf9f509f3eff9c39dca Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 6 Oct 2018 04:13:46 +0800 Subject: [PATCH 20/24] remove unnecessary files and add a config file --- docker/build_scripts/compile_director.sh | 49 ---------- docker/build_scripts/compile_elasticfusion.sh | 54 ----------- docker/build_scripts/install_dependencies.sh | 90 ------------------- docker/config.sh | 7 ++ docker/docker_build.sh | 8 +- docker/docker_run.sh | 16 ++-- 6 files changed, 19 insertions(+), 205 deletions(-) delete mode 100755 docker/build_scripts/compile_director.sh delete mode 100755 docker/build_scripts/compile_elasticfusion.sh delete mode 100755 docker/build_scripts/install_dependencies.sh create mode 100644 docker/config.sh diff --git a/docker/build_scripts/compile_director.sh b/docker/build_scripts/compile_director.sh deleted file mode 100755 index 3002664..0000000 --- a/docker/build_scripts/compile_director.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# -# This script is run by the dockerfile during the docker build. -# - -set -exu - -root_dir=$(pwd) -install_dir=$root_dir/install - -build_director() -{ - cd $root_dir - #git clone https://github.com/RobotLocomotion/director.git - - git clone https://github.com/ianre657/director.git - #cd director - #git remote add pf https://github.com/peteflorence/director.git - #git fetch pf - #git checkout pf/corl-master - #cd .. - - mkdir director-build - cd director-build - - cmake ../director/distro/superbuild \ - -DUSE_EXTERNAL_INSTALL:BOOL=ON \ - -DUSE_DRAKE:BOOL=OFF \ - -DUSE_LCM:BOOL=ON \ - -DUSE_LIBBOT:BOOL=ON \ - -DUSE_SYSTEM_EIGEN:BOOL=ON \ - -DUSE_SYSTEM_LCM:BOOL=OFF \ - -DUSE_SYSTEM_LIBBOT:BOOL=OFF \ - -DUSE_SYSTEM_VTK:BOOL=ON \ - -DUSE_PCL:BOOL=ON \ - -DUSE_APRILTAGS:BOOL=ON \ - -DUSE_KINECT:BOOL=ON \ - -DCMAKE_INSTALL_PREFIX:PATH=$install_dir \ - -DCMAKE_BUILD_TYPE:STRING=Release \ - -DDD_QT_VERSION:STRING=4 - - #make -j1 - make -j$(nproc) -l$(nproc) - - # cleanup to make the docker image smaller - cd .. - #rm -rf director-build -} -build_director \ No newline at end of file diff --git a/docker/build_scripts/compile_elasticfusion.sh b/docker/build_scripts/compile_elasticfusion.sh deleted file mode 100755 index 547807c..0000000 --- a/docker/build_scripts/compile_elasticfusion.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# -# This script is run by the dockerfile during the docker build. -# - -set -exu - -root_dir=$(pwd) -install_dir=$root_dir/install - - -build_elasticfusion() -{ - cd $root_dir - git clone -b pf-lm-debug-jpeg https://github.com/ianre657/ElasticFusion.git - cd ElasticFusion - #git checkout rs2_labelfusion - - git clone https://github.com/stevenlovegrove/Pangolin.git - cd Pangolin - mkdir build - cd build - cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON - make -j$(nproc) -l$(nproc) - cd ../.. - - export CMAKE_PREFIX_PATH=$install_dir - cd Core - mkdir build - cd build - cmake ../src - make -j$(nproc) -l$(nproc) - - cd ../../GPUTest - mkdir build - cd build - cmake ../src - make -j$(nproc) -l$(nproc) - - cd ../../GUI - mkdir build - cd build - cmake ../src \ - -DCMAKE_PREFIX_PATH="/opt/ros/melodic" - make -j$(nproc) -l$(nproc) - - ln -s $(pwd)/ElasticFusion $install_dir/bin - - # cleanup to make the docker image smaller - cd ../.. - find . -name \*.o | xargs rm -} - -build_elasticfusion diff --git a/docker/build_scripts/install_dependencies.sh b/docker/build_scripts/install_dependencies.sh deleted file mode 100755 index 81ede73..0000000 --- a/docker/build_scripts/install_dependencies.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash -# -# This script is run by the dockerfile during the docker build. -# - -set -ex - -apt-get update - - -# basic packages -apt-get install -y --no-install-recommends \ - sudo git bash-completion lsb-core -# for debuuging -apt-get install -y --no-install-recommends \ - cmake-curses-gui - -# dependency for Director -apt-get install -y --no-install-recommends \ - build-essential cmake libglib2.0-dev \ - libx11-dev libxext-dev libxt-dev \ - libqt4-dev \ - python-dev python-lxml python-numpy python-scipy python-yaml - -# dependency for QT5 -apt-get install -y --no-install-recommends \ - qt5-default - -# dependency for VTK7 -apt-get install -y --no-install-recommends \ - vtk7 - - -# original one deleted -# apt-get install -y \ -# libboost-all-dev \ -# libglew-dev \ -# libjpeg-dev \ -# libopencv-dev \ -# libopenni2-dev \ -# libqhull-dev \ -# libsuitesparse-dev \ -# libudev-dev \ -# libusb-1.0-0-dev \ -# mesa-utils \ -# zlib1g-dev \ -# libyaml-cpp-dev \ -# python-matplotlib \ -# python-pip \ -# python-vtk \ - - -# Figure out the dependencies -# original one -# apt-get install -y \ -# bash-completion \ -# build-essential \ -# cmake \ -# freeglut3-dev \ -# git \ -# libboost-all-dev \ -# libglew-dev \ -# libjpeg-dev \ -# libeigen3-dev \ -# libopencv-dev \ -# libopenni2-dev \ -# libqhull-dev \ -# libqt4-dev \ -# libqwt-dev \ -# libsuitesparse-dev \ -# libudev-dev \ -# libusb-1.0-0-dev \ -# libvtk5-dev \ -# libvtk5-qt4-dev \ -# mesa-utils \ -# openjdk-8-jdk \ -# zlib1g-dev \ -# libyaml-cpp-dev \ -# python-dev \ -# python-matplotlib \ -# python-numpy \ -# python-pip \ -# python-scipy \ -# python-vtk \ -# python-yaml \ -# sudo - - - # optional cleanup to make the docker image smaller - # rm -rf /var/lib/apt/lists/* diff --git a/docker/config.sh b/docker/config.sh new file mode 100644 index 0000000..ddaad2a --- /dev/null +++ b/docker/config.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# +# This script define the name of the labelfusion docker image. +# + +#image_name=robotlocomotion/labelfusion:latest +image_name=ianre657/labelfusion:16.04-latetest \ No newline at end of file diff --git a/docker/docker_build.sh b/docker/docker_build.sh index c79dee3..d4c474e 100755 --- a/docker/docker_build.sh +++ b/docker/docker_build.sh @@ -4,9 +4,11 @@ # set -exu +source ./config.sh root_dir=$(cd $(dirname $0)/../ && pwd) -tag_name=ianre657/labelfusion:16.04-latetest - -docker build -f $root_dir/docker/labelfusion.dockerfile -t ${tag_name} $root_dir/docker +docker build \ + -f $root_dir/docker/labelfusion.dockerfile \ + -t ${image_name} \ + $root_dir/docker diff --git a/docker/docker_run.sh b/docker/docker_run.sh index 6c526ba..a6af3c3 100755 --- a/docker/docker_run.sh +++ b/docker/docker_run.sh @@ -2,17 +2,15 @@ # # Usage: ./docker_run.sh [/path/to/data] # -# This script calls `nvidia-docker run` to start the labelfusion -# container with an interactive bash session. This script sets -# the required environment variables and mounts the labelfusion -# source directory as a volume in the docker container. If the -# path to a data directory is given then the data directory is -# also mounted as a volume. +# This script calls `docker` with `nvidia-docker2 runtime` to start the +# labelfusion container with an interactive bash session. This script +# sets the required environment variables and mounts the labelfusion +# source directory as a volume in the docker container. If the path +# to a data directory is given then the data directory is also mounted +# as a volume. # -#image_name=robotlocomotion/labelfusion:latest -image_name=ianre657/labelfusion:16.04-latetest - +source ./config.sh source_dir=$(cd $(dirname $0)/.. && pwd) if [ ! -z "$1" ]; then From e89d2654240e8d6a916f30aae7a9ad55f1f181e6 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 6 Oct 2018 15:00:17 +0800 Subject: [PATCH 21/24] change the size of object to variable length --- modules/labelfusion/rendertrainingimages.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/labelfusion/rendertrainingimages.py b/modules/labelfusion/rendertrainingimages.py index 944d22f..e05b686 100644 --- a/modules/labelfusion/rendertrainingimages.py +++ b/modules/labelfusion/rendertrainingimages.py @@ -33,8 +33,7 @@ def __init__(self, view, viewOptions, pathDict): self.objectData = utils.loadObjectData() self.storedColors = {} - self.colors = cm.nipy_spectral(np.linspace(0, 1, 18)) # 18 is the total count of the labeled data. - # change this number to fit the number listed in the object_data.yml + self.colors = cm.nipy_spectral(np.linspace(0, 1, len(self.objectData.keys()) )) self.colors = np.append(self.colors, [[0.5, 0.5, 0.5, 1.0]], axis=0) self.objectToWorld = dict() self.initialize() From c4d79e7bfc0179e6a501ca07416836ffd64fda6b Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 27 Nov 2018 21:25:10 +0800 Subject: [PATCH 22/24] changes for pr --- docker/labelfusion.dockerfile | 2 +- modules/labelfusion/rendertrainingimages.py | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/docker/labelfusion.dockerfile b/docker/labelfusion.dockerfile index 9fbd203..b1e5ce5 100755 --- a/docker/labelfusion.dockerfile +++ b/docker/labelfusion.dockerfile @@ -26,7 +26,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # dependency for Director build-essential cmake libglib2.0-dev libqt4-dev \ libx11-dev libxext-dev libxt-dev \ - python-dev python-lxml python-numpy python-scipy python-yaml python-vtk \ + python-dev python-pip python-lxml python-numpy python-scipy python-yaml python-vtk python-matplotlib \ libvtk5-qt4-dev libvtk5-dev \ libqwt-dev openjdk-8-jdk qtbase5-private-dev \ libboost-all-dev libeigen3-dev liblua5.2-dev libyaml-cpp-dev libopencv-dev libqhull-dev \ diff --git a/modules/labelfusion/rendertrainingimages.py b/modules/labelfusion/rendertrainingimages.py index e05b686..7c05764 100644 --- a/modules/labelfusion/rendertrainingimages.py +++ b/modules/labelfusion/rendertrainingimages.py @@ -15,8 +15,6 @@ from . import utils -import pprint -pp = pprint.PrettyPrinter(indent=4) class RenderTrainingImages(object): @@ -27,10 +25,6 @@ def __init__(self, view, viewOptions, pathDict): self.view = view self.viewOptions = viewOptions self.pathDict = pathDict - - print "self.pathDict:" - pp.pprint(self.pathDict) - self.objectData = utils.loadObjectData() self.storedColors = {} self.colors = cm.nipy_spectral(np.linspace(0, 1, len(self.objectData.keys()) )) From 6821bf385e945d4961e73c2a5ecc26cec46ae638 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 29 Nov 2018 00:17:47 +0800 Subject: [PATCH 23/24] move bugfix into another branch --- modules/labelfusion/rendertrainingimages.py | 4 ++-- setup_environment.sh | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/modules/labelfusion/rendertrainingimages.py b/modules/labelfusion/rendertrainingimages.py index 7c05764..afad18d 100644 --- a/modules/labelfusion/rendertrainingimages.py +++ b/modules/labelfusion/rendertrainingimages.py @@ -27,7 +27,7 @@ def __init__(self, view, viewOptions, pathDict): self.pathDict = pathDict self.objectData = utils.loadObjectData() self.storedColors = {} - self.colors = cm.nipy_spectral(np.linspace(0, 1, len(self.objectData.keys()) )) + self.colors = cm.nipy_spectral(np.linspace(0, 1, 12)) self.colors = np.append(self.colors, [[0.5, 0.5, 0.5, 1.0]], axis=0) self.objectToWorld = dict() self.initialize() @@ -314,7 +314,7 @@ def setCameraIntrinsics(view, principalX, principalY, focalLength): def setCameraInstrinsicsAsus(view): principalX = 320.0 principalY = 240.0 - focalLength = 617.0 + focalLength = 528.0 setCameraIntrinsics(view, principalX, principalY, focalLength) ####################################################################################### diff --git a/setup_environment.sh b/setup_environment.sh index c44a5e7..33a77ca 100644 --- a/setup_environment.sh +++ b/setup_environment.sh @@ -19,8 +19,4 @@ export SUPER4PCS_BASE_DIR=$HOME/software_tools/nmellado-Super4PCS-c77cc4a export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIRECTOR_INSTALL_DIR/lib -cdlf() -{ - cd $LABELFUSION_SOURCE_DIR -} -export -f cdlf \ No newline at end of file +alias cdlf='cd $LABELFUSION_SOURCE_DIR' From 8dc116064a1bdcfa2c2dd814580b5f43d46c6f40 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Sat, 8 Dec 2018 15:02:01 +0800 Subject: [PATCH 24/24] load custom camera.cfg if exist --- scripts/prepareForObjectAlignment.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/prepareForObjectAlignment.py b/scripts/prepareForObjectAlignment.py index 062508d..0f58680 100644 --- a/scripts/prepareForObjectAlignment.py +++ b/scripts/prepareForObjectAlignment.py @@ -34,7 +34,10 @@ lcmlog_filename = dataMap["lcmlog"] # call ElasticFusion -os.system(path_to_ElasticFusion_executable + " -l ./" + lcmlog_filename + " -cal camera.cfg") +cameraConfig_arg = "" +if os.path.isfile("camera.cfg"): + cameraConfig_arg += " -cal camera.cfg" +os.system(path_to_ElasticFusion_executable + " -l ./" + lcmlog_filename + cameraConfig_arg) # rename posegraph # TODO: give error if multiple posegraph files