ROS2教程 06 自定义消息接口

简介: 本文是关于如何在ROS2(机器人操作系统2)中创建和使用自定义消息接口的教程,包括创建功能包、定义消息和请求/响应服务、修改CMakeLists.txt和package.xml文件,以及编译和测试消息接口的步骤。

一、消息接口

ROS中已经预先定义了许多中消息接口,可以直接调用,比如:

std_msgs/msg/Bool                 std_msgs/msg/Int64
std_msgs/msg/Byte                 std_msgs/msg/Int64MultiArray
std_msgs/msg/ByteMultiArray       std_msgs/msg/Int8
std_msgs/msg/Char                 std_msgs/msg/Int8MultiArray
std_msgs/msg/ColorRGBA            std_msgs/msg/MultiArrayDimension
std_msgs/msg/Empty                std_msgs/msg/MultiArrayLayout
std_msgs/msg/Float32              std_msgs/msg/String
std_msgs/msg/Float32MultiArray    std_msgs/msg/UInt16
std_msgs/msg/Float64              std_msgs/msg/UInt16MultiArray
std_msgs/msg/Float64MultiArray    std_msgs/msg/UInt32
std_msgs/msg/Header               std_msgs/msg/UInt32MultiArray
std_msgs/msg/Int16                std_msgs/msg/UInt64
std_msgs/msg/Int16MultiArray      std_msgs/msg/UInt64MultiArray
std_msgs/msg/Int32                std_msgs/msg/UInt8
std_msgs/msg/Int32MultiArray      std_msgs/msg/UInt8MultiArray

但如果需要自己建立消息接口方便Topic和Service使用,则需要进行如下操作。

二、建立消息接口

1.创建功能包

在工程中,通常将自定义的消息接口全部放在同一个包里会比较合适

ros2 pkg create --build-type ament_cmake tutorial_interfaces

目前在ros2中只能使用(ament_)cmake来创建单纯含有.msg 和 .srv的包

2.创建文件夹

在ROS中,通常使用功能包下的文件夹msg和srv来分别存储msg类型和srv类型的消息接口文件

mkdir msg
mkdir srv

3.创建消息接口文件

在ROS中,消息接口文件的首字母大写,格式如下例:
Num.msg

int64 num

AddThreeInts.srv

int64 a
int64 b
int64 c
---
int64 sum

4.修改CMakeLists.txt

将这一条加入CMakeLists.txt的中间部分

find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/Num.msg"
  "srv/AddThreeInts.srv"
)

这里使用了转换包rosidl_default_generators,它根据消息接口文件生成用于特定语言(如C++,Python等)的代码,便于在这些语言里使用消息接口文件

5.修改package.xml

加入如下部分,因为这个功能包对rosidl_default_generators有依赖关系

<build_depend>rosidl_default_generators</build_depend>

<exec_depend>rosidl_default_runtime</exec_depend>

<member_of_group>rosidl_interface_packages</member_of_group>

三、测试消息接口

1.编译

colcon build --packages-select tutorial_interfaces

2.测试

ros2 interface show tutorial_interfaces/srv/AddThreeInts
目录
相关文章
|
11月前
|
Ubuntu 机器人 Linux
|
4月前
|
Ubuntu 机器人 Shell
在Jetson TX2的Ubuntu18.04系统中安装ROS的教程
所有这些步骤并不复杂,但确实需要仔细一点。如果遇到问题,不要灰心,问题是解决问题的开始。保持耐心,细心阅读错误信息,通常情况下,问题的答案就藏在其中。祝ROS旅程顺利!
124 18
|
存储 自然语言处理 机器人
ROS2教程06 ROS2行动
这篇文章是关于ROS2(Robot Operating System 2)行动(Action)通信机制的教程,包括行动的概念、特点、命令行工具的使用,以及如何编写行动的客户端和服务器代码,并介绍了如何测试行动通信。
373 4
ROS2教程06 ROS2行动
|
机器人 Shell Python
ROS2教程05 ROS2服务
这篇文章是关于ROS2(Robot Operating System 2)服务的教程,涵盖了服务的概念、特性、命令行工具的使用,以及如何编写服务的服务器和客户端代码,并提供了测试服务通信机制的示例。
391 4
ROS2教程05 ROS2服务
|
传感器 算法 数据可视化
ROS2教程04 ROS2话题
这篇文章是关于ROS2(Robot Operating System 2)的教程,主要介绍了ROS2中话题的概念、特性、使用方式,以及如何编写发布者和订阅者的代码。
461 3
ROS2教程04 ROS2话题
|
11月前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
562 0
|
11月前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
473 0
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
1783 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
617 0
ROS2教程07 ROS2自定义消息接口
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
381 1

热门文章

最新文章

推荐镜像

更多
  • ros