ROS -话题通信示例

写在最前

由于毕设是做ros机器人相关的上位机,因此本专题是做毕设所有过程的记录
学习资料参考内容如下:
B站Autolabor初级教程教学
Autolabor初级教程教学文档
主要是想记录自己的踩过的所有坑,内容可能比较零散,想看比较系统完备的知识请去参考上面两个链接

每个可视化操作对应于一个命令行

2.1 新建工作区

在这里插入图片描述

mkdir -p 自定义空间名称/src

2.2 点击debug按钮

这一步相当于在src目录中运行catkin make命令
在这里插入图片描述

catkin_make

2.3 新建ros包 添加环境

在这里插入图片描述
在这里插入图片描述

catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs

2.4 在包内部新建scripts文件夹

在这里插入图片描述

mkdir scripts

2.5 创建发布者节点pub.py

"""
    需求: 实现基本的话题通信,一方发布数据,一方接收数据,
         实现的关键点:
         1.发送方
         2.接收方
         3.数据(此处为普通文本)

         PS: 二者需要设置相同的话题


    消息发布方:
        循环发布信息:HelloWorld 后缀数字编号

    实现流程:
        1.导包 
        2.初始化 ROS 节点:命名(唯一)
        3.实例化 发布者 对象
        4.组织被发布的数据,并编写逻辑发布数据


"""
#1.导包 
import rospy
from std_msgs.msg import String

if __name__ == "__main__":
    #2.初始化 ROS 节点:命名(唯一)
    rospy.init_node("talker_p")
    #3.实例化 发布者 对象
    pub = rospy.Publisher("chatter",String,queue_size=10)
    #4.组织被发布的数据,并编写逻辑发布数据
    msg = String()  #创建 msg 对象
    msg_front = "hello 你好"
    count = 0  #计数器 
    # 设置循环频率
    rate = rospy.Rate(1)
    while not rospy.is_shutdown():

        #拼接字符串
        msg.data = msg_front + str(count)

        pub.publish(msg)
        rate.sleep()
        rospy.loginfo("写出的数据:%s",msg.data)
        count += 1

2.6 创建订阅者节点sub.py


#!/usr/bin/env python3
"""
    需求: 实现基本的话题通信,一方发布数据,一方接收数据,
         实现的关键点:
         1.发送方
         2.接收方
         3.数据(此处为普通文本)


    消息订阅方:
        订阅话题并打印接收到的消息

    实现流程:
        1.导包 
        2.初始化 ROS 节点:命名(唯一)
        3.实例化 订阅者 对象
        4.处理订阅的消息(回调函数)
        5.设置循环调用回调函数

"""
#1.导包 
import rospy
from std_msgs.msg import String

def doMsg(msg):
    rospy.loginfo("I heard:%s",msg.data)

if __name__ == "__main__":
    #2.初始化 ROS 节点:命名(唯一)
    rospy.init_node("listener_p")
    #3.实例化 订阅者 对象
    sub = rospy.Subscriber("chatter",String,doMsg,queue_size=10)
    #4.处理订阅的消息(回调函数)
    #5.设置循环调用回调函数
    rospy.spin()

2.7 用python3命令运行python节点

在这里插入图片描述

值得注意的是一般的视频教程会让你在/src/cmakelists文件里也要配置python解释器的环境,这样的话就可以在全局使用rosrun 包名 xxx.py来运行python节点,但是我们要知道的是python节点也可以直接当作一个python程序来运行,即可以用python3 xxx.py来运行

2.8 利用rosrun命令运行python节点

  • 在cmakelist添加解释器信息

在这里插入图片描述

大概就在158行添加py文件的路径信息,注意这里可以直接填相对路径

  • 添加环境变量(这可以让你在任何命令窗口用rosrun运行这个包)
    在这里插入图片描述
  • rosrun运行节点

rosurn 包名 xxx.py

值得注意的是,由于我的ros系统是melodic1.14.3,所以rosrun 包名 xxx.py这个命令是默认用的python2,所以最好还是用python3 xxx.py这种方式来运行python节点

2.9 查看节点计算图

  • 新打开一个命令行窗口输入rosrun rqt_graph rqt_graph,可以看到以下计算图

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值