python ros2 收发消息

实验平台 ubuntu18.04

实验目的 掌握python ros2 读取与发送


本次针对字符串消息进行实验

首先需要安装ubuntu 对应的ros2 版本

ubuntu18.04 对应的ros版本是eloquent

代码步骤,加载需要的ros2 开发包rclpy

import rclpy
from std_msgs.msg import String

ros2 python 流程:

1.初始化ros2

rclpy.init(args=None) 

2.发布节点

node = Node(json_data["set_node_name"])

3.消息topic 订阅

#构建消息发布者
pub_parking = node.create_publisher(String,'mystring',10)

4.发送消息与进入ros2循环机制

数据发送端代码如下:

import time
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
# 初始化rclpy
rclpy.init(args=None) 
#发布节点
node = Node("test_pub")


def sub_mutil():
    num = 0
    while True:
        my_msg = String()
        my_msg.data = f'{num}'
        pub_parking.publish(my_msg)
        time.sleep(1)
        print(f"发送消息:{num}")
        num+=1
#构建消息发布者
pub_parking = node.create_publisher(String,'mystring',10)
sub_mutil()
rclpy.spin(node)

实现数每秒发送一组字符串到ros2

数据接收端的代码与发送相仿,不同的是设置毁掉函数

数据接收端的代码如下:

import rclpy
from rclpy.node import Node
from std_msgs.msg import String
# 初始化rclpy
rclpy.init(args=None) 
#发布节点
node = Node("test_sub")
def call_back_String(msg):
    print(f"接收到消息: {msg.data}")


node.create_subscription(String,'mystring', call_back_String,10)
rclpy.spin(node)
python ros2 收发消息

展示GIF:

python ros2 收发消息

附带ROS2 相关指令:

查看话题:

ros2 topic list

播放db3 数据包

ros2 abg play *.db3

数据录制

ros2 bag record -a

我们使用ros2 topic list 查看下我们发布的话题

python ros2 收发消息

看到我们接收与测试的话题就是我们生命的话题mystring

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章