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动作类型。

本篇完。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值