Ubuntu20.04安装Vins-Mono

最近在学习vins-mono,理论+源码配合着来理解更透彻,编译源码时还是遇到不少问题的,记录分享一下:

1、源码下载

mkdir -p vins_ws/src
cd vins_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git

2、编译问题

(1)Ceres库问题

catkin_make编译报错:

没找到Ceres库,github源码库建议安装1.14.0版本:

先去官网下载并解压:

wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar xvf ceres-solver-1.14.0.tar.gz

安装依赖项:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev
sudo apt-get install libgoogle-glog-dev libgtest-dev

再正常安装:

cd ceres-solver-1.14.0
mkdir build && cd build
cmake ..
make -j2
sudo make install

但执行cmake后报错了:

显示glog版本不够,之前是用apt-get install安装的,Ubuntu20.04安装的是0.4.0,因此需要删掉重新下载最新源码安装:

# 先移除老版本相关库
sudo rm -rf /usr/local/lib/cmake/glog
sudo rm -f /usr/local/lib/libglog*
# 下载新版本源码安装
git clone https://github.com/google/glog
cd glog
mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON
make
sudo make install

再次回到ceres-solver执行cmake ..就没有问题了,但下一步make又出问题了=.=

好像是gtest库问题,用deepseek查了下,最方便的解决方法:

cmake ..后加配置项-DBUILD_TESTING=OFF(不影响正常功能),再次make就没问题啦

切忌!!!

不建议用推荐的另一种删除老版本再安装最新源码的方法!!!

sudo apt-get remove --purge libgtest-dev 会把好多有用的依赖项删掉,影响系统正常使用!

我个吐血,光恢复那些安装包就又花了好多时间(哭。。。),那又是另一个问题了,等发下一篇文章说怎么解决。

(2)std相关错误

再次catkin_make又报错

这个主要是c++版本不兼容导致的,把项目工程中所有CMakeLists.txt中配置为c++11的地方都改成c++14即可:

再次编译就成功啦:

2025.03.13新补充

之前虽然顺利编译过了,但跑测时发现有节点(feature_tracker和pose_graph)会异常死掉:

很奇怪,回头再看catkin_make的编译信息,发现里面有不少如下warning:

差了下说是电脑里有2个opencv版本(3.4和4.2)导致编译器混乱了,最简单的解决办法就是在项目所有CMakeLists.txt中原来都是find_package(OpenCV REQUIRED)的地方

统一改为指定openCV版本(像我这就是4.2):

再次编译就发现这类warning没有了,跑测也没有问题了

所以说虽然平时不怎么注意,但有些warning还是要关注下。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值