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
目录
相关文章
|
9天前
|
Ubuntu 机器人 Linux
|
9天前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
|
9天前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
|
2月前
|
存储 自然语言处理 机器人
ROS2教程06 ROS2行动
这篇文章是关于ROS2(Robot Operating System 2)行动(Action)通信机制的教程,包括行动的概念、特点、命令行工具的使用,以及如何编写行动的客户端和服务器代码,并介绍了如何测试行动通信。
105 4
ROS2教程06 ROS2行动
|
2月前
|
机器人 Shell Python
ROS2教程05 ROS2服务
这篇文章是关于ROS2(Robot Operating System 2)服务的教程,涵盖了服务的概念、特性、命令行工具的使用,以及如何编写服务的服务器和客户端代码,并提供了测试服务通信机制的示例。
67 4
ROS2教程05 ROS2服务
|
2月前
|
传感器 算法 数据可视化
ROS2教程04 ROS2话题
这篇文章是关于ROS2(Robot Operating System 2)的教程,主要介绍了ROS2中话题的概念、特性、使用方式,以及如何编写发布者和订阅者的代码。
65 3
ROS2教程04 ROS2话题
|
2月前
|
传感器 自然语言处理 机器人
ROS2教程03 ROS2节点
本文是关于ROS2(机器人操作系统2)节点的教程,涵盖了节点的概念、特性、使用方法,以及如何编写、测试和使用ROS2节点相关的命令行工具。文章介绍了节点的独立性、任务执行、跨硬件分布和多语言编写能力。详细解释了如何启动节点、查看节点信息、编写节点代码(包括面向过程和面向对象的方法),以及如何为功能包添加依赖和入口点。此外,还探讨了重映射节点名称和使用节点命令行工具的方法,如 `ros2 node info` 和 `ros2 node list`。适合已安装ROS2 Humble和Ubuntu 22.04操作系统,并具有Shell基础知识的读者学习。
59 1
|
2月前
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
256 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
2月前
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
49 0
ROS2教程07 ROS2自定义消息接口
|
5月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
162 1

推荐镜像

更多