zoukankan      html  css  js  c++  java
  • python ros 创建节点订阅robot_pose

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

    catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

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

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

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

    cd ..
    catkin_make
    . devel/setup.bash

    编写订阅者程序

    roscd beginner_tutorials/ 
    mkdir scripts
    cd scripts

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

    #!/usr/bin/env python
    # license removed for brevity
    import rospy
    from std_msgs.msg import String
    
    def talker():
         pub = rospy.Publisher('chatter', String, queue_size=10)
         rospy.init_node('talker', anonymous=True)
         rate = rospy.Rate(10) # 10hz
         while not rospy.is_shutdown():
             hello_str = "hello world %s" % rospy.get_time()
             rospy.loginfo(hello_str)
             pub.publish(hello_str)
             rate.sleep()
    
     if __name__ == '__main__':
         try:
             talker()
         except rospy.ROSInterruptException:
             pass

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

    #!/usr/bin/env python
     import rospy
     from std_msgs.msg import String
    
     def callback(data):
         rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
    
     def listener():
    
         # In ROS, nodes are uniquely named. If two nodes with the same
         # node are launched, the previous one is kicked off. The
         # anonymous=True flag means that rospy will choose a unique
         # name for our 'listener' node so that multiple listeners can
         # run simultaneously.
         rospy.init_node('listener', anonymous=True)
    
         rospy.Subscriber("chatter", String, callback)
    
         # spin() simply keeps python from exiting until this node is stopped
         rospy.spin()
    
     if __name__ == '__main__':
         listener()

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

    3. 编译

    修改Cmakelist.txt为如下:

    cmake_minimum_required(VERSION 2.8.3)
    project(beginner_tutorials)
    
    ## Find catkin macros and libraries
    ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
    ## is used, also find other catkin packages
    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
    )
    
    catkin_package()

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

    4. 运行

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

    roscore
    rosrun beginner_tutorials talker.py
    rosrun beginner_tutorials listener.py

    结果:

  • 相关阅读:
    PHP中关于字符串的连接
    好用的FireFox(FF)插件
    Scripted Operation
    Scripted device
    chgrp chown
    wait_for_devices
    mysql create user
    mysql
    create user mysql
    Inserting/Removing shutters and filters
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10246046.html
Copyright © 2011-2022 走看看