当前位置: 首页 > 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 assignment32 |   unit_complex_.real() = 1.;|                          ^~
/home/ylh/software/Sophus/sophus/so2.cpp:33:26: error: lvalue required as left operand of assignment33 |   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
提示不同so依赖的opencv版本不一致
本地安装多个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)

二、运行效果

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


http://www.mrgr.cn/news/94944.html

相关文章:

  • vulhub-joker攻略
  • 7-字符串
  • 【NeurIPS-2022】CodeFormer: 将人脸复原转化为码本预测以减少LQ-HQ映射的不确定性
  • 如何处理和格式化日期差异:JavaScript 日期差异计算实例
  • JavaScript 日期区间计算:全面解析与实战应用
  • 银行数字化转型
  • 【经验】重装OpenCV踩雷
  • 购物车全选功能
  • YOLO11结构
  • Web 小项目: 网页版图书管理系统
  • 我在哪,要去哪
  • Nginx 代理访问一个 Web 界面时缺少内容
  • Java进阶核心技术解析:多线程、集合框架与反射深度实战
  • 较为完善的搜索函数
  • Java零基础入门指南:从环境搭建到面向对象编程的全面解析
  • Android Handler 通过线程安全的 MessageQueue 和底层唤醒机制实现跨线程通信
  • 【机器学习-回归算法】
  • uniapp常用组件
  • Oracle常见系统函数
  • JavaScript基础-获取元素