ROS知识点(一):有关于“rospy.spin()”的应用

@TOC


系列文章目录
下一篇:

前言

系统:Ubuntu20
ROS版本:ROS Noetic(官方安装链接

之前一直不理解rospy.spin()到底是什么意思,一直以为只要在subscriber("topic")后面加上rospy.spin(),代码就能一直订阅该topic,实际上不是这样的。

rospy.spin()的理解

rospy.spin()的作用在于,代码运行到rospy.spin()之后会暂停会锁住这个程序:

def listener():
    global sub
    rospy.init_node('listener', anonymous=True)    
    sub = rospy.Subscriber('/topic', Image(data_type: 这里是不同的数据类型记得更换), callback_function, queue_size=1)
    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()
    print("Hi I am here")

如果这个时候在"rospy.spin()"后面加一个print("Hi I am here"),则不会打印Hi I am here

Question: 那有些人会问了,那我注释掉rospy.spin()之后确实再也没有订阅的topic了啊?
Answer: 确实,那是因为程序运行结束了,直接退出来了,所以没有任何的打印输出了。如果这个时候想要不停的获取Subscriber()的内容需要:

if __name__ == '__main__':
    listener()
    while not rospy.is_shutdown():
        pass
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值