ROS2教程 06 自定义消息接口

一、消息接口

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值