本文主要是介绍ROS知识点(一):有关于“rospy.spin()”的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@TOC
系列文章目录:
下一篇:
前言
系统:Ubuntu20
ROS版本:ROS Noetic(官方安装链接)
之前一直不理解rospy.spin()
到底是什么意思,一直以为只要在subscriber("topic")
后面加上rospy.spin()
,代码就能一直订阅该topic
,实际上不是这样的。
rospy.spin()的理解
rospy.spin()
的作用在于,代码运行到rospy.spin()
之后会暂停会锁住这个程序:
def listener():global subrospy.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 stoppedrospy.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
这篇关于ROS知识点(一):有关于“rospy.spin()”的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!