這個問題是,Flask顯示ROS消息時,ROS需要在主線程中調用,但是Flask把ROS放在分線程上了,
參看文檔ROS與Python入門教程-節點初始化和關閉
找到
rospy.init_node(name, anonymous=False, log_level=rospy.INFO, disable_signals=False)
可以看到
disable_signals=False,默認rospy註冊信號處理器以便可以使用ctrl+c來退出。下面的情況下,你可以禁止:
- 不是從python的主線程調用init_node()。
- python只允許主線程註冊信號處理器。
- 在wxPython或其他GUI工具運行rospy,它們有自己的退出處理。
- 你希望默認使用自己的信號處理器。
在rospy.init_node將disable_signals設爲True即可