基于python的dds通信实现

DDS定义:Data Distribution Service 数据分发服务,是新一代分布式实时通信中间件协议,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

最强大的优势:支持跨平台,跨语言进行实时通信,这无疑让dds成为主流。

由于最近了解到这个东西,便基于python语言写了一个通信示例。下面我将介绍具体使用,源码压缩包可以后台私信,免费开源共享。

一.介绍

首先了解dds通信,需要俩个主体,发布者与订阅者,这也是强大之处,一个发布者可以被多个订阅者订阅(接收信息),发布者通过发布不同的主题信息,订阅需要的主题信息完成二者的通信。

二.具体调用

1.虚拟机环境(基于ros2的使用)

打开虚拟机,将minimal_publisher(发布者),minimal_subscriber(订阅者)压缩包解压

我的虚拟机中安装了vscode,因此后面操作会使用这个编译器,其他编译基本都是大同小异。

Dds通信流程:

1.建立ros2文件夹

2.建立src文件夹

3.将发布者和订阅者解压到src文件夹

4.在src文件夹页面打开俩个终端随便一个输入 colcon build 回车  等待会生成三个新的文件夹

5.在刚刚输入的终端下 输入

source install/setup.bash 回车

继续输入 ros2 run examples_rclpy_minimal_publisher publisher_member_function   这个就是发布者 回车后就会显示传输的数据了

6.在另一个终端输入 source install/setup.bash 回车

继续输入 ros2 run examples_rclpy_minimal_subscriber  回车 这是订阅者 ,回车后会显示收到的数据

若测试发布者发布不同指令时需在修改发布者代码,直接使用vscode 打开 minimal_publisher 文件夹,修改 publisher_member_function.py  中 msg.data 的列表内容,即测试发布不同信息指令的情况。

2.windows 环境

将minimal_publisher(发布者),minimal_subscriber(订阅者)压缩包解压

普通环境下,配置相关库函数即可。(pycharm编译器)

发布者:

打开压缩包中  examples_rclpy_minimal_publisher文件夹下的publisher_member_function.py文件,具体内容下面附图,已增加代码注释。

注:发布者名称,与主题名均可自定义修改,但修改后,订阅者中主题名需要同步更改,否则收不到信息

发布信息可以自定义,下面打印函数可自行选择是否需要,(推荐使用方便调试,但是修改信息时注意是字符数据还是数字等,需要更换通配符)

总结:这个发布者运行后,会计数一直打印传输的数据(也就是模拟一直发布信息),如果需要更改可以修改get_logger()方法。

订阅者

打开压缩包中 examples_rclpy_minimal_subscriber文件夹下的sbuscriberer_member_function.py文件,具体内容下面附图,已增加代码注释。

同发布者,订阅者名可自定义,主题名需要一致,下面get_logger()方法自行选择是否使用或者修改

三.自定义函数嵌入

简单方法,将自定义功能的整个工程文件加入到examples_rclpy_minimal_subscriber文件夹,

打码部分为自定义功能所需要的文件,直接加入就可以,可以增加一个测试文件检验自定义功能能否实现。

  • 如何与订阅者协同调用及使用收到的信息

前提条件,将自定义功能最好完整封成一个函数接口,调用方便。

在subscriber_member_function.py中  listener_callback方法下直接调用接口就OK  msg.data为接收到的信息。

如果没有进行封装,可以在minimal_subscriber = MinimalSubscriber()  实例化订阅者后,增加自定义功能的运行逻辑(不推荐,可以会遇到程序卡退情况,如果你的逻辑运行比较耗时的话)

总结:订阅者与发布者均在相关的定义类中进行修改默认数据就可(只是用来测试的话,如果实际情况下,可能需要在实例化对象时增加相关的赋值操作)

由于dds的强大通信能力,俨然成为了主流通信方式,大家可以了解使用以下,如果需要源码可以评论或者私信,我会分享,免费开源!如果可以的话,三连一下叭!!!

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

01_

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值