ROS与OpenCV版本冲突问题

2023-05-16

在安装小觅相机的时候因为ROS与opencv版本不兼容的原因导致各种莫名其妙的错误。

安装方式

按照相机技术手册,SDK在linux下共有三种安装方式,ppa安装,源码编译安装,ROS安装。注意不要用ppa安装,用ppa安装会导致ROS无法安装。

源码安装

多版本opencv共存

在源码安装时注意opencv要安装在/usr/local下,否则就要设置环境变量。注意一点,为了实现opencv多版本共存,我们最好在/usr/local下创建不同文件夹存储不同版本opencv。

cd opencv-2.4.13
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.13 ..
make -j$(nproc) // nproc是读取CPU的核心数量 
sudo make install 

然后按照同样方法安装opecv3. 按照技术支持的说法,最好安装opencv3.4.1.
在我们下次需要调用不同版本的opencv时只需要在cmake中添加

set(OpenCV_DIR /usr/local/opencv2.4.13/share/OpenCV)
find_package(OpenCV 2.4 REQUIRED)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS} /usr/local/opencv2.4.13/include)
link_directories(${OpenCV_LIBRARY_DIRS} /usr/local/opencv2.4.13/lib))

SDK源码安装

在准备好opencv后我们按照技术手册进行SDK源码安装即可。在安装opencv时手册里写如果需要安装ROS(不支持4.0+),可以不用安装OpenCV/PCL, 以防兼容性问题。可是谁的电脑里还不带俩opencv呢。。总不能为了用个相机开个新虚拟机。。下面开始说下如何解决兼容问题。

ROS与OpenCV兼容问题

按照手册中ROS Wrapper安装步骤,在make ros时遇到如下问题

CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:33 (find_package):
  Could not find a package configuration file provided by
  "image_transport" with any of the following names:
 
    image_transportConfig.cmake
    image_transport-config.cmake

应该是package缺少依赖项,ros中$rosdep可安装pakage所缺的所有依赖项。用法如下:

$rosdep package_name

在安装好所有依赖项后又遇到了个诡异的问题

CMake Error at /opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake:110 (message):
  Project 'cv_bridge' specifies '/usr/include/opencv' as an include dir, which is not found.  It does neither exist as an absolute directory nor in
  '${{prefix}}//usr/include/opencv'.  

这里使用到的是ros melodic,由于当我们需要用到OpenCV时,通常都需要运用cv_bridge或者image_pipeline包来转换传输图片,而这两个包又是依赖于OpenCV 2.4.8来编译的。

所以,要解决这个问题,方法就是把cv_bridge和image_pipeline下载到本地的工作空间,并重新编译。但是因为他们基于OpenCV 2可以直接编译成功,所以在OpenCV 3下则需要相应做一些改动。 解决办法:

下载:https://github.com/ros-perception/vision_opencv
中的vision_opencv至ROS/src下。注意clone前branch一定要选择:melodic(我的ROS是melodic版本,找到自己对应的branch即可)。否则,branch与自己的ROS版本不对应时会产生如下问题

CMake Error at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1947 (message):
Unable to find the requested Boost libraries.

Boost version: 1.65.1

Boost include path: /usr/include

Could not find the following Boost libraries:

      boost_python37
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
vision_opencv/cv_bridge/CMakeLists.txt:11 (find_package)

这些问题都解决后执行

cd <sdk> # <sdk> 是指sdk路径
make ros

即可编译成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS与OpenCV版本冲突问题 的相关文章

  • Conda_安装库失败:Collecting package metadata (current_repodata.json): failed

    具体原因 xff1a update repo信息时网络有问题 于是就出现了污染 解决方法 xff1a conda clean i 然后重新随便install一个库 会重新下载repo信息 xff0c 问题解决
  • scrapy爬虫实战——抓取NBA吧的内容

    scrapy爬虫 步骤1 进入虚拟环境2 测试爬取页面3 进入开发者模式4 剥离页面中的数据5 在pycharm中码代码scrapy框架的目录 xff08 之前创建虚拟环境自动搭建 xff09 nba py源码详解 6 Debug第一步 点
  • ubuntu系统版本查询命令方法

    目录 一 使用命令 xff1a cat proc version 查看 二 使用命令 xff1a uname a 查看 三 使用命令 xff1a lsb release a 查看 四 使用命令 xff1a hostnamectl 查看 五
  • python解析xml文件(解析、更新、写入)

    Overview 这篇博客内容将包括对XML文件的解析 追加新元素后写入到XML xff0c 以及更新原XML文件中某结点的值 使用的是python的xml dom minidom包 xff0c 详情可见其官方文档 xff1a xml do
  • 一阶微分方程

    传送门https jingyan baidu com article 8065f87fb7f0652331249822 html 1 可分离变量的微分方程解法 一般形式 g y dy 61 f x dx 直接解得 g y dy 61 f x
  • C#多线程--信号量(Semaphore)

    Semaphore 是负责协调各个线程 以保证它们能够正确 合理的使用公共资源 也是操作系统中用于控制进程同步互斥的量 Semaphore常用的方法有两个WaitOne 和Release xff0c Release 的作用是退出信号量并返回
  • 【总结】C++工程师学习路线|推荐视频|推荐书籍

    前言 由于博主秋招拿到的offer有限 xff0c 经过对比 xff0c 决定转到C 43 43 开发技术栈 xff0c 此篇文章用于规划自己今后的成长路线并分享给大家 学习路线 C 43 43 语言本身 xff1a 我们可以将这个部分分为
  • 面试被问到的promise总结

    promise all的使用 promise all可以将多个promise实例包装成一个新的promise实例 xff0c 并且返回的值也不相同 xff0c 成功使 xff0c promise返回的值是一个结果数组 xff0c 而失败的话
  • ROS节点,消息,话题,服务的介绍

    整理结合机器人操作系统 xff08 ros xff09 浅析和网址http wiki ros org cn NODE node几乎是无处不在 xff0c 这个东西相当于可执行文件 xff0c 目前我更愿意把它当做cpp文件 xff0c 通过
  • vue实现表格的更多查询功能

    场景一 xff1a 一行足够显示完所有的查询条件 场景二 xff1a 需要多行才能显示完所有的查询条件 1 首先创建一个按钮组件SearchButton lt template gt lt el form inline class 61 3
  • FreeROTS原理学习笔记

    前言 xff1a 这仅是一篇学习笔记记录 xff0c 无指导意义 想详细了解的人 可看CSDN博主 zhzht19861011 的原创文章 FreeROTS系统 xff1a 使用习惯 xff1a 1 一般来说 xff0c 都是利用下载好的例
  • RuntimeError: dataset.make_initializable_iterator is not supported when eager execution is enabled.

    这是由于代码的接口更改 xff0c 无法正常连接数据集 xff0c 即新版本接口变了 需要按照第4章的数据集部分 xff0c 改一下数据集接口
  • 基于Android 的串口工具类

    欢迎使用串口通讯 xff0c 首先说明下我这里使用的是RS485通讯 xff0c 采用的是半双工通讯 xff0c 所以收和发不能同时操作需要发送等待一段时间来接收完数据在发送其他指令了 xff0c 这里顺便在说下RS232 xff0c 它采
  • ROS安装步骤

    ROS xff08 Robot Operating System xff09 起源于2007年斯坦福大学人工智能实验室与WillowGarage公司的个人机器人项目 xff0c 其后被Willow Garage公司开源和发展 xff0c 目
  • ros对应不同的ubuntu版本

    ros对应不同的ubuntu版本有不同的版本名字 xff1a ubuntu16 04对应ros kinetic xff1b ubuntu18 04对应ros melodic xff1b ubuntu20 04对应ros noetic 在Ub
  • ubuntu20.04安装 gym-gazebo

    官网流程安装 xff1a https github com erlerobot gym gazebo 一 环境与依赖 1 基本环境 xff1a ROS NoeticGazebo11 11 0 2 ROS相关依赖 xff1a sudo apt
  • 【无标题】Realsense ROS驱动安装以及报错处理

    参考官网 xff1a https github com IntelRealSense realsense ros 1 命令行安装 xff1a 这种方式比较简单 xff0c 没有报错 需要注意的是安装位置需要自己找 xff0c 后续修改lau
  • FAQ问答项目代码细节————BM25+BERT句子相似度

    一 建立FAQ库 一个问题三个形式 xff0c 数据增强之后问题和答案一一对应 xff0c 19MB的ask txt xff0c 答案保存在answer0 424中 xff0c 每个文件1000个回答 节省处理时间 二 BM25初始化 目的
  • 摄星智能电话面试题

    1 NER中的维度变换 xff0c BiLSTM中的层之间变换 43 CRF的输入输出原理 xff0c 维特比解码 xff1b https zhuanlan zhihu com p 97676647 https blog csdn net
  • 七月在线NLP笔试面试题知识点记录

    1 Levenshtein https www jb51 net article 98449 htm 2 LDA主题模型 https blog csdn net v july v article details 41209515 3 Les

随机推荐