ROS2学习笔记20--创建一个action
Posted 鸿_H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS2学习笔记20--创建一个action相关的知识,希望对你有一定的参考价值。
概要:这篇内容主要介绍如何创建一个action
环境:ubuntu20.04,ros2-foxy,vscode
最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.
3.1创建一个动作(原文:https://docs.ros.org/en/foxy/Tutorials/Actions/Creating-an-Action.html
)
>>
教程>>
创建一个动作
你正阅读的是ros2
较老版本(Foxy
),但仍然支持的说明文档.想查看最新版本的信息,请看galactic
版本链接( https://docs.ros.org/en/galactic/Tutorials.html
)
创建一个动作
目标:在ro2
包里面定义一个动作
课程等级:中级
时长:5min
目录
1.背景
2.预备知识
3.步骤
3.1定义一个动作
3.2编译一个动作
4.总结
5.下一步
6.相关内容
1.背景
你在之前ros2动作课程学习到动作(知识).例如其他的通信类型和它们各自的接口(话题/msg,
服务/srv
),你也可以在自己包里面自定义动作.这节课向你展示如何定义和编译动作来使用,下节课要学习编写的动作服务器和动作客户端.
2.预备知识
你应该安装了ros2
和colcon
.
设置好工作空间,创建一个名为action_tutorials_interfaces
的包:
(记得首先source
一下ros2
环境变量)
linux:
mkdir -p action_ws/src
cd action_ws/src
ros2 pkg create action_tutorials_interfaces
3.步骤
3.1定义一个动作
动作定义在.action
文件中,样式如同:
# Request
---
# Result
---
# Feedback
动作由三个定义信息组成,并且信息之间使用---
隔开.
request
请求信息,动作客户端发出,传到动作服务器端来启动一个新目标.
result
结果信息,当目标达成时,该信息由动作服务器发出,传到动作用户端
Feedback
反馈信息,定期从动作服务器发送关于目标情况的信息到动作用户端.
一个动作实例可以等同于一个目标.
我们想用一个Fibonacci
动作计算斐波纳契数列.
在我们的ros2
包action_tutorials_interfaces
,创建一个action
目录
linux:
cd action_tutorials_interfaces
mkdir action
在action
目录,创建包含一下内容,名为Fibonacci.action
文件:
int32 order
---
int32[] sequence
---
int32[] partial_sequence
order
是我们想要计算的斐波纳契数列的请求目标,sequence
是结果,partial_sequence
是当前为止的反馈.
3.2编译一个动作
在我们代码中使用动作新类型Fibonacci
之前,我们必须把这个(动作)定义 传送到rosidl
代码生成器.
在action_tutorials_interfaces
包的CMakeLists.txt
文件里面,添加下面几行代码到ament_package()
行的前面,从而完成这操作.
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"action/Fibonacci.action"
)
我们应该添加必要的依赖到package.xml
文件:
<buildtool_depend>rosidl_default_generators</buildtool_depend>
<depend>action_msgs</depend>
<member_of_group>rosidl_interface_packages</member_of_group>
注意,我们需要有action_msgs
依赖关系的,由于动作定义包括另外的元数据(例如:goal IDs
)
现在,我们可以编译包含Fibonacci动作定义的包:
# Change to the root of the workspace
cd ~/action_ws
# Build
colcon build
完成!
按照惯例,我们把包名和action
作为动作类型名称.所以,当我们用到新动作时,应该使用全称action_tutorials_interfaces/action/Fibonacci
.
我们使用指令行工具检查一下成功构建的动作:
# Source our workspace
# On Windows: call install/setup.bat
. install/setup.bash
# Check that our action definition exists
ros2 interface show action_tutorials_interfaces/action/Fibonacci
你会看到Fibonacci
动作打印到屏幕上.
4.总结
在本课程,你学习了动作结构定义.你也学习了如何配置CMakeLists.txt
和package.xml
去构建一个新动作接口,以及如何检查是否成功构建.
5.下一步
下一步,让我们运用新定义的动作接口,创建一个动作服务器和客户端(c++
或python
).
6.相关内容
想了解更多ros动作内容,可以参考设计文档(http://design.ros2.org/articles/actions.html
).
其他
个人认为重点:
自定义动作的结构编写;包里面的CMakeLists.txt
和package.xml
的配置;如何验证动作的成功构建.
这课程是在等毕业证那十几天搞的,室友问,现在在线翻译这么强大,为啥还在这里瞎折腾呢?我说,我的目地是好好认真看一下,了解一下,自己折腾,目前是我想到最好的办法来获得最佳效果,即使这翻译有点别扭,哈哈哈.
#####################
不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈
以上是关于ROS2学习笔记20--创建一个action的主要内容,如果未能解决你的问题,请参考以下文章
ROS2学习笔记21--编写action服务器和客户端(C++)