heuristicus / spot_ros

ROS driver for controlling Boston Dynamics' Spot robot
https://heuristicus.github.io/spot_ros/
Other
275 stars 143 forks source link

Fix estop_keepalive error on node shutdown #69

Closed heuristicus closed 2 years ago

heuristicus commented 2 years ago

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
heuristicus commented 2 years ago

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.