ROS2自定义消息接口实战

一、创建功能包

ros2 pkg create <功能包名称> --build-type ament_cmake --dependencies rosidl_default_generators geometry_msgs

例:

ros2 pkg create ze_msg_interfaces --build-type ament_cmake --dependencies rosidl_default_generators

注意功能包类型必须为:ament_cmake

依赖rosidl_default_generators必须添加

二、创建文件

cd ze_msg_interfaces/src/
mkdir msg && cd msg
touch RobotPose.msg

其中ros的基础类型有(同时后面加上[]可形成数组)

bool

byte

char

float32

float64

int8

uint8

int16

uint16

int32

uint32

int64

uint64

string

包装类型

即在已有的接口类型上进行包含,比如

uint32 id

string image_name

sensor_msgs/Image

 编辑RobotPose.msg文件,我需要如下类型

int32 pose_x
int32 pose_y
float64 pose_pitch
float64 pose_roll
float64 pose_yaw

接着修改CMakeLists.txt

find_package(rosidl_default_generators REQUIRED)
# 添加下面的内容
rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/RobotPose.msg"
)

接着修改package.xml


  <buildtool_depend>ament_cmake</buildtool_depend>

  <member_of_group>rosidl_interface_packages</member_of_group> #添加这一行

  <depend>rosidl_default_generators</depend>

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>

编译

​
colcon build

自定义接口就完成啦!

三、调用自定义消息接口

例:我在自己创建的另一个功能包中的talk.cpp文件中调用自定义接口

首先修改CMakeLists.txt

find_package(ze_msg_interfaces REQUIRED)  #添加这一行

add_executable(talk src/talk.cpp)                #talk.cpp是我的节点文件

ament_target_dependencies(talk rclcpp serial ze_msg_interfaces) #添加功能包依赖

 修改package.xml文件

添加这一行

  <buildtool_depend>ze_msg_interfaces</buildtool_depend>

然后在talk.cpp 里直接添加头文件就可以调用接口了

#include "ze_msg_interfaces/msg/robot_pose.hpp"

 接口调用:    ze_msg_interfaces::msg::RobotPose

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值