This is a reconstruction demo using FLVIS + pcl/open3d.
The camera pose is outputted by FLVIS, and the 3D model is from PCL/open3d.
Beyond the original dependecies of FLVIS, open3d should be installed too.
1.a Install ros melodic based on ros wiki. ros-melodic-desktop-full is preferred.
1.b Install opencv3 by sudo apt install libopencv-dev
1.c Download FLVIS to your working space
mkdir -p ~/cat_ws/src
cd ~/cat_ws/src
git clone https://github.com/zouyajing/FLVIS.git
1.d Install the dependencies of orignal FLVIS
cd FLVIS/3rdPartLib
sudo sh install3rdPartLib.sh
cd ../
mkdir results
1.e Install open3d
e1 Download open3d to ~/cat_ws/src/FLVIS/3rdPartLib
cd ~/cat_ws/src/FLVIS/3rdPartLib
git clone https://github.com/isl-org/Open3D
e2 Update CMake version to 3.19 following official APT repository
e3 Install the dependencies of open3d by source Open3D/util/install_deps_ubuntu.sh
e4 Modify Line 77 of CMakeLists.txt to use the eigen3 in system
option(USE_SYSTEM_EIGEN3 "Use system pre-installed eigen3" ON)
e5 Modify Line 56 and 350 in Open3D/cpp/open3d/geometry/Line3D.cpp
this->Transform(t);
e6 Build the open3d
cd Open3D
mkdir build && cd build
cmake ..
make -j2
sudo make install
1.f Modify the file names of the saved models in FLVIS/src/backend/vo_loopclosing.cpp. In Lines 198, 264,285, and 956, replace rick/FLVIS with your user name and working space, i.e. lee/cat_ws
1.g Build the package
cd ~/cat_ws
catkin_make -j
2.a Download an example dataset here.
2.b Uncompress it and copy it to ~/corridor_ss
2.c Run the demo in two terminals
roslaunch flvis ss_ipad.launch (run flvis + 3D reconstruction)
rosrun flvis play_bag_from_ipad ~/corridor_ss/corridor_ss/ (publish RGB-D image messages using ipad+ss dataset)
2.d Save the reconstructed model using pcl. Open the third terminal, and enter rosservice call /save_map. The loop closing thread will run saveMapCallback function to perform pcl reconstrcution.
2.e Save the reconstructed model using open3d. In the second terminal, enter 'q', and the loop closing thread will run save_callback function to perform TSDF reconstrcution. Noticed that, the TSDF reconstruction can only be performed in a small workspace. It will fail in the long tunnel due to the memrory cost.
The models are saved in results folder.
2.f The reconstruction demo is
Close the dense point cloud in rviz will help to improve the robustness of the system.
Some functions are added to support 3D reconstrcution:
- independ_modules
- play_bag_from_ipad. It publishes the RGB-D image messages from the ipad+ss dataset.
- trigger_save_pts. It publishes a bool message after the dataset is finished.
- octofeeder. It publish a real-time point cloud map.
- vo_loopclosing.cpp. Two functions are added to save the offline map:
-
bool saveMapCallback(std_srvs::Trigger::Request& req, std_srvs::Trigger::Response& res).
It is to save offline point cloud map.
-
save_callback(const std_msgs::Bool::ConstPtr& save).
It is to perform TSDF reconstruction. Please control the size of your map, as TSDF consumes lots of memory.
-
