在《视觉slam十四讲》第二版中,第4、7、8、9、10讲都需要Sophus库,因此我们需要安装Sophus库,并且需要的是Sophus模板库,因此很多人因为安装了非模板版本导致报错,下面提供Sophus模板版本安装方式,以及对应不报错版本。
1.查看eigen版本
pkg-config --modversion eigen3
只要是 3.3以上的版本即可
2.安装 fmt (8.1.1版)
官网进入,然后下载Tag里的fmt-8.1.1.zip,解压
cd fmt
mkdir build
cd build
cmake ..
make
sudo make install
3.安装Sophus模板库
git clone https://github.com/strasdat/Sophus.git
cd Sophus
mkdir build
cd build
cmake ..
make
sudo make install
最后虽然书上说只需编译,无需安装,但是如果不进行 sudo make install,cmake时会找不到Sophus的位置。要是不想更改cmakelist.txt,就进行安装,让 find package 自己去找路径。
安装完成后,然后去正常编译视觉slam十四讲里的源码即可
4. 一些编译问题
ch4:
错误1:cmake ..时:
CMake Error at CMakeLists.txt:9 (add_executable):
Target "useSophus" links to target "Sophus::Sophus" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
解决方案:
在CMakeLists.txt中:加入
set(Sophus_DIR "/home/你自己的路径/Sophus/build")
错误2:make 时:
[ 50%] Linking CXX executable trajectoryError
/usr/bin/ld: CMakeFiles/trajectoryError.dir/trajectoryError.cpp.o: in function `std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<int>(int)':
trajectoryError.cpp:(.text._ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_]+0x23): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'
解决方案
没有链接fmt库,链接上fmt 库就没问题了,将example中的CMakeLists.txt中:
target_link_libraries(trajectoryError ${Pangolin_LIBRARIES} ${FMT_LIBRARIES})改为
target_link_libraries(trajectoryError ${Pangolin_LIBRARIES} ${FMT_LIBRARIES} fmt)
错误3:./example/trajectoryError时:
trajectory ./example/groundtruth.txt not found.
trajectory ./example/estimated.txt not found.
trajectoryError: /home/tzy/shijue_ws/src/slambook14/ch4/example/trajectoryError.cpp:22: int main(int, char**): Assertion `!groundtruth.empty() && !estimated.empty()' failed.
Aborted (core dumped)
解决方案
因为我们是在 build下执行命令,如果使用文件的相对路径:则修改trajectoryError.cpp,改成:
string groundtruth_file = "../example/groundtruth.txt";
string estimated_file = "../example/estimated.txt";
保存重新 make 后执行: ./example/trajectoryError文章来源:https://www.toymoban.com/news/detail-816141.html
文章来源地址https://www.toymoban.com/news/detail-816141.html
到了这里,关于踩坑 Sophus 模板库安装及编译(视觉SLAM 十四讲第二版 ch4 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!