getStatus
Description
returns the status of execution of the goal specified by status
= getStatus(client
,goalHandle
)goalHandle
.
The goal must be sent by the action client client
.
Examples
Set Up ROS 2 Action Client and Execute an Action
This example shows how to create a ROS 2 action client and execute the action. Action types must be set up beforehand with an action server running. This example uses the /fibonacci
action. Follow these steps to set up the action server:
Create a ROS 2 package with the action definition. For instructions on setting up a /
fibonacci
action, see Creating an Action.Create a ROS 2 package with the action server implementation. For more information on setting up the
/fibonacci
action server, see Writing an Action Server.Use the
ros2genmsg
function for the ROS 2 package with action definition from Step 1, and generate action messages in MATLAB®.
To run the /fibonacci
action server, use this command on the ROS 2 system:
ros2 run action_tutorials_cpp fibonacci_action_server
Set Up ROS 2 Action Client
List the actions available on the network. The /fibonacci
action must be on the list.
ros2 action list
/fibonacci
Get the action type for the /fibonacci
action.
ros2 action type /fibonacci
action_tutorials_interfaces/Fibonacci
Create a ROS 2 node.
node = ros2node("/node_1");
Create an action client by specifying the node, action name, and action type. Set the quality of service (QoS) parameters.
[client,goalMsg] = ros2actionclient(node,"fibonacci",... "action_tutorials_interfaces/Fibonacci", ... CancelServiceQoS=struct(Depth=200,History="keeplast"), ... FeedbackTopicQoS=struct(Depth=200,History="keepall"));
Wait for the action client to connect to the server.
status = waitForServer(client)
status = logical
1
The /fibonacci
action will calculate the Fibonacci sequence for a given order specified in the goal message. The goal message was returned when creating the action client and can be modified to send goals to the ROS action server. Set the order to an int32
value of 8. If the input requires a 1-D array, set it as a column vector.
goalMsg.order = int32(8);
Send Goal and Execute Action
Before sending the goal, define the callback options framework for the goal execution process. In this example, you specify a callback function to execute when the server returns a feedback response and the final result using the name-value arguments.
callbackOpts = ros2ActionSendGoalOptions(FeedbackFcn=@helperFeedbackCallback,ResultFcn=@helperResultCallback);
Send the goal to the action server using the sendGoal
function. Specify the callback options. During goal execution, you see outputs from the feedback and result callbacks displayed on the MATLAB® command window.
goalHandle = sendGoal(client,goalMsg,callbackOpts);
Goal with GoalUUID 3d10ab880f960666fde5666f45f621a accepted by server, waiting for result! Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 3 Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 3 5 Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 3 5 8 Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 3 5 8 13 Partial sequence feedback for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 3 5 8 13 21 Full sequence result for goal 3d10ab880f960666fde5666f45f621a is 0 1 1 2 3 5 8 13 21
Get the status of goal execution.
exStatus = getStatus(client,goalHandle)
exStatus = int8
2
Get the result using the action client and goal handle inputs. Display the result. The getResult
function returns the sequence as a column vector.
resultMsg = getResult(client,goalHandle); rosShowDetails(resultMsg)
ans = ' MessageType : action_tutorials_interfaces/FibonacciResult sequence : [0, 1, 1, 2, 3, 5, 8, 13, 21]'
Alternatively, you can only use the goal handle as input to get the result.
resultMsg = getResult(goalHandle); rosShowDetails(resultMsg)
ans = ' MessageType : action_tutorials_interfaces/FibonacciResult sequence : [0, 1, 1, 2, 3, 5, 8, 13, 21]'
Helper Functions
helperFeedbackCallback
defines the callback function to execute when the client receives a feedback response from the action server.
function helperFeedbackCallback(goalHandle,feedbackMsg) seq = feedbackMsg.partial_sequence; disp(['Partial sequence feedback for goal ',goalHandle.GoalUUID,' is ',num2str(seq')]) end
helperResultCallback
defines the callback function to execute when the client receives the result message from the action server.
function helperResultCallback(goalHandle,wrappedResultMsg) seq = wrappedResultMsg.result.sequence; disp(['Full sequence result for goal ',goalHandle.GoalUUID,' is ',num2str(seq')]) end
Input Arguments
client
— ROS 2 action client
ros2actionclient
object handle
ROS 2 action client, specified as a ros2actionclient
object
handle.
goalHandle
— Action client goal handle
ActionClientGoalHandle
object
Action client goal handle, specified as an ActionClientGoalHandle
object.
Output Arguments
status
— Execution status of associated goal
nonnegative integer
This property is read-only.
Execution status of the associated goal, returned as a nonnegative integer. Each
integer denotes a specific status as defined in the
action_msgs/msg/GoalStatus
ROS 2 message definition:
0
— Unknown1
— Accepted2
— Executing3
— Canceling4
— Succeeded5
— Canceled6
— Aborted
Data Types: int8
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2023a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)