Odin Rqtclose | Original & Validated

def _spin_ros(self): rospy.rostime.wallsleep(0) # Allow ROS callbacks

sudo strace -p <PID> -e trace=network If you see repeated poll or recvfrom calls without returning, the GUI is waiting for a dead ROS topic. Before closing rqt , run: odin rqtclose

Introduction: When Your ROS GUI Vanishes If you are a robotics software engineer working with the Robot Operating System (ROS), you have likely mastered the rqt suite—a powerful framework for graphical user interfaces (GUIs) that includes tools like rqt_graph , rqt_plot , and rqt_console . However, an obscure but critical error has been appearing in forums and debug logs: "odin rqtclose" . def _spin_ros(self): rospy

import signal signal.signal(signal.SIGTERM, my_shutdown_handler) If that handler calls sys.exit() without cleaning up rqt , you’ll see rqtclose errors. Modify your rqt plugin’s shutdown_plugin() method: import signal signal

trap cleanup EXIT rosrun rqt_gui rqt_gui & rqt_pid=$! wait $rqt_pid Example of a safe shutdown in a Python rqt plugin:

This error is not a standard ROS output. Instead, it typically surfaces when a custom rqt plugin or a node named "Odin" (a common internal codename for autonomy stacks, custom executors, or specific robotic platforms) fails to close its ROS GUI components gracefully. The rqtclose signal indicates that the GUI was either forcibly terminated, lost a connection to the ROS master, or encountered a deadlock during shutdown.