《动手学ROS2》5.8Action客户端Python实现

2023-05-16

本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
公众号

5.8 Action客户端Python实现

因为后续课程使用到Action的地方都是在最后阶段,为了减轻大家学习负担,先不进行讲解,有兴趣的同学可以参考官方例程源码,小鱼这里也贴一份放在这。

from action_msgs.msg import GoalStatus
from example_interfaces.action import Fibonacci

import rclpy
from rclpy.action import ActionClient
from rclpy.node import Node


class MinimalActionClient(Node):

    def __init__(self):
        super().__init__('minimal_action_client')
        self._action_client = ActionClient(self, Fibonacci, 'fibonacci')

    def goal_response_callback(self, future):
        goal_handle = future.result()
        if not goal_handle.accepted:
            self.get_logger().info('Goal rejected :(')
            return

        self.get_logger().info('Goal accepted :)')

        self._get_result_future = goal_handle.get_result_async()
        self._get_result_future.add_done_callback(self.get_result_callback)

    def feedback_callback(self, feedback):
        self.get_logger().info('Received feedback: {0}'.format(feedback.feedback.sequence))

    def get_result_callback(self, future):
        result = future.result().result
        status = future.result().status
        if status == GoalStatus.STATUS_SUCCEEDED:
            self.get_logger().info('Goal succeeded! Result: {0}'.format(result.sequence))
        else:
            self.get_logger().info('Goal failed with status: {0}'.format(status))

        # Shutdown after receiving a result
        rclpy.shutdown()

    def send_goal(self):
        self.get_logger().info('Waiting for action server...')
        self._action_client.wait_for_server()

        goal_msg = Fibonacci.Goal()
        goal_msg.order = 10

        self.get_logger().info('Sending goal request...')

        self._send_goal_future = self._action_client.send_goal_async(
            goal_msg,
            feedback_callback=self.feedback_callback)

        self._send_goal_future.add_done_callback(self.goal_response_callback)


def main(args=None):
    rclpy.init(args=args)

    action_client = MinimalActionClient()

    action_client.send_goal()

    rclpy.spin(action_client)


if __name__ == '__main__':
    main()


作者介绍:

我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《动手学ROS2》5.8Action客户端Python实现 的相关文章

  • STM32 下载调试口(JTAG+SWD)禁用及作为普通IO口

    1 RCC APB2PeriphClockCmd RCC APB2Periph AFIO ENABLE 开启AFIO时钟 2 GPIO PinRemapConfig GPIO Remap SWJ JTAGDisable ENABLE 改变指
  • 波特率的解析及转换为字节传输速率

    波特率115200 xff1d 115200 位 秒 以最普通的串口 xff08 起始位 43 8位数据 43 停止位 xff09 为例 xff1a 除以 10 xff0c 得到的是每秒字节数 xff1a 波特率115200 xff1d 1
  • 如何判断CAN总线空闲以及帧间隙,计算传输速率

    一 如何判断总线忙还是空闲呢 进入 正常模式之前 xff0c bxCAN 必须始终在 CAN 总线上实现 同步 为了进行同步 xff0c bxCAN 将等待 CAN 总线空闲 xff08 即 xff0c 已监测到CANRX 上的 11 个隐
  • STM32 DMA传输出错的防错机制

    一 DMA 中断 对于每个 DMA 数据流 xff0c 可在发生以下事件时产生中断 xff1a 达到半传输 xff08 每次传输都会触发 xff0c 属于正常触发 xff09 传输完成 传输错误 FIFO 错误 xff08 上溢 下溢或 F
  • IAR的View视图菜单中Watch、 Live Watch、 Quick Watch、 Auto、 Locals、 Statics这几个子菜单的含义和区别

    一 简述IAR的View视图菜单 View这个菜单的意思就是打开 xff08 已关闭的 xff09 视图窗口 xff0c 比如我们的工作空间窗口不见了 xff0c 就可以通过该菜单打开 不瞒大家 xff0c 以前我初学软件的时候 xff0c
  • DWA论文翻译

    摘要 本文介绍了一种能够令机器人进行自主避障的动态窗口法 xff08 dynamic window approach xff0c DWA xff09 该方法是从机器人的运动动力学直接推导出的 xff0c 因此特别适合在高速运动的机器人 与以
  • DWA仿真测试

    1 前言 由于之前已经对相关论文进行了翻译 xff0c 因此这里就不再对DWA的原理进行赘述 本文主要目的是根据相关的程序进一步强化对论文中所体现思想的理解 2 示例1 以下是使用python写的一个例子 xff0c 其中比较核心的是把搜索
  • TEB论文翻译

    摘要 传统的 elastic band 方法在规避障碍物的同时 xff0c 会根据距离最短的原则修正全局路径规划算法生成的路径 不过 elastic band 方法没有考虑到机器人的任何运动学约束 本文提出了一种称为 Time elasti
  • 求字符串中的最长回文子串

    方法一 xff08 暴力法 xff09 xff1a include lt stdio h gt include lt string h gt bool Palindrome const char str int start int end
  • 状态估计4(无迹卡尔曼滤波)

    1 简述 2 无迹卡尔曼滤波的思想 3 无迹卡尔曼滤波的核心公式 4 两个例子 34 34 34 Unscented kalman filter UKF localization sample author Atsushi Sakai 64
  • 积分曲线的绘制问题

    概述 事情突然 xff0c 我师姐让我帮她用maltab绘制一个函数的积分曲线 xff0c 如 xff0c 只是感觉满有意思的 xff0c 记录于此 xff01 1 示例 1 1 程序 coding utf 8 34 34 34 Creat
  • 并发与多线程3 (访问局部变量)

    1 例子 1 1 程序 include lt iostream gt include lt thread gt using namespace std struct func public func int amp i i i void o
  • 符号运算求解方程组

    概述 最近帮同事求解一个问题 xff0c 实在不想自己动手推导了 xff0c 就用python的符号运算自动计算了 xff0c 蛮有意思的 1 例子 1 1 程序 34 34 34 Created on Wed Jun 30 14 26 3
  • qtcreator+ClangFormat格式化代码

    1 前言 希望能够格式化代码 xff0c 令代码更加的整齐漂亮 2 设置 1 工具 选项 2 然后选择Beautifier General xff0c Tool选择ClangFormat 图1 General 3 点击ClangFormat
  • 状态估计1(贝叶斯滤波)

    在 概率机器人 中是这么定义 定位 xff0c 确定相对于给定地图环境的机器人位姿 xff0c 也经常被称为位置估计 不过现在这个定义明显被扩展了 xff0c 比如我们也希望知道在没有地图先验的情况下机器人的位置 xff0c 典型的如VIO
  • VINS-Mono论文翻译

    摘要 由一个相机和一个低成本惯性测量单元 IMU 组成的单目视觉惯性系统 VINS xff0c 构成了用于估计六自由度状态的最小传感器单元 xff08 大小 xff0c 重量和功耗 xff09 本文提出了VINS Mono xff1a 一个
  • GVINS论文翻译

    摘要 众所周知 xff0c 视觉惯性里程计 VIO 会出现漂移 xff0c 尤其是在长时间运行的条件下 本文提出了一种基于非线性优化的系统 GVINS xff0c 它将 GNSS 原始测量 视觉和惯性信息紧耦合以进行实时和无漂移的状态估计
  • 使用Mapviz和天地图API绘制gvins算法的轨迹

    1 前言 最近在研究gvins算法 xff0c 由于使用rviz没有办法说明问题 xff0c 也没有办法直观的向老板汇报 xff1b 所以必须找到一个能够在地图上直接显示轨迹的工具 xff0c 经调研选择了Mapviz这个工具 2 安装和配
  • FAST-LIVO论文翻译

    摘要 多传感器融合被证明是一种能够在SLAM任务中取得准确和鲁棒位姿估计的有效解决方案 xff0c 因而在机器人应用中具有无限可能 本文提出了FAST LIVO方法 xff0c 一种快速的雷达 惯性 视觉里程计 xff0c 其中包含了两个紧
  • 工作后,如何免费查论文

    工作后 xff0c 如何免费查论文 毕业后不能像在学校一样享受下载免费论文的待遇了 免费论文 毕业论文 各专业论文在哪里可以下载 xff1f 如果你的学校图书馆有数据库 xff0c 那当然是优先选择 xff0c 很多学校购买了期刊的数据 x

随机推荐

  • LVI-SAM论文翻译

    摘要 我们提出了一个通过smoothing and mapping的紧耦合的雷达视觉惯性里程计框架 xff0c LVI SAM xff0c 能够实时状态估计和建图 xff0c 且具有很高的精度和鲁棒性 LVI SAM基于因子图构建 xff0
  • LIO-SAM论文翻译

    摘要 我们提出了一个通过smoothing and mapping实现的紧耦合激光惯性里程计框架 xff0c LIO SAM xff0c 能够取得高精度 实时的移动机器人的轨迹估计和地图构建 LIO SAM基于因子图构建 xff0c 把多个
  • R3live论文翻译

    摘要 在本文中 xff0c 我们提出了一个新颖的激光惯性视觉传感器融合框架 xff0c 也就是R3live xff1b 它利用了激光雷达 惯性和视觉传感器的测量值 xff0c 可以得到鲁棒和高精度的状态估计 R3live包含了两个子系统 x
  • FAST-LIO2论文翻译

    摘要 本文提出了FAST LIO2 xff1a 一个快速 xff0c 鲁棒和多功能的雷达惯性里程计框架 基于高效的紧耦合的迭代卡尔曼滤波 xff0c FAST LIO2有两个关键的创新点 xff0c 可实现快速 鲁棒和准确的激光导航 xff
  • FAST-LIO论文翻译

    摘要 本文提出了一个计算效率较高和鲁棒的激光 惯性里程计框架 我们使用基于紧耦合的迭代扩展卡尔曼滤波器将LiDAR特征点与IMU数据融合在一起 xff0c 以便在发生退化的快速运动 xff0c 嘈杂或杂乱环境中实现稳健的导航 为了在存在大量
  • Faster-lio论文翻译

    摘要 本文提出了一种基于增量体素的激光惯性里程计 xff08 LIO xff09 方法 xff0c 用于快速跟踪旋转和固态激光雷达 为了实现快速的跟踪速度 xff0c 我们既没有使用复杂的基于树的结构来划分空间点云 xff0c 也没有使用严
  • Cartographer论文翻译(回环)

    摘要 便携式激光测距仪 xff08 也被称为激光雷达 xff09 和同步定位与建图 xff08 SLAM xff09 技术是获取竣工平面图的有效方法 实时生成和可视化平面图有助于操作员评估捕获数据的质量和覆盖范围 构建一个便携式捕获平台需要
  • Ubuntu 还原回默认源

    虽然国内源的速度快很多 xff0c 但是有些软件国内源没有 xff0c 或者版本较旧 xff0c 没有的情况还好 xff0c 会有意识的找原来的源 xff0c 但是如果是版本较旧的 xff0c 安装了以后会导致你陷在版本的坑 xff0c 爬
  • 基于ROS的机械臂手眼标定-Aruco使用与相机标定

    基于ROS的机械臂手眼标定 Aruco使用与相机标定 你好 xff0c 我是小智 折腾了一段时间的机械臂的手眼标定 xff0c 相关资料挺多的 xff0c 但使用起来都比较复杂 xff0c 新手一般比较难搞懂 于是想做一个比较简单易懂易用的
  • 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法

    最近找小鱼问手眼标定的非常多 xff0c 但是小鱼时间有限 xff0c 拉了个小群大家讨论 xff0c 二维码失效可以关注公众号鱼香ROS下方加小鱼好友拉你进群 手眼标定原理及常用算法Tsai Lenz介绍 大家好 xff0c 我是小鱼 上
  • 自制Pixracer自定义IMU传感器飞控

    自制Pixracer自定义IMU传感器四层通孔板飞控 xff0c 板载DC降压 xff1a 飞行演示视频如下链接 xff1a https v youku com v show id XNDgxMjUzODc2MA 61 61 html
  • gazebo又卡又慢?快把你的显卡用起来!点击查看如何使用显卡运行gazebo~

    2021 10 11 更新 经测试发现 xff0c 使用系统自带的显卡驱动安装程序 xff0c 更加方便快捷 步骤如下 xff1a 设置 gt 关于 gt 软件和更新 gt 附加驱动 gt 找到推荐的驱动直接点应用即可 之前的原文 大家好
  • 机器人学习必看系列:如何使用moveit控制真实机械臂?

    大家好 xff0c 我是你们可爱的小鱼 最近关于moveit相关的问题感觉非常多 xff0c 毕竟机械臂 43 视觉的应用的确是非常的火爆 xff0c 小鱼都想直接开课教机械臂运动规划相关的了 有的同学问小鱼 xff0c 怎么使用movei
  • 如何一行代码安装ROS|2022最新版|一行代码安装ROS2|一行代码解决rosdep|一行代码配置多ROS环境

    2022最新版本V3 0 大家好 xff0c 我是小鱼 xff0c 经过一周多的完善 还是熟悉的一行代码 span class token function wget span http fishros com install O fish
  • 小鱼带你一起使用docker来跑ros2小乌龟|docker安装ros2|docker可视化

    各位鱼粉大家好 xff0c 我是爱折腾的小鱼 动手学ROS2开课了 xff0c 晚上买了个大鸡腿奖励了一下自己 xff0c 说起来小鱼最近又胖了不少 xff0c 俨然成了条胖鱼 xff01 昨晚小鱼搭建了一个私人的网盘 xff0c 使用do
  • 鱼香ROS网站上线|一行代码安装ROS/ROS2/解决rosdep问题|小鱼脚本

    大家好 xff0c 我是开心的小鱼 xff0c 经过几个月的努力 xff0c 动手学ROS2课程终于和小伙伴们见面了 xff0c 有很多小伙伴一下午的时间就把前两章给搞定了 xff0c 小鱼要抓紧啦 之前说的鱼香ROS网站已经上线啦 xff
  • ROS2安装Gazebo11并运行两轮差速样例程序

    大家好 xff0c 我是小鱼 告诉大家一个好消息 xff0c 小鱼把吃灰多年的板子卖掉了 xff0c 一共卖了70块钱 xff0c 然后又入手一个逻辑分析仪 xff0c 准备做一个ROS2的小车 xff0c 所以今天我们来使用gazebo来
  • 二维相机能得到三维信息?机器人感知部分之Aruco标定板的使用

    大家好 xff0c 我是小鱼 xff0c 今天来介绍一下Aruco并是结合ROS来进行识别 aruco其实是opencv中的一个库 xff0c 可以将特定的标记物转换成三维的坐标 xff0c 所以它是可以脱离ROS进行使用的 aruco介绍
  • 《动手学ROS2》扩展阅读2:ROS2客户端库RCL介绍

    本系列教程作者 xff1a 小鱼 公众号 xff1a 鱼香ROS QQ交流群 xff1a 139707339 教学视频地址 xff1a 小鱼的B站 完整文档地址 xff1a 鱼香ROS官网 版权声明 xff1a 如非允许禁止转载与商业用途
  • 《动手学ROS2》5.8Action客户端Python实现

    本系列教程作者 xff1a 小鱼 公众号 xff1a 鱼香ROS QQ交流群 xff1a 139707339 教学视频地址 xff1a 小鱼的B站 完整文档地址 xff1a 鱼香ROS官网 版权声明 xff1a 如非允许禁止转载与商业用途