1

我见过的大多数程序和示例都会在函数中启动 rospy 订阅者,例如

def listener():
    rospy.Subscriber('/heylookitsanoutput',Image,imagecallback)
    rospy.spin()

但是有必要将它保留在一个函数中吗?它能否像 MQTT 一样工作,在函数开始时抛出订阅者,并在看到订阅主题的帖子时执行回调?

我可以理解这样做的必要性,因为您可能需要 rospy.spin() 来等待您正在寻找的输入,但如果回调可以作为可中断事件触发,那可能对我的场景更好(更新图像新图像进入时的窗口)。

谢谢!

4

1 回答 1

1

您也可以在函数之外(即在if __name__ == "__main__":块中)启动 rospy 订阅者。他的行为将完全相同,在看到订阅主题的帖子时执行回调。

我认为将这些命令嵌入函数中的要点是可以轻松地将它们导入其他模块并获得更好的代码组织。

于 2016-02-16T12:52:43.833 回答