ROS2创建自定义数组类消息并进行发布

说明

自定义创建一个数组类型的消息,使用python创建ROS2节点,并将消息进行发布
参考链接:https://blog.csdn.net/qq_32618327/article/details/128793362

1.创建自定义消息

初始化工作空间

mkdir -p myros_ws/src

1.1 创建自定义消息

创建独立的功能包来保存自定义消息,自定义消息的说明如下:

  1. 发布的topic是一个包含了多个元素的数组,针对同一次输入有多个格式相同的输入(如同一张图像有多个目标检测结果)
  2. 每个数组元素包含多个数据类型
cd myros_ws/src
ros2 pkg create --build-type ament_cmake box_interfaces
cd box_interfaces/
mkdir msg && cd msg
touch Box3d.msg Box3dArray.msg

创建成功会有LOG打印:
在这里插入图片描述

将以下内容添加到对应的消息文件:
# Box3d.msg是一个基础的检测框的信息,包括了检测目标的类别、得分、中心点位置、长宽高、yaw角等信息

# Box3d.msg
int8 class_id
float32 score
geometry_msgs/Point center
float32 dx
float32 dy
float32 dz
float32 yaw

Box3dArray.msg是一个数组类消息,用于存放同一帧数据的多个检测结果,数组中的数据类型是上面定义的OBJBox3d,数组的名词为obj_box3d_array

# Box3dArray.msg
std_msgs/Header header
Box3d[] obj_box3d_array

1.2 修改CMakeLists.txt和package.xml

CMakeLists.txt find dependencies下添加相应的依赖和自定义消息目录

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/Box3d.msg"
  "msg/Box3dArray.msg"
  DEPENDENCIES geometry_msgs
)

package.xml中添加相应依赖

    <buildtool_depend>rosidl_default_generators</buildtool_depend>
    <member_of_group>rosidl_interface_packages</member_of_group>

  <export>
    <build_type>ament_cmake</build_type>
    <depend>rclpy</depend>
    <depend>std_msgs</depend>
    <depend>geometry_msgs</depend>
    <build_depend>message_generation</build_depend>
    <exec_depend>message_runtime</exec_depend>
  </export>

2.创建发布者

2.1 创建发布者并编写发布节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值