因为Ubuntu20.04安装ROS时默认会安装Opencv4.x版本和vins-fusion要求的3.x版本有冲突,需要修改一下文件,否则会出现CV的报错
方法一
用下面up修改好后的vins文件进行重新编译
mkdir -p ~/vins_ws/src
cd ~/vins_ws
catkin_make
#若初次不行可删除devel和build文件重新catkin_make
通过网盘分享的文件:vins_ws.zip 链接: https://pan.baidu.com/s/1xFwEMjFOiuuMY0hROzErSA?pwd=1234 提取码: 1234 复制这段内容后打开百度网盘手机App,操作更方便哦

编译成功为100%
#运行测试
roslaunch vins vins_rviz.launch


方法二
从github上下载一步一步来可以熟悉配置vins-fusion环境
# 创建目录结构
mkdir -p ~/vins_ws/src
cd ~/vins_ws/src
# 初始化工作空间(生成 CMakeLists.txt)
catkin_init_workspace
# 克隆官网的代码
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
#若github速度较慢
方法一 git clone https://gitcode.com/HKUST-Aerial-Robotics/VINS-Fusion.git
方法二 sudo gedit /etc/hosts 在末尾添加199.232.28.133 raw.githubusercontent.com

之后新开一个终端(WSL下终端有时需要新建一个运行才可以)
cd ~/vins_ws/
catkin_make
修改步骤一:
将所有文件夹下的CMakeLists.txt文件由C++11全部修改为C++14,其中有以下四个文件夹内的CMakeLists.txt。
#将第五行替换
#set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")


修改步骤二:
添加头文件
\\vins_ws\\src\\VINS-Fusion\\camera_models\\include\\camodocal\\chessboard 下chessboard.h
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>


修改步骤三:
添加头文件
vins_ws\\src\\VINS-Fusion\\camera_models\\include\\camodocal\\calib下CameraCalibration.h
vins_ws\\src\\VINS-Fusion\\loop_fusion\\src下pose_graph.h
\\vins_ws\\src\\VINS-Fusion\\loop_fusion\\src\\ThirdParty\\DVision下BRIEF.h
\\vins_ws\\src\\VINS-Fusion\\vins_estimator\\src\\featureTracker下feature_tracker.h
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>




修改步骤四:
替换
\\vins_ws\\src\\VINS-Fusion\\vins_estimator\\src下的KITTIGPSTest.cpp和KITTIOdomTest.cpp
CV_LOAD_IMAGE_GRAYSCALE 替换为 cv::IMREAD_GRAYSCALE


至此修改完成。接着
#用WSL的建议新开一个终端
cd ~/vins_ws
catkin_make
echo "source ~/vins_ws/devel/setup.bash" >> ~/.bashrc
编译完成为100%,期间如果显示有未安装的库需补全才行。
若用WSL可能会显示以下报错,
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[2]: *** [VINS-Fusion/vins_estimator/CMakeFiles/vins_lib.dir/build.make:115: VINS-Fusion/vins_estimator/CMakeFiles/vins_lib.dir/src/factor/projectionTwoFrameOneCamFactor.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs….
[ 83%] Linking CXX executable /home/hzzy/vins_ws/devel/lib/loop_fusion/loop_fusion_node
[ 83%] Built target loop_fusion_node
make[1]: *** [CMakeFiles/Makefile2:1680: VINS-Fusion/vins_estimator/CMakeFiles/vins_lib.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j12 -l12" failed
这是因为默认安装WSL分配的内存为8G,交换内存为2G内存太小可在WSLsettings中更该

#以下命令在Windows powershell中运行不是Ubuntu终端
wsl –shutdown #关闭wsl
wsl #重启
#内存在Ubuntu终端中查看
free -h

更改完成后再次进行编译
#用WSL的建议新开一个终端,可能需要删除之前的build和devel
cd ~/vins_ws
catkin_make
echo "source ~/vins_ws/devel/setup.bash" >> ~/.bashrc
#运行测试
roslaunch vins vins_rviz.launch
网硕互联帮助中心




评论前必须登录!
注册