microsoft / spot-ros-wrapper

ROS Wrapper for the Boston Dynamics Spot robot
MIT License
63 stars 13 forks source link

[Design] services are implemented in a fire-and-forget fashion, and are non-blocking. #10

Open mklingen-bd opened 4 years ago

mklingen-bd commented 4 years ago

https://github.com/microsoft/spot-ros-wrapper/blob/7a22c6715de60d41b50d43e8e63a708c7e6b4bab/spot_ros_interface/scripts/spot_ros_interface.py#L137

Spot API commands are designed in such a way that they return immediately with a command ID. The user is then expected to poll for the command ID that is returned to view the status of the command, and block until the command completes before sending the next command. Sending another command before the current one completes will override the current command with the new one.

The spot wrapper was designed using fire-and-forget ros services. One consequence of this is that users of this wrapper will be unable to tell whether their commands are complete. Suggest using action lib, or wrapping the spot API so that the service appears to block.