ubuntu20.04编译vins-mono解决opencv版本冲突问题

安装vins-mono需要的库和ros的安装就不介绍了,由于ubuntu20.04下的ros自带的是opencv4,vins-mono依赖opencv3,本文参考众多大佬的博客最终成功用自己安装的opencv3.4.1编译成功,主要思路是重新编译一个cv_bridge专门用于编译vinsmono调用opencv3。

ubuntu20.04版本的cv_bridge下载链接如下:https://github.com/ros-perception/vision_opencv/tree/noetic

 第一步:下载cv_bridge并调用自己安装的opencv版本


下载后首先将其中的cv_bridge文件夹移到catkin_ws/src目录下,并重新命名为cv_bridge_vinsmono;(自定义)

CMakeLists.txt中的project(cv_bridge)改为cv_bridge_vinsmono;

package.xml中name也改为cv_bridge_vinsmono。

注意:此时还没有将vins-mono-master加入src文件夹。

接下来在cmakelists.txt中指定我们的opencv包和路径:

set(OpenCV_DIR /home/siae302/ku/opencv3.4.1/opencv-3.4.1/build)
set(_opencv_version 3)
find_package(OpenCV 3.4.1 EXACT)

至此,cv_bridge_vinsmono制定opencv版本完毕,进行编译,在catkin_ws目录下执行:

catkin_make --pkg cv_bridge_vinsmono

 如果一切顺利就不会报错,报错了也别慌,csdn搜一下也能解决,我很顺利没有报错。

[ 66%] Building CXX object cv_bridge_vinsmono/src/CMakeFiles/cv_bridge_vinsmono_boost.dir/module_opencv4.cpp.o
[ 83%] Building CXX object cv_bridge_vinsmono/src/CMakeFiles/cv_bridge_vinsmono_boost.dir/module.cpp.o
[100%] Linking CXX shared library /home/siae302/catkin_ws/devel/lib/python3/dist-packages/cv_bridge_vinsmono/boost/cv_bridge_vinsmono_boost.so
[100%] Built target cv_bridge_vinsmono_boost

第二步:使用cv_bridge_vinsmono

将vins-mono的所有cmakelists.txt文件中调用cv_bridge的部分替换为cv_bridge_vinsmono

;findpackage(opencv required)改为查找opencv3:

(1)将

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  image_transport
  sensor_msgs
  cv_bridge
  message_filters
  camera_model
)

改为:

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  image_transport
  sensor_msgs
  cv_bridge_vinsmono
  message_filters
  camera_model
)

(2)将

find_package(OpenCV REQUIRED)

改为:

#使用opecncv3编译
#find_package(OpenCV REQUIRED)
find_package(OpenCV 3 REQUIRED)

如下所示,但是没有调用cv_bridge和opencv的地方别画蛇添足,下面是其中一个cmakelists.txt文件的例子。

然后进入catkin_ws目录下编译vinsmono了,注意默认的catkin_make是全线程编译,如果你编译vinsmono的时候容易卡死,在home目录下的.bashrc文件添加下面这行代码(-j4的4你可以参考自己电脑性能线程数自定义),改完了别忘了source .bashrc:

export ROS_PARALLEL_JOBS=-j4

第三步:运行vinsmono

首先下载数据集:kmavvisualinertialdatasets – ASL Datasets

我下载的是MK-01ROSbag.

然后运行下列代码即可,注意每行指令都要另起一个终端:

roscore
roslaunch vins_estimator euroc.launch 
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_01_easy.bag  #实际应该是rosbag play YOUR_PATH_TO_DATASET/MH_01_easy.bag

参考链接:Ubuntu20.04——一篇文章让你从零配置VINS_Mono环境以及运行(2023年最新)_黑灯瞎火正是学习之时的博客-CSDN博客

解决 cv_bridge 与 opencv4 版本冲突问题_Thoven的博客-CSDN博客

CV_bridge和ROS自带的opencv版本冲突_ros自带opencv吗_蘭奕的博客-CSDN博客

ROS学习:cv_bridge与opencv版本冲突三种解决方案_Mr.Qin_的博客-CSDN博客

将ros cv_bridge关联到自己安装的Opencv版本_/usr/bin/ld: warning: libopencv_core.so.3.2, neede_张飞飞~的博客-CSDN博客

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值