ROS话题消息定义使用


除了ROS定义好的消息类型,我们还可以自己定义消息的类型。

定义msg文件

在我们首先定义好的功能包文件下创建msg文件夹,打开终端,在msg目录下运行 touch Person.msg ,创建msg文件。这里我们用到之前ROS发布者publisher和订阅者subscriber编程实现创建好的功能包learning_topic , 在learning_topic文件下创建的msg文件夹.

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws/src/learning_topic/msg$ touch Person.msg

自定义话题消息

在定义好的msg文件下,创建我们的话题消息,数据接口定义,文件和语言无关。

string name
uint8  sex
uint8  age

uint8 unkown = 0
uint8 male   = 1
uint8 female = 2

添加功能包依赖

在learning_topic文件夹下package.xml中添加功能包依赖,一个是编译依赖,一个是执行依赖:

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

编译依赖动态产生message
添加位置如图
在这里插入图片描述
接下来添加C++文件
将文末资料中的 person_publisher.cpp 和 person_subscriber.cpp 文件添加到learning_topic文件下的src文件中:
在这里插入图片描述

添加编译选项

在learning_topic文件夹下CMakeLists.txt中添加编译选项 : 在find_package中添加一个message_generation项:
在这里插入图片描述
添加把msg文件转化成对应的程序文件的配置项
add_message_files(FILES Person.msg) //确定定义接口
generate_messages(DEPENDENCIES std_msgs)//依赖已有的功能包
在这里插入图片描述

创建messge运行依赖
在catkin_package()中取消CATKIN_DEPENDS注释,末尾添加message_runtime:
在这里插入图片描述

到这里就完成了msg文件编译的基本配置。
回到catkin_ws根目录下进行编译 catkin_make

yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws$ catkin_make

得到:编译成功
在这里插入图片描述
编译完成后在learning_topic下 的CMakeLists.txt 添加编译规则:

add_executable(person_publisher src/person_publisher.cpp)
target_link_libraries(person_publisher ${catkin_LIBRARIES})
add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)

add_executable(person_subscriber src/person_subscriber.cpp)
target_link_libraries(person_subscriber ${catkin_LIBRARIES})
add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)

在这里插入图片描述再次进行编译,话题消息的定义就完成了。

话题消息使用

打开一个新的终端,运行roscore打开ROS;
再打开一个新的终端运行 rosrun learning_topic person_publisher,ROS发布person信息;
接着再打开一个终端运行 rosrun learning_topic person_subscriber,ROS会订阅person信息;

yue@yue-HP-288-Pro-G6-Microtower-PC:~$ rosrun learning_topic person_publisher
yue@yue-HP-288-Pro-G6-Microtower-PC:~$ rosrun learning_topic person_subscriber

在这里插入图片描述

实验代码获取

点击获取实验例程资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聪明小張

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值