The current Action API allows users to only access the result directly if the action was successful. In case of an abort or cancel the failedCallback is called, which is user supplied but only gets the response as a string. This makes it difficult to parse the action result to report cause or a more detailed feedback why the action was unsuccessful. This behaviour has been introduced by #1103. Is this intentional? The action clients implemented in rclcpp supply a WrappedResult type to the callback which basically includes the GoalStatus (code field) as well as the field values, which is the Result type as defined in the .action file.
I am happy to contribute a fix if I can get guidance on how the API should look like.
Ideally both the the GoalStatus as well as the Response should be function argument of the user callback to offer as much insight as possible.
As a proposed solution I could revert to the previous behaviour where resultCallback is called regardless of Status and supply the GoalStatus as an additional input to the resultCallback signature.
The current Action API allows users to only access the result directly if the action was successful. In case of an abort or cancel the failedCallback is called, which is user supplied but only gets the response as a string. This makes it difficult to parse the action result to report cause or a more detailed feedback why the action was unsuccessful. This behaviour has been introduced by #1103. Is this intentional? The action clients implemented in rclcpp supply a WrappedResult type to the callback which basically includes the GoalStatus (code field) as well as the field values, which is the Result type as defined in the .action file.
I am happy to contribute a fix if I can get guidance on how the API should look like.
Ideally both the the GoalStatus as well as the Response should be function argument of the user callback to offer as much insight as possible.
As a proposed solution I could revert to the previous behaviour where resultCallback is called regardless of Status and supply the GoalStatus as an additional input to the resultCallback signature.