建立文件夹hello_rospy,再在该目录下建立子目录src,cd到该src目录,运行如下命令创建工作包

  1. catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

pkg代表所属包名,name是文件名,type是脚本文件名称,output指定输出到屏幕

  1. <node pkg="xsens_drive" name="mtnode" type="mtnode.py" output="screen">
    </node>

cd到src上层目录,编译并且source

  1. cd ..
  2. catkin_make
  3. . devel/setup.bash

编写订阅者程序

  1. roscd beginner_tutorials/
  2. mkdir scripts
  3. cd scripts

在scripts目录下新建talker.py文件,填写如下内容

  1. #!/usr/bin/env python
  2. # license removed for brevity
  3. import rospy
  4. from std_msgs.msg import String
  5.  
  6. def talker():
  7. pub = rospy.Publisher('chatter', String, queue_size=)
  8. rospy.init_node('talker', anonymous=True)
  9. rate = rospy.Rate() # 10hz
  10. while not rospy.is_shutdown():
  11. hello_str = "hello world %s" % rospy.get_time()
  12. rospy.loginfo(hello_str)
  13. pub.publish(hello_str)
  14. rate.sleep()
  15.  
  16. if __name__ == '__main__':
  17. try:
  18. talker()
  19. except rospy.ROSInterruptException:
  20. pass

在scripts目录下新建listener.py文件,填写如下内容:

  1. #!/usr/bin/env python
  2. import rospy
  3. from std_msgs.msg import String
  4.  
  5. def callback(data):
  6. rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
  7.  
  8. def listener():
  9.  
  10. # In ROS, nodes are uniquely named. If two nodes with the same
  11. # node are launched, the previous one is kicked off. The
  12. # anonymous=True flag means that rospy will choose a unique
  13. # name for our 'listener' node so that multiple listeners can
  14. # run simultaneously.
  15. rospy.init_node('listener', anonymous=True)
  16.  
  17. rospy.Subscriber("chatter", String, callback)
  18.  
  19. # spin() simply keeps python from exiting until this node is stopped
  20. rospy.spin()
  21.  
  22. if __name__ == '__main__':
  23. listener()

记得更改权限为可执行文件

3. 编译

修改Cmakelist.txt为如下:

  1. cmake_minimum_required(VERSION 2.8.)
  2. project(beginner_tutorials)
  3.  
  4. ## Find catkin macros and libraries
  5. ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
  6. ## is used, also find other catkin packages
  7. find_package(catkin REQUIRED COMPONENTS
  8. roscpp
  9. rospy
  10. std_msgs
  11. )
  12.  
  13. catkin_package()

直接在工作空间运行catkin_make即可

4. 运行

在3个终端中分别执行如下命令

  1. roscore
  1. rosrun beginner_tutorials talker.py
  1. rosrun beginner_tutorials listener.py

结果:

python ros 创建节点订阅robot_pose的更多相关文章

  1. python ros 关闭节点

    def myhook(): print "shutdown time!" rospy.on_shutdown(myhook) 或 rospy.signal_shutdown(rea ...

  2. ROS学习笔记四:用C++编写ROS发布与订阅

    1 创建并编译功能包 1.1 创建功能包 在工作空间的 src 目录下创建功能包: $ cd ~/dev/catkin_ws/src $ catkin_create_pkg chapter2_tuto ...

  3. 编写ros串口节点,使用官方serial包

    参考http://www.roswiki.com/read.php?tid=557&fid=39 1.通过sudo apt-get install ros-<distro>-ser ...

  4. 理解ROS的节点(NODE)

    经过前面的学习,我们已经知道了如何构建一个ROS的包,这篇博客将介绍ROS中的节点的概念. 在继续之前,请按ctrl+alt+t打开一个终端,在里面输入: sudo apt-get install r ...

  5. 用Python从零开始创建区块链

    本文主要内容翻译自Learn Blockchains by Building One 本文原始链接,转载请注明出处. 作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一 ...

  6. (六)ROS话题---节点之间通信的方式

    1. 理解 ROS 话题: (Ctrl+Alt+T 打开一个新终端) 运行下面的命令: $ roscore (Ctrl+Alt+T 打开一个新终端) $ rosrun turtlesim turtle ...

  7. dubbo源码解析-zookeeper创建节点

    前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码 ...

  8. Mininet python代码创建拓扑、交互式界面创建主机、交换机

          python代码创建拓扑: from mininet.net importMininet net =Mininet() # Creating nodes in the network. c ...

  9. Python -二叉树 创建与遍历算法(很详细)

    树表示由边连接的节点.它是一个非线性的数据结构.它具有以下特性. 一个节点被标记为根节点. 除根节点之外的每个节点都与一个父节点关联. 每个节点可以有一个arbiatry编号的chid节点. 我们使用 ...

随机推荐

  1. python 根据路径导入模块

    Import python module NOT on path http://stackoverflow.com/questions/10161568/import-python-module-no ...

  2. python2.7 环境配置

    1.安装python2.7.8之后,配置环境变量:在path中配置python的安装路径 在cmd框中执行python,进入到python命令执行,即为配置成功. 2.执行过程中,提示缺少xlutil ...

  3. print(array)时array中间是省略号没有输出全部的解决方法

    import numpy as np np.set_printoptions(threshold=np.inf) 大量元素情况 可以采用set_printoptions(threshold='nan' ...

  4. 关闭Oracle 11g的DPR特性

    关闭Oracle 11g的DPR(Direct Path Read)特性 查看event参数值: SQL> show parameter event NAME TYPE VALUE ------ ...

  5. 圆锥体完全均衡下重力异常正演 [MATLAB]

    在完全均衡的模型下,若地表有一圆锥体(山峰等),计算跨越山顶的截面上所得到的各种重力异常. 地壳密度 $kg\cdot m^{-3}$ 上地幔密度 $g\cdot cm^{-3}$ 地表地形圆锥体半径 ...

  6. Matlab中图像处理实例:灰度变换,空域滤波,频域滤波,傅里叶变换的实现

    http://blog.sciencenet.cn/blog-95484-803140.html % %图像灰度变换 % f = imread('E:\2013第一学期课程\媒体计算\实验一\Img\ ...

  7. 有意思的JSON.parse()、JSON.stringify()

    前言 现在JSON格式在web开发中非常重要,特别是在使用ajax开发项目的过程中,经常需要将后端响应的JSON格式的字符串返回到前端,前端解析成JS对象值(JSON 对象),再对页面进行渲染. 在数 ...

  8. [转]Visual C++ RunTime的特征——非烫即屯

    Visual C++ RunTime的特征——非烫即屯 大一刚学C语言,第二次上机课,当我发现我照着书抄写的程序在运行之外的黑框里面跳出一排“烫烫烫烫烫”,当时就震惊了.你们能想象一个来自小城, 在大 ...

  9. VS2012快捷键突然不能用怎么办

    晚上做项目做着做着,就去弄了下键盘配置,可怜的娃娃~~~一下子弄得什么快捷键都不能用了,比如”注释:ctrl+k ctrl+c”;问题纠结了我一个多钟,好在最后结合了网络上各路英雄的idea;解决了问 ...

  10. Java 简明教程

    本文为 Java 的快速简明教程,主要用于快速了解.学习和复习java的语法特点. // 单行注释 /* 多行注释 */ /** JavaDoc(Java文档)注释是这样的.可以用来描述类和类的属性. ...