自学内容网 自学内容网

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

本篇完。 


原文地址:https://blog.csdn.net/DIANZI520SUA/article/details/137736190

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!