主要内容

ROS行为概述

客户端到服务器的关系

ROS的行动有一个与指定的协议客户机到服务器的通信关系。操作使用ROS主题将目标消息从客户端发送到服务器。您可以使用动作取消目标客户。接收一个目标后,服务器进程可以信息返回给客户端。这些信息包括服务器的状态、当前状态的目标,反馈这一目标在操作过程中,最后结果消息当目标完成。

操作客户端和操作服务器关系图。客户端可以发送目标,取消当前目标和取消所有目标消息服务器。服务器可以发送当前状态、目标执行状态和结果反馈消息给客户端。

使用sendGoal向服务器发送的目标函数。发送目标并等待它完成sendGoalAndWait。这个函数可以返回结果信息,最终状态的目标和服务器的状态。服务器执行一个目标时,回调函数,FeedbackFcn,被称为提供这一目标(见相关的数据SimpleActionClient)。取消当前的目标使用cancelGoal或所有目标服务器使用cancelAllGoals

使用sendFeedback函数发送反馈信息到客户端在目标执行。在目标执行,服务器调用ExecuteGoalFcn回调。您可以使用isPreemeptRequested在回调函数来检查客户端是否已经取消了目标或发送一个新目标执行。

执行操作的工作流程

一般来说,以下步骤发生在创建和执行一个活性氧ROS网络行动。

工作流执行ROS的行动。

  • 建立一个ROS操作服务器,使用rosactionserver。检查什么行动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 (目标是活跃的)
  • FeedbackMsg——反馈消息包含信息发送到客户机的服务器在目标执行。反馈消息的类型取决于动作类型。这个反馈包含当前状态和任何其他相关信息进展目标执行。使用sendFeedback函数来从服务器发送反馈消息。

  • FeedbackFcn——反馈函数是用来处理信息的反馈信息。反馈消息的类型取决于动作类型。定期反馈函数执行在目标操作期间,每当一个新收到的反馈信息。默认情况下,显示的细节消息使用的函数showdetails。你可以做其他处理反馈信息的反馈函数。

    默认函数句柄:

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

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

  • ResultMsg——服务器向客户端发送最终结果消息后目标执行作为输出参数sendGoalsendGoalAndWait

  • ResultFcn——结果函数执行时,目标已经完成。输入这个函数包括结果信息和执行的状态。结果消息的类型取决于动作类型。这条消息,味精和状态,年代是一样的,输出时使用sendGoalAndWait。这个函数也可以用来触发相关的流程目标完成后。

    默认函数句柄:

    @ (~ s味精)disp ([结果与国家的char (s),“:”showdetails(味精)])

另请参阅

||

相关的话题