Odin Rqtclose -

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

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

def shutdown_plugin(self): self._timer.stop() rospy.signal_shutdown("odin rqtclose: Plugin closing") rospy.sleep(0.5) # Give ROS time to clean up Launch rqt with a timeout: trap cleanup EXIT rosrun rqt_gui rqt_gui & rqt_pid=$

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