4

Python のツイスト プロトコルを使用してクライアントとの接続を確立する ROS ノードを作成しました。プログラムは期待どおりに動作していますが、Ctrl+c を使用してプログラムを強制終了しようとすると、次のエラー メッセージが表示されます。

[server_send_command_ver3-4] SIGTERM にエスカレーション中

以下にコードの一部を含めました。

if __name__ == '__main__':
   try:
    #node initialization
    rospy.init_node('listen', anonymous = True)

    #publisher to publish message to clientconnection to display connection status on GUI
    connect = rospy.Publisher("status", String, queue_size = 10)
    connect.publish(" Lost Connection")

    #twisted protocol and listen at port 80
    factory = Factory()
    factory.protocol = NewFactory
    factory.clients = []  
    reactor.listenTCP(80, factory)
    reactor.run()

  except rospy.ROSInterruptException:
    pass
4

2 に答える 2

3

それを行う良い方法は、を使用することrospy.on_shutdown()です。

基本的に、実装すると、この関数はノードのシャットダウンが要求されると呼び出されます (Ctrl + C キーを押すなど)。あなたの場合、この関数内で接続を閉じて、完全なシャットダウンの前に必要なものを処理できます (最終的には sth like reactor.close())。

ここからの例を次に示します。

def myhook():
  print "shutdown time!"

rospy.on_shutdown(myhook)
于 2016-05-16T19:18:41.077 に答える