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

ros2简单的案例,一个节点采集图片,一个节点推理

先说一下为什么要学ros2首先他的通信非常快,而且可以多语言编程。比如说如果要采集一张然后多个模型推理然后结果汇总如果就单纯的用python的多线程多进程不仅速度慢各种损耗gil限制而且多进程多了管理起来比较复杂并且ipc开销高速度也不是很快。如果使用c如果模型中还要加几个大模型各种算子没有要自己写如果采用部分模型c推理部分模型python推理然后http通信但是这样实时性又不好。采用ros2可以就可以非常好的解决这些问题cpython多语言编程且通信速度非常快。没有ros2环境需要根据系统版本安装对应的ros2.# 安装 cv_bridge sudo apt install ros-jazzy-cv-bridge # 安装 OpenCV Python 包推荐使用 pip 获取最新版本 pip install opencv-python1创建工作空间mkdir -p ~/ros2_ws/src cd ~/ros2_ws2, 创建python包包名我们取为my_camera_pkgcd src ros2 pkg create --build-type ament_python my_camera_pkg --dependencies rclpy sensor_msgs cv_bridge参数说明--build-type ament_pythonpython包。--dependencies自动在package.xml和setup.py中添加依赖。3编辑节点代码进入包目录cd my_camera_pkg/my_camera_pkg创建两个python文件1camera_publisher.py (采集节点import rclpy from rclpy.node import Node from sensor_msgs.msg import Image import cv2 from cv_bridge import CvBridge class CameraPublisher(Node): def __init__(self): super().__init__(camera_publisher) self.publisher_ self.create_publisher(Image, /camera/image_raw, 10) self.timer self.create_timer(1.0 / 30, self.timer_callback) # 30 Hz self.cap cv2.VideoCapture(0) if not self.cap.isOpened(): self.get_logger().error(Cannot open camera) raise RuntimeError(Camera open failed) self.bridge CvBridge() self.get_logger().info(Camera publisher started) def timer_callback(self): ret, frame self.cap.read() if ret: msg self.bridge.cv2_to_imgmsg(frame, encodingbgr8) self.publisher_.publish(msg) else: self.get_logger().warn(Failed to capture frame) def destroy_node(self): self.cap.release() super().destroy_node() def main(argsNone): rclpy.init(argsargs) node CameraPublisher() try: rclpy.spin(node) except KeyboardInterrupt: pass finally: node.destroy_node() rclpy.shutdown() if __name__ __main__: main()2canny_subscriber.py推理节点,为了减少搭建环境的工作量我这里不使用yolo,用canny算子来演示。import rclpy from rclpy.node import Node from sensor_msgs.msg import Image import cv2 from cv_bridge import CvBridge class CannySubscriber(Node): def __init__(self): super().__init__(canny_subscriber) self.subscription self.create_subscription( Image, /camera/image_raw, self.image_callback, 10) self.bridge CvBridge() # 创建显示窗口 cv2.namedWindow(Canny Edge, cv2.WINDOW_NORMAL) self.get_logger().info(Canny subscriber started) def image_callback(self, msg): try: cv_image self.bridge.imgmsg_to_cv2(msg, desired_encodingbgr8) except Exception as e: self.get_logger().error(fcv_bridge error: {e}) return # 转为灰度图 gray cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY) # Canny 边缘检测 edges cv2.Canny(gray, 50, 150) # 显示结果 cv2.imshow(Canny Edge, edges) cv2.waitKey(1) def destroy_node(self): cv2.destroyAllWindows() super().destroy_node() def main(argsNone): rclpy.init(argsargs) node CannySubscriber() try: rclpy.spin(node) except KeyboardInterrupt: pass finally: node.destroy_node() rclpy.shutdown() if __name__ __main__: main()4 添加可执行权限chmod x camera_publisher.py canny_subscriber.py4. 配置包信息在~/ros2_ws/src/my_camera_pkg/setup.py中找到entry_points部分。修改成entry_points{ console_scripts: [ camera_publisher my_camera_pkg.camera_publisher:main, canny_subscriber my_camera_pkg.canny_subscriber:main, ], },5. 编译工作空间#回到工作空间根目录 cd ~/ros2_ws # 编译 colcon build --packages-select my_camera_pkg source install/setup.bash #运行采集节点代码 source ~/workspaces/ros2_ws/install/setup.bash ros2 run my_camera_pkg camera_publisher6运行推理节点代码source ~/workspaces/ros2_ws/install/setup.bash ros2 run my_camera_pkg canny_subscriber7结果

相关文章:

ros2简单的案例,一个节点采集图片,一个节点推理

先说一下为什么要学ros2,:首先他的通信非常快,而且可以多语言编程。比如说,如果要采集一张,然后多个模型推理,然后结果汇总,如果就单纯的用python的多线程,多进程,不仅速度慢&#x…...

QClaw 使用教程 亲测体验:腾讯亲儿子版“龙虾”,微信一句话就能远程操控电脑!(附完整截图+0门槛部署)

大家好,我是 BUG猿,专注 AI 大模型本地部署、省钱白嫖、实用工具踩坑的程序员。最近腾讯电脑管家悄然放出了 QClaw(官方定位:随时随地,微信一下,QClaw帮你高效干活),直接把火爆的开源…...

2026年必看!水浸传感器选购避坑指南,守护家庭安全

在2026年的今天,随着智能家居与工业自动化程度的不断加深,水浸传感器作为预防泄漏风险的第一道防线,其重要性日益凸显。无论是家庭中的地下室、厨房、阳台,还是数据中心、精密厂房等关键设施,一次未被及时发现的水浸事…...

一个例子快速搞懂净现值(NPV)

场景你现在要开一个小项目:今天立刻投:1000 元1 年后能收回:1200 元银行利率(折现率):5%问:这个项目到底赚不赚?值不值得做?我们来算 净现值 NPV。第一步:先算…...

win11配置java环境变量_主要是位置不好找啊_win7_win10好找---AI大模型应用探索0006

在设定画面,设置画面找到,这个可以看到有个系统详细设置可以看到有个环境变量,打开然后找到系统变量,然后:配置 CLASSPATH%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar然后再去配置:JAVA_HOMED:\2026…...

毕设程序java在线作业管理系统 基于Java的智能化作业提交与评阅平台 Java驱动的数字化课业管理与交互系统

毕设程序java在线作业管理系统6u09wm4d (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着教育信息化进程的不断深入,传统纸质作业管理模式已难以满足现代教学的多元…...

Day50:2026年3月18日打卡

一、上机打卡1.1 回形取数1.1.1 题目回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入说明:输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接…...

K6性能测试及生成Html压测报告

一、引言: k6是一款开源负载测试工具,由Grafana Labs开发维护,专注于现代云环境和微服务架构 的高并发压测。它采用Go语言编写,使用JavaScript(ES6)作为脚本语言。还提到它特别适合CI/CD集成和自动化性能测试。 二、下载安装&am…...

低空运行技术研究报告

检索日期:2026-03-18 检索范围:SCI/EI/中文核心期刊/行业报告/预印本【研究进展】 一、代表性最新研究成果 1. 《A Survey of Security Challenges and Solutions for UAS Traffic Management (UTM) and small Unmanned Aerial Systems (sUAS)》 来源&am…...

面试必杀技:彻底搞懂 JVM 内存模型与区域划分(上篇)

在 Java 面试中,JVM(Java 虚拟机)是区分中高级开发者的分水岭。很多同学对 JVM 感到恐惧,觉得它只是一堆干巴巴的概念。其实,只要把它当成一个“虚拟的操作系统”,一切就豁然开朗了。 本系列将分为上、中、…...

从“亡羊补牢”到“规则先行”:金仓数据库的主动防御之道

在数字化转型的浪潮中,数据已成为企业的核心资产。然而,SQL注入攻击如同潜伏在阴影中的“不速之客”,时刻威胁着数据库的安全。即使开发团队严守预编译、输入过滤等防线,遗留代码、第三方组件的漏洞或人为疏忽仍可能给攻击者可乘之…...

四六级 | 2026年英语四六级视频课程

2026上半年四六级笔试/口试时间已定 📌 考试时间 ▪ 笔试:6月13日 ▪ 口试:5月23日—5月24日 📌 准考证打印 ▪ 口试准考证:5月19日 9:00起 ▪ 笔试准考证:6月5日 9:00起 四六级 | 2026年英语四六级视…...

OpenClaw Windows 10 WSL2 安装与配置指南+飞书接入(使用腾讯云Coding Plan)

文章目录基础环境第一阶段:安装 WSL2 环境1.1 开启 WSL21.2 迁移 WSL2 到非 C 盘(推荐)1.3 启用 systemd1.4 WSL 固定 DNS1.4.1 关闭 WSL 自动生成 DNS1.4.2 删除 systemd 生成的 resolv.conf1.4.3 创建新的静态 DNS 文件1.4.4 重启 WSL1.4.5…...

20260318_203310_AI大模型之RAG(向量库milvus实现)

介绍概念:RAG 检索增强生成Retrieval-Augmented Generation 打个比方 普通 AI:像闭卷考试,只会脑子里记的东西,容易记错、过时。 RAG AI:像开卷考试,先去翻你给的课本 / 文档,找到相关内容&am…...

固定资产清查别敷衍!账实对不上、资产流失,全是清查没做细

说起企业资产管理,很多人盯着折旧核算,却忽略了最基础的固定资产清查。这项工作看似繁琐,却是堵住资产流失、校准财务数据、规避税务与内控风险的关键一步,不管是中小企业还是大型公司,定期做规范清查,才能…...

选艺术字体AI工具这件事,别只盯出图快慢

在日常门店运营中,活动海报的艺术字体设计需要兼顾效率和后续修改空间。最近一次促销活动,首版物料我选择了千图的AI艺术字体工具,主要看重其AI海报可编辑和同款生成功能——能够让AI先产出风格方向,再进一步用其抠图、放大、消除…...

Edge浏览器 about:blank 问题修复

打开新标签出现 about:blank 空页面 修改-> 修复 Get-AppxPackage MicrosoftEdge | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "(_.InstallLocation)\AppXManifest.xml"}命令含义解析 这段PowerShell命令的核心作用是重新注册/修复微软Edge…...

根据ai创建校园管理系统——MySQL数据库设计与建立

native效果展示一.DDL语句-- -- 校园二手交易系统 - DDL数据定义语句 -- -- 1. 初始化设置 SET FOREIGN_KEY_CHECKS 0; -- 临时关闭外键检查,避免删表报错 SET NAMES utf8mb4;-- 2. 创建并使用数据库 CREATE DATABASE IF NOT EXISTS campus_second_hand_trade D…...

应用数学新时代的到来

以下内容转载自微信公众号“数学家”,仅作分享 原文链接:https://mp.weixin.qq.com/s/qbnHosCL13TaPSQ9DRih5w 鄂维南,1963年9月生于江苏省靖江市,数学家,中国科学院院士,北京大学、普林斯顿大学教授、北京…...

把AIGC率降到个位数有多爽?2026十款主流免费降AI工具天花板实测

自从2024年各大高校引入AI检测系统后,无数学生陷入了"AI降AI"的死循环:用AI写论文效率高,但查出来就完蛋;手写太慢,赶不上ddl。于是,降低ai率成了比查重更棘手的难题。今天这篇文章,我…...

第6篇:中文语言 学会华夏本源语言能做什么?

第6篇:学会华夏本源语言能做什么? 作者: 大号:华夏之光永存(道级解读) 小号:华夏之光永存小号(术级解读) 核心简介: 道:领域永恒不变的本质规律…...

HTML学习日记——DAY01(基本标签)

今天我正式步入web开发中的html的学习了&#xff0c;今天主要针对HTML的基本标签展开了学习&#xff1a;1.HTML初始的一个标签组成&#xff1a;<!--声明当前文档的类型是html--> <!DOCTYPE html> <!--设置网页语言--> <html lang"en"> <!…...

港中文大学发布PIRA-Bench:AI助手告别被动等待

这项由香港中文大学多媒体实验室、南开大学和华为研究院联合完成的突破性研究发表于2026年3月&#xff0c;论文编号为arXiv:2603.08013v1&#xff0c;标志着人工智能助手从被动响应向主动预测的重大转变。当前的图形用户界面智能助手就像一个严格按指令工作的管家。每当你想让它…...

2026省选联考游记

分数481512150090。 Day1 首先&#xff0c;先花了1个小时时间想出了T1的一个n^3写法&#xff0c;然后&#xff0c;耗时2 ~ 3小时写出该做法&#xff0c;试图用FFT或NTT优化&#xff0c;但忘了FFT如何打&#xff0c;于是花0.5 ~ 1小时写出后两题暴力&#xff0c;然后剩余时间未想…...

02 python阶段大纲介绍

环境搭建安装python解释器 目的 解释python代码&#xff0c;例如print(“hello world”)版本 3.8x及以上版本安装Anaconda数据科学家 pythons解释器python库安装IDE工具 Pycharm , 版本必2023.x及以上基础语法 函数容器类型相关文件操作相关异常处理扩展—递归包和模块 项目 综…...

rchtxchs.dll文件丢失找不到 免费下载修复方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

2025 CCF 非专业级软件能力认证 解析

拼数题目描述小 R 正在学习字符串处理。小 X 给了小 R 一个字符串 s&#xff0c;其中 s 仅包含小写英文 字母及数字&#xff0c;且包. 含. 至. 少. 一. 个. 1 ∼ 9 中. 的. 数. 字. 。小 X 希望小 R 使用 s 中的任. 意. 多. 个. 数 字&#xff0c;按任. 意. 顺. 序. 拼成一个正…...

算法设计与分析-习题9.4

目录 1. a.对于下面的数据构造一套哈夫曼编码&#xff1a; b.用a中的编码对文本ABACABAD进行编码。 c.对于 100010111001010用a中的编码进行解码。 2.出于数据传输的目的&#xff0c;我们常常需要一套码长差异最小的编码(在具有相同平均长度的编码中)。针对以下数据构造哈…...

金仓数据库在文档型数据迁移中的实践复盘:从MongoDB协议兼容到政务系统平滑替换

金仓数据库在文档型数据迁移中的实践复盘&#xff1a;从MongoDB协议兼容到政务系统平滑替换 凌晨2:17&#xff0c;监控告警再次触发——电子证照系统“亮证查询”接口响应超时率突破8%&#xff0c;MongoDB从库CPU使用率持续高于95%&#xff0c;慢查询日志中频繁出现多层嵌套的…...

一天一个开源项目(第54篇):Supabase - 开源的 Postgres 开发平台,Firebase 替代方案

引言 “The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.” 这是「一天一个开源项目」系列的第 54 篇文章。今天介绍的项目是 Supabase&#xff08;GitHub&#xff09;。 想用 Firebas…...