激光slam学习笔记10---ubuntu2004部署运行fastlivo2踩坑记录

背景:mars实验室又发福利啦!跑跑效果,验了那句,mars出品,必属精品!本人pc环境ubuntu20.04,基本流程按照readme走就行,sophus和vikit安装有些注意地方。本文做了一些部署踩坑记录,方便大家参考。

一、报错汇总

报错1

cpp 复制代码
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp: In member function 'void VIOManager::initializeVIO()':
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:45:13: error: 'class vk::AbstractCamera' has no member named 'fx'
   45 |   fx = cam->fx();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:46:13: error: 'class vk::AbstractCamera' has no member named 'fy'
   46 |   fy = cam->fy();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:47:13: error: 'class vk::AbstractCamera' has no member named 'cx'
   47 |   cx = cam->cx();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:48:13: error: 'class vk::AbstractCamera' has no member named 'cy'
   48 |   cy = cam->cy();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:49:30: error: 'class vk::AbstractCamera' has no member named 'scale'
   49 |   image_resize_factor = cam->scale();

解决方式

根据readme安装vikit(注意使用作者推荐版本)

cpp 复制代码
git clone https://github.com/xuankuzcr/rpg_vikit.git 

注意一些关于sophus的依赖报错,务必安装指定sophus分支,再在cmakelist文件做一些修改,详情看后续报错

报错2

c 复制代码
/home/ylh/software/Sophus/sophus/so2.cpp:32:26: error: lvalue required as left operand of assignment
   32 |   unit_complex_.real() = 1.;
      |                          ^~
/home/ylh/software/Sophus/sophus/so2.cpp:33:26: error: lvalue required as left operand of assignment
   33 |   unit_complex_.imag() = 0.;

解决方式

安装对应的分支

c 复制代码
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build && cd build && cmake ..
make
sudo make install

修改一些报错源码的写法

cpp 复制代码
SO2::SO2()
{
  // unit_complex_.real() = 1.;
  // unit_complex_.imag() = 0.;
  unit_complex_ = std::complex<double>(1,0);
}

参考

报错3

c 复制代码
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator*(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::exp(Eigen::Matrix<double, 6, 1, 0, 6, 1> const&)'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator*(Sophus::SE3 const&) const'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator=(Sophus::SE3 const&)'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3()'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SO3::matrix() const'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3(Sophus::SE3 const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [rpg_vikit/vikit_common/CMakeFiles/test_vk_common_camera.dir/build.make:134: /home/ylh/code_ws/fastlivo2/devel/lib/vikit_common/test_vk_common_camera] Error 1
make[1]: *** [CMakeFiles/Makefile2:424: rpg_vikit/vikit_common/CMakeFiles/test_vk_common_camera.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator*(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::exp(Eigen::Matrix<double, 6, 1, 0, 6, 1> const&)'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator*(Sophus::SE3 const&) const'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator=(Sophus::SE3 const&)'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3()'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SO3::matrix() const'
/usr/bin/ld: /home/ylh/code_ws/fastlivo2/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3(Sophus::SE3 const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [rpg_vikit/vikit_common/CMakeFiles/test_vk_common_triangulation.dir/build.make:134: /home/ylh/code_ws/fastlivo2/devel/lib/vikit_common/test_vk_common_triangulation] Error 1
make[1]: *** [CMakeFiles/Makefile2:856: rpg_vikit/vikit_common/CMakeFiles/test_vk_common_triangulation.dir/all] Error 2

解决方式

cmakelist文件中加入

cpp 复制代码
set(Sophus_LIBRARIES libSophus.so)//虽然解决了编译问题,但是运行会报错,最终写法如报错6

参考

报错4

c 复制代码
error: field 'fout_imu' has incomplete type 'std::ofstream' {aka 'std::basic_ofstream<char>'}
   52 |   ofstream fout_imu;

解决方式

/IMU_Processing.h加入

cpp 复制代码
#include <fstream>

参考

报错5

提示不同so依赖的opencv版本不一致

本地安装多个opencv版本,而工程依赖ros的4.2.0版本,因此给所有的工程强行指定版本编译

cpp 复制代码
find_package(OpenCV 4.2.0 EXACT REQUIRED)

报错6

cpp 复制代码
/home/ylh/code_ws/fastlivo2/devel/lib/fast_livo/fastlivo_mapping: error while loading shared libraries: libSophus.so: cannot open shared object file: No such file or director

解决方式

c 复制代码
set(Sophus_LIBRARIES /usr/local/lib/libSophus.so)

二、运行效果

###################

好记性不如烂笔头

积跬步期千里

觉得不错的话,记得点赞收藏

相关推荐
wb1892 小时前
企业WEB应用服务器TOMCAT
运维·前端·笔记·tomcat·云计算
Se_ren_di_pity2 小时前
CS231n2017-Lecture9经典CNN架构笔记
人工智能·笔记·cnn
Yueeyuee_3 小时前
【C#学习Day15笔记】拆箱装箱、 Equals与== 、文件读取IO
笔记·学习·c#
এ旧栎3 小时前
Gitee
笔记·gitee·学习方法
kfepiza3 小时前
vim的`:q!` 与 `ZQ` 笔记250729
linux·笔记·编辑器·vim
Emotion亦楠4 小时前
Java 学习笔记:常用类、String 与日期时间处理
java·笔记·学习
养海绵宝宝的小蜗5 小时前
OSPF笔记整理
网络·笔记·智能路由器
没见过西瓜嘛6 小时前
数据仓库、数据湖与湖仓一体技术笔记
数据仓库·笔记
Mr Sorry6 小时前
TIME WEAVER: A Conditional Time Series Generation Model论文阅读笔记
论文阅读·笔记