• Ros学习——Python发布器publisher和订阅器subscriber


    1.编写发布器

    • 初始化 ROS 系统
    • 在 ROS 网络内广播我们将要在 chatter 话题上发布 std_msgs/String 类型的消息

    • 以每秒 10 次的频率在 chatter 上发布消息

    在 beginner_tutorials package 里创建 script/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

     赋予文件执行权限:

    $ chmod +x listener.py

    2.编写订阅器

      

    • 初始化ROS系统
    • 订阅 chatter 话题

    • 进入自循环,等待消息的到达
    • 当消息到达,调用 chatterCallback() 函数

    在 beginner_tutorials 目录下创建 script/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()

     赋予文件执行权限:

    $ chmod +x listener.py

    3.编译

    • 在catkin_ws目录下运行 catkin_make

     4.测试结果:

  • 相关阅读:
    PHP 中 parent、self、static、$this 的区别 & 后期静态绑定详解
    PHP中for和foreach背后发生了什么和关于迭代器的理解
    PHP中this,self,parent三个关键字
    PHP文件指针操作
    php中Session使用方法详解
    关于PHP日期时间的主要函数
    php获取checkbox复选框的多个选项的内容
    PHP中的11个魔术方法总结:__construct,、__destruct、__call等
    PHP类的自动加载机制实现方法分析
    C#学习笔记(二)
  • 原文地址:https://www.cnblogs.com/yrm1160029237/p/9995226.html
Copyright © 2020-2023  润新知