LVI-SAM 复现(多传感器信息融合IMU+Camera+Lidar)

文章详细描述了在Ubuntu20.04环境下配置ROSNoetic、OpenCV4.2.0等库时遇到的编译问题,包括工作空间路径问题、依赖版本冲突和头文件错误,提供了相应的解决方法。
摘要由CSDN通过智能技术生成

编译环境:ubuntu20.04+ros noetic + opencv 4.2.0 + gtsam4.0.2+ Ceres1.14.0(一定要注意版本信息,我复现的时候更换了三次的gtsam的版本,ceres-solver的版本也是进行了更换)

gstam4.0.3下载地址:https://github.com/borglab/gtsam/releases/tag/4.0.3

ceres2.0.0下载地址:https://github.com/ceres-solver/releases/tag/2.0.0

文献阅读参考翻译:https://zhuanlan.zhihu.com/p/387784945

 参考资料:

LVI-SAM:配置环境、安装测试、适配自己采集数据集-CSDN博客

Ubuntu20.04部署编译LVI-SAM_lvisam bag数据-CSDN博客

亲自部署LIO-SAM、LVI-SAM的全过程经历01——跑通_lvi-sam运行m2dgr数据集-CSDN博客

复现流程:

一、gtsam安装配置:

sudo add-apt-repository ppa:borglab/gtsam-release-4.0

sudo apt install libgtsam-dev libgtsam-unstable-dev

二、Ceres下载安装

sudo apt-get install -y libgoogle-glog-dev

sudo apt-get install -y libatlas-base-dev

git clone https://github.com/ceres-solver/ceres-solver/archive/1.14.0.zip

(或者直接利用网址下载,然后解压)

cd ceres-solver-1.14.0

mkdir build

cd build

cmake ..

sudo make install -j4

三、创建工作空间并下载源码

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_worksapce

git clone https://github.com/TixiaoShan/LVI-SAM

四、源码修改

1、LVI-SAM/CMakeLists.txt

将第8行中set(CMAKE_CXX_FLAGS"-std=c++11“)修改11为14、

第37行后面加入find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)

2、LVI-SAM/src/lidar_odometry/utility.h

LVI-SAM/src/visual_odometry/visual_loop/parameters.h

LVI-SAM/src/visual_odometry/visual_feature/parameters.h

修改头文件#include <opencv/cv.h>为#include <opencv2/opencv.hpp>

3、LVI-SAM/src/visual_odometry/visual_loop/ThirdParty/DVision/BRIEF.cpp中添加头文件#include<opencv2/imgproc.hpp>

将53行CV_RGB2GRAY为cv::COLOR_RGB2GRAY

4、LVI-SAM/src/visual_odometry/visual_loop/keyframe.cpp第240行243行修改CV_FONT_HERSHEY_SIMPLEX为cv::FONT_HERSHEY_SIMPLEX

5、LVI-SAM/src/visual_odometry/visual_loop/loop_detection.cpp第64、82、92、112、149行修改CV_FONT_HERSHEY_SIMPLEX为cv::FONT_HERSHEY_SIMPLEX

五、编译LVI-SAM

sudo apt-get install ros-noetic-fake-localization

sudo apt-get install ros-noetic-robot-localization

cd ~/catkin_ws

catkin_make

六、运行数据集

cd ~/catkin_ws/devel

source setup.bash

roslaunch lvi-sam run.launch

rosbag play handheld.bag

数据集:参考资料一

---------------------------------------------------------------------------------------------------------------------------------

下面是我第一次复现所出现的问题,上面的复现流程是第二次操作,可只看上面,当有错误出现可以参考一下下面可能遇到的问题。

 复现过程出现的问题:

问题一:

The specified base path "工作空间" contains a package but "catkin_make" must be invoked in the root of workspace(catkin_make 编译出现的问题)

解决办法:将工作空间中的include , CmakeList.txt ,package.xml文件删除掉即可。

问题二:

pose_local_parameterization.h:11:1: error: expected class-name before ‘{’ token

解决办法:未解决(更换了gtsam的版本)

问题三:

error: ‘LocalParameterization’ is not a member of ‘ceres’

问题原因:ceres-solver版本问题2.2.0,降低版本2.0.0

问题三:

error: static assertion failed: Error: GTSAM was built against a different version of Eigen

原因:use system eigen:OFF

解决办法:cmake/HandleEigen.cmake 在if(GTSAM_USE_SYSTEM_EIGEN)之前加入set(GTSAM_USE_SYSTEM_EIGEN ON)重新编译

问题四: error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

解决办法:将相应的文件里面错误行改为:cv:: FONT_HERSHEY_SIMPLEX

问题五:error: conversion from ‘std::shared_ptr<gtsam::PreintegrationParams>’ to non-scalar

解决办法:重新下载的gtsam的版本4.0.3

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------以下准备做LVI-SAM硬件端的部署

适配自己设备需要修改源码的参考资料:

LVI-SAM:配置环境、安装测试、适配自己采集数据集-CSDN博客

(醍醐灌顶)LVI-SAM坐标系外参分析与代码修改,以适配各种数据集-CSDN博客

问题一:对于终端报错Large velocity,reset IMU-preintegration!

参考资料:编译基于LIO-SAM的liorf“Large velocity, reset IMU-preintegration!“-CSDN博客

LVI-SAM代码阅读:由粗到精学习LVI-SAM - 知乎

 LVI-SAM evo评估:LVI-SAM评估_liosam 保存轨迹-CSDN博客

LIO_SAM部署参考:LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题_速度过快,liosam建图会飘-CSDN博客

注意点:

一、数据格式:IMU、LIDAR

坐标系的一致性要求:rosbag info xxxx.bag(查询数据集的topic)

二、lidar与imu外参标定,imu内参标定

三、修改源代码参数

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值