主要内容

ROS行为概述

客户端到服务器的关系

ROS Actions与指定的协议具有客户端到服务器的通信关系。操作使用ROS主题将目标消息从客户机发送到服务器。您可以使用操作客户端取消目标。在接收到目标后,服务器对其进行处理,并将信息返回给客户端。这些信息包括服务器的状态、当前目标的状态、操作期间对该目标的反馈,以及最终完成目标时的结果消息。

使用sendGoal函数向服务器发送目标。发送目标,等待它完成使用sendGoalAndWait.这个函数使您能够返回结果消息、目标的最终状态和服务器的状态。当服务器执行一个目标时,回调函数,FeedbackFcn,以提供与该目标相关的数据(请参阅SimpleActionClient).取消当前目标使用cancelGoal或者所有目标都在服务器上使用cancelAllGoals

执行操作的工作流程

一般情况下,当在ROS网络上创建和执行一个ROS动作时,会执行以下步骤。

  • 设置ROS动作服务器。通过输入检查在ROS网络上有哪些可用的操作rosaction列表在MATLAB®命令窗口。

  • 使用rosactionclient创建操作客户端并将它们连接到服务器。指定当前在ROS网络上可用的操作类型。使用waitForServer等待操作客户端连接到服务器。

  • 发送一个目标使用sendGoal.定义一个goalMsg对应于动作类型。当您创建操作客户端使用rosactionclient,一个空白goalMsg返回。您可以使用所需的参数修改此消息。

  • 当目标状态变成“活跃”,目标开始执行ActivationFcn调用回调函数。有关修改此回调函数的更多信息,请参见SimpleActionClient

  • 而目标状态保持不变“活跃”,服务器继续执行目标。每当收到新的反馈消息时,反馈回调函数都会周期性地处理有关目标执行的信息。使用FeedbackFcn访问或处理从ROS服务器发送的消息数据。

  • 当目标实现时,服务器返回结果消息和状态。使用ResultFcn回调以访问或处理结果消息和状态。

动作消息和函数

ROS动作使用ROS消息发送目标并接收关于其执行的反馈。在MATLAB中,可以使用回调函数访问或处理来自这些消息的反馈和结果信息。在创建SimpleActionClient对象,通过将函数句柄分配给对象上的属性来指定回调函数。您可以使用rosactionclient

  • GoalMsg—目标信息包含目标的信息。要执行操作,您必须发送带有更新目标信息的目标消息(参见sendGoal).目标消息的类型取决于ROS动作的类型。

  • ActivationFcn-一旦行动服务器接收到目标,它的状态变为“等待”直到服务器决定执行它。状态是“活跃”.此时,MATLAB执行在ActivationFcn财产的SimpleActionClient对象。没有与此功能相关的ROS消息或数据。默认情况下,这个函数只是显示目标是活跃的在MATLAB命令行上通知您正在执行目标。

    默认的函数句柄是:

    @ (~) disp (目标是活跃的
  • FeedbackFcn—反馈功能用于对反馈信息进行处理。反馈消息的类型取决于操作类型。每当收到新的反馈消息时,反馈函数都会在目标操作期间定期执行。缺省情况下,使用命令显示消息的详细信息showdetails.您可以在反馈函数中对反馈信息进行其他处理。

    默认的函数句柄是:

    @(~,味精)disp ([的反馈:showdetails(味精)])

    味精是作为您定义的函数的输入参数的反馈消息。

  • ResultFcn- result函数在目标完成时执行。这个函数的输入包括结果消息和执行状态。结果消息的类型取决于操作类型。这条消息,味精和状态,年代,与您使用时得到的输出相同sendGoalAndWait.该函数还可以用于在目标完成后触发相关进程。

    默认的函数句柄是:

    @ (~ s味精)disp (['Result with state 'char (s),“:”showdetails(味精)])

另请参阅

|

相关的话题