Send goal message and wait for result


resultMsg = sendGoalAndWait(client,goalMsg)
resultMsg = sendGoalAndWait(client,goalMsg,timeout)
[resultMsg,state,status] = sendGoalAndWait(___)



resultMsg = sendGoalAndWait(client,goalMsg) sends a goal message using the specified action client to the action server and waits until the action server returns a result message. Press Ctrl+C to abort the wait.

resultMsg = sendGoalAndWait(client,goalMsg,timeout) specifies a timeout period in seconds. If the server does not return the result in the timeout period, the function displays an error.

[resultMsg,state,status] = sendGoalAndWait(___) returns the final goal state and associated status text using any of the previous syntaxes. state contains information about where the goal execution succeeded or not.


collapse all

Send and cancel goals for ROS actions. First, setup a ROS action client. Then send a goal message with modified parameters. Finally, cancel your goal and all goals on the action server.

Connect to a ROS network with a specified IP address. Create a ROS action client connected using rosactionclient. Specify the action name. Wait for the client to be connected to the server.

[actClient,goalMsg] = rosactionclient('/fibonacci');
Initializing global node /matlab_global_node_40739 with NodeURI

Send a goal message with modified parameters. Wait for the goal to finish executing.

goalMsg.Order = 4;
Goal active
  Sequence :  [0, 1, 1]
  Sequence :  [0, 1, 1, 2]
  Sequence :  [0, 1, 1, 2, 3]
  Sequence :  [0, 1, 1, 2, 3, 5]

ans = 

  ROS FibonacciResult message with properties:

    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [6×1 int32]

  Use showdetails to show the contents of the message

Send a new goal message without waiting.

goalMsg.Order = 5;

Cancel the goal on the ROS action client, actClient.


Cancel all the goals on the action server that actClient is connected to.


Delete the action client.


Disconnect from the ROS network.

Shutting down global node /matlab_global_node_40739 with NodeURI

Input Arguments

collapse all

ROS action client, specified as a SimpleActionClient object handle. This simple action client enables you to track a single goal at a time.

ROS action goal message, specified as a Message object handle. Update this message with your goal details and send it to the ROS action client using sendGoal or sendGoalAndWait.

Timeout period for receiving a result message, specified as a scalar in seconds. If the client does not receive a new result message in that time period, an error is displayed.

Output Arguments

collapse all

Result message, returned as a ROS Message object. The result message contains the result data sent by the action server. This data depends on the action type.

Final goal state, returned as one of the following:

  • 'pending' — Goal was received, but has not yet been accepted or rejected.

  • 'active' — Goal was accepted and is running on the server.

  • 'succeeded' — Goal executed successfully.

  • 'preempted' — An action client canceled the goal before it finished executing.

  • 'aborted' — The goal was aborted before it finished executing. The action server typically aborts a goal.

  • 'rejected' — The goal was not accepted after being in the 'pending' state. The action server typically triggers this status.

  • 'recalled' — A client canceled the goal while it was in the 'pending' state.

  • 'lost' — An internal error occurred in the action client.

Status text that the server associated with the final goal state, returned as a character vector.

Introduced in R2016b