Giter Site home page Giter Site logo

luigifreda / plvs Goto Github PK

View Code? Open in Web Editor NEW
446.0 7.0 65.0 252.46 MB

PLVS is a real-time SLAM system with points, lines, volumetric mapping and 3D unsupervised incremental segmentation.

License: GNU General Public License v3.0

Shell 5.94% Python 1.93% CMake 1.72% C++ 88.26% GLSL 0.29% C 0.13% Cuda 1.73%

plvs's Introduction

PLVS II

v0.2

Author: Luigi Freda

PLVS is a real-time system that leverages sparse SLAM, volumetric mapping, and 3D unsupervised incremental segmentation. PLVS stands for Points, Lines, Volumetric mapping, and Segmentation.

PLVS lab PLVS augmented reality PLVS details PLVS details

PLVS is available in two different versions.

  • PLVS I: hosted in the branch plvs1. It is based on ORB-SLAM2, and supports mono, stereo, and RGB-D cameras.
  • PLVS II: hosted in the master branch. It is based on ORB-SLAM3, and also supports camera systems provided with IMUs.

Here you can find a list of the new features provided by PLVS. You can find further information and videos on this page and in the following document:

PLVS: A SLAM System with Points, Lines, Volumetric Mapping, and 3D Incremental Segmentation 
Luigi Freda

Note: PLVS is an active project. This README is under construction and will be updated with further information and details as new improvements are released. Stay tuned!

Quick start

The following procedures were tested under Ubuntu 20. If you don't have it, check rosdocker and use the noetic or noetic_cuda containers.

Build

  1. Install basic dependencies:
    $ ./install_dependencies.sh
  2. Install OpenCV in a local folder:
    $ ./install_local_opencv.sh
  3. Build the PLVS framework:
    $ ./build.sh

Under ROS noetic you can run:
$ ./build_ros_catkin.sh
to build the PLVS ROS workspace and deploy it into the ros_ws subfolder.

It should be easy to adapt the above procedures if you have a different OS or ROS version.

If you want to skip step 2, you can set the variables OpenCV_DIR and OPENCV_VERSION in config.sh with your local OpenCV path and version, respectively. However, this is not recommended.

Running the examples

Once everything is built, you can enter in the Scripts folder and test the different examples. For instance you can configure and run:

  • $ ./run_tum_rgbd.sh for TUM RGB-D datasets
  • $ ./run_kitti_stereo.sh for KITTI datasets
  • $ ./run_euroc_stereo_inertial.sh for Euroc datasets, stereo + inertial
  • $ ./run_euroc_stereo.sh for Euroc datasets, only stereo
  • $ ./run_tum_vi_stereo.sh for TUM VI datasets, only stereo
  • $ ./run_tum_vi_stereo_inertial.sh for TUM VI datasets, stereo + inertial

In each of the above scripts, you have to configure (1) the DATASET_BASE_FOLDER, (2) the specific DATASET of interest, and (3) the used YAML configuration file. In particular, each YAML configuration file shows different sections with commented options. For a quick overview of the new features and their corresponding YAML options refer to new_features.md.

If you built the ROS workspace, you can use the scripts ros_xterm* to launch the PLVS ROS nodes. For instance, with the TUM datasets, run ros_xterm_tum_rgbd.sh.

Contributing

You are welcome to contribute to the code base by using pull requests, reporting bugs, leaving comments, and proposing new features through issues. Feel free to get in touch: luigifreda(at)gmail(dot)com. Thank you!

License

We release PLVS under GPLv3 license. PLVS contains some modified libraries, each one coming with its license. Where nothing is specified, a GPLv3 license applies to the software.

Please cite our work if you use PLVS in your projects.

Credits

  • The PLVS I and PLVS II frameworks are based on ORB-SLAM2 and ORB-SLAM3 respectively. Many thanks to their Authors for their great work and contributions to the Research and open-source communities.

plvs's People

Contributors

luigifreda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

plvs's Issues

./build_ros_catkin.sh

When I finish running ./build_ros_catkin.sh file, I cannot run ./ros_xterm_tum_rgbd.sh
rosrun PLVS
octomap.launch plvs.rviz rviz_plvs.launch
package.xml r200_nodelet_rgbd.launch xtion.launch
I don't have RGBD....

mising protobuf

Hi,
My environment is Ubuntu20.04, gcc version 9.4.
I followed the instructions in the README document.
Executed ./install_depenies.sh and ./install_local_opencv.
An error was encountered while executing the third step ./build.sh.

Yesterday, I encountered an error when compiling "voxblox". It should be caused by the lack of the protobuf library. Then I deleted the "build" under the "voxblox" folder and the project compiled and passed, but the next project "voxblox server" failed. Encountered the same problem and reported the same error message. And deleting "build" under the project and recompiling cannot solve the problem.

Part of the error message is as follows: (You can see that protobuf can be found)
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread (found version "3.6.1")
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

OPENCV_VERSION
OpenCV_DIR

-- Build files have been written to: /home/river/plvs/Thirdparty/voxblox_server/build
Scanning dependencies of target voxblox_server
[ 60%] Building CXX object CMakeFiles/voxblox_server.dir/src/transformer.cc.o
[ 60%] Building CXX object CMakeFiles/voxblox_server.dir/src/esdf_server.cc.o
[ 60%] Building CXX object CMakeFiles/voxblox_server.dir/src/simulation_server.cc.o
[ 80%] Building CXX object CMakeFiles/voxblox_server.dir/src/tsdf_server.cc.o
In file included from /home/river/plvs/Thirdparty/voxblox_server/../voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox_server/../voxblox/include/voxblox/core/esdf_map.h:10,
from /home/river/plvs/Thirdparty/voxblox_server/include/voxblox_ros/simulation_server.h:11,
from /home/river/plvs/Thirdparty/voxblox_server/src/simulation_server.cc:1:
/home/river/plvs/Thirdparty/voxblox_server/../voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox_server/../voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox_server/../voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox_server/../voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
......

I really don't know how to solve it. I look forward to your reply. Thank you very much.

./build.sh Compilation failed

Error message:
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find CUDA (missing: CUDA_INCLUDE_DIRS) (found version "11.6")
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.16/Modules/FindCUDA.cmake:1104 (find_package_handle_standard_args)
CMakeLists.txt:126 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/cyl/plvs-master/build/CMakeFiles/CMakeOutput.log".
See also "/home/cyl/plvs-master/build/CMakeFiles/CMakeError.log".

Native configuration:

cuda version :11.6

config file :
export USE_LOCAL_OPENCV=1 # use a local installation of OpenCV

or you can set manullay OpenCV_DIR

export OpenCV_DIR="path to my OpenCV folder"

export OpenCV_DIR # here not set

export OPENCV_VERSION=4

====================================================

Settings

====================================================

N.B: if you do not have installed opencv with CUDA support you must set above:

USE_LOCAL_OPENCV=1

1: ON, 0: OFF

export USE_CUDA=1 # use CUDA in PLVS sparse SLAM
export CUDA_VERSION="cuda-11.6"
if [ ! -d /usr/local/$CUDA_VERSION ]; then
CUDA_VERSION="cuda" # use last installed CUDA path in standard path as a fallback
fi

export PATH=/usr/local/$CUDA_VERSION/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/$CUDA_VERSION/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDADIR=/usr/local/$CUDA_VERSION

PLVS has some code and link errors

Thanks for sharing this great work, I encountered some problems while trying to compile the code, please help to look at it.

System environment

ubuntu 20.04
cuda 12.3
opencv 4.7 system install
pcl local install
gcc 9.4
ROS not install

Installation process

  1. Change the Opencv version in Thirdparty from 3 to 4
  2. Added the missing Eigen namespace in the types_six_dof_expmap2.h file
  3. Comment out #include <pcl_conversions/pcl_conversions.h> in world_base.cc
  4. Set export USE_LOCAL_OPENCV=0,export USE_CUDA=1 in config.sh
  5. Install basic dependencies: ./install_dependencies.sh
  6. ./build.sh

Link error

/usr/bin/ld: ../lib/libplvs.so: undefined reference to volumetric_mapping::OctomapWorld::insertPointcloudIntoMapImpl(kindr::minimal::QuatTransformationTemplate<double> const&, boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> > const&)' /usr/bin/ld: ../lib/libplvs.so: undefined reference to volumetric_mapping::OctomapWorld::insertPointcloudIntoMapImpl(kindr::minimal::QuatTransformationTemplate const&, boost::shared_ptr<pcl::PointCloudpcl::PointXYZ > const&)'
collect2: error: ld returned 1 exit status
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/stereo_inertial_tum_vi_old.dir/build.make:235:../Examples_old/Stereo-Inertial/stereo_inertial_tum_vi_old] 错误 1
make[2]: *** [CMakeFiles/mono_inertial_tum_vi_old.dir/build.make:235:../Examples_old/Monocular-Inertial/mono_inertial_tum_vi_old] 错误 1
make[1]: *** [CMakeFiles/Makefile2:228:CMakeFiles/mono_inertial_tum_vi_old.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
make[1]: *** [CMakeFiles/Makefile2:255:CMakeFiles/stereo_inertial_tum_vi_old.dir/all] 错误 2
/usr/bin/ld: ../lib/libplvs.so: undefined reference to volumetric_mapping::OctomapWorld::in sertPointcloudIntoMapImpl(kindr::minimal::QuatTransformationTemplate<double> const&, boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> > const&)' collect2: error: ld returned 1 exit status /usr/bin/ld: ../lib/libplvs.so: undefined reference to volumetric_mapping::OctomapWorld::insertPointcloudIntoMapImpl(kindr::minimal::QuatTransformationTemplate const&, boost::shared_ptr<pcl::PointCloudpcl::PointXYZ > const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/stereo_inertial_realsense_t265_old.dir/build.make:235:../Examples_old/Stereo-Inertial/stereo_inertial_realsense_t265_old] 错误 1
make[2]: *** [CMakeFiles/stereo_inertial_realsense_D435i_old.dir/build.make:235:../Examples_old/Stereo-Inertial/stereo_inertial_realsense_D435i_old] 错误 1
make[1]: *** [CMakeFiles/Makefile2:174:CMakeFiles/stereo_inertial_realsense_D435i_old.dir/all] 错误 2
make[1]: *** [CMakeFiles/Makefile2:201:CMakeFiles/stereo_inertial_realsense_t265_old.dir/all] 错误 2
make: *** [Makefile:84:all] 错误 2

Code Change

log.txt

build on CPU fails

Thank you for the nice work and sharing the code. I am trying to test the SLAM on Ubuntu 18.04, ROS Melodic, opencv 4.4 without CUDA support.

here is the log:
CUDA env var reset, check your CUDA installation
config.sh: line 107: [: -eq: unary operator expected
ZED env var reset, check your ZED installation

Building PLVS

CPP_STANDARD_VERSION: 17
external option: -DCPP_STANDARD_VERSION=17
Configuring and building PLVS ...
Build type: Release
-- eigen include: /usr/include/eigen3
-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- thread
-- system
-- serialization
-- chrono
-- date_time
-- atomic
-- Number of avx2 occurrences in /proc/cpuinfo: 8
-- Number of sse3 occurrences in /proc/cpuinfo: 8
-- Number of sse4 occurrences in /proc/cpuinfo: 16
-- building fastfusion ***************
-- Desired OpenCV version: 4
-- found OpenCV version: 4.8.0
-- opencv include: /usr/local/include/opencv4
-- opencv lib dirs: /usr/local
-- opencv libs: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio
-- set custom pangolin folder: /home/nas/PLVS/plvs/Thirdparty/Pangolin/build/
-- pangolin include:
-- pangolin libs: pango_core;pango_display;pango_geometry;pango_glgeometry;pango_image;pango_opengl;pango_packetstream;pango_plot;pango_python;pango_scene;pango_tools;pango_vars;pango_video;pango_windowing;tinyobj
CMake Warning at CMakeLists.txt:200 (find_package):
By not providing "Findrealsense2.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"realsense2", but CMake did not find one.

Could not find a package configuration file provided by "realsense2" with
any of the following names:

realsense2Config.cmake
realsense2-config.cmake

Add the installation prefix of "realsense2" to CMAKE_PREFIX_PATH or set
"realsense2_DIR" to a directory containing one of the above files. If
"realsense2" provides a separate development package or SDK, be sure it has
been installed.

-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** io features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** io features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** io features related to dssdk will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

** WARNING ** io features related to libusb-1.0 will be disabled
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** visualization features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** visualization features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** visualization features related to dssdk will be disabled
-- Could NOT find RSSDK (missing: _RSSDK_LIBRARIES)
** WARNING ** visualization features related to rssdk will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_FEATURES
-- looking for PCL_ML
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_SURFACE
-- looking for PCL_REGISTRATION
-- looking for PCL_KEYPOINTS
-- looking for PCL_TRACKING
-- looking for PCL_RECOGNITION
-- looking for PCL_STEREO
-- looking for PCL_APPS
-- looking for PCL_IN_HAND_SCANNER
-- looking for PCL_MODELER
-- looking for PCL_POINT_CLOUD_EDITOR
-- looking for PCL_OUTOFCORE
-- looking for PCL_PEOPLE
-- pcl include: /usr/include/pcl-1.8;/usr/include/eigen3;/usr/include;/usr/include/ni;/usr/include/openni2;/usr/include/vtk-6.3;/usr/include/freetype2;/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi;/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent;/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent/include;/usr/lib/x86_64-linux-gnu/openmpi/include;/usr/include/python2.7;/usr/include/x86_64-linux-gnu;/usr/include/hdf5/openmpi;/usr/include/libxml2;/usr/include/jsoncpp;/usr/include/tcl
-- pcl libs: /usr/lib/x86_64-linux-gnu
-- pcl definitions: ;-DDISABLE_ENSENSO;-DDISABLE_DAVIDSDK;-DDISABLE_DSSDK;-DDISABLE_PCAP;-DDISABLE_PNG;-DDISABLE_LIBUSB_1_0;-DFLANN_STATIC;-DDISABLE_RSSDK;-Dqh_QHpointer
-- octomap include: /opt/ros/melodic/include
-- octomap lib dirs: /opt/ros/melodic/lib
-- octomap libs: /opt/ros/melodic/lib/liboctomap.so;/opt/ros/melodic/lib/liboctomath.so
-- protobuf libs: /usr/lib/x86_64-linux-gnu/libprotobuf.so
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib: /usr/lib/x86_64-linux-gnu/libcrypto.so
-- LibCrypto Static Lib: /usr/lib/x86_64-linux-gnu/libcrypto.a
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY)
-- building with libelas CPU ***************
-- ****************** NO CUDA WAS FOUND ******************
CMake Error at /usr/share/cmake-3.10/Modules/FindCUDA.cmake:682 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:287 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/nas/PLVS/plvs/build/CMakeFiles/CMakeOutput.log".

here is the part of cmakelists that I suspect on

if(WITH_LIBSGM)
if(NOT CUDA_FOUND)
message(STATUS "****************** NO CUDA WAS FOUND ******************")
find_package(CUDA REQUIRED) # make the check if not already done above
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_LIBSGM")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_LIBSGM")
if(CUDA_FOUND)
message(STATUS "building with stereo libsgm CUDA ***************")
endif()
set(LIBSGM_INCLUDES
${PROJECT_SOURCE_DIR}/Thirdparty/libsgm/include
)
set(LIBSGM_LIBRARIES
${PROJECT_SOURCE_DIR}/Thirdparty/libsgm/lib/libsgm.a # this contains CUDA
)
else()
message(STATUS "stereo libsgm disabled! ***************")
endif()

./install_local_opencv.sh

CMakeFiles/opencv_highgui.dir/src/window.cpp.o:在函数‘cv::setOpenGlDrawCallback(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, void ()(void), void*)’中:
window.cpp:(.text.ZN2cv21setOpenGlDrawCallbackERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPFvPvES8+0x3f):对‘cvSetOpenGlDrawCallback’未定义的引用
CMakeFiles/opencv_highgui.dir/src/window.cpp.o:在函数‘cv::setOpenGlContext(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)’中:
window.cpp:(.text._ZN2cv16setOpenGlContextERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x31):对‘cvSetOpenGlContext’未定义的引用
CMakeFiles/opencv_highgui.dir/src/window.cpp.o:在函数‘cv::updateWindow(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)’中:
window.cpp:(.text._ZN2cv12updateWindowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x31):对‘cvUpdateWindow’未定义的引用
collect2: error: ld returned 1 exit status
modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:262: recipe for target 'lib/libopencv_highgui.so.4.8.0' failed
make[2]: *** [lib/libopencv_highgui.so.4.8.0] Error 1
CMakeFiles/Makefile2:4345: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make[1]: *** 正在等待未完成的任务...

Is the process of using mono lens the same as orb_slam2?

I have built ros_ws, do I need to create a build file like orb slam2 and then run "cmake ... " and "make"?
My past experience with orb slam2 has been to use "rosrun ORB_SLAM2 Mono /home/b104/ catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/b104/ catkin_ws/src/ORB_SLAM2/ Examples/ROS/ORB_SLAM2/Asus.yaml " Turn on the camera and do slam, is it the same in PLVS?

P.S:I'm not a native English speaker and I only use orb_slam2 twice, so apologies if this is unclear.

Scaling Problem in 3D Reconstruction Using PLVS on KITTI Sequence 00

Hey Luigi,
I am testing PLVS to perform 3D reconstruction from a sequence of images. During the evaluation of the odometry, I noticed that the algorithm gives distances that are significantly smaller than the actual world distances, even though the camera calibration is accurate.

Observations

I tested PLVS on sequence 00 of the KITTI dataset and compared the results with the ground truth provided by KITTI. It appears that there is a scaling issue: PLVS produces a 3D trajectory that is much smaller than the real-world trajectory.

Screenshot from 2024-05-28 16-09-06

Detailed Findings

  • Ground Truth Distance: 3724.19 meters
  • PLVS Result Distance: 259.47 (don't know the unit)

This discrepancy suggests that the problem is not simply a matter of unit conversion (e.g., meters to millimeters). The distance computed by the PLVS is drastically smaller than the actual distance.

Request for Assistance

I am seeking help to understand and resolve this scaling issue. Any insights into potential causes or suggestions for debugging this problem would be greatly appreciated.

Thank you!

./install_local_opencv erroe

ubuntu 20.04,
haved finished ./install_dependices
cuda version = 11.6;
i set use_cuda = 1;
and then happened the error:
Scanning dependencies of target opencv_python3
[ 99%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir//src2/cv2.cpp.o
[ 99%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/
/src2/cv2_numpy.cpp.o
[ 99%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir//src2/cv2_convert.cpp.o
[ 99%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/
/src2/cv2_util.cpp.o
[ 99%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2_highgui.cpp.o
In file included from /home/robot/plvs/Thirdparty/opencv/build/modules/python_bindings_generator/pyopencv_generated_include.h:93,
from /home/robot/plvs/Thirdparty/opencv/modules/python/src2/cv2.cpp:11:
/home/robot/plvs/Thirdparty/opencv/opencv_contrib-4.8.0/modules/cudafeatures2d/include/opencv2/cudafeatures2d.hpp:121:26: warning: ‘virtual void cv::cuda::DescriptorMatcher::clear()’ can be marked override [-Wsuggest-override]
121 | CV_WRAP virtual void clear() = 0;
| ^~~~~
/home/robot/plvs/Thirdparty/opencv/opencv_contrib-4.8.0/modules/cudafeatures2d/include/opencv2/cudafeatures2d.hpp:125:26: warning: ‘virtual bool cv::cuda::DescriptorMatcher::empty() const’ can be marked override [-Wsuggest-override]
125 | CV_WRAP virtual bool empty() const = 0;
| ^~~~~
In file included from /home/robot/plvs/Thirdparty/opencv/build/modules/python_bindings_generator/pyopencv_custom_headers.h:23,
from /home/robot/plvs/Thirdparty/opencv/modules/python/src2/cv2.cpp:88:
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/python_bridge.hpp:85:27: error: ‘GInferOutputs’ in namespace ‘cv’ does not name a type
85 | GAPI_EXPORTS_W inline cv::GInferOutputs infer(const String& name, const cv::GInferInputs& inputs)
| ^~~~~~~~~~~~~
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/python_bridge.hpp:90:23: error: ‘GInferOutputs’ does not name a type
90 | GAPI_EXPORTS_W inline GInferOutputs infer(const std::string& name,
| ^~~~~~~~~~~~~
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/python_bridge.hpp:97:23: error: ‘GInferListOutputs’ does not name a type
97 | GAPI_EXPORTS_W inline GInferListOutputs infer(const std::string& name,
| ^~~~~~~~~~~~~~~~~
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/python_bridge.hpp:104:23: error: ‘GInferListOutputs’ does not name a type
104 | GAPI_EXPORTS_W inline GInferListOutputs infer2(const std::string& name,
| ^~~~~~~~~~~~~~~~~
In file included from /home/robot/plvs/Thirdparty/opencv/build/modules/python_bindings_generator/pyopencv_custom_headers.h:24,
from /home/robot/plvs/Thirdparty/opencv/modules/python/src2/cv2.cpp:88:
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/pyopencv_gapi.hpp:15:49: error: ‘GNetPackage’ in namespace ‘cv::gapi’ does not name a type; did you mean ‘GKernelPackage’?
15 | using gapi_GNetPackage = cv::gapi::GNetPackage;
| ^~~~~~~~~~~
| GKernelPackage
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/pyopencv_gapi.hpp:16:49: error: ‘ie’ in namespace ‘cv::gapi’ does not name a type
16 | using gapi_ie_PyParams = cv::gapi::ie::PyParams;
| ^~
/home/robot/plvs/Thirdparty/opencv/modules/gapi/misc/python/pyopencv_gapi.hpp:17:49: error: ‘onnx’ in namespace ‘cv::gapi’ does not name a type
17 | using gapi_onnx_PyParams = cv::gapi::onnx::PyParams;

how can i solve it ? thank you!

Can't compile without CUDA

When building I get error, so my example files don't create.

Specify Cuda Toolkit Root Dir even in noetic without cuda

Line matching

Hello, I found that you compute for each line segment its normal orientation θ and signed distance h in the paper. Then, the 2D parameter manifold (θ, h) is partitioned into tiles. Could you explain the specific code location of this part? I didn't find the corresponding code content in ComputeStereoLineMatches() and ExtractLSD().
image

Compilation conflict problem

Hi,Luigi!
Orb-slam3 has been installed. Will there be any conflicts when installing your plvs in the third step of the build?

segmentation

Great work!
How can I make the same segmentation results on TUM dataset? Which param should I change in the yaml file? The second picture is my result on "rgbd_dataset_freiburg3_long_office_household" with PointCloudMapping.type: "octree_point" and Segmentation.on: 1
image
image

Sophus coredump

I can't replicate it reliably, seems to happen at random after a period of time.

Error message:

Sophus ensure failed in function 'static Sophus::SO3<Scalar_> Sophus::SO3<Scalar_, Options>::expAndTheta(const Tangent&, Sophus::SO3<Scalar_, Options>::Scalar*) [with Scalar_ = float; int Options = 0; Sophus::SO3<Scalar_, Options>::Ta    ngent = Eigen::Matrix<float, 3, 1>; Sophus::SO3<Scalar_, Options>::Scalar = float]', file '/home/user/plvs/Thirdparty/Sophus/sophus/so3.hpp', line 614.
SO3::exp failed! omega: -nan -nan -nan, real: -nan, img: -nan
bash: line 1: 169876 Aborted                 (core dumped)

./build_thirdparty.sh error(voxblox)

Hello! First of all thank you for your contribution to the community。
I'm having trouble compiling Thirdparty. It seems that an error occurred while compiling "voxblox". Is it because some libraries are missing? The error message is as follows:

Configuring and building Thirdparty/voxblox ...
Build type: Release
-- Using system protobuf
-- -- creating symbolic links for headers
SRCDIRS: /home/river/plvs/Thirdparty/voxblox/include /home/river/plvs/Thirdparty/voxblox/minkindr/include
DIR: /home/river/plvs/Thirdparty/voxblox/include
ln: '/home/river/plvs/Thirdparty/voxblox/include/voxblox' 与'/home/river/plvs/Thirdparty/voxblox/include/voxblox' 为同一文件
DIR: /home/river/plvs/Thirdparty/voxblox/minkindr/include
-- Configuring done
-- Generating done
-- Build files have been written to: /home/river/plvs/Thirdparty/voxblox/build
[ 17%] Built target voxblox_proto
[ 25%] Building CXX object CMakeFiles/voxblox.dir/src/core/block.cc.o
[ 25%] Building CXX object CMakeFiles/voxblox.dir/src/core/esdf_map.cc.o
[ 28%] Building CXX object CMakeFiles/voxblox.dir/src/core/tsdf_map.cc.o
[ 32%] Building CXX object CMakeFiles/voxblox.dir/src/integrator/esdf_integrator.cc.o
[ 35%] Building CXX object CMakeFiles/voxblox.dir/src/integrator/esdf_occ_integrator.cc.o
[ 39%] Building CXX object CMakeFiles/voxblox.dir/src/integrator/tsdf_integrator.cc.o
[ 42%] Building CXX object CMakeFiles/voxblox.dir/src/io/sdf_ply.cc.o
[ 46%] Building CXX object CMakeFiles/voxblox.dir/src/simulation/objects.cc.o
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/tsdf_map.h:9,
from /home/river/plvs/Thirdparty/voxblox/src/core/tsdf_map.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/src/core/block.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/integrator/esdf_integrator.h:11,
from /home/river/plvs/Thirdparty/voxblox/src/integrator/esdf_integrator.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/esdf_map.h:10,
from /home/river/plvs/Thirdparty/voxblox/src/core/esdf_map.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/integrator/esdf_occ_integrator.h:11,
from /home/river/plvs/Thirdparty/voxblox/src/integrator/esdf_occ_integrator.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/io/sdf_ply.h:7,
from /home/river/plvs/Thirdparty/voxblox/src/io/sdf_ply.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type
35 | explicit Block(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared
185 | void getProto(BlockProto* proto) const;
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/tsdf_map.h:9,
from /home/river/plvs/Thirdparty/voxblox/src/core/tsdf_map.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type
12 | Block::Block(const BlockProto& proto)
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’
15 | has_data_ = proto.has_data();
| ^~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222,
from /home/river/plvs/Thirdparty/voxblox/src/core/block.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type
12 | Block::Block(const BlockProto& proto)
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’
15 | has_data_ = proto.has_data();
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:19:22: error: request for member ‘voxel_data_size’ in ‘proto’, which is of non-class type ‘const int’
19 | data.reserve(proto.voxel_data_size());
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:21:30: error: request for member ‘voxel_data’ in ‘proto’, which is of non-class type ‘const int’
21 | for (uint32_t word : proto.voxel_data()) {
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: At global scope:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: variable or field ‘getProto’ declared void
29 | void Block::getProto(BlockProto* proto) const {
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type
203 | void deserializeProto(const BlockProto& proto);
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared
204 | void serializeProto(BlockProto* proto) const;
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:19:22: error: request for member ‘voxel_data_size’ in ‘proto’, which is of non-class type ‘const int’
19 | data.reserve(proto.voxel_data_size());
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:21:30: error: request for member ‘voxel_data’ in ‘proto’, which is of non-class type ‘const int’
21 | for (uint32_t word : proto.voxel_data()) {
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: At global scope:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: variable or field ‘getProto’ declared void
29 | void Block::getProto(BlockProto* proto) const {
| ^~~~~~~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/integrator/esdf_integrator.h:11,
from /home/river/plvs/Thirdparty/voxblox/src/integrator/esdf_integrator.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type
12 | Block::Block(const BlockProto& proto)
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’
15 | has_data_ = proto.has_data();
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: ‘BlockProto’ was not declared in this scope
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:19:22: error: request for member ‘voxel_data_size’ in ‘proto’, which is of non-class type ‘const int’
19 | data.reserve(proto.voxel_data_size());
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:21:30: error: request for member ‘voxel_data’ in ‘proto’, which is of non-class type ‘const int’
21 | for (uint32_t word : proto.voxel_data()) {
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: At global scope:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: variable or field ‘getProto’ declared void
29 | void Block::getProto(BlockProto* proto) const {
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: ‘BlockProto’ was not declared in this scope
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:45: error: ‘proto’ was not declared in this scope
29 | void Block::getProto(BlockProto* proto) const {
| ^~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/esdf_map.h:10,
from /home/river/plvs/Thirdparty/voxblox/src/core/esdf_map.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type
12 | Block::Block(const BlockProto& proto)
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^~~~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’
14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) {
| ^~~~~~~~
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’
15 | has_data_ = proto.has_data();

Looking forward to your reply, thank you very much!

libelas-gpu error

Hello,Luigi! I'm having trouble compiling Thirdparty. It seems that an error occurred while compiling "libelas-gpu". The error message is as follows:

build files have been written to: /home/plvs-master/Thirdparty/libelas-gpu/build
[ 6%] Building NVCC (Device) object CMakeFiles/cuda_compile_1.dir/GPU/cuda_compile_1_generated_elas_gpu.cu.o
nvcc fatal : Unsupported gpu architecture 'compute_35'
CMake Error at cuda_compile_1_generated_elas_gpu.cu.o.Release.cmake:216 (message):
Error generating
/home/plvs-master/Thirdparty/libelas-gpu/build/CMakeFiles/cuda_compile_1.dir/GPU/./cuda_compile_1_generated_elas_gpu.cu.o

I do not know how to fix this kind of error.Has anything like that ever happened to you?Could you give me some advice in solving this error?
Thanks for your kind attention and look forward your reply.

An error occurred while building the PLVS framework

CMake Error at /home/cyl/opt/cmake-3.23.2/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find CUDA: Found unsuitable version "12.0", but required is exact
version "11.0" (found /usr/local/cuda)
Call Stack (most recent call first):
/home/cyl/opt/cmake-3.23.2/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:592 (_FPHSA_FAILURE_MESSAGE)
/home/cyl/opt/cmake-3.23.2/share/cmake-3.23/Modules/FindCUDA.cmake:1264 (find_package_handle_standard_args)
/home/cyl/plvs-master/Thirdparty/opencv/install/lib/cmake/opencv4/OpenCVConfig.cmake:86 (find_package)
/home/cyl/plvs-master/Thirdparty/opencv/install/lib/cmake/opencv4/OpenCVConfig.cmake:108 (find_host_package)
CMakeLists.txt:40 (find_package)
I have tried switching cuda versions and still get the same error.
cuda version:11.0

visualization

Hello,

Attached is the result I got when I ran the gbd_dataset_freiburg2_pioneer_slam3 dataset as an example.

rgbd_2_slam3

I can't see the Point Cloud output. I deleted Pangolin and reinstalled it, but I couldn't figure out what the problem was.

Is catkin-tools needed? - Fix install_dependencies.sh for fresh ubuntu 20.04 installation

I tried to run the install_dependencies.sh on a completely new Ubuntu 20.04 system. In the end, there was an error message indicating catkin-tools are missing E: Unable to locate package python3-catkin-tools

Looking at docs of it (https://catkin-tools.readthedocs.io/en/latest/installing.html) it states that Ubuntu needs additional configuration. After executing the four commands, catkin tools are successfully installed.

Can someone reproduce the error? And if catkin-tools are needed for the project, should I create a PR with the changed install_dependencies.sh?

insegment datasets

how to generate datasets in your path ~/Work/datasets/rgbd_datasets/inseg_dataset?

Camera.fovScale

Hello, I notice that the param "Camera.fovScale" in TUM-VI_rectified.yaml. I run PLVS on OpenLORIS-Scene dataset. The dataset consists of stereo fisheye images, and I set Camera.fovScale as 0.5. However, the viewer looks a little strange.
I want to know the role of the variable "Camera.fovScale" and what should I set it for different fisheye datasets.
image
The raw fisheye image is as below:
image

How to save KeyframeTrajectory.txt

nice job~!But when i run the rgbd_tum, i don't find the ""KeyFrameTrajectiory.txt"and other information such like "median tracking time" can't show in the terminal

TimeUtils

Hello,

Thank you for your great work.

The ./build.sh is giving an error because it can't find the TimeUtils.h file.

In /home/eng/plvs/src/PointCloudMapping.cc at line 46 and /home/eng/plvs/src/PointCloudKeyFrame.cc at line 26, it's showing a fatal error due to the absence of TimeUtils.h.

Also, the file is not present in the src directory.

Can you assist with this matter?

Ask about progress and ask for help.

May I ask, is the effect in the paper now reproducible through existing code? I tried to reproduce it, but algorithms like EDLine don't seem to have seen it yet. If it's my problem, can you tell me the code command? Thank you.

Frame rate?

Thanks for making this code available!
What frame rate can I expect in stereo mode with IMU?

Can it achieve 40hz?

Thanks!

Segmentation error

I have bad result form segmentation:
314063680-37d1877b-75e9-4143-bc42-f289d0654a2d

And when segmentation off:
314063629-c7a10e8b-6835-4a8a-a6df-820c5fcbeaa2

Also:
PointCloudMapping.type: "octree_point"
Segmentation.on: 1

Another GUI screenshots:
314064709-d6f5657c-f09a-4540-acbd-3b7ffe4d0c94

Look's like something broken i normals.

P.S. Tried without touching sliders in GUI, same result.

Point-Line mode using fisheye camera

Hello, I found that when using fisheye cameras(like TUM-VI dataset), the line features only works by setting "Camera.needRectification: 1 # only with KannalaBrandt8
Camera.fovScale: 0.65 # only with KannalaBrandt8".
I want to know if I can use line features directly in fisheye camera like below figure:
image

ROS Error

Hello, when I deploy ROS melodic, I met problems as follows:
image

The RGBD camera running effect under the TUM data set was amazing.But below I encountered a new problem, I hope you can help.

I tried running PLVSII again, and the RGBD camera running effect under the TUM data set was amazing. I admire it very much.

But below I encountered a new problem, I hope you can help.

I found that in Stereo mode or Stereo-Inertial mode, only line features can be added (other new feature parameters are set to 0). When I add new feature parameters such as PointCloudMapping.on: 1, the system will crash with a segmentation fault. Is this caused by my problem?
Some detailed documents below.
Run command: ./run_tum_vi_stereo.sh or ./run_tum_vi_stereo_inertial.sh
Terminal output: terminal_output_run_tum_vi_stereo.txt or terminal_output_run_tum_vi_stereo_inertial.txt
YAML file: TUM-VI_rectified.yaml(only modified PointCloudMapping.on: 1)

I found that when the stereo mode of PLVSII only turns on the point and line features, in the dataset-outdoors8_512_16 sequence of the TUM-VI dataset, after leaving the building, the trajectory will drift circularly at a constant speed (as shown in the figure stereo_TUM -VI-dataset-outdoors8_512_16_point_line_1.png, stereo_TUM-VI-dataset-outdoors8_512_16_point_line_2.png). It seems to be caused by fisheye camera distortion.

Similar to the second doubt, I found that the stereo-inertial of PLVSII, when only the point and line features are turned on, in the dataset-outdoors8_512_16 sequence of the TUM-VI dataset, is in a specific place (as shown in the figure stereo-inertial_TUM -VI-dataset-outdoors8_512_16_point_line_1.png, stereo-inertial_TUM-VI-dataset-outdoors8_512_16_point_line_2.png) will cause the IMU to run away.

ThirdParty libelas-gpu error

Hi,Luigi!
I'm having trouble compiling Thirdparty. It seems that an error occurred while compiling "libelas-gpu". The error message is as follows:

Screenshot from 2024-03-13 14-14-17

nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(365): warning #177-D: variable "p_i" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(325): warning #177-D: variable "window_size" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(344): warning #177-D: variable "offset" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(345): warning #177-D: variable "milliseconds" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xweight2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(625): warning #177-D: variable "xfactor2" was declared but never referenced

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(394): warning #2361-D: invalid narrowing conversion from "signed int" to "float"

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(721): warning #174-D: expression has no effect

/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu(727): warning #174-D: expression has no effect

/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu: In member function ‘virtual void libelas::ElasGPU::computeDisparity(std::vector<libelas::Elas::support_pt>, std::vector<libelas::Elas::triangle>, int32_t*, int32_t*, uint8_t*, uint8_t*, bool, float*)’:
/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu:394:33: warning: narrowing conversion of ‘p_support.std::vector<libelas::Elas::support_pt>::operator[](((std::vector<libelas::Elas::support_pt>::size_type)c1)).libelas::Elas::support_pt::v’ from ‘int32_t’ {aka ‘int’} to ‘float’ [-Wnarrowing]
  394 |     float tri_v[3] = {p_support[c1].v,p_support[c2].v,p_support[c3].v};
/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu:394:50: warning: narrowing conversion of ‘p_support.std::vector<libelas::Elas::support_pt>::operator[](((std::vector<libelas::Elas::support_pt>::size_type)c2)).libelas::Elas::support_pt::v’ from ‘int32_t’ {aka ‘int’} to ‘float’ [-Wnarrowing]
  394 |     float tri_v[3] = {p_support[c1].v,p_support[c2].v,p_support[c3].v};
/home/aadil/Documents/plvs/Thirdparty/libelas-gpu/GPU/elas_gpu.cu:394:67: warning: narrowing conversion of ‘p_support.std::vector<libelas::Elas::support_pt>::operator[](((std::vector<libelas::Elas::support_pt>::size_type)c3)).libelas::Elas::support_pt::v’ from ‘int32_t’ {aka ‘int’} to ‘float’ [-Wnarrowing]
  394 |     float tri_v[3] = {p_support[c1].v,p_support[c2].v,p_support[c3].v};
CMake Error at cuda_compile_1_generated_elas_gpu.cu.o.Release.cmake:276 (message):
  Error generating file
  /home/aadil/Documents/plvs/Thirdparty/libelas-gpu/build/CMakeFiles/cuda_compile_1.dir/GPU/./cuda_compile_1_generated_elas_gpu.cu.o


make[2]: *** [CMakeFiles/libelas_gpu.dir/build.make:77: CMakeFiles/cuda_compile_1.dir/GPU/cuda_compile_1_generated_elas_gpu.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:90: CMakeFiles/libelas_gpu.dir/all] Error 2
make: *** [Makefile:91: all] Error 2 ```

**PS :** I am on ubuntu 22.04 and I followed your tutorial.

I do not know how to fix this kind of error.
Has anything like that ever happened to you?
Could you give me some advice in solving this error?

Thanks for your kind attention and look forward your reply.
Ayoub

The same 3D line is back-projected into different lines

Regarding this part of the description, does it mean that for a 3D line in the same space, its endpoints may not be exactly the same when the corresponding line segments in different observation frames are back-projected into the 3D space?Then, this article also mentions P and Q when representing 3D lines. Is there a specific code description for PQ in this picture?
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.