zoukankan      html  css  js  c++  java
  • ros topic 发布一次可能会接收不到数据

    rostopic pub -1 /hdw_update hdw_driver/update_file_msg  A B C D 1 1 1 1
    系统提示:
    publishing and latching message for 3.0 seconds

    可以看到每一个发布都需要大约3s,所以在发布前要等待3s以上。

    发布

    #!/usr/bin/env python2.7
    # -*- coding: utf-8 -*-  
    import rospy
    from hdw_driver.msg import update_file_msg
    import time
    def talker():
        pub = rospy.Publisher('hdw_update',update_file_msg, queue_size=1)
        rospy.init_node('talker',anonymous=True)
        rate = rospy.Rate(10) # 10hz
        mi = update_file_msg()
        mi.motor_board_file_name="/opt/xx/update_bin/F407.bin"
        mi.power_board_file_name="/opt/xx/update_bin/Project.bin"
        mi.sensor_board_file_name="/opt/xx/update_bin/F103.bin"
        mi.imu_board_file_name="/opt/xx/update_bin/F103.bin"
    
        mi.update_motor_board=True
        mi.update_power_board=True
        mi.update_sensor_board=True
        mi.update_imu_board=True
        i=0
        while(1):
            time.sleep(3.5)
            pub.publish(mi)
            i+=1
            if(i==1):
                break
        rospy.signal_shutdown("closed!")
    
    if __name__ == '__main__':
        try:
            talker()
        except rospy.ROSInterruptException:
            pass

    订阅:

    #!/usr/bin/env python2.7
    # -*- coding: utf-8 -*-  
    import rospy
    from hdw_driver.msg import update_file_msg
    
    def callback(data):
        rospy.loginfo(data)
        #回调函数 收到的参数.data是通信的数据 默认通过这样的 def callback(data) 取出data.data数据
        
    def listener():
        rospy.init_node('listener', anonymous=True)
        
        #启动节点同时为节点命名, 若anoymous为真则节点会自动补充名字,实际名字以 listener_322345等表示
        #若为假,则系统不会补充名字,采用用户命名。但是一次只能有一个同名节点,若后面有一个相同listener
        #名字的节点则后面的节点启动会注销前面的相同节点名。
        rospy.Subscriber("hdw_update", update_file_msg, callback)
        
        #启动订阅,订阅主题,及标准字符串格式,同时调用回调函数,当有数据时调用函数,取出数据
        # spin() simply keeps python from exiting until this node is stopped
        #循环程序
        rospy.spin()
    
    if __name__ == '__main__':
        listener()

  • 相关阅读:
    Maven插件方式使用Mybatis Generator
    css3渐变色板配色代码
    iframe加载顺序
    JPA N+1
    K3Cloud云星空战略实施教程(全套)更新2020-08-30
    K3Cloud云星空插件开发实战教程(全套)更新2020-07-29
    零基础C#NET网站开发实战教学(全套完结)最新更新2020-08-17
    K3Wise插件开发实战教程(全套)最新更新2020-08-17
    SQL基础培训实战教程[全套完结]最后更新时间2020-12-29
    第九篇分享:学佛第五个基础 正知正见 理悟佛法(一)[修改版]
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10531463.html
Copyright © 2011-2022 走看看