关键词:
概要:这篇内容主要介绍如何创建一个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学习笔记12--创建ros2包(代码片段)
概要:这篇主要介绍如何创建ros2包环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.2创建自己第一个ros2包(原文:https://docs.ros.org/en/foxy/Tutor... 查看详情
ros2学习笔记21--编写action服务器和客户端(c++)(代码片段)
概要:这篇内容主要介绍如何使用C++来编写动作服务器和客户端环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.3.2编写动作服务器和客户端(... 查看详情
ros2学习笔记11--工作空间的创建(代码片段)
概要:这篇主要介绍工作空间的创建环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.1创建工作空间(原文:https://docs.ros.org/en/foxy/Tutorials/Wor... 查看详情
ros2学习笔记15--创建自定义ros2接口文件msg和srv(代码片段)
概要:这篇主要介绍如何创建定制型ros2接口文件msg和srv环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.7创建自定义ros2消息msg和srv文件(原文... 查看详情
ros2学习笔记16--详述ros2接口(代码片段)
概要:这篇主要进一步介绍ros2接口.环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.8拓展ros2接口(原文:https://docs.ros.org/en/foxy/Tutorials... 查看详情
ros2学习笔记13--编写一个简单的发布器和侦听器(c++)(代码片段)
概要:这篇主要介绍编写发布器和侦听器的简单套路(C++)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.3编写一个简单的发布器和... 查看详情
ros2学习笔记14--编写一个简单的服务器和客户端(c++)(代码片段)
概要:这篇主要介绍c++版本服务端和客户端的编写环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.5编写一个简单的服务器和客户端(C+... 查看详情
ros2学习笔记25--ros2话题统计编写教程(c++)(代码片段)
概要:这篇内容主要介绍用c++编写能够统计话题的侦听器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.1ros2话题统计教程(C++)(... 查看详情
ros2学习笔记19--探索ros2doctor工具(代码片段)
概要:这篇主要介绍ros2doctor工具环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.11探索ros2doctor工具(原文:https://docs.ros.org/en/foxy/Tutorials/Get... 查看详情
ros2学习笔记10--使用ros2bag进行录制和回放数据(代码片段)
概要:这篇主要介绍使用ros2bag进行录制和回放数据环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.1.10录制和回放数据(原文:https://docs.ros.or... 查看详情
ros2学习笔记24--用colcon对包进行编译(代码片段)
概要:这篇内容主要介绍用colcon对包进行编译环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.6用colcon对包进行编译(原文:https://docs.ros.org/en/foxy/Tu... 查看详情
ros2学习笔记27--实现自定义内存分配器(代码片段)
概要:这篇内容主要介绍如何实现自定义内存分配器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.3实现自定义内存分配器(原文:https://docs.ros.or... 查看详情
ros2学习笔记17--在类中使用参数(c++)(代码片段)
概要:这篇主要介绍在类中使用参数(C++)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.9在类中使用参数(C++)(... 查看详情
ros2学习笔记29--项目从ros1迁移到ros2的经验参考(代码片段)
环境:ubuntu20.04,ros-foxy(ros2),vscode背景:项目需要,一直折腾把ros1下面的包升级到ros2版本.以下纯属个人查找资料摸索,自我理解所得,有错误的地方,望大佬们不吝赐教.1.消失的句柄ro... 查看详情
ros2学习笔记18-velodyne16雷达点云在ros2中可视化案例参考(代码片段)
环境:ubuntu20.04,ros-foxy,vscode,velodyne-16背景:练习如何将velodyne-16雷达点云数据在ros2中读取并可视化.折腾了很久,并没有找到类似案例,所以自己总结一下.1.修改电脑ip这里修改自己电脑ip,跟大多数... 查看详情
ros2学习笔记22--使用launch启动/监听多个node节点(代码片段)
概要:这篇内容主要介绍如何使用launch启动/监听多个node节点环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.4使用launch启动/监听多个node节点ÿ... 查看详情
ros2学习笔记23--将多个node节点组合到单一进程中(代码片段)
概要:这篇内容主要介绍将多个node节点组合到单一进程中环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.5多个node节点组合到单一进程中(原文:ht... 查看详情
ros2学习笔记26--使用快速dds查找服务作为查找协议(社区贡献)(代码片段)
概要:这篇内容主要介绍使用快速DDS查找服务作为查找协议(社区贡献)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.2使用快速DDS查找服务作为... 查看详情