当前位置: 首页 > article >正文

ROS melodic 安装 python3 cv_bridge

有时候,我们需要处理这些兼容性问题。此处列举我的过程,以供参考

mkdir -p my_ws_py39/src
cd my_ws_py39
catkin_make_isolated-DPYTHON_EXECUTABLE=/usr/bin/python3 \-DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so

catkin_make_isolated allows per-package customization,和常见的 catkin_make 在这里区别不大。很多教程都推荐加上 --install,我这里没有,因为失败了,原因在下面。

其中,三个 命令行标识需要更改为你自己的环境路径,你可以通过

python3 -c "import sysconfig; print(sysconfig.get_path('include'))"
python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))"

来找到后两个。至于第一个,因为我在 miniconda下,可以通过指令

conda env list

查看。若是 linux,可以使用指令:

which python

显示当前 激活的(actived) python环境。在编译成功后,刷新当前环境,执行指令

source my_ws_py39/devel_ioslated/setup.bash

注意路径。此处我处于 ~路径下。

然后,将 vision_opencv-melodic.zip 文件夹放在 my_ws_py39/src目录下,并解压。此处更通用的做法是通过 git 指令进行 clone。我不想花时间在 git 配置上,直接以 zip的形式下载。

再重新走一遍 上述的 catkin_make_isolated指令,带上必要的命令行选项。

若成功,进行测试。

rospack find cv_bridge

查看文件路径。

第二份测试方式,先在一个终端中执行 roscore,启动 rosmaster。再在另一个终端中运行下述脚本,保证它能够运行在 ros 网络中。记得 通过指令 

chmod +x test_cv_bridge.py

 给脚本权限。此处,我假设脚本名为 test_cv_bridge.py

#!/usr/bin/env python
import rospy
from cv_bridge import CvBridge
import cv2if __name__ == '__main__':rospy.init_node('cv_bridge_test')bridge = CvBridge()# 创建一个空白图像用于测试import numpy as npimg = np.zeros((100,100,3), dtype=np.uint8)try:# 将 OpenCV 格式转换为 ROS 图像消息img_msg = bridge.cv2_to_imgmsg(img, encoding="bgr8")rospy.loginfo("cv_bridge 工作正常!")except Exception as e:rospy.logerr("cv_bridge 测试失败: %s", e)

Addition

我实际执行的语句

# 系统级的安装
sudo apt-get install ros-melodic-cv-bridge ros-melodic-image-geometry
sudo apt-get install python3-dev# 虚拟环境中的安装
pip install rospkg catkin_pkg# 实际使用的编译指令
catkin_make_isolated   -DPYTHON_EXECUTABLE=/home/ncut/miniconda3/envs/tf/bin/python3.9   -DPYTHON_INCLUDE_DIR=/home/ncut/miniconda3/envs/tf/include/python3.9
source devel_isolated/setup.bash# 将 melodic 版本的package放入 /src目录下后执行
catkin_make_isolated   -DPYTHON_EXECUTABLE=/home/ncut/miniconda3/envs/tf/bin/python3.9   -DPYTHON_INCLUDE_DIR=/home/ncut/miniconda3/envs/tf/include/python3.9
source devel_isolated/setup.bash#记得在 编译后执行 source 刷新

--install失败的原因。

这里是log,方便查看:

error: option --install-layout not recognized
CMake Error at catkin_generated/safe_execute_install.cmake:4 (message):
execute_process(.../catkin_generated/python_distutils_install.sh)
returned error code

查了资料,因为 cv_bridgesetup.py(或 CMakeLists.txt)中的 --install-layout 选项在 Python 3 下不被识别。

为什么分两次编译

第一次编译是为了 创建这个工作空间,然后通过 source 指令刷新该工作空间。这样,后面的编译操作,都会找到该工作空间中的信息,也即,它会使用python3。

第二次编译则是为了编译 cv_bridge。即我们真正的目的。

所以第一次编译是 必要的 preprocess,预处理。

相关文章:

ROS melodic 安装 python3 cv_bridge

有时候,我们需要处理这些兼容性问题。此处列举我的过程,以供参考 mkdir -p my_ws_py39/src cd my_ws_py39 catkin_make_isolated-DPYTHON_EXECUTABLE/usr/bin/python3 \-DPYTHON_INCLUDE_DIR/usr/include/python3.8 \-DPYTHON_LIBRARY/usr/lib/x86_64-l…...

SHELL练习01

判断一个数是奇数还是偶数 要求: 编写一个 Shell 脚本,用户输入一个整数,判断该数是奇数还是偶数,并输出结果。 [rootnode test01]# touch Determine parity.sh [rootnode test01]# vim Determine parity.sh 还有 2 个文件等待…...

PRODIGY: “不折腾人”的蛋白-蛋白/蛋白-小分子结合能计算工具

PRODIGY(全称为 PROtein binDIng enerGY prediction)是一种蛋白质结合能预测工具,可利用蛋白质-蛋白质复合物的三维结构来预测其结合亲和力。PRODIGY 利用一种高效的基于接触的方法,在估计结合自由能和解离常数的同时,…...

C++之 【模板初阶(函数模板与类模板)】

目录 1.泛型编程 2.模板 3函数模板 3.1函数模板的概念 3.2函数模板的格式 3.3函数模板的原理 3.4函数模板的实例化 3.4.1隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 3.4.2显示实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 3.…...

博弈论中的均衡精炼:完美贝叶斯均衡、序贯均衡与颤抖手均衡详解

博弈论中的均衡精炼&#xff1a;完美贝叶斯均衡、序贯均衡与颤抖手均衡详解 1. 引言&#xff1a;为什么需要均衡精炼&#xff1f; 在博弈论中&#xff0c;纳什均衡是分析策略互动的核心工具&#xff0c;但其存在一个显著缺陷&#xff1a;无法排除不合理的均衡。例如&#xff0…...

在线教育网站项目第四步:deepseek骗我, WSL2不能创建两个独立的Ubuntu,但我们能实现实例互访及外部访问

一、说明 上一章折腾了半天&#xff0c;搞出不少问题&#xff0c;今天我们在deepseek的帮助下&#xff0c;完成多个独立ubuntu24.04实例的安装&#xff0c;并完成固定ip&#xff0c;实践证明&#xff0c;deepseek不靠谱&#xff0c;浪费我2个小时时间&#xff0c;我们将在下面实…...

在刀刃上发力:如何精准把握计划关键节点

关键路径分析是项目管理中的一种重要方法&#xff0c;它通过在甘特图中识别出项目中最长、最关键的路径&#xff0c;来确定项目的最短完成时间。 关键路径上的任务都是项目成功的关键因素&#xff0c;任何延误都可能导致整个项目的延期。关键路径分析对于项目管理者来说至关重要…...

组合总和||

1.给定一个数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 #include <bits/stdc.h> using namespace std; vector<vector<int>> result; vec…...

OpenCV图像拼接(2)基于羽化(feathering)技术的图像融合算法拼接类cv::detail::FeatherBlender

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::FeatherBlender 是 OpenCV 中用于图像拼接的一个类&#xff0c;它属于 stitching 模块的一部分。这个类实现了基于羽化&#xff08;…...

MediaPipe软件包如何构建和安装

MediaPipe 是一个由 Google 开发的多媒体机器学习框架&#xff0c;支持多种平台&#xff08;如 Android、iOS、桌面等&#xff09;。以下是构建和安装 MediaPipe 的步骤&#xff1a; 1. 环境准备 确保系统满足以下要求&#xff1a; 操作系统: Ubuntu (推荐 18.04 或 20.04)、…...

分享下web3j 常见用法

转账 fun sendEthTransaction(privateKey: String,toAddress: String,amount: BigDecimal) {//chainIdval chainId:Long 1//url 可以从https://chainlist.org/里面获取可用节点//eth转账&#xff0c;bnb同理&#xff0c;但需发送到bnb对应节点val url "https://xxx"…...

连接chatgpt的桌面语音助手

要创建一个连接到 ChatGPT 的桌面语音助手&#xff0c;可以使用 Python 编写一个程序来实现语音识别、与 ChatGPT API 交互以及语音合成的功能。以下是一个完整的解决方案和技术实现步骤&#xff1a; 所需工具和库 语音识别 使用 speech_recognition 库捕获用户的语音输入。需要…...

systemctl restart 和 systemctl reload 和 systemctl daemon-reload 对比 笔记250322

systemctl restart 和 systemctl reload 和 systemctl daemon-reload 对比 以下是 systemctl restart、systemctl reload 和 systemctl daemon-reload 的对比总结&#xff1a; 命令作用对象行为适用场景对服务的影响systemctl restart 服务名具体服务强制停止服务&#xff0c…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例9,TableView15_09带排序的导出表格示例

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

spring boot 登入权限RBAC模式

首先准备好5张表 user_info表&#xff0c;用户的信息表 role表&#xff0c;角色表&#xff08;比如超级管理员、管理员、审核员、采购......&#xff09; 创建user_role表&#xff0c;user_info表&#xff0c;role表的中间表 注意了&#xff0c;role_id和user_id是 u…...

调用API拿到的值——存储方式

1.响应结果示例&#xff1a; "purposeTagList":["稳中向好及进中提质"] 2.数据库中定义的 3.值的获取&#xff1a; F1 JsonNode purposeTagListNode dataNode.path("purposeTagList");if (purposeTagListNode.isArray()) {StringBuilder purp…...

【用 Trace读源码】PlanAgent 执行流程

前提条件 在 Trae 中打开 OpenManus 工程&#xff0c;使用 build 模式&#xff0c;模型选择 claude-sonnet-3.7 提示词 分析 agent/planning.py 中 main 方法及相关类的执行流程&#xff0c;以流程图的方式展示PlanningAgent 执行流程图 以下流程图展示了 PlanningAgent 类…...

第一讲 | 解锁C++编程能力:基础语法解析

C入门基础 一、C的第一个程序二、命名空间三、C输入&输出四、缺省参数/默认参数五、函数重载六、引用1.引用的特性2.引用的使用引用做返回值场景 3.const引用只有指针和引用涉及权限放大、缩小的问题&#xff0c;普通变量没有 4.指针和引用的关系 七、inline八、nullptr 一…...

LeetCode 热题 100_划分字母区间(80_763_中等_C++)(贪心算法(求并集))

LeetCode 热题 100_划分字母区间&#xff08;80_763&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;贪心算法(求交集)&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;贪心算法(求…...

C++ --- 多态

1 多态的概念 多态(polymorphism)的概念&#xff1a;通俗来说&#xff0c;就是多种形态。多态分为编译时多态(静态多态)和运⾏时多 态(动态多态)&#xff0c;这⾥我们重点讲运⾏时多态&#xff0c;编译时多态(静态多态)和运⾏时多态(动态多态)。编译时 多态(静态多态)主要就是我…...

HAL库中使用空闲中断+DMA接收数据,接收失败的问题

问题&#xff1a; 串口屏与单片机通过串口&#xff08;USART1&#xff09;进行通信&#xff0c;调试时发现问题&#xff0c;现象如下&#xff1a; 手动页面的几个文本&#xff0c;输入的数字不会显示出来&#xff0c;比如初始值为0&#xff0c;输入200&#xff0c;200会一闪而…...

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...

【Scrapy】Scrapy教程8——处理子链接

通过前面几篇文章,已经了解了如何去爬取网页内容并存储到数据库,但是目前只是存储了一个页面的内容,现在想要获取每篇文章链接内的文章内容,我们来看看怎么获取。 生成新请求 首先我们肯定要先拿到链接,所以第一步都获取文章标题和链接肯定少不了,然后再爬取获取到到子…...

使用pycel将Excel移植到Python

1.适用需求 有些工作可能长期适用excel来进行公式计算&#xff0c;当需要把工作流程转换为可视化界面时&#xff0c;开发人员不懂专业逻辑&#xff0c;手动摸索公式很大可能出错&#xff0c;而且费时费力 2.可用工具及缺点 pandas 方便进行数据处理&#xff0c;支持各种格…...

学习应用层

应用层概述 客户/服务器方式&#xff08;C/S&#xff09;和对等方式&#xff08;P2P&#xff09; 动态主机配置协议DHCP 客户/服务器方式 DHCP报文会被封装成为UDP用户数据报&#xff0c;DHCP服务器端口号是UDP67&#xff0c;用户是UDP68。 广播发送&#xff0c;是因为并不知道…...

Doris官网上没有的一些Fe参数了,都在源码中

一、FE配置源码 apache-doris-src\fe\fe-common\src\main\java\org\apache\doris\common\Config.java 二、BE配置源码 apache-doris-src\be\src\common\config.cpp 三、FE源码 package org.apache.doris.common;public class Config extends ConfigBase {ConfField(descri…...

蓝桥杯算法精讲:二分查找实战与变种解析

适合人群&#xff1a;蓝桥杯备考生 | 算法竞赛入门者 | 二分查找进阶学习者 目录 一、二分查找核心要点 1. 算法思想 2. 适用条件 3. 算法模板 二、蓝桥杯真题实战 例题1&#xff1a;分巧克力&#xff08;蓝桥杯2017省赛&#xff09; 例题2&#xff1a;砍竹子&#xff0…...

C++脚本化方案调研

1 什么是脚本化 脚本化&#xff08;Scripting&#xff09;是指将脚本语言嵌入到主程序&#xff08;C等编译型语言&#xff09;中&#xff0c;通过以下方式扩展程序能力&#xff1a; 动态逻辑控制&#xff1a;通过脚本实现运行时逻辑调整&#xff0c;无需重新编译主程序&#x…...

蓝桥杯(N皇后问题)------回溯法

题目描述 在 NN 的方格棋盘放置了 N 个皇后&#xff0c;使得它们不相互攻击&#xff08;即任意 2 个皇后不允许处在同一排&#xff0c;同一列&#xff0c;也不允许处在与棋盘边框成 45 角的斜线上。你的任务是&#xff0c;对于给定的 N&#xff0c;求出有多少种合法的放置方法…...

再探C语言(1)

温馨提示&#xff1a; 学C语言就像玩《掘地求升》——你以为懂了语法就能通关&#xff1f; 不&#xff01;编译器会用铁锤教你做人&#xff01;(╯‵□′)╯︵┻━┻ &#x1f431;Part 1&#xff1a;sizeofの跨平台迷惑行为 Q1. 不同环境下sizeof(int)的结果 运行环境结果&a…...