Action NavigateToPosition has no failure indicator? #486
-
How are you connecting to your Create 3?Wi-Fi (ROS 2) Computer(s) Model(s) and Operating System(s)Mac OS, Fusion VM, Ubuntu 20.04 Which version of ROS 2 is installed on your computer?Galactic Which firmware version is installed on your robot?G.5.3 Which RMW is your robot running?CycloneDDS Does your robot have an assigned namespace? If so, please share.No response Is the robot connected to a network? If so, what is the network type?Yes: 2.4GHz Home WiFi Are there multiple Create 3 robots connected to your network?No Is multicast enabled?Yes What is the Adapter Board's USB/BLE Toggle currently switched to?Bluetooth (default) Describe your question.The NavigateToPosition Action message Result has no success/failure flag, only the resulting pose. Feedback offers only three states: Rotate to goal position, translate to goal position, rotate to goal orientation. Does the action complete when the bot is within some tolerance xy from the goal position, that I can use as a test for success or failure sqrt_sum_sqrs{goal.pose.position - result.pose.position} < tolerance? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
ROS 2 action interfaces should not have an explicit success/failure flag in their result, as it's a redundant information. When a client sends a goal request, eventually they will receive a
So, if you need to know if a goal succeeded or not, you should look at the results code contained in the wrapped result data-structure rather than at the actual result object itself.
Yes, the action completes when the robot reaches a pose close enough to the goal, or when the action times-out |
Beta Was this translation helpful? Give feedback.
ROS 2 action interfaces should not have an explicit success/failure flag in their result, as it's a redundant information.
When a client sends a goal request, eventually they will receive a
WrappedResult
object.This object will contain two things:
So, if you need to know if a goal succeeded or not, you should look at the results code contained in the wrapped result data-structure rather than at the actual result object itself.
See the examples in C++ and the examples in Python
Y…