ROS2 中的分布式系统

news2024/11/16 17:46:30

一、说明

         当您运行 ROS2 应用程序时,通常需要在不同机器的不同位置运行 ROS2 节点。由于 ROS2 在抽象的 DDS 层中使用节点之间的通信,因此我们可以非常轻松地安排通信。
为了充分理解 ROS2 的架构,我建议您熟悉本文。

        出于本文的目的,我传达了Nvidia Jetson Xavier和我的PC。两个单元都运行ROS2狐狸。我将RGB相机连接到Jetso并运行了一个发布商(C++或Python)。PC 运行订阅者(C++ 或 Python)订阅主题并显示视频流。

        源代码可以在GitHub上找到。

二、体系结构可以描述 

分布式 ROS2 节点

        下面我包括 ROS2 命令,用于根据上图运行您的应用程序。应用程序可以在同一台计算机或其他配置上运行,而无需更改。

        然而,最重要的是运行应用程序(发布者 — 同一ROS_DOMAIN_ID上的订阅者。为了对齐,您必须导出相同的ID。

//check the ROS environment (both on publisher and subscriber)

env | grep ROS

// you should recive similar

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DOMAIN_ID=5
ROS_LOCALHOST_ONLY=0
ROS_DISTRO=foxy

// as you can see I adjhsted DOMAIN to 5

//run 

export ROS_DOMAIN_ID=5

        如果在C++中运行应用程序,

mkdir -p open_dev_ws/src
cd open_dev_ws/src

//created ROS package
ros2 pkg create dev_opencv --dependencies rclcpp std_msgs sensor_msgs cv_bridge image_transport OpenCV

三、修改 CMakeList.txt      

        修改你的CMakeList.txt(另请参阅我的Github)。在这里,我显示CMakeList.txt以构建发布者和订阅者。您必须选择您的机器类型。

add_executable(pub_cam src/pub_cam.cpp)
ament_target_dependencies(pub_cam rclcpp std_msgs sensor_msgs cv_bridge image_transport OpenCV)

add_executable(sub_cam src/sub_cam.cpp)
ament_target_dependencies(sub_cam rclcpp std_msgs sensor_msgs cv_bridge image_transport OpenCV)

install(TARGETS
   pub_cam
   sub_cam
   DESTINATION lib/${PROJECT_NAME}
 )

四、修改源码

将pub_cam.cpp和sub_cam.cpp(从我的存储库)复制到 /dev_opencv/src。

cd open_dev_ws
colcon build
source ./install/setup.bash

// for publiser run
 ros2 run dev_opencv pub_cam

// for subscriber
 ros2 run dev_opencv sub_cam

如果你在 Python 中运行你的应用程序,

mkdir -p /dev_opencv_py/src
cd dev_opencv_py/src


//create ROS package
ros2 pkg create --build-type ament_python dev_opencv_py --dependencies rclpy image_transport cv_bridge sensor_msgs std_msgs opencv2

复制 Python 脚本以dev_opencv_py和修改 setup.py,

    entry_points={
        'console_scripts': [
          'cam_pub = opencv_tools.cam_pub:main',
          'cam_sub = opencv_tools.cam_sub:main',
        ],
    },

五、修改在包中.xml更改

from
<depend>opencv2</depend>
to  
<depend>opencv-python</depend>

六、运行以下命令 

cd dev_open_py
colcon build
source ./install/setup.bash

// for publiser run
 ros2 run dev_opencv_py cam_pub

// for subscriber
 ros2 run dev_opencv_py cam_sub

七、后记

通过以上修改,系统执行正常。OK,感谢您的阅读。马库斯·布赫霍尔茨

·

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/908870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 计算生肖,java Data中获取年,根据生日日期获取生肖注解,根据输入时间获取生肖,自定义注解的方式获取生肖 根据年份时间获取十二生肖

最近&#xff0c;开发中需要增加生肖&#xff0c;但是不想增加字段&#xff0c;于是通过注解的方式&#xff0c;实现生日与生肖的转换。 话不多说&#xff0c;直接上代码&#xff0c;如下&#xff1a; 实体类中的字段&#xff0c;添加自定义注解&#xff08;ToChineseZodiacSe…

各地区-不同行业-就业、失业、工资144个指标(1990-2021年)

一、数据介绍 数据名称&#xff1a;各地区-不同行业-就业、失业、工资144个指标 数据年份&#xff1a;1990-2021年&#xff08;1990-2007缺失较多&#xff09; 数据样本&#xff1a;994条 数据整理&#xff1a;自主整理 二、参考文献 [1]戚聿东,刘翠花,丁述磊.数字经济发展…

数据库系统课设——基于python+pyqt5+mysql的酒店管理系统(可直接运行)--GUI编程

几个月之前写的一个项目&#xff0c;通过这个项目&#xff0c;你能学到关于数据库的触发器知识&#xff0c;python的基本语法&#xff0c;python一些第三方库的使用&#xff0c;包括python如何将前后端连接起来&#xff08;界面和数据&#xff09;&#xff0c;还有界面的设计等…

Python OCR 使用easyocr库将图片中的文章提取出来

Python OCR 使用easyocr库将图片中的文章提取出来 初环境内容步骤一&#xff1a;安装easyocr库步骤二&#xff1a;导入必要的库步骤三&#xff1a;创建OCR阅读器对象步骤四&#xff1a;指定要识别的图片路径步骤五&#xff1a;执行OCR识别并提取文章内容步骤六&#xff1a;遍历…

vscode如何关闭受限模式

受限模式旨在实现安全地浏览代码 第一步&#xff1a; 第二步&#xff1a;输入trust,找到Security.workspace.trust,取消勾选 第三步&#xff1a; 重启vscode.

企业都在用的热门客服系统

客户服务是现如今企业抢占市场的重要因素。客户越来越重视企业服务&#xff0c;而优质的客户服务也会为企业带来正向且长期的收益。而市场上这么多客户服务系统哪个好用&#xff1f; 企业选购好用的客户服务系统的时候要注意以下几点&#xff1a; 一、选购注意事项&#xff1…

TheGem主题 - 创意多用途和高性能WooCommerce WordPress主题/网站

TheGem主题概述 – 适合所有人的TheGem 作为设计元素、样式和功能的终极 Web 构建工具箱而设计和开发&#xff0c;TheGem主题将帮助您在几分钟内构建一个令人印象深刻的高性能网站&#xff0c;而无需触及一行代码。不要在编码上浪费时间&#xff0c;探索你的创造力&#xff01…

Python“牵手”1688商品详情数据采集方法,1688API申请步骤说明

1688平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范。 1688API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问1688平台的数据&#xff0c;包括商品信息、店铺信息、物流信息&#xff0c;评论数据&#xff0c;店铺订…

rtmp直播

技术要求&#xff1a;nginxnginx-rtmpffmpegVLC 跟着大佬走的&#xff1a; 传送门 准备工作&#xff1a; 首先需要一台公网ip的服务器 这是使用天翼云的弹性云主机&#xff1a;免费试用1个月 天翼云官网 点击关机&#xff0c;更多里面选择重置密码&#xff0c; 默认用户名为…

EMQ 成功通过 SOC 2 Type I 认证,为全球客户的数据安全保驾护航

近日,EMQ 正式地通过了国际权威鉴证标准 SOC 2 审计,并荣获国际四大会计师事务所之一颁发的 SOC 2 Type I 鉴证报告,这使其成为全球物联网 MQTT 消息服务的安全践行者。此次认证进一步证实,EMQ 为其旗下的全托管 MQTT 消息云服务 EMQX Cloud 以及企业级 MQTT 物联网接入平台 EM…

老师如何制作电子成绩单?

随着科技的不断进步&#xff0c;电子成绩单已经成为现代教育管理的一项重要工具。相较于传统的纸质成绩单&#xff0c;易查分电子成绩单具有方便快捷等各种优势&#xff0c;为学生、家长和学校带来了诸多便利。这篇文章就给大家介绍易查分电子成绩单的制作与操作步骤。 一、电子…

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测 目录 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.BWO-TCN-Attention数据分类预测程序&#xff1b; 2.无Attention适用于MATLAB 2022b版及以上版本&#xf…

基于微信小程序的图书管理系统ljr9i

对图书管理的流程进行科学整理、归纳和功能的精简&#xff0c;通过软件工程的研究方法&#xff0c;结合当下流行的互联网技术&#xff0c;最终设计并实现了一个简单、易操作的图书管理小程序。内容包括系统的设计思路、系统模块和实现方法。系统使用过程主要涉及到管理员和用户…

供应链 | 大数据报童模型:基于机器学习的实践见解

论文解读&#xff1a;李欣 马玺渊 作者&#xff1a;Gah-Yi Ban, Cynthia Rudin 引用&#xff1a;Ban, Gah-Yi and Cynthia Rudin. The big data newsvendor: Practical insights from machine learning. Operations Research 67.1 (2019): 90-108. 文章链接&#xff1a;https…

零阶矩、一阶矩、二阶矩、…

数学中矩的概念来自物理学。在物理学中&#xff0c;矩是表示距离和物理量乘积的物理量&#xff0c;表征物体的空间分布。矩在统计学和图像中都有很重要作用&#xff0c;我们常用的Adam优化器其全称为自适应矩估计优化器。本文将介绍各阶矩的理解和不同场景的应用。 Key Words&a…

【初体验】使用微信开发工具

1.设置合法域名 2.微信登录用户信息获取 如果要求登录后&#xff0c;无法显示用户信息 则应该修改一下【调试基础库】 3.获取用户登录的openid index/index.wxml <view><button type"warn" bindtap"wxLogin">微信登录</button>授权码&…

记录一个用C#实现的windows计时执行任务的服务

记录一个用C#实现的windows计时执行任务的服务 这个服务实现的功能是每天下午六点统计一次指定路径的文件夹大小 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using Syst…

日撸代码300行:第66-68天(主动学习之 ALEC)

代码来自闵老师”日撸 Java 三百行&#xff08;61-70天&#xff09; 日撸 Java 三百行&#xff08;61-70天&#xff0c;决策树与集成学习&#xff09;_闵帆的博客-CSDN博客 本次代码的实现是基于高斯密度&#xff0c;ALEC算法原文是基于密度峰值&#xff0c;同样是基于密度聚类…

HTTPS 握手过程

HTTPS 握手过程 HTTP 通信的缺点 通信使用明文&#xff0c;内容可能被窃听(重要密码泄露)不验证通信方身份&#xff0c;有可能遭遇伪装(跨站点请求伪造)无法证明报文的完整性&#xff0c;有可能已遭篡改(运营商劫持) HTTPS 握手过程 客户端发起 HTTPS 请求 用户在浏览器里…

Spring之ioc容器

目录 1.简介 2.为什么学习Spring 3.Spring的核心特性 4.Spring ioc 容器的特点 5.Spring的注入方式 6.web整合容器 1.简介&#xff1a; Spring简介 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 Spring使用基本的J…