Odin Rqtclose Guide

<node name="odin_gui" pkg="odin_viz" type="odin_rqt.py" /> Check odin_rqt.py for any custom signal handling. Specifically, search for:

#!/bin/bash # odin – correct wrapper for rqt rqt_pid="" function cleanup if [[ -n "$rqt_pid" ]]; then kill -TERM "$rqt_pid" wait "$rqt_pid" echo "odin rqtclose: clean exit" fi odin rqtclose

rosnode list After rqtclose fails, run again. If the rqt node still appears, it’s still alive. Force-kill it: &lt;node name="odin_gui" pkg="odin_viz" type="odin_rqt

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: node name="odin_gui" pkg="odin_viz" type="odin_rqt.py" /&gt

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