• ROS Action


    参考官方文档,学习actionlib的基本原理
    http://wiki.ros.org/actionlib
    http://wiki.ros.org/actionlib/DetailedDescription
    https://gaoyichao.com/Xiaotu/?book=ros&title=Action

    整理:
    ROS提供了两种基本的节点之间通信方式:发布和订阅主题、请求服务。主题订阅的方式解耦了数据生产者与消费者之间的关系,但是当生产者想要获取消息的消费情况时, 系统就会变复杂,我们还需要再订阅一个反馈消息的主题。而服务的方式可以满足我们希望获得反馈的需求,但是这种反馈也只是在服务结束之后给出,如果我们想要跟进一个任务的进度, 纯粹使用服务请求模式也会把系统搞得很复杂。因而,ROS提供了第三种节点间通信方式:Action。
    Action可以看做是两种基本通信方式的组合,它像服务器模式那样,提供了一种请求响应机制。又像订阅者模式那样,不断地发布反馈消息。比如说,控制移动机器人从A点运动到B点, 我们就可以通过Action的形式来实现,我们请求机器人运动,在运动过程中可以实时监视机器人的位置,完成任务后还可以反馈完成状态,而且可以在运动过程中打断任务。

    实际使用中:
    服务器端一般用执行回调函数executecb,处理接收到目标后的操作;
    客户端一般订阅status状态,在回调函数中处理不同状态下的操作,获取goalid,用于发布取消目标点的操作;也可以用waitforserver的函数,函数返回true时执行相应的操作。定义action服务器端和客户端,用到actionlib中定义的指针类型。

    服务器端可以定义状态发布的频率,这也从另一方面说明了,服务器发送的反馈信息和话题消息是一样的机制。
    而客户端发送目标点给服务器端,只发送一次,说明和服务消息是一样的机制。
    综合来看,action消息机制结合了服务和话题消息的,通过actionlib来定义。

  • 相关阅读:
    谷歌阅读器将于2013年7月1日停止服务,博客订阅转移到邮箱
    SelfIntroduction
    WCF(四) Configuration file (配置文件)
    亚当与夏娃的礼物
    WCF(三) Message pattern
    面试小题
    分内分外
    C#多线程处理之AutoResetEvent和ManualResetEvent
    WCF(五) Host WCF Service
    ARX中的Purge
  • 原文地址:https://www.cnblogs.com/havain/p/16185968.html
Copyright © 2020-2023  润新知