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

【ROS2】 默认的DDS通信中间件替换为Eclipse Cyclone_DDS (DDS配置方法)

ROS2替换中间件为Cyclone_DDS

  • 1.一些介绍:)
  • 2.不同DDS的RMW实现
  • 3.默认的FastDDS替换为Cyclone DDS
    • i.安装依赖
    • ii.编译 cyclone-dds
  • 4.配置网络

1.一些介绍:)

上一篇我们探讨了ros1和ros2编写launch的区别 【ROS2】launch启动文件编写
ros1和ros2还有一个很重要的区别就是底层通信框架,ros1采用的是xmlRPC, ros2采用的是DDS。
DDS 是一种端到端中间件,提供与 ROS 系统相关的功能,例如分布式发现(不像 ROS 1 中那样集中式)和对传输的不同“服务质量”选项的控制。也就是去中心化,ros2使用DDS后不再依赖roscore。DDS的实现又有很多种例如: RTI 的Connext DDS、eProsima 的Fast DDS、Eclipse 的Cyclone DDS或 GurumNetworks 的GurumDDS。ubuntu20.04 Foxy 默认的是FastDDS无需额外安装即可使用。

2.不同DDS的RMW实现

为了将 DDS/RTPS 实现与 ROS 2 结合使用,需要一个桥梁(又称接口或rmw简称rmw)包,该包使用 DDS 或 RTPS 实现的 API 和工具来实现抽象的 ROS 中间件接口。

名称许可证RMW实现维护状态
eProsima Fast DDSApache 2rmw_fastrtps_cppFull support. Default RMW. Packaged with binary releases.
Eclipse Cyclone DDSEclipse Public License v2.0rmw_cyclonedds_cppFull support. Packaged with binary releases.
RTI Connextcommercial,researchrmw_connext_cppFull support. Support included in binaries, but Connext installed separately.
GurumNetworks GurumDDScommercialrmw_gurumdds_cppCommunity support. Support included in binaries, but GurumDDS installed separately.

大多情况下,使用不同 RMW 实现的节点能够进行通信,但这并非在所有情况下都是如此。
Fast DDS <–> Connext
WString 使用Fast DDS 发布后无法被 macOS 上的 Connext 正确接收

Connext <–> Cyclone DDS
不支持发布/订阅通信WString

Connext Dynamic <–> Connext Dynamic
不支持 C 服务

3.默认的FastDDS替换为Cyclone DDS

i.安装依赖

sudo apt install ros-foxy-rmw-cyclonedds-cpp
sudo apt install ros-foxy-rosidl-generator-dds-idl

ii.编译 cyclone-dds

编译 cyclonedds 前请确保在启动终端时没有 source ros2 相关的环境变量,否则会导致 cyclonedds 编译报错。如果安装 ROS2 时在~/.bashrc中添加了 " source /opt/ros/foxy/setup.bash ",需要修改 ~/.bashrc 文件将其删除:

sudo vi ~/.bashrc
# source /opt/ros/foxy/setup.bash 

开始编译cyclone-dds

cd ~/ros2_workspace/cyclonedds_ws/src
#克隆cyclonedds仓库
git clone https://github.com/ros2/rmw_cyclonedds -b foxy
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x 
cd ..
colcon build --packages-select cyclonedds #编译cyclonedds

编译完成后重新打开ros2的环境变量并执行source

4.配置网络

使用 ifconfig 查看网络信息,确认ros组网的以太网网卡。(例如如图中的enp0s31f6,以实际为准)
在这里插入图片描述

打开~/.bashrc编辑

#!/bin/bash
echo "setup ros2 environment"
source /opt/ros/foxy/setup.bash
source $HOME/ros2_workspace/cyclonedds_ws/install/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces><NetworkInterface name="enp0s31f6" priority="default" multicast="default" /></Interfaces></General></Domain></CycloneDDS>'

保存后

 source ~/.bashrc

测试连接效果:

ros2 topic list

如果出现了你发布的那些话题,那么恭喜你成功咯 :)
当然了如果你没发现目标topic,也可能是domain ID 的问题,默认是0,俩边通信这个值需要一致,我们后面再着重探讨下domain ID的配置。

作者:费码程序猿
欢迎技术交流:QQ:255895056
转载请注明出处,如有不当欢迎指正

相关文章:

【ROS2】 默认的DDS通信中间件替换为Eclipse Cyclone_DDS (DDS配置方法)

ROS2替换中间件为Cyclone_DDS 1.一些介绍&#xff1a;&#xff09;2.不同DDS的RMW实现3.默认的FastDDS替换为Cyclone DDSi.安装依赖ii.编译 cyclone-dds 4.配置网络 1.一些介绍&#xff1a;&#xff09; 上一篇我们探讨了ros1和ros2编写launch的区别 【ROS2】launch启动文件编…...

迈向数智金融:机器学习金融科技新纪元的新风采

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…...

Nginx+PHP+CI框架实现,访问静态文件带权限验证

1、访问来源验证配置nginx #文件访问来源校验 如路径&#xff1a;https://ys.test.com/test/api/uploads/test.png #不是该允许域名的将返回403页面 location /test/api/uploads/ {valid_referers ys.test.com ys.test2.com;if ($invalid_referer) {return 403;} }2、拦截访问…...

javascript 第二天

正则表达式 a/正则表达式内容/ a.test(“需要检测的内容”) 焦点事件 onfocus 获得焦点 onblur 失去焦点 他们都是事件&#xff0c;和onclick一样 onchange 内容改变 失去焦点时生效&#xff0c;多了内容检测&#xff0c;如果内容不变不触发&#xff0c;内容改变才触发 onk…...

unity2D游戏开发17战斗精灵

导入 将PlayerFight32x32.png拖Player文件夹进去 设置属性 创建动画剪辑 选中前四帧,右键Create|Animation,将动画命名为player-ire-east 其他几个动画也创建好后,将其拖到Animations|Animations文件夹 选中PlayerController,再点击Animator 创建新的Blend Tree Graph,并重…...

kafka架构+原理+源码

1.安装jdk17 sudo yum -y update sudo wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm sudo yum -y install ./jdk-17_linux-x64_bin.rpm sudo java -version 2.安装kafka How to easily install kafka without zookeeper | Aditya’s Blog 1.…...

实力共鉴!微风企斩获2024年浙江省专精特新中小企业

日前&#xff0c;微风企斩获2024年浙江省专精特新中小企业荣誉&#xff0c;这是继获得“国家高新技术企业”“浙江省科技中小企业”“杭州市雏鹰计划企业”等权威性认证后&#xff0c;微风企荣获的又一重磅殊荣。 “专精特新中小企业”是国家对具有“专业化、精细化、特色化、新…...

C#:枚举及位标志周边知识详解(小白入门)

文章目录 枚举为什么要有枚举?枚举的性质设置默认类型和显式设置成员的值 位标志(重要)位标记是什么及作用位标志周边知识HasFlag判断是否有该功能枚举前面加Flags的好处 关于枚举的更多知识using static简化代码获取枚举成员的字面量 枚举 为什么要有枚举? 为了增加代码的…...

这本vue3编译原理开源电子书,初中级前端竟然都能看懂

前言 众所周知vue提供了很多黑魔法&#xff0c;比如单文件组件(SFC)、指令、宏函数、css scoped等。这些都是vue提供的开箱即用的功能&#xff0c;大家平时用这些黑魔法的时候有没有疑惑过一些疑问呢。 我们每天写的vue代码一般都是写在*.vue文件中&#xff0c;但是浏览器却只…...

小白如何安装WNO(小波神经算子),需要安装python3.8,torch,ptwt,pywt等

下载项目 WNO在github上面的项目地址如下&#xff1a; https://github.com/csccm-iitd/WNO/tree/main 下载下来后&#xff0c;里面的数据集需要用matlab代码生成&#xff0c;也可以到里面提到的google云盘里面下载数据集 安装环境 然后需要安装环境 注意python版本一定要…...

Java HashMap 源码解读笔记(一)--xunznux

文章目录 HashMap介绍实现说明:源码解读静态常量和内部节点类 Node静态工具方法属性字段 Fields未完待续。。。 HashMap 本文主要是用于记录我在阅读Java1.8的 HashMap 源码所做的笔记。对于源码中的注释会进行翻译下来&#xff0c;并且会对其中部分源码进行注释。 这一篇文章…...

“等保测评下的数据加密与隐私保护“

在当今数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;数据泄露、隐私侵犯等事件频发&#xff0c;不仅给企业带来经济损失&#xff0c;更严重损害了公众信任。等保测评&#xff0c;作为国家信息安全等级保护制度的重要组成部分&#xff0c;对数据加密…...

Oat++ 后端实现跨域

这里记录在官方的例子中&#xff0c;加入跨域。Oat Example-CRUD 在官方的例子中&#xff0c;加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码&#xff0c;如下&#xff1a; #include "AppComponent.hpp"#include "controller/UserController…...

Three basic starting points to do AI

Computers have been based on memory/storage for so many years. Don’t try to come up with something else. For so many years, AI has been based on fixed precise rules or fuzzy matching rules. Don’t think about coming up with the third one by yourself. Vi…...

等保测评练习卷22

等级保护初级测评师试题22 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1. 在应用系统测试中&#xff0c;如果审计是一个独立的功能&#xff0c;那么应用系统应对审计进程进行保…...

Linux用户-普通用户

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注我&#xff0c;我尽量把自己会的都分享给大家&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux是一个多用户多任务操作系统,这意味着它可以同时支持多个用户登录并使用系统。…...

世界顶级思想家颜廷利:生命的升华,人类与动物的进化之道

世界顶级思想家颜廷利&#xff1a;生命的升华&#xff0c;人类与动物的进化之道 动物在于进化&#xff0c; 人类载于净化…&#xff08;升命学说&#xff09; 当代世界最著名的哲学家颜廷利教授指出&#xff0c;在探索生命奥秘的广阔旅程中&#xff0c;我们不禁惊叹于大自然…...

团队心脏:项目比赛中激发团队潜力的策略与技巧

团队心脏&#xff1a;项目比赛中激发团队潜力的策略与技巧 前言项目负责人的角色定位执行力的重要性提升个人执行力的策略团队协作的关键持续学习与创新应对挑战的态度总结与反思结语 前言 在项目管理的世界里&#xff0c;每一次比赛都是一场没有硝烟的战争。作为项目负责人&am…...

Qt安卓开发的一些概念

目录 1、Android 版本和 API 的对应关系&#xff1f; 2、ABI是什么 2.1、x86_64 2.2、x86 2.3、arm64-v8a 2.4、armeabi-v7a 3、不同架构的特点 3.1、32位 ARM 架构 (ARMv7) 3.2、64位 ARM 架构 (ARMv8-A) 3.3、32位 Intel 架构 (x86) 3.4、64位 Intel 架构 (x86-64…...

语音交互、AI问答,等你来体验!

功能背景 在实际大屏应用中&#xff0c;用户向大屏直接下达语音指令显的越来越便捷&#xff0c;其中体现的交互感也比通过动作指令来的更加强烈&#xff0c;给用户带来更高效的服务体验。目前EasyV平台开发的自定义事件交互已经很完善&#xff0c;组件之间可以进行触发联动。 …...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

【Java多线程从青铜到王者】单例设计模式(八)

wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本&#xff0c;sleep也是可以指定时间的&#xff0c;也就是说时间一到就会解除阻塞&#xff0c;继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒)&#xff0c;wait能被notify提前唤醒&#xf…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...