古月居_ROS自定义消息

本文介绍了在ROS中创建自定义消息的步骤。首先,在功能包内新建消息文件夹,接着编写消息定义文件,更新包描述文件添加依赖和编译指令,最后通过`rosmsg`生成相关语言文件。此外,还提及了如何使用`rosgen`命令来替代手动过程。
摘要由CSDN通过智能技术生成

  在ROS中,如果没有现成的消息类型来描述要去传递的消息,通常我们会使用自定义的消息类型。
  在catkin_ws/src/learning_topic目录下新建一个文件夹msg,然后在该文件夹内新建文件Person.msg

string name
uint8 sex
uint8 age

uint8 unknown = 0
uint8 male    = 1
uint8 female  = 2

  在catkin_ws/src/learning_topic/package.xml中添加功能包依赖:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

  在catkin_ws/src/learning_topic/CMakeLists.txt中添加编译选项:

find_package(catkin REQUIRED COMPONENTS
    geometry_msgs
    roscpp
    rospy
    std_msgs
    turtlesim
    message_generation # 这是新加的
)

add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)

catkin_package(
    # INCLUDE_DIRS include
    # LIBRARIES learning_topic
    CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim message_runtime
    # DEPENDS system_lib
)

  最后编程生成语言相关文件:

$ cd ~/catkin_ws
$ catkin_make

于是会在catkin_ws/devel/include/learning_topic目录下生成一个Person.h文件。
  在catkin_ws/src/learning_topic/src下新建文件person_publisher.cpp

/* 该例程将发布“/person_info”话题,自定义消息类型“learning_topic::Person” */
#include <ros/ros.h>
#include "learning_topic/Person.h"

int main ( int argc, char **argv ) {
   
    ros::init ( argc, argv, "person_publisher" ); /* ROS节点初始化 */
    ros::NodeHandle n; /* 创建节点句柄 */
    /* 创建一个Publisher,发布名为“/person_info”的topic,消息类型为“learning_topic::Person”
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值