stella-cv / stella_vslam Goto Github PK
View Code? Open in Web Editor NEWThis is a unofficial fork of OpenVSLAM (https://github.com/xdspacelab/openvslam)
Home Page: https://stella-cv.rtfd.io/en/latest/
License: Other
This is a unofficial fork of OpenVSLAM (https://github.com/xdspacelab/openvslam)
Home Page: https://stella-cv.rtfd.io/en/latest/
License: Other
I excuted this shell script on the server (VM instance on Compute Engine. Ubuntu 18.04.).
I make environment for socket viewer.
I got an error. How can I fix it?
script I executed.
#! /bin/bash
VIDEO_PATH=$1
${OPENVSLAM_PATH}/openvslam/build/run_video_slam \
-v ${OPENVSLAM_PATH}/openvslam/build/orb_vocab.fbow \
-m ${VIDEO_PATH} \
-c /openvslam/config/theta_v_mp4.yaml \
--frame-skip 1 \
--no-sleep \
--auto-term \
--map-db ${OPENVSLAM_PATH}/openvslam/build/map.msg \
--eval-log \
This is the log.
OpenVSLAM root:/openvslam$ source run_openvslam_from_video.sh data/kamakura/R0013872.MP4
[2021-09-18 12:20:05.596] [I] config file loaded: /openvslam/config/theta_v_mp4.yaml
[2021-09-18 12:20:05.596] [I]
___ __ _____ _ _ __ __
/ _ \ _ __ ___ _ _\ \ / / __| | /_\ | \/ |
| (_) | '_ \/ -_) ' \\ V /\__ \ |__ / _ \| |\/| |
\___/| .__/\___|_||_|\_/ |___/____/_/ \_\_| |_|
|_|
Copyright (C) 2019,
National Institute of Advanced Industrial Science and Technology (AIST)
All rights reserved.
This is free software,
and you are welcome to redistribute it under certain conditions.
See the LICENSE file.
Camera:
color_order: !<!> RGB
setup: !<!> monocular
rows: 1920
name: !<!> RICOH THETA V
fps: 30.0
cols: 3840
model: !<!> equirectangular
Tracking:
max_num_keypoints: 5000
Feature:
mask_rectangles:
- [0.0, 1.0, 0.0, 0.1]
- [0.0, 1.0, 0.84, 1.0]
- [0.0, 0.2, 0.7, 1.0]
- [0.8, 1.0, 0.7, 1.0]
scale_factor: 1.2
min_fast_threshold: 7
ini_fast_threshold: 20
num_levels: 8
Mapping:
baseline_dist_thr_ratio: 0.02
[2021-09-18 12:20:05.596] [I] loading ORB vocabulary: /root/catkin_ws/src/openvslam/build/orb_vocab.fbow
[2021-09-18 12:20:05.624] [I] startup SLAM system
[2021-09-18 12:20:05.625] [I] start mapping module
[2021-09-18 12:20:05.625] [I] start global optimization module
[2021-09-18 12:20:05] [info] asio async_connect error: asio.system:111 (Connection refused)
[2021-09-18 12:20:05] [info] Error getting remote endpoint: asio.system:107 (Transport endpoint is not connected)
[2021-09-18 12:20:05] [error] handle_connect error: Connection refused
This is the docker file I built.
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND noninteractive
ARG CMAKE_INSTALL_PREFIX=/usr/local
ARG NUM_THREADS=24
ARG EIGEN3_VERSION=3.3.7
ARG G2O_COMMIT=9b41a4ea5ade8e1250b9c1b279f3a9c098811b5a
ARG OPENCV_VERSION=3.4.0
ARG SIOCLIENT_COMMIT=ff6ef08e45c594e33aa6bc19ebdd07954914efe0
ARG OPENVSLAM_PATH=/root/catkin_ws/src
##############################################################################
## Install ROS ##
##############################################################################
# setup keys
RUN apt update && apt install -my \
wget gnupg \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* \
&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# setup sources.list
RUN echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-latest.list
# install ros
RUN apt update && apt install -y \
ros-melodic-desktop-full \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# install dependecies
RUN apt update && apt install -y \
python-rosdep \
python-rosinstall \
python-rosinstall-generator \
python-wstool \
python-catkin-tools \
build-essential \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# initiliaze rosdep
RUN rosdep init && rosdep update
##############################################################################
## Install Additional Utilities ##
##############################################################################
RUN apt update && apt install -y \
iproute2 \
iputils-ping \
net-tools \
terminator \
nautilus \
gedit \
vim \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# fix terminator error
RUN apt update && apt install -y \
dbus-x11 \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# set terminator config
COPY include/config /root/.config/terminator/config
##############################################################################
## Install OpenVSLAM ##
##############################################################################
# install dependencies via apt
ENV DEBCONF_NOWARNINGS yes
RUN set -x && \
apt-get update -y -qq && \
apt-get upgrade -y -qq --no-install-recommends && \
: "basic dependencies" && \
apt-get install -y -qq \
build-essential \
pkg-config \
cmake \
git \
wget \
curl \
tar \
unzip && \
: "g2o dependencies" && \
apt-get install -y -qq \
libgoogle-glog-dev \
libatlas-base-dev \
libsuitesparse-dev \
libglew-dev && \
: "OpenCV dependencies" && \
apt-get install -y -qq \
libgtk-3-dev \
libjpeg-dev \
libpng++-dev \
libtiff-dev \
libopenexr-dev \
libwebp-dev \
ffmpeg \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libavresample-dev && \
: "other dependencies" && \
apt-get install -y -qq \
libyaml-cpp-dev && \
: "remove cache" && \
apt-get autoremove -y -qq && \
rm -rf /var/lib/apt/lists/*
ENV CPATH=${CMAKE_INSTALL_PREFIX}/include:${CPATH}
ENV C_INCLUDE_PATH=${CMAKE_INSTALL_PREFIX}/include:${C_INCLUDE_PATH}
ENV CPLUS_INCLUDE_PATH=${CMAKE_INSTALL_PREFIX}/include:${CPLUS_INCLUDE_PATH}
ENV LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${LIBRARY_PATH}
ENV LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}
ENV NVIDIA_VISIBLE_DEVICES ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics
# Eigen
WORKDIR /tmp
RUN set -x && \
wget -q https://gitlab.com/libeigen/eigen/-/archive/${EIGEN3_VERSION}/eigen-${EIGEN3_VERSION}.tar.bz2 && \
tar xf eigen-${EIGEN3_VERSION}.tar.bz2 && \
rm -rf eigen-${EIGEN3_VERSION}.tar.bz2 && \
cd eigen-${EIGEN3_VERSION} && \
mkdir -p build && \
cd build && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \
.. && \
make -j${NUM_THREADS} && \
make install && \
cd /tmp && \
rm -rf *
ENV Eigen3_DIR=${CMAKE_INSTALL_PREFIX}/share/eigen3/cmake
# g2o
WORKDIR /tmp
RUN set -x && \
git clone https://github.com/RainerKuemmerle/g2o.git && \
cd g2o && \
git checkout ${G2O_COMMIT} && \
mkdir -p build && \
cd build && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_UNITTESTS=OFF \
-DG2O_USE_CHOLMOD=OFF \
-DG2O_USE_CSPARSE=ON \
-DG2O_USE_OPENGL=OFF \
-DG2O_USE_OPENMP=ON \
-DG2O_BUILD_APPS=OFF \
-DG2O_BUILD_EXAMPLES=OFF \
-DG2O_BUILD_LINKED_APPS=OFF \
.. && \
make -j${NUM_THREADS} && \
make install && \
cd /tmp && \
rm -rf *
ENV g2o_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/g2o
# OpenCV
WORKDIR /tmp
RUN set -x && \
wget -q https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
unzip -q ${OPENCV_VERSION}.zip && \
rm -rf ${OPENCV_VERSION}.zip && \
cd opencv-${OPENCV_VERSION} && \
mkdir -p build && \
cd build && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_OPENEXR=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_opencv_dnn=OFF \
-DBUILD_opencv_ml=OFF \
-DBUILD_opencv_python_bindings_generator=OFF \
-DENABLE_CXX11=ON \
-DENABLE_FAST_MATH=ON \
-DWITH_EIGEN=ON \
-DWITH_FFMPEG=ON \
-DWITH_OPENMP=ON \
.. && \
make -j${NUM_THREADS} && \
make install && \
cd /tmp && \
rm -rf *
ENV OpenCV_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/opencv4
# socket.io-client-cpp
WORKDIR /tmp
RUN set -x && \
git clone https://github.com/shinsumicco/socket.io-client-cpp.git && \
cd socket.io-client-cpp && \
git checkout ${SIOCLIENT_COMMIT} && \
git submodule init && \
git submodule update && \
mkdir -p build && \
cd build && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \
-DBUILD_UNIT_TESTS=OFF \
.. && \
make -j${NUM_THREADS} && \
make install && \
cd /tmp && \
rm -rf *
ENV sioclient_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/sioclient
# protobuf
WORKDIR /tmp
RUN set -x && \
apt-get update -y -qq && \
apt-get upgrade -y -qq --no-install-recommends && \
apt-get install -y -qq autogen autoconf libtool && \
wget -q https://github.com/google/protobuf/archive/v3.6.1.tar.gz && \
tar xf v3.6.1.tar.gz && \
cd protobuf-3.6.1 && \
./autogen.sh && \
./configure --prefix=${CMAKE_INSTALL_PREFIX} --enable-static=no && \
make -j${NUM_THREADS} && \
make install && \
cd /tmp && \
rm -rf * && \
apt-get purge -y -qq autogen autoconf libtool && \
apt-get autoremove -y -qq && \
rm -rf /var/lib/apt/lists/*
# OpenVSLAM
ENV OPENVSLAM_PATH=${OPENVSLAM_PATH}
RUN mkdir -p ${OPENVSLAM_PATH}
WORKDIR ${OPENVSLAM_PATH}
RUN set -x && \
: "OpenVSLAM dependencies" && \
apt-get update -y -qq && \
apt-get install -y -qq \
ros-melodic-libg2o && \
: "remove cache" && \
apt-get autoremove -y -qq && \
rm -rf /var/lib/apt/lists/*
RUN set -x && \
git clone --depth 1 https://github.com/OpenVSLAM-Community/openvslam.git && \
cd openvslam && \
git submodule update -i --recursive && \
mkdir -p build && \
cd build && \
CMAKE_PREFIX_PATH=/opt/ros/melodic/lib/cmake cmake \
-DUSE_SOCKET_PUBLISHER=ON \
-DBUILD_EXAMPLES=ON \
-DUSE_STACK_TRACE_LOGGER=ON \
-DINSTALL_PANGOLIN_VIEWER=OFF \
-DUSE_PANGOLIN_VIEWER=OFF \
.. && \
make -j${NUM_THREADS} && \
make install && \
rm -rf CMakeCache.txt CMakeFiles Makefile cmake_install.cmake example src && \
chmod -R 777 ./*
# Download dataset
COPY /include/download_dataset.sh /download_dataset.sh
RUN /download_dataset.sh
##############################################################################
## Install Additional ROS Packages ##
##############################################################################
# OpenVSLAM ROS package
RUN mkdir -p /root/catkin_ws/src
RUN apt update && apt install -y \
ros-melodic-image-transport
WORKDIR /
RUN git clone --branch melodic --depth 1 https://github.com/ros-perception/vision_opencv.git
RUN cp -r vision_opencv/cv_bridge /root/catkin_ws/src
RUN rm -rf vision_opencv
WORKDIR /root/catkin_ws/src
RUN git clone --branch ros --depth 1 https://github.com/OpenVSLAM-Community/openvslam_ros.git
WORKDIR /root/catkin_ws
# RUN ["/bin/bash", "-c", "source /opt/ros/melodic/setup.bash && catkin build -DUSE_PANGOLIN_VIEWER=OFF -DUSE_SOCKET_PUBLISHER=ON"]
##############################################################################
## Bashrc Setting ##
##############################################################################
# set alias
COPY ./include/alias.sh /alias.sh
RUN echo "source /alias.sh" >> ~/.bashrc
# display git branch name and container name
COPY ./include/git-prompt.sh /git-prompt.sh
COPY ./include/git-completion.bash /git-completion.bash
RUN echo "source /git-prompt.sh" >> ~/.bashrc
RUN echo "source /git-completion.bash" >> ~/.bashrc
RUN echo "GIT_PS1_SHOWDIRTYSTATE=true" >> ~/.bashrc
RUN echo "export PS1='\[\e[1;44m\]OpenVSLAM\[\e[0m\] \u:\w\[\033[1;31m\]\$(__git_ps1)\[\033[00m\]\$ '">> ~/.bashrc
# catkin build
COPY ./include/catkin_build_for_socket.sh /catkin_build.sh
# RUN echo "source /catkin_build.sh" >> ~/.bashrc
WORKDIR /openvslam
ENTRYPOINT ["/bin/bash"]
I run container image by this command.
#! /bin/bash
# pangolin or socket
VIEWER_TYPE=socket
docker run \
--name openvslam_${VIEWER_TYPE} \
-it --rm \
--net host \
--volume /etc/localtime:/etc/localtime:ro \
--volume $PWD/../../vslam/openvslam:/openvslam \
openvslam-intel:${VIEWER_TYPE}
Hi, I followed all of the OpenVSlam installation instructions and got a fatal error while running the make -j4
command:
/home/rover/openvslam/src/openvslam/data/bow_vocabulary.h:10:10: fatal error: fbow/vocabulary.h: No such file or directory
10 | #include <fbow/vocabulary.h>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
The previous command was:
cmake \
-DUSE_PANGOLIN_VIEWER=ON \
-DINSTALL_PANGOLIN_VIEWER=ON \
-DUSE_SOCKET_PUBLISHER=OFF \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBUILD_TESTS=ON \
-DBUILD_EXAMPLES=ON \
..
And I got:
-- The CXX compiler identification is GNU 9.3.0
-- The C compiler identification is GNU 9.3.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Build type: Release
-- ccache: Disabled
-- Address/Memory sanitizer: DISABLED
-- Architecture-aware optimization: DISABLED
-- 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
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found Eigen3: /usr/local/include/eigen3 (Required is at least version "3.3")
-- Found OpenCV: /usr (found suitable version "4.2.0", minimum required is "4.0") found components: core imgcodecs videoio features2d calib3d highgui
-- Use OpenCV 4.2.0
CMake Warning (dev) at /usr/share/cmake-3.16/Modules/FindOpenGL.cmake:275 (message):
Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
available. Run "cmake --help-policy CMP0072" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
FindOpenGL found both a legacy GL library:
OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so
and GLVND libraries for OpenGL and GLX:
OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so
OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so
OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/usr/local/lib/cmake/g2o/g2oConfig.cmake:4 (find_dependency)
src/openvslam/CMakeLists.txt:10 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so
-- Failed to find CXSparse - Could not find CXSparse include directory, set CXSPARSE_INCLUDE_DIR to directory containing cs.h
-- Found BLAS: /usr/lib/x86_64-linux-gnu/libf77blas.so;/usr/lib/x86_64-linux-gnu/libatlas.so
-- Found AMD library: /usr/lib/x86_64-linux-gnu/libamd.so
-- Found AMD header in: /usr/include/suitesparse
-- Found CAMD library: /usr/lib/x86_64-linux-gnu/libcamd.so
-- Found CAMD header in: /usr/include/suitesparse
-- Found COLAMD library: /usr/lib/x86_64-linux-gnu/libcolamd.so
-- Found COLAMD header in: /usr/include/suitesparse
-- Found CCOLAMD library: /usr/lib/x86_64-linux-gnu/libccolamd.so
-- Found CCOLAMD header in: /usr/include/suitesparse
-- Found SuiteSparse_config library: /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so
-- Found SuiteSparse_config header in: /usr/include/suitesparse
-- Adding librt: /usr/lib/x86_64-linux-gnu/librt.so to SuiteSparse_config libraries (required on Linux & Unix [not OSX] if SuiteSparse is compiled with timing).
-- Did not find METIS library (optional SuiteSparse dependency)
-- Found SuiteSparse: TRUE (found version "5.7.1")
-- OpenMP: DISABLED
-- SSE3 for ORB extraction: DISABLED
-- SSE for floating-point operation: DISABLED
-- BoW framework: FBoW (found in /usr/local/include)
-- No preference for use of exported glog CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported glog CMake configuration if available.
-- Found installed version of glog: /usr/local/lib/cmake/glog
-- Detected glog version: 0.6.0
-- Found Glog: glog::glog
-- Stack trace logger: ENABLED
-- Google Perftools: DISABLED
-- Viewer for examples: PangolinViewer
-- Downloading/updating googletest
-- Configuring done
-- Generating done
-- Build files have been written to: /home/rover/openvslam/build/googletest-download
Scanning dependencies of target googletest-download
[ 11%] Creating directories for 'googletest-download'
[ 22%] Performing download step (download, verify and extract) for 'googletest-download'
-- Downloading...
dst='/home/rover/openvslam/build/googletest-download/googletest-download-prefix/src/release-1.10.0.tar.gz'
timeout='none'
-- Using src='https://github.com/google/googletest/archive/release-1.10.0.tar.gz'
-- verifying file...
file='/home/rover/openvslam/build/googletest-download/googletest-download-prefix/src/release-1.10.0.tar.gz'
-- Downloading... done
-- extracting...
src='/home/rover/openvslam/build/googletest-download/googletest-download-prefix/src/release-1.10.0.tar.gz'
dst='/home/rover/openvslam/build/googletest-src'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[ 33%] No patch step for 'googletest-download'
[ 44%] No update step for 'googletest-download'
[ 55%] No configure step for 'googletest-download'
[ 66%] No build step for 'googletest-download'
[ 77%] No install step for 'googletest-download'
[ 88%] No test step for 'googletest-download'
[100%] Completed 'googletest-download'
[100%] Built target googletest-download
-- Found PythonInterp: /usr/bin/python3.8 (found version "3.8.10")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/rover/openvslam/build
Any idea why I got this error ?
Except Google Drive and Baidu Wangpan, how can I get the test dataset?
should be
Tracking:
depth_threshold: 40
Hi the framework input is orb_vocab.fbow, Which algorithm version does this follow , ORB SLAM2 or ORB SLAM3?
In the case of LiDAR SLAM, the most commonly used LiDAR is a horizontal field of view of 270 to 360 degrees. In this case, if we use a map created by going through a road only once, localization is possible when going through the same road in the opposite direction.
On the other hand, in Visual SLAM, a camera with a relatively narrow horizontal field of view of 80 to 150 degrees may be used. In this case, if we use a map created by going through a road only once, it is impossible to localize when going through the same road in the opposite direction.
Furthermore, based on the same principle, if the field of view is too narrow, "relocalization can fail if the angle from the candidate keyframe is too large."
It would be useful for those who are not familiar with Visual SLAM if these facts are explained using illustrations.
Update the visualizer to change the color of the keyframes of the relocalization candidates.
It is similar to the process where the referenced point cloud is colored, but the target of the coloring is the keyframe.
This is a meta-ticket.
Some PRs have not been reviewed.
Draft is https://openvslam-community.readthedocs.io/en/latest/parameters.html
ref. https://semver.org
original PR: xdspacelab/openvslam#139
Review and detailed performance test is needed.
Hi, thanks for maintaining the openVSLAM.
I try to fresh install using the OpenVSLAM-Community documentation on Installation section, however, I found that it does not build the executable like run_video_slam
, etc. This makes it hard to simply follow the tutorial here.
Shouldn't we update the build instruction to
cd /path/to/openvslam
mkdir build && cd build
cmake \
-DBUILD_WITH_MARCH_NATIVE=ON \
-DUSE_PANGOLIN_VIEWER=OFF \
-DUSE_SOCKET_PUBLISHER=ON \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBOW_FRAMEWORK=DBoW2 \
-DBUILD_TESTS=ON \
-DBUILD_EXAMPLES=ON \
..
make -j4
to also build the examples.
When I followed the build instruction for ROS. It will fail with
Base path: /home/jy/openvslam_ws
Source space: /home/jy/openvslam_ws/src
Build space: /home/jy/openvslam_ws/build
Devel space: /home/jy/openvslam_ws/devel
Install space: /home/jy/openvslam_ws/install
####
#### Running command: "cmake /home/jy/openvslam_ws/src -DUSE_PANGOLIN_VIEWER=ON -DUSE_SOCKET_PUBLISHER=OFF -DCATKIN_DEVEL_PREFIX=/home/jy/openvslam_ws/devel -DCMAKE_INSTALL_PREFIX=/home/jy/openvslam_ws/install -G Unix Makefiles" in "/home/jy/openvslam_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/jy/openvslam_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/melodic
-- This workspace overlays: /opt/ros/melodic
-- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2")
-- Using PYTHON_EXECUTABLE: /usr/bin/python2
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/jy/openvslam_ws/build/test_results
-- Forcing gtest/gmock from source, though one was otherwise available.
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python2 (found version "2.7.17")
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.29
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 2 packages in topological order:
-- ~~ - cv_bridge
-- ~~ - openvslam_ros
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'cv_bridge'
-- ==> add_subdirectory(cv_bridge)
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found version "2.7.17")
-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- python
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable version "2.7.17", minimum required is "2.7")
-- +++ processing catkin package: 'openvslam_ros'
-- ==> add_subdirectory(openvslam_ros)
-- Build type: Release
-- Address/Memory sanitizer: DISABLED
-- Stack trace logger: DISABLED
-- Google Perftools: DISABLED
-- Architecture-aware optimization (-march=native): DISABLED
-- C++11 support: OK (-std=c++17)
CMake Error at openvslam_ros/CMakeLists.txt:124 (find_package):
By not providing "Findopenvslam.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"openvslam", but CMake did not find one.
Could not find a package configuration file provided by "openvslam" with
any of the following names:
openvslamConfig.cmake
openvslam-config.cmake
Add the installation prefix of "openvslam" to CMAKE_PREFIX_PATH or set
"openvslam_DIR" to a directory containing one of the above files. If
"openvslam" provides a separate development package or SDK, be sure it has
been installed.
-- Configuring incomplete, errors occurred!
See also "/home/jy/openvslam_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/jy/openvslam_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
I think it should be updated such that beginners/ practitioners could seamlessly use it. But since you refactor out the ros package of openVSLAM. I am not sure how to do it.
Thanks to all who contributed to this project. Also thanks for the community fork.
Is there a timeline for integrating the IMU functionality? Or a WIP branch? There are a number of cameras now equipped with the IMU(intel RealSense, StereoLab's Zed).
Much thanks
Weiwu
Just curious to know whats the convention : cam_pose_cw means pose of the Camera w.rt. .to World coordinate system or vice versa
The original author created some powershell scripts to build openvslam on windows
https://github.com/shinsumicco/openvslam-on-msvc
I tried with vcpkg but it fails when setting the -DDBoW2_DIR in the command line.
It works when DBoW2_DIR path is set in the cmake script.
Is this caused by vcpkg?
Hi,
I built a map using a stereo camera where the image size was 1280 by 1024 and I am trying to localize a different camera in the map with image size 1344 by 720. However I can't seem to localize the new camera. I have calibrated the new camera and fed in the right parameters. I looked at this issue xdspacelab/openvslam#388. but cant seem to get my data to work. Any thoughts ? I can share my data if need be.
Thanks
Hi! While trying to build and install the openvslam
, an error occurred in the build step. The run of make command raised an error: complaining about std::setprecision
that it isn't a member of std
. I think there is a missing header in the src/openvslam/publish/frame_publisher.cc
.
Adding the header iomanip worked for me, is there any problem with that??
I have successfully compiled the Openvslam in Ubuner 18.04 docker with the instruction in the link,
https://openvslam-community.readthedocs.io/en/latest/docker.html#building-docker-images
After compilation, the following error message was given when I was trying to run the samples in the following link,
https://openvslam-community.readthedocs.io/en/latest/simple_tutorial.html#chapter-simple-tutorial.
I have confirmed that I have downloaded the dbow2 file to the directory and change the -v accordingly. Still, the following error message occurred.
Thank you very much for your help !
[2021-04-28 09:11:24.241] [I] loading ORB vocabulary: ./orb_vocab.dbow2
terminate called after throwing an instance of 'std::runtime_error'
what(): Vocabulary::fromStream invalid signature
*** Aborted at 1619601084 (unix time) try "date -d @1619601084" if you are using GNU date ***
PC: @ 0x7f6fd8ab5fb7 gsignal
*** SIGABRT (@0x237) received by PID 567 (TID 0x7f6fdc984c00) from PID 567; stack trace: ***
@ 0x7f6fdbce1980 (unknown)
@ 0x7f6fd8ab5fb7 gsignal
@ 0x7f6fd8ab7921 abort
@ 0x7f6fd9336957 (unknown)
@ 0x7f6fd933cae6 (unknown)
@ 0x7f6fd933cb21 std::terminate()
@ 0x7f6fd933cd54 __cxa_throw
@ 0x7f6fd79e85ea fbow::Vocabulary::fromStream()
@ 0x7f6fd79e8c12 fbow::Vocabulary::readFromFile()
@ 0x7f6fdbf90f8a openvslam::system::system()
@ 0x5578356f5def (unknown)
@ 0x5578356f4b15 (unknown)
@ 0x7f6fd8a98bf7 __libc_start_main
@ 0x5578356f4fba (unknown)
Aborted (core dumped)
Re-posting this upstream issue here:
The epipole check for triangulating new points is being performed even if reproject_to_bearing
returns false and epiplane_in_keyfrm_2
is invalid. This can happen for, for example, perspective cameras when the epipole is not visible. The resulting value of epiplane_in_keyfrm_2
is not normalized which can cause a significant number of potential matches to fail this check.
The fix is in this upstream PR. It can be a very important fix if a perspective camera moves laterally so that the epipole is not in the field of view.
Check out the work required to continue publishing under the BSD license.
I think it would be good to clarify that the similarity between OpenVSLAM and ORB_SLAM2 is based on the ORB_SLAM2 paper
Tasks:
Dear sir/mam,
Im beginner in slam algorithm and the concept is new to me ,currently learning about visual inertial slam could you please provide some detail on how you integrated imu with openvslam. We are witnessing commercialization of slam in lot of ar products like magic leap, hololens, Arcore and arkit what do you think are the missing elements in opensource vio or visual inertial slam algorithms. What make these algorithms so robust and efficient despite the fact that they are engineered by world class researchers and programmers.
Thank you
Waiting for reply
Hi,
I have noticed your recent commit where you have included a new parameter:
use_robust_matcher_for_relocalization_request
Is there any documentation describing what does this parameter really do?
ref. https://index.ros.org/doc/ros2/Tutorials/Releasing-a-ROS-2-package-with-bloom/
(NOT VALID ISSUE)
Hi,
I think there is a potential bug in pose estimation. I am using the latest master openvslam (downloaded and compiled yesterday) and when performing either SLAM or localization, the angle estimation jumps occasionally as you can see from the video.
The pose estimation comes directly from the OpenVSLAM
The conditions for successful relocalization are difficult for non-specialists to understand. In this issue, we will consider adding documentation, logs, and visualization.
Close camera position and camera angle are relatively easy conditions to understand. This is essentially the presence of enough landmarks that can be matched with the features of the frame. In Equirectangular, the relocalization succeeds regardless of the yaw angle of the camera. For models other than Equirectangular, relocalization fails if the yaw angle from the keyframe is significantly different even if the position from the keyframe is the same. See #79 (comment).
If candidates are empty, or if candidates are rejected, the reason for the rejection should be shown.
Since the position and orientation of the candidate keyframes for relocalization are important, it is necessary to be able to see which ones are the candidate keyframes.
As far as I know is that OpenVslam uses a modified version of DBoW2
https://github.com/shinsumicco/DBoW2
should that be forked as well?
It is related to xdspacelab/openvslam#295.
Hi everyone, I'm currently working with the camera Realsense T265C. Is a Stereo camera with fisheye lenses. When calling openvslam::util::stereo_rectifier
I've notice that it is only working for perspective lenses although in the code there's already the option to rectify fisheye images . Is there any reason for that?
This is a meta-ticket.
Some PRs have not been reviewed.
If you are willing to work on this, please choose a subtask and create an issue or a draft PR.
The develop branch has translated comments and initial support for windows build. could the branch be forked as well?
There is a dependency on the fbow (or DBoW2) header, even though it doesn't directly use the vocabularies.
Hi, I followed the installation instruction in the tutorial document and everything during the installation seems fine. But when I run the example in simple tutorial section, an error occured as following:
zl@zl-desktop:~/openvslam/build$ ./run_video_slam -v orb_vocab.fbow -m aist_living_lab_1/video.mp4 -c aist_living_lab_1/config.yaml [2021-06-02 09:30:06.105] [I] config file loaded: aist_living_lab_1/config.yaml yaml-cpp: error at line 0, column 0: invalid node; this may result from using a map iterator as a sequence iterator, or vice-versa
The same issue happened when I was trying the docker version as well.
Thanks
The yaml file as following:
#==============#
#==============#
Camera.name: "RICOH THETA S 960"
Camera.setup: "monocular"
Camera.model: "equirectangular"
Camera.fps: 30.0
Camera.cols: 1920
Camera.rows: 960
Camera.color_order: "RGB"
#================#
#================#
Feature.max_num_keypoints: 2000
Feature.scale_factor: 1.2
Feature.num_levels: 8
Feature.ini_fast_threshold: 20
Feature.min_fast_threshold: 7
Feature.mask_rectangles:
This is a meta-ticket.
-DINSTALL_SOCKET_PUBLISHER
is required to install openvslam_ros.
OS: Ubuntu 18.04
branch: main
(6ce268c)
Following the installation instructions in the docs, after installing all deps, and running cmake ..
for openvslam, I saw the error
Failed to find CXSparse - Could not find CXSparse include directory, set CXSPARSE_INCLUDE_DIR to directory containing cs.h
It appears that the debian for suitesparse installed by sudo apt install libsuitesparse-dev
installs the cs.h
header in /usr/include/suitesparse/cs.h
rather than one of the CXSPARSE_CHECK_INCLUDE_DIRS
listed in FindCXSparse.cmake
I modified the above file to include the search path /usr/include/suitesparse
and the build succeeded. I'm not a CMake expert, so please confirm this an appropriate addition and I can issue a PR.
Display the following as a debug level log
For more information on how to output logs, please refer to the following:
https://github.com/OpenVSLAM-Community/openvslam/blob/main/src/openvslam/module/frame_tracker.cc#L102
Hi,
I glanced through that spectrum and no one's answered anything as far as I could scroll. Maybe we should just put that to rest and remove links to it now that the official maintainers have given up on the project entirely.
**I compile openvslam as the installation instructions on https://openvslam-community.readthedocs.io/en/latest/installation.html.
The instructions in CMakeLists.txt in openvslam/test
download_project(PROJ googletest
URL https://github.com/google/googletest/archive/release-1.10.0.tar.gz
URL_HASH SHA1=9c89be7df9c5e8cb0bc20b3c4b39bf7e82686770
DOWNLOAD_NO_PROGRESS YES)
does not work, and I modify it as
download_project(PROJ googletest
URL https://github.com/google/googletest/releases/tag/release-1.10.0/release-1.10.0.tar.gz
URL_HASH SHA1=da39a3ee5e6b4b0d3255bfef95601890afd80709
DOWNLOAD_NO_PROGRESS YES)**
Errors occur when I type in the following instructions:
zeng@zeng-System-Product-Name:/media/zeng/work/openvslam/build$ cmake \
-DUSE_PANGOLIN_VIEWER=ON \ -DINSTALL_PANGOLIN_VIEWER=ON \ -DUSE_SOCKET_PUBLISHER=OFF \ -DUSE_STACK_TRACE_LOGGER=ON \ -DBUILD_TESTS=ON \ -DBUILD_EXAMPLES=ON \ ..
-- Build type: Release
-- ccache: Enabled
-- Address/Memory sanitizer: DISABLED
-- Architecture-aware optimization: DISABLED
-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found OpenMP: TRUE
-- Use OpenCV 3.4.1
CMake Warning (dev) at /usr/local/share/cmake-3.15/Modules/FindOpenGL.cmake:275 (message):
Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
available. Run "cmake --help-policy CMP0072" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
FindOpenGL found both a legacy GL library:
OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so
and GLVND libraries for OpenGL and GLX:
OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so
OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so
OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
/usr/local/share/cmake-3.15/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/usr/local/lib/cmake/g2o/g2oConfig.cmake:4 (find_dependency)
src/openvslam/CMakeLists.txt:10 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Failed to find CXSparse - Could not find CXSparse include directory, set CXSPARSE_INCLUDE_DIR to directory containing cs.h
-- Found AMD library: /usr/lib/x86_64-linux-gnu/libamd.so
-- Found AMD header in: /usr/include/suitesparse
-- Found CAMD library: /usr/lib/x86_64-linux-gnu/libcamd.so
-- Found CAMD header in: /usr/include/suitesparse
-- Found COLAMD library: /usr/lib/x86_64-linux-gnu/libcolamd.so
-- Found COLAMD header in: /usr/include/suitesparse
-- Found CCOLAMD library: /usr/lib/x86_64-linux-gnu/libccolamd.so
-- Found CCOLAMD header in: /usr/include/suitesparse
-- Found SuiteSparse_config library: /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so
-- Found SuiteSparse_config header in: /usr/include/suitesparse
-- Adding librt: /usr/lib/x86_64-linux-gnu/librt.so to SuiteSparse_config libraries (required on Linux & Unix [not OSX] if SuiteSparse is compiled with timing).
-- Found METIS library: /usr/local/lib/libmetis.so.
-- OpenMP: DISABLED
-- SSE3 for ORB extraction: DISABLED
-- SSE for floating-point operation: DISABLED
-- BoW framework: FBoW (found in /usr/local/include)
-- No preference for use of exported glog CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported glog CMake configuration if available.
-- Failed to find installed glog CMake configuration, searching for glog build directories exported with CMake.
-- Failed to find an installed/exported CMake configuration for glog, will perform search for installed glog components.
-- Stack trace logger: ENABLED
-- Google Perftools: DISABLED
-- Viewer for examples: PangolinViewer
-- Downloading/updating googletest
-- Configuring done
-- Generating done
-- Build files have been written to: /media/zeng/work/openvslam/build/googletest-download
Scanning dependencies of target googletest-download
[ 11%] Performing download step (download, verify and extract) for 'googletest-download'
-- verifying file...
file='/media/zeng/work/openvslam/build/googletest-download/googletest-download-prefix/src/release-1.10.0.tar.gz'
-- File already exists and hash match (skip download):
file='/media/zeng/work/openvslam/build/googletest-download/googletest-download-prefix/src/release-1.10.0.tar.gz'
SHA1='da39a3ee5e6b4b0d3255bfef95601890afd80709'
-- extracting...
src='/media/zeng/work/openvslam/build/googletest-download/googletest-download-prefix/src/release-1.10.0.tar.gz'
dst='/media/zeng/work/openvslam/build/googletest-src'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[ 22%] No patch step for 'googletest-download'
[ 33%] No update step for 'googletest-download'
[ 44%] No configure step for 'googletest-download'
[ 55%] No build step for 'googletest-download'
[ 66%] No install step for 'googletest-download'
[ 77%] No test step for 'googletest-download'
[ 88%] Completed 'googletest-download'
[100%] Built target googletest-download
CMake Error at test/CMakeLists.txt:12 (add_subdirectory):
The source directory
/media/zeng/work/openvslam/build/googletest-src
does not contain a CMakeLists.txt file.
-- Configuring incomplete, errors occurred!
See also "/media/zeng/work/openvslam/build/CMakeFiles/CMakeOutput.log".
See also "/media/zeng/work/openvslam/build/CMakeFiles/CMakeError.log".
Could you please give me some suggestions?Thank you in advance.
Hello, I am making coustom ROS2 node in openvslam_ros package("openvslam_ros_mod.cpp and hpp") to get the current frame image and send it as image topic. The problem occur when adding "openvlsam/publish/ frame_publisher.h" in to my wrapper code. The compliler outputs following error message when compiling the preprocessor;
In file included from /usr/local/include/g2o/core/base_fixed_sized_edge.h:292,
from /usr/local/include/g2o/types/sba/edge_project_psi2uv.h:30,
from /usr/local/include/g2o/types/sba/types_six_dof_expmap.h:38,
from /usr/local/include/openvslam/util/converter.h:8,
from /usr/local/include/openvslam/data/frame.h:6,
from /usr/local/include/openvslam/tracking_module.h:5,
from /usr/local/include/openvslam/publish/frame_publisher.h:5,
from /home/robotis/colcon_ws/src/openvslam_ros/src/openvslam_ros_mod.cpp:4:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In instantiation of ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplusN() [with int N = 0; int D = 3; E = Eigen::Matrix<double, 3, 1>; VertexTypes = {g2o::VertexSE3Expmap}]’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:192:43: required from ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplusNs(std::index_sequence<Ints ...>) [with long unsigned int ...Ints = {0}; int D = 3; E = Eigen::Matrix<double, 3, 1>; VertexTypes = {g2o::VertexSE3Expmap}; std::index_sequence<Ints ...> = std::integer_sequence<long unsigned int, 0>]’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:200:3: required from ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplus() [with int D = 3; E = Eigen::Matrix<double, 3, 1>; VertexTypes = {g2o::VertexSE3Expmap}]’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:197:6: required from here
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:166:14: error: ‘FixedArray’ {aka ‘class ceres::internal::FixedArray<double, 6>’} has no member named ‘fill’
166 | add_vertex.fill(0.);
| ~~~~~~~~~~~^~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:173:30: error: ‘FixedArray’ {aka ‘class ceres::internal::FixedArray<double, 6>’} has no member named ‘data’
173 | vertex->oplus(add_vertex.data());
| ~~~~~~~~~~~^~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:179:30: error: ‘FixedArray’ {aka ‘class ceres::internal::FixedArray<double, 6>’} has no member named ‘data’
179 | vertex->oplus(add_vertex.data());
| ~~~~~~~~~~~^~~~
one wired thing is that, src/pangolin_viewer/viewer.cc in openvslam package compiled ok without any error messages, though it also declare "openvlsam/publish/ frame_publisher.h" as i do in the preprocessor.
The things I tried so far is shown below and none of them works.
compile g2o and openvslam package with c++14 option and sudo make install
compile g2o with master brach instead of "9b41a4ea5ade8e1250b9c1b279f3a9c098811b5a" branch recommend by community
Is anyone have same issue and know how to solve it?
https://github.com/OpenVSLAM-Community/openvslam/discussions
ToDo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.