I often see the following trace when shutting down the driver node. This might be something to do with incorrect ordering, or perhaps that releasing the lease automatically releases the estop keepalive somehow.
Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/core.py", line 572, in signal_shutdown
h()
File "/home/spot/spot_ws/src/spot_ros/spot_driver/src/spot_driver/spot_ros.py", line 825, in shutdown
self.spot_wrapper.disconnect()
File "/home/spot/spot_ws/src/spot_ros/spot_driver/src/spot_driver/spot_wrapper.py", line 492, in disconnect
self.releaseEStop()
File "/home/spot/spot_ws/src/spot_ros/spot_driver/src/spot_driver/spot_wrapper.py", line 462, in releaseEStop
if self._estop_keepalive:
AttributeError: 'SpotWrapper' object has no attribute '_estop_keepalive'
shutting down processing monitor...
... shutting down processing monitor complete
done
This happens when the lease on the robot is not claimed, as _estop_keepalive is only initialised when the ResetEStop method is called. Initialising that attribute in the initialiser should fix this problem.
I often see the following trace when shutting down the driver node. This might be something to do with incorrect ordering, or perhaps that releasing the lease automatically releases the estop keepalive somehow.