云计算百科
云计算领域专业知识百科平台

WSL2+Ubuntu20.04+ROS1(noetic)下配置vins-fusion环境

 因为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

赞(0)
未经允许不得转载:网硕互联帮助中心 » WSL2+Ubuntu20.04+ROS1(noetic)下配置vins-fusion环境
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!