Flask && ROS出現ValueError: signal only works in main thread問題

這個問題是,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即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章