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

    结果:

  • 相关阅读:
    Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)
    Tomcat 任意文件上传漏洞(CVE-2017-12615)
    Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
    Redis 4.x/5.x 未授权访问漏洞
    mysql 5.7关于group by显示多列的一个潜坑
    Python
    购物车作业
    Lesson2
    a good website to test OTP
    利用fidder发送request
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10246046.html
Copyright © 2011-2022 走看看