sendFeedback
Description
sendFeedback(
sends the feedback message, server
,feedbackMsg
)feedbackMsg
, to the action client that sent
the goal currently being executed by the action server, server
.
Examples
This example shows how to create a ROS action server, connect an action client to it, receive goal, and execute it.
Connect to a ROS network.
rosinit
Launching ROS Core... ..Done in 2.1278 seconds. Initializing ROS master on http://172.19.136.75:52554. Initializing global node /matlab_global_node_56708 with NodeURI http://vdi-wd1bgl-223:61999/ and MasterURI http://localhost:52554.
Set up an action server for calculating Fibonacci sequence. Use structures for the ROS message data format. Use fibbonacciExecution
function as the callback.
cb = @fibonacciExecution; server = rosactionserver("/fibonacci","actionlib_tutorials/Fibonacci",ExecuteGoalFcn=cb,DataFormat="struct")
server = SimpleActionServer with properties: ActionName: '/fibonacci' ActionType: 'actionlib_tutorials/Fibonacci' ExecuteGoalFcn: @fibonacciExecution DataFormat: 'struct'
Create action client and send a goal to the server to calculate the Fibonacci sequence up to 10 terms past the first two terms, 0
and 1
. Display the result sequence.
client = rosactionclient("/fibonacci","actionlib_tutorials/Fibonacci",DataFormat="struct"); goal = rosmessage(client); goal.Order = int32(10); result = sendGoalAndWait(client,goal); result.Sequence
ans = 12×1 int32 column vector
0
1
1
2
3
5
8
13
21
34
⋮
Shut down ROS network.
rosshutdown;
Shutting down global node /matlab_global_node_56708 with NodeURI http://vdi-wd1bgl-223:61999/ and MasterURI http://localhost:52554. Shutting down ROS master on http://172.19.136.75:52554.
Warning: Error shutting down the ROS master.
Supporting Functions
The callback function fibbonacciExecution
is executed every time the server receives a goal execution request from the client. This function checks if the goal has been preempted, executes the goal and sends feedback to the client during goal execution.
function [result,success] = fibonacciExecution(src,goal,defaultFeedback,defaultResult) % Initialize variables success = true; result = defaultResult; feedback = defaultFeedback; feedback.Sequence = int32([0 1]); for k = 1:goal.Order % Check that the client has not canceled or sent a new goal if isPreemptRequested(src) success = false; break end % Send feedback to the client periodically feedback.Sequence(end+1) = feedback.Sequence(end-1) + feedback.Sequence(end); sendFeedback(src,feedback) % Pause to allow time to complete other callbacks (like client feedback) pause(0.2) end if success result.Sequence = feedback.Sequence; end end
Input Arguments
ROS action server, specified as a SimpleActionServer
object
handle.
Feedback message for action client, specified as a ROS message. The type and format
of the feedbackMsg
must match the ActionType
and
DataFormat
properties of server
,
respectively.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2022a
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.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)