ROS——话题通信(Python)

参考网站:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

本人学习视频:哔哩哔哩【Autolabor初级教程】ROS机器人入门

话题通信涉及的角色

话题通信一般包含三种角色:

  • ROS Master (管理者)
  • Talker (发布者)
  • Listener (订阅者)

其中我们在编写代码的时候不需要编写管理者部分,因为已经封装好了库函数(理解可能有误)。

Python实现话题通信

发布者实现:

#! /usr/bin/env python

import rospy
from plumbing_pub_sub.msg import Person
"""
    发布者:发布人消息
        1.导包;
        2.初始化ROS节点
        3.创建发布者对象;
        4.组织发布逻辑并发布数据。

"""

if __name__ == "__main__":
    # 2.初始化ROS节点
    rospy.init_node("dama")
    # 3.创建发布者对象;
    pub = rospy.Publisher("guangchangwu", Person, queue_size=10)
    # 4.组织发布逻辑并发布数据。
    #4-1.创建Person数据
    p = Person()
    p.name = "奥特曼"
    p.age = 8
    p.height = 1.85
    #4-2.创建Rate对象
    rate = rospy.Rate(1)
    #4-3.循环发布数据
    while not rospy.is_shutdown():
        pub.publish(p)
        rospy.loginfo("发布数据:%s, %d, %.2f",p.name, p.age, p.height)
        rate.sleep()

订阅方实现:

#! /usr/bin/env python
import rospy

from plumbing_pub_sub.msg import Person
"""
    订阅方:订阅人消息
        1.导包;
        2.初始化ROS节点
        3.创建订阅者对象;
        4.处理订阅的数据;
        5.spin()
"""
def doPerson(p):
    rospy.loginfo("小伙子的数据:%s, %d, %.2f", p.name, p.age, p.height)

if __name__ == "__main__":
    # 2.初始化ROS节点
    rospy.init_node("daYe")
    # 3.创建订阅者对象;
    sub = rospy.Subscriber("guangchangwu", Person, doPerson)
    # 4.处理订阅的数据;
    # 5.spin()
    rospy.spin()

   

基础的配置:

1.我们在用Python编写的时候,需要在终端加入可执行权限,让你编写的Python可以被执行。

2.同时需要在CMakeLists文件中去配置一些基本项:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值