安装
安装 slambook2
git clone https://github.com/gaoxiang12/slambook2.git
cd slambook2
# 下载第三方依赖库,建议以这种方式下载,不要自己安装,否则坑比价多!
git submodule init
git submodule update
安装 Sophus
ls 3rdparty/Sophus/
mkdir build
cd build
cmake ..
make
安装会报下面的错误,参考 Sophus安装踩坑 的博客。
解决error: implicitly-declared ‘Eigen::Map<Sophus::Sim3<double> >::Map(const Eigen::Map<Sophus::Sim3<double> >&)’ is deprecated [-Werror=deprecated-copy
错误
Sophus在cmakelist那加一句set(CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations ")就行了
修改后的 CMakeLists.txt
文件部分内容
cmake_minimum_required(VERSION 3.4)
project(Sophus VERSION 1.0.0)
include(CMakePackageConfigHelpers)
# Release by default
# Turn on Debug with "-DCMAKE_BUILD_TYPE=Debug"
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
set(CMAKE_CXX_STANDARD 11)
# Set compiler specific settings (FixMe: Should not cmake do this for us automatically?)
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wno-deprecated-register -Wno-deprecated-register -Qunused-arguments -fcolor-diagnostics")
ELSEIF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -std=c++11 -Wno-deprecated-declarations -ftemplate-backtrace-limit=0")
SET(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG} --coverage -fno-inline -fno-inline-small-functions -fno-default-inline")
SET(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --coverage")
SET(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} --coverage")
ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "^MSVC$")
ADD_DEFINITIONS("-D _USE_MATH_DEFINES /bigobj /wd4305 /wd4244 /MP")
ENDIF()
# 新加的内容在这里!
set(CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations ")
重新编译
ls 3rdparty/Sophus/
mkdir build
cd build
cmake ..
make
ch4的例程可以正常运行了,编译过程如下:
cd slambook2/ch4
mkdir build
cmake ..
make
# 执行
./useSophus
程序输出
SO(3) from matrix:
2.22045e-16 -1 0
1 2.22045e-16 0
0 0 1
SO(3) from quaternion:
2.22045e-16 -1 0
1 2.22045e-16 0
0 0 1
they are equal
so3 = 0 0 1.5708
so3 hat=
0 -1.5708 0
1.5708 0 -0
-0 0 0
so3 hat vee= 0 0 1.5708
SO3 updated =
0 -1 0
1 0 -0.0001
0.0001 2.03288e-20 1
*******************************
SE3 from R,t=
2.22045e-16 -1 0 1
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
SE3 from q,t=
2.22045e-16 -1 0 1
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
se3 = 0.785398 -0.785398 0 0 0 1.5708
se3 hat =
0 -1.5708 0 0.785398
1.5708 0 -0 -0.785398
-0 0 0 0
0 0 0 0
se3 hat vee = 0.785398 -0.785398 0 0 0 1.5708
SE3 updated =
2.22045e-16 -1 0 1.0001
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
ch12/dense_mono 碰到的问题
解决error: ‘CV_GRAY2BGR’ was not declared in this scope
错误
#define CV_VERSION_MAJOR 470
#if (CV_VERSION_MAJOR >= 4)
cv::cvtColor(ref, ref_show, cv::COLOR_GRAY2BGR);
cv::cvtColor(curr, curr_show, cv::COLOR_GRAY2BGR);
#else
cv::cvtColor(ref, ref_show, CV_GRAY2BGR);
cv::cvtColor(curr, curr_show, CV_GRAY2BGR);
#endif
[1] https://blog.csdn.net/zhangyuanbonj/article/details/127046865
[2] https://blog.csdn.net/weixin_41698305/article/details/116547361