当前位置: 首页 > news >正文

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

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

一、报错汇总

报错1

/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::AbstractCamerahas no member namedfx45 |   fx = cam->fx();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:46:13: error:class vk::AbstractCamerahas no member namedfy46 |   fy = cam->fy();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:47:13: error:class vk::AbstractCamerahas no member namedcx47 |   cx = cam->cx();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:48:13: error:class vk::AbstractCamerahas no member namedcy48 |   cy = cam->cy();
      |             ^~
/home/ylh/code_ws/fastlivo/src/FAST-LIVO2/src/vio.cpp:49:30: error:class vk::AbstractCamerahas no member namedscale49 |   image_resize_factor = cam->scale();

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

git clone https://github.com/xuankuzcr/rpg_vikit.git 

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

报错2

/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.;

解决方式
安装对应的分支

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

修改一些报错源码的写法

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

参考

报错3

/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文件中加入

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

参考

报错4

error: field ‘fout_imu’ has incomplete type ‘std::ofstream’ {aka ‘std::basic_ofstream<char>}
   52 |   ofstream fout_imu;

解决方式
/IMU_Processing.h加入

#include <fstream>

参考

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

find_package(OpenCV 4.2.0 EXACT REQUIRED)

报错6

/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

解决方式

set(Sophus_LIBRARIES /usr/local/lib/libSophus.so)

二、运行效果

在这里插入图片描述
###################
好记性不如烂笔头
积跬步期千里
觉得不错的话,记得点赞收藏

相关文章:

  • Web 小项目: 网页版图书管理系统
  • 速盾:如何利用CDN静态加速匹配尾缀提升网站性能?
  • 判断是不是完全二叉树(C++)
  • 【小白调试电路板】
  • 剑指 Offer II 109. 开密码锁
  • SpringBoot-MVC配置类与 Controller 的扫描
  • keepalived应用
  • Day19:把数字翻译成字符串
  • 蓝桥杯每日五题第一日
  • 计算机网络的框架结构
  • 每日一题--计算机网络
  • Maven常见问题汇总
  • 【C++内存管理】
  • 教材与课程的协同-以计算机网络专业为例
  • CopyOnWriteArrayList 和 CopyOnWriteArraySet对比
  • rclone工具迁移minio数据
  • 【JAVA】】深入浅出了解cookie、session、jwt
  • Lora微LLAMA模型实战
  • 相机光学(四十七)——相纸材质
  • 博客迁移----宝塔面板一键迁移遇到问题
  • 基金经理调仓引发大金融板块拉升?公募新规落地究竟利好哪些板块
  • 晋级四强!WTA1000罗马站:郑钦文2比0萨巴伦卡
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯
  • 河南省委常委会会议:坚持以案为鉴,深刻汲取教训
  • 以军向也门3个港口的居民发布撤离令
  • 梅花奖在上海丨陈丽俐“婺剧折戏专场”:文戏武做,武戏文唱