%% Send and Cancel ROS Action Goals
% This example shows how to send and cancel goals for ROS actions. Action types must be setup beforehand with an action server running.
% You must have set up the '/fibonacci' action type. To run this action server, use the following command on the ROS system:
% rosrun actionlib_tutorials fibonacci_server
%
% First, set up 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 to the ROS network using rosactionclient. Specify the action name. Wait for the client to be connected to the server.

rosinit('192.168.17.129',11311)
[actClient,goalMsg] = rosactionclient('/fibonacci');
waitForServer(actClient);

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

goalMsg.Order = 4;
[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg)

%

showdetails(resultMsg)

%
% Send a new goal message without waiting.

goalMsg.Order = 5;
sendGoal(actClient,goalMsg)

%
% Cancel the goal on the ROS action client, actClient.

cancelGoal(actClient)

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

cancelAllGoals(actClient)

%
% Delete the action client.

delete(actClient)

%
% Disconnect from the ROS network.

rosshutdown

%
% Copyright 2019 The MathWorks, Inc.