IC-GVINS编译以及运行DEMO的一些踩坑日记

IC-GVINS编译以及运行DEMO的一些踩坑日记

本文主要记录编译IC-GVINS的一些踩坑实录,首先这是项目原址i2Nav-WHU/IC-GVINS,论文在这里

1.环境配置

官方写的需要ROS、OpenCV、Ceres、glog
为了避免像我一样踩坑,建议大家按照OpenCV->ROS->glog->ceres的顺序来安装

1.OpenCV
首先是OpenCV,官方写的OpenCV版本支持>=3.2.0,我是用的3.4,之前用的 sudo apt install libopencv-dev 直接安装的最新版本,总是会莫名其妙的出现一些问题,所以建议直接源码编译,这是参考的文章Ubuntu安装OpenCV3

注意:安装ROS后会自带OpenCV4

2.ROS
ROS正常安装即可,网上很多教程,推荐这个,基本把各种你能遇到的报错都写出来了

3.glog
然后是glog,在glog上我遇到了一个大坑,让我明白了一个道理直接sudo apt-get install的都不可靠,要不报错还得自己编译,自己指定静态库和动态库
官方说的glog (>=0.4.0)即可,我用的是0.5.0
在ROS中使用glog时,需注意glog安装正确,否则虽然能够编译通过(colcon build),但实际运行时可能会报一些稀奇古怪的错误
我编译时一直遇到这个(直接用sudo apt install libgoogle-glog-dev安装的)
在这里插入图片描述

建议直接到 https://github.com/google/glog下载,然后

cd glog
mkdir build && cd build
cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON ..
make 
sudo make install

注意:安装glog之后还需要安装gflags

4.Ceres Solver
Ceres依赖glog,虽然官方写的Ceres需要2.0.0和2.1.0,但我用2.1.0时最后roslaunch时出现了这个issue里的错误,所以直接用2.0.0编译靠谱

//ceres一些依赖
sudo apt-get install cmake

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

sudo apt-get install libatlas-base-dev

sudo apt-get install libeigen3-dev

sudo apt-get install libsuitesparse-dev

// https://github.com/ceres-solver/ceres-solver 里下载tar.gz

tar zxf ceres-solver-2.1.0.tar.gz
mkdir ceres-bin
cd ceres-bin

注意: 这里需要先在ceres的cmakelist里指定glog库(保证和后面ic-gvins编译的glog版本一致)
在cmakelist里找到glog,添加

set(GLOG_DIRS PATH)

PATH可以通过lcoate glog来寻找

cmake ../ceres-solver-2.1.0
make -j8
sudo make install

2.编译IC-GVINS

这里直接搬运官方的

# Make workspace directory
mkdir ~/gvins_ws && cd ~/gvins_ws
mkdir src && cd src

# Clone the repository into src directory
git clone https://github.com/i2Nav-WHU/IC-GVINS.git

# To gvins_ws directory
cd ..

编译的过程需要注意观察glog版本和Ceres用的glog版本是否一致,以及是否有其他的报错信息

# Build the source code using catkin_make
# For gcc
catkin_make -j8 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8

3.运行DEMO

数据集在官网上已经给了,可以直接下载那个urban38来测试
这里我又犯了一个错,困扰我了两天
第一个是没设置urban38里output PATH,另一个是没用urban38里YAML,而是config里的YAML,导致一直出现这个报错在这里插入图片描述
设置数据集里output PATH

cd ~/gvins_ws &&mkdir output
sudo gedit 你的urban38路径/IC-GVINS/gvins.yaml

把output PATH设置为刚才创建的output文件夹

运行DEMO的过程同样搬运官方的

# Open a terminal and source the workspace environments
# For bash
source ~/gvins_ws/devel/setup.bash
# For zsh
# source ~/gvins_ws/devel/setup.zsh

# Run IC-GVINS node
# You should change the path in both the configuration file and command line
roslaunch ic_gvins ic_gvins.launch configfile:=path/urban38/IC-GVINS/gvins.yaml

# Open another terminal to play the ROS bag
rosbag play path/urban38/urban38.bag

在这里插入图片描述

### 编译 TBB 并应用于 ICGVINS 对于希望在 ICGVINS 中集成和编译 Intel Threading Building Blocks (TBB),可以遵循以下方法来确保成功配置和构建。 #### 获取最新版本的 TBB 源码 为了获得最新的功能和支持,建议从 GitHub 上获取官方发布的 TBB 版本。这可以通过克隆仓库完成: ```bash git clone https://github.com/oneapi-src/oneTBB.git cd oneTBB mkdir build && cd build ``` 此操作会创建一个新的 `build` 文件夹用于存放编译后的文件[^2]。 #### 配置 CMake 构建环境 进入新建立的 `build` 目录后,使用 CMake 来设置项目的构建选项。如果遇到特定于 GCC 的 `-mrtm` 错误提示,则可能是因为当前使用的 GCC 版本不支持该指令集扩展。此时应考虑调整 Linux 下 TBB 安装脚本中的相关部分,在 `tbb/build/linux.gcc.inc` 文件内注释掉涉及 RTM 支持的部分代码如下所示: ```makefile # gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them #ifneq (,$(shell gcc -dumpversion | egrep "^4\.[8-9]")) RTM_KEY = #-mrtm #endif ``` 上述修改能够绕过对 RTM 功能的需求,从而允许继续进行后续步骤[^1]。 #### 执行实际编译过程 一旦解决了任何潜在的问题之后就可以执行真正的编译命令了。通常情况下只需要简单地运行下面这条语句即可启动整个流程: ```bash cmake .. make -j$(nproc) ``` 这里假设读者已经安装好了必要的依赖项以及设置了合适的环境变量以便顺利调用所需的工具链。 #### 将 TBB 库链接到 ICGVINS 工程中 当完成了 TBB 自身的成功编译以后,下一步就是将其静态或共享库形式引入至目标应用程序——即这里的 ICGVINS 当中去了。具体做法取决于所采用的具体开发平台及其对应的 IDE 或者 Makefiles 设置方式;不过一般而言都会涉及到编辑项目属性里的“附加包含路径”、“库目录”,还有指定额外的链接器输入参数等几个方面的工作。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值