ROS 2边学边练(22)-- 又见动作(action)

前言

        我们在之前体验过各种通信方法(主题、服务、动作),并且也构建了自定义了一些msg和srv,那么同样的,对于action,同样支持自定义。我们来试试吧(动作的概念及流程还请翻到之前的博客进行查看)。

动动手

创建接口功能包

        进入工作空间src路径下(ros2_ws/src),创建一个包custom_action_interfaces:

$ros2 pkg create --license Apache-2.0 custom_action_interfaces

别忘了source环境变量啊(如果觉得每次都source一次很麻烦,可以在~/.bashrc的最后面将source /opt/ros/iron/setup.bash加上,一步到位),否则系统可找不到ROS命令的。

创建action文件

        进入刚创建的custom_action_interfaces包根路径下,新建action文件夹:

$cd custom_action_interfaces
$mkdir action

我们在action里面新建个名字叫Fibonacci.action的文件,用来计算斐波那契数列,里面的内容如下:

int32 order
---
int32[] sequence
---
int32[] partial_sequence

order为我们设置的目标值,sequence为系统最终的结果,partial_sequence为中间的反馈值。

构建动作

        action文件定义好了之后,为了使系统能产生新的动作类型代码,我们需要在CMakeLists.txt中添加如下内容:

find_package(rosidl_default_generators REQUIRED)rosidl_generate_interfaces(${PROJECT_NAME}"action/Fibonacci.action"
)

同时package.xml文件也须修改,将下面内容添加到里面:

<buildtool_depend>rosidl_default_generators</buildtool_depend><member_of_group>rosidl_interface_packages</member_of_group>

至此,我们可以来构建custom_aciton_interfaces包了,

$cd ~/ros2_ws
$colcon build --packages-up-to custom_action_interfaces

为了让环境找寻到刚刚生成的动作包,我们需要source install/setup.bash,然后看看此包的数据结构是否能被系统正确读取到:

$ros2 interface show custom_action_interfaces

 

没毛病,下一篇我们再来实现服务端和客户端来使用我们自定义的Fibonacci动作类型。

本篇完。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/617277.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-705. 设计哈希集合【设计 数组 哈希表 链表 哈希函数】

LeetCode-705. 设计哈希集合【设计 数组 哈希表 链表 哈希函数】 题目描述&#xff1a;解题思路一&#xff1a;超大数组解题思路二&#xff1a;拉链法解题思路三&#xff1a;定长拉链数组 题目描述&#xff1a; 不使用任何内建的哈希表库设计一个哈希集合&#xff08;HashSet&…

机器学习和深度学习--李宏毅(笔记与个人理解)Day15

Day 15 重温宝可梦分类器 – 浅谈机器学习基本原理 REview 见我之前的笔记即可~ More parameters , easier to overfit ,why ? Step 1 a function (Based on domain knowedge) 线条的复杂程度&#xff1f; Edge Detction Step 2 Loss 这里注意一下哈&#xff0c;这个corss-en…

PCL 高斯滤波(C++详细过程版)

目录 一、概述二、代码实现三、结果展示1、滤波前2、滤波后3、对比PCL 高斯滤波(C++详细过程版)由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 高斯滤波在PCL里有现成的调用函数,具体算法原理和实现代码见:

网络篇12 | 链路层 ARP

网络篇12 | 链路层 ARP 01 简介1&#xff09;工作过程2&#xff09;ARP缓存2.1 动态ARP表项2.2 静态ARP表项2.3 短静态ARP表项2.4 长静态ARP表项 02 ARP报文格式1&#xff09;ARP请求报文格式2&#xff09;ARP响应报文格式3&#xff09;套一层以太网帧&#xff08;ARP帧&#x…

计算机网络 Cisco静态路由实验

一、实验要求与内容 1、路由器的基本配置 &#xff08;1&#xff09;命名 &#xff08;2&#xff09;关闭域名解析 &#xff08;3&#xff09;设置路由接口IP地址 2、配置静态路由以实现所有客户机都能互相通信 3、配置默认路由 4、了解ping命令和trace&#xff08;跟踪…

【C++学习】深入理解C++异常处理机制:异常类型,捕获和处理策略

文章目录 ♫一.异常的提出♫二.异常的概念♫三.异常的使用♫3.1 异常的抛出和捕获♫3.2.异常的重新抛出♫3.3异常安全♫3.4 异常规范 ♫4.自定义异常体系♫5.C标准库的异常体系♫6.异常的优缺点 ♫一.异常的提出 之前&#xff1a; C语言传统的处理错误的方式与带来的弊端&…

14_SpringMVC

文章目录 MVCSpringMVC与JavaEE对比SpringMVCSpringMVC的核心流程SpringMVC入门案例RequestMapping注解的使用Handler方法的返回值Handler方法的形参keyvalue形式的请求参数Json请求参数 RESTful风格接口静态资源处理FilterHandlerInterceptor异常处理SpringMVC核心流程流程图 …

Spring之AOP的详细讲解

目录 一.SpringAOP是什么&#xff1f; 1.1理论知识点 1.2简单的AOP例子 二.SpringAOP的核心概念 2.1切点(Pointcut) 2.2通知&#xff08;Advice&#xff09; 2.3切⾯(Aspect) 2.4通知类型 2.5切⾯优先级 Order 2.6切点表达式 2.6.1 execution表达式 2.6.2annotati…

【MYSQL】MySQL整体结构之系统服务

一、系统服务层 学习了MySQL网络连接层后&#xff0c;接下来看看系统服务层&#xff0c;MySQL大多数核心功能都位于这一层&#xff0c;包括客户端SQL请求解析、语义分析、查询优化、缓存以及所有的内置函数&#xff08;例如&#xff1a;日期、时间、统计、加密函数...&#xff…

SAP SD学习笔记07 - 紧急发注(急单),现金贩卖,贩卖传票Type/ 明细Category 及其Customize

上面讲SAP中主干流程的时候&#xff0c;还有后面讲一括处理的时候&#xff0c;都用的是 OR 标准受注。 SAP SD学习笔记01 - 简单走一遍SD的流程&#xff1a;受注&#xff0c;出荷&#xff0c;请求_怎么学好sd模块-CSDN博客 下面开始讲一些稀奇古怪的非标准流程。 当然&#x…

【竞技宝jjb.lol】LOL:T1成功击败HLE晋级MSI!

北京时间2024年4月13日,英雄联盟LCK2024春季季后赛继续进行,昨天迎来败者组决赛HLE对阵T1。本场比赛HLE率先拿下一局之后,T1连续两局在后期决策上碾压HLE拿到赛点,第四局zeus祭出上单VN在中期杀穿HLE后排,最终T1以3-1的比分击败HLE晋级春季决赛,同时也拿到了MSI的参赛资格。以下…

第 128 场 LeetCode 双周赛题解

A 字符串的分数 模拟 class Solution {public:int scoreOfString(string s) {int res 0;for (int i 1; i < s.size(); i) res abs(s[i] - s[i - 1]);return res;} };B 覆盖所有点的最少矩形数目 排序&#xff1a;先按照 x i x_i xi​ 排序&#xff0c;然后顺序遍…