安装opencv-3.4.0后和ros自带的3.2.0版本冲突,导致open_vins、vins-mono、vins-fusion均无法编译成功

使用ros自带的opencv3.2.0时vins系列的代码都可以正常跑通,因为项目需要opencv3.4.0,安装后出现编译错误

参考:

https://blog.csdn.net/weixin_40749043/article/details/127547954

重要 https://blog.csdn.net/llllldm/article/details/126334841

img

(一)ros-melodic-cv-bridge和opencv3.4.0冲突(vins-mono vins-fusion问题解决,open-vins部分解决)

解决办法(首先确保其他版本的opencv是否卸载干净!)

然后

1 更改 gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake

# yzl 2023.2.19 modified
# if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
if(NOT "include;/usr/local/include/opencv;/usr/local/include/opencv2 " STREQUAL " ")
  set(cv_bridge_INCLUDE_DIRS "")
  #set(_include_dirs "include;/usr/include;/usr/include/opencv")
  set(_include_dirs "include;/usr/local/lib;/usr/local/include/opencv;/usr/local/include/opencv2;/usr/local/include;")
  set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.3.4.0;/usr/local/lib/libopencv_imgproc.so.3.4.0;/usr/local/lib/libopencv_imgcodecs.so.3.4.0")

以及

# yzl 2023.2.19 modified
#set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0")
set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.3.4.0;/usr/local/lib/libopencv_imgproc.so.3.4.0;/usr/local/lib/libopencv_imgcodecs.so.3.4.0")

2 更改/opt/ros/melodic/share/cv_bridge/cmake/cv_bridge-extras.cmake

# yzl 2023.2.19 modifed
#set(OpenCV_VERSION 3.2.0)
#set(OpenCV_VERSION_MAJOR 3)
#set(OpenCV_VERSION_MINOR 2)
#set(OpenCV_VERSION_PATCH 0)
set(OpenCV_VERSION 3.4.0)
set(OpenCV_VERSION_MAJOR 3)
set(OpenCV_VERSION_MINOR 4)
set(OpenCV_VERSION_PATCH 5)

**3 更改sudo gedit /opt/ros/melodic/lib/pkgconfig/cv_bridge.pc **

# yzl 2023.2.29 modified
#Libs: -L${prefix}/lib -lcv_bridge /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0
Libs: -L${prefix}/lib -lcv_bridge /usr/local/lib/libopencv_core.so.3.4.0 /usr/local/lib/libopencv_imgproc.so.3.4.0 /usr/local/lib/libopencv_imgcodecs.so.3.4.0

通过上述修改后没有报错,但是有如下warnning

在这里插入图片描述

在[/home/yzl/Learn_SLAM/vins-fusion_ws/devel/lib]

ldd libvins_lib.so | grep opencv

在这里插入图片描述

有三个库链接错

执行

cd /opt/ros/melodic/lib/
ldd libcv_bridge.so | grep opencv

在这里插入图片描述

尝试

sudo apt-get install --reinstall ros-melodic-desktop-full

然后重新按照上面的步骤来,就没有warning了

到这里vins-mono和vins-fusion都没有问题了,但是openvins报错了

(二)open-vins缺少opencv-contrib-3.4.0中的库(open-vins问题解决)

在这里插入图片描述

aruco.hpp好像是额外的库

https://stackoverflow.com/questions/33200173/opencv-3-0-error-aruco-hpp-no-such-file-or-directory

locate没有

下载opencv_contrib-3.4.0到opencv-3.4.0同文件夹

然后

cmake .. -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules/        

报错了:

在这里插入图片描述

gflags的问题,重新编译gflags

cd build/
cmake -DCMAKE_CXX_FLAGS=-fPIC ..
make
sudo make  install
sudo ldconfig

成功,感动。。。

然后

sudo make install

后catkin build

open_vins编译成功
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时私信沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于C++ matplotlibcpp库实现图形化显示源码(用于无ROS的TEB算法)+使用说明+运行视频.zip 用于无ROS的TEB算法,并使用c++ matplotlibcpp库做了图形化显示 # 调用流程 How to use ```bash mkdir build cd build cmake .. make -j16 ./teb ``` 编译依赖项 * g2o * Eigen * Boost * OpenCV (可选,用于显示地图和路径) 代码运行 代码运行成功时, ![example](example.png) ![example](example.mp4) teb库调用流程 本代码核心在于能够将teb算法作为一个开源第三方库来调用,而不采用ros的数据接口,稍微阅读了解原理后也可以直接修改库来实现自己的序需求。 因此,通常的调用流程如下 * 加载默认参数 `TebConfig config;` ,其中在构造函数内保留了所有默认参数值,可以自行修改 * 设置障碍物 `std::vector<ObstaclePtr> obst_vector;` * 设置机器人形状 `RobotFootprintModelPtr robot_model = boost::make_shared<CircularRobotFootprint>(0.4);` * 构造路径规划类 `auto planner = new TebOptimalPlanner(config, &obst_vector, robot_model, visual, &via_points);` * 搜索路径 `planner->plan(start,end);` * 获取规划得到的轨迹 `planner->getFullTrajectory(path);`

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值