diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a83de36f3..9fe259edc 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -14,17 +14,17 @@ jobs:
uses: actions/checkout@v2
- name: Installing Ceres Solver
run: |
- cd ..
sudo apt-get update
- sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
- git clone https://ceres-solver.googlesource.com/ceres-solver
- cd ceres-solver
- git checkout tags/2.0.0
- mkdir build
- cd build
- cmake ..
- sudo make install
- cd ../../
+ sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libceres-dev
+# cd ..
+# git clone https://ceres-solver.googlesource.com/ceres-solver
+# cd ceres-solver
+# git checkout tags/2.0.0
+# mkdir build
+# cd build
+# cmake ..
+# sudo make install
+# cd ../../
- name: Configure and Build
run: |
sudo apt-get update
diff --git a/Dockerfile_ros1_16_04 b/Dockerfile_ros1_16_04
index afba05b70..69637bc0d 100644
--- a/Dockerfile_ros1_16_04
+++ b/Dockerfile_ros1_16_04
@@ -19,16 +19,16 @@ RUN sudo apt-get install -y python-catkin-tools
# Ceres solver install and setup
# NOTE: need to use an older version as eigen is very outdated here!!!
# NOTE: https://github.com/ceres-solver/ceres-solver/issues/541
-RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
-ENV CERES_VERSION="2.0.0"
-RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
- cd ceres-solver && \
- git checkout tags/${CERES_VERSION} && \
- git reset --hard e51e9b46f6 && \
- mkdir build && cd build && \
- cmake .. && \
- make -j$(nproc) install && \
- rm -rf ../../ceres-solver
+RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libceres-dev
+# ENV CERES_VERSION="2.0.0"
+# RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
+# cd ceres-solver && \
+# git checkout tags/${CERES_VERSION} && \
+# git reset --hard e51e9b46f6 && \
+# mkdir build && cd build && \
+# cmake .. && \
+# make -j$(nproc) install && \
+# rm -rf ../../ceres-solver
# Seems this has Python 2.7 installed on it...
RUN apt-get update && apt-get install -y python2.7-dev python-matplotlib python-numpy python-psutil python-tk
diff --git a/Dockerfile_ros1_18_04 b/Dockerfile_ros1_18_04
index 09656006d..094a2f2c1 100644
--- a/Dockerfile_ros1_18_04
+++ b/Dockerfile_ros1_18_04
@@ -17,15 +17,15 @@ RUN apt-get update && apt-get install -y libeigen3-dev nano git
RUN sudo apt-get install -y python-catkin-tools
# Ceres solver install and setup
-RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
-ENV CERES_VERSION="2.0.0"
-RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
- cd ceres-solver && \
- git checkout tags/${CERES_VERSION} && \
- mkdir build && cd build && \
- cmake .. && \
- make -j$(nproc) install && \
- rm -rf ../../ceres-solver
+RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libceres-dev
+# ENV CERES_VERSION="2.0.0"
+# RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
+# cd ceres-solver && \
+# git checkout tags/${CERES_VERSION} && \
+# mkdir build && cd build && \
+# cmake .. && \
+# make -j$(nproc) install && \
+# rm -rf ../../ceres-solver
# Seems this has Python 3.6 installed on it...
RUN apt-get update && apt-get install -y python3-dev python3-matplotlib python3-numpy python3-psutil python3-tk
diff --git a/Dockerfile_ros1_20_04 b/Dockerfile_ros1_20_04
index 147d5e3e5..bd59ac976 100644
--- a/Dockerfile_ros1_20_04
+++ b/Dockerfile_ros1_20_04
@@ -17,15 +17,15 @@ RUN apt-get update && apt-get install -y libeigen3-dev nano git
RUN sudo apt-get install -y python3-catkin-tools python3-osrf-pycommon
# Ceres solver install and setup
-RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
-ENV CERES_VERSION="2.0.0"
-RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
- cd ceres-solver && \
- git checkout tags/${CERES_VERSION} && \
- mkdir build && cd build && \
- cmake .. && \
- make -j$(nproc) install && \
- rm -rf ../../ceres-solver
+RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libceres-dev
+# ENV CERES_VERSION="2.0.0"
+# RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
+# cd ceres-solver && \
+# git checkout tags/${CERES_VERSION} && \
+# mkdir build && cd build && \
+# cmake .. && \
+# make -j$(nproc) install && \
+# rm -rf ../../ceres-solver
# Seems this has Python 3.8 installed on it...
RUN apt-get update && apt-get install -y python3-dev python3-matplotlib python3-numpy python3-psutil python3-tk
diff --git a/Dockerfile_ros2_18_04 b/Dockerfile_ros2_18_04
index 19ee012a3..b87dec23b 100644
--- a/Dockerfile_ros2_18_04
+++ b/Dockerfile_ros2_18_04
@@ -16,15 +16,15 @@ FROM osrf/ros:dashing-desktop
RUN apt-get update && apt-get install -y libeigen3-dev nano git
# Ceres solver install and setup
-RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
-ENV CERES_VERSION="2.0.0"
-RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
- cd ceres-solver && \
- git checkout tags/${CERES_VERSION} && \
- mkdir build && cd build && \
- cmake .. && \
- make -j$(nproc) install && \
- rm -rf ../../ceres-solver
+RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libceres-dev
+# ENV CERES_VERSION="2.0.0"
+# RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
+# cd ceres-solver && \
+# git checkout tags/${CERES_VERSION} && \
+# mkdir build && cd build && \
+# cmake .. && \
+# make -j$(nproc) install && \
+# rm -rf ../../ceres-solver
# Seems this has Python 3.6 installed on it...
RUN apt-get update && apt-get install -y python3-dev python3-matplotlib python3-numpy python3-psutil python3-tk
diff --git a/Dockerfile_ros2_20_04 b/Dockerfile_ros2_20_04
index 9bdb7f4ae..da251b175 100644
--- a/Dockerfile_ros2_20_04
+++ b/Dockerfile_ros2_20_04
@@ -16,15 +16,15 @@ FROM osrf/ros:galactic-desktop
RUN apt-get update && apt-get install -y libeigen3-dev nano git
# Ceres solver install and setup
-RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
-ENV CERES_VERSION="2.0.0"
-RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
- cd ceres-solver && \
- git checkout tags/${CERES_VERSION} && \
- mkdir build && cd build && \
- cmake .. && \
- make -j$(nproc) install && \
- rm -rf ../../ceres-solver
+RUN sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libceres-dev
+# ENV CERES_VERSION="2.0.0"
+# RUN git clone https://ceres-solver.googlesource.com/ceres-solver && \
+# cd ceres-solver && \
+# git checkout tags/${CERES_VERSION} && \
+# mkdir build && cd build && \
+# cmake .. && \
+# make -j$(nproc) install && \
+# rm -rf ../../ceres-solver
# Seems this has Python 3.8 installed on it...
RUN apt-get update && apt-get install -y python3-dev python3-matplotlib python3-numpy python3-psutil python3-tk
diff --git a/docs/gs-installing.dox b/docs/gs-installing.dox
index b4035df5c..2cf27a159 100644
--- a/docs/gs-installing.dox
+++ b/docs/gs-installing.dox
@@ -23,29 +23,17 @@ Please see the official instructions to install ROS:
We do support ROS-free builds, but don't recommend using this interface as we have limited support for it.
You will need to ensure you have installed OpenCV 3 or 4, Eigen3, and Ceres which are the only dependencies.
-If ROS is not found on the system, one can use command line options to run the simulation without any visualization or `cmake -DENABLE_ROS=OFF ..`.
-If you are using the ROS-free interface, you will need to properly construct the @ref ov_msckf::VioManagerOptions struct with proper information and feed inertial and image data into the correct functions.
-The simulator binary `run_simulation` can give you and example on how to do this.
+For Ubuntu linux-based system the system dependencies are:
+@code{.shell-session}
+sudo apt-get install libeigen3-dev libboost-all-dev libceres-dev
+@endcode
-@subsection gs-install-ceres Ceres Solver
-Ceres solver @cite ceres-solver is required for dynamic initialization and backend optimization.
-Please refer to their [documentation](http://ceres-solver.org/installation.html#linux) for specifics to your platform.
-It should be able to build on most platforms (including ARM android devices).
-To install we can perform the following:
+If ROS is not found on the system, one can use command line options to run the simulation without any visualization or `cmake -DENABLE_ROS=OFF ..`.
+If you are using the ROS-free interface, you will need to properly construct the @ref ov_msckf::VioManagerOptions struct with proper information and feed inertial and image data into the correct functions.
+The simulator binary `run_simulation` can give you and example on how to do this.
-@code{.shell-session}
-sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
-CERES_VERSION="2.0.0"
-git clone https://ceres-solver.googlesource.com/ceres-solver
-cd ceres-solver
-git checkout tags/${CERES_VERSION}
-mkdir build && cd build
-cmake ..
-make
-sudo make install
-@endcode
@@ -59,8 +47,9 @@ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31
sudo apt-get update
export ROS1_DISTRO=noetic # kinetic=16.04, melodic=18.04, noetic=20.04
sudo apt-get install ros-$ROS1_DISTRO-desktop-full
-sudo apt-get install libeigen3-dev python-catkin-tools # ubuntu 16.04, 18.04
-sudo apt-get install libeigen3-dev python3-catkin-tools python3-osrf-pycommon # ubuntu 20.04
+sudo apt-get install python-catkin-tools # ubuntu 16.04, 18.04
+sudo apt-get install python3-catkin-tools python3-osrf-pycommon # ubuntu 20.04
+sudo apt-get install libeigen3-dev libboost-all-dev libceres-dev
@endcode
If you only have ROS1 on your system and are not cross installing ROS2, then you can run the following to append this to your bashrc file.
@@ -95,6 +84,7 @@ sudo apt-get update
export ROS2_DISTRO=galactic # dashing=18.04, galactic=20.04
sudo apt install ros-$ROS2_DISTRO-desktop
sudo apt-get install ros-$ROS2_DISTRO-ros2bag ros-$ROS2_DISTRO-rosbag2* # rosbag utilities (seems to be separate)
+sudo apt-get install libeigen3-dev libboost-all-dev libceres-dev
@endcode
If you only have ROS2 on your system and are not cross installing ROS1, then you can run the following to append this to your bashrc file.
@@ -181,7 +171,7 @@ One should make sure you can see some of the "contrib" (e.g. aruco) when you cma
@m_class{m-block m-warning}
-@par OpenCV Install
+@par OpenCV Source Installation
Try to first build with your system / ROS OpenCV.
Only fall back onto this if it does not allow you to compile, or want a newer version!
@@ -201,4 +191,29 @@ You can disable this with `catkin build -DENABLE_ARUCO_TAGS=OFF` or `cmake -DENA
+
+@subsection gs-install-ceres Ceres Solver
+
+Ceres solver @cite ceres-solver is required for dynamic initialization and backend optimization.
+Please refer to their [documentation](http://ceres-solver.org/installation.html#linux) for specifics to your platform.
+It should be able to build on most platforms (including ARM android devices).
+To install we can perform the following:
+
+
+@par Ceres Source Installation
+ Try to first build with your system with `sudo apt-get install libceres-dev`.
+ Only fall back onto this if it does not allow you to compile, or want a newer version!
+
+@code{.shell-session}
+sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
+CERES_VERSION="2.0.0"
+git clone https://ceres-solver.googlesource.com/ceres-solver
+cd ceres-solver
+git checkout tags/${CERES_VERSION}
+mkdir build && cd build
+cmake ..
+make
+sudo make install
+@endcode
+
*/
diff --git a/ov_init/src/dynamic/DynamicInitializer.cpp b/ov_init/src/dynamic/DynamicInitializer.cpp
index 9dd4e8bb8..8ef1c9818 100644
--- a/ov_init/src/dynamic/DynamicInitializer.cpp
+++ b/ov_init/src/dynamic/DynamicInitializer.cpp
@@ -979,7 +979,6 @@ bool DynamicInitializer::initialize(double ×tamp, Eigen::MatrixXd &covarian
options_cov.algorithm_type = ceres::CovarianceAlgorithmType::DENSE_SVD; // SPARSE_QR, DENSE_SVD
options_cov.apply_loss_function = false;
options_cov.num_threads = params.init_dyn_mle_max_threads;
- options_cov.sparse_linear_algebra_library_type = ceres::SparseLinearAlgebraLibraryType::SUITE_SPARSE;
ceres::Covariance problem_cov(options_cov);
bool success = problem_cov.Compute(covariance_blocks, &problem);
if (!success) {
diff --git a/ov_msckf/launch/serial.launch b/ov_msckf/launch/serial.launch
index 4417ee413..85cdafecd 100644
--- a/ov_msckf/launch/serial.launch
+++ b/ov_msckf/launch/serial.launch
@@ -10,7 +10,8 @@
-
+
+
diff --git a/ov_msckf/launch/subscribe.launch b/ov_msckf/launch/subscribe.launch
index 12e4b93a3..9517959d2 100644
--- a/ov_msckf/launch/subscribe.launch
+++ b/ov_msckf/launch/subscribe.launch
@@ -11,7 +11,8 @@
-
+
+