我是靠谱客的博主 坚强溪流,最近开发中收集的这篇文章主要介绍ros中话题消息topic的定义与使用简介1.定义msg文件2.在package.xml文件中添加功能包依赖3. 在CMakeLists.txt添加编译选项使用实例总结使用的注意事项,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 简介
- 1.定义msg文件
- 2.在package.xml文件中添加功能包依赖
- 3. 在CMakeLists.txt添加编译选项
- 使用实例
- 发布者
- 订阅者
- 1.修改CMakeLists.txt
- 2.编译
- 3.修改环境变量
- 4.执行
- 执行结果
- 总结
- 使用的注意事项
简介
话题消息的自定义是一个语言,他能根据不同的语言变换不同的形式
1.定义msg文件
文件夹位置:功能包中
创建一个名为msg的文件夹用来存储自定义消息
在msg中创建自定义消息文件,文件的后缀为.msg
文件内容:
string name
uint8 sex
uint8 age
uint8 unknown = 0
uint8 male = 1
unit8 famale = 2
2.在package.xml文件中添加功能包依赖
<build_depend>message_generation</build_depend>//构建依赖
<exec_depend>message_runtine</exec_depend>//运行依赖
3. 在CMakeLists.txt添加编译选项
- find_package
message_generation
声明ROS消息、服务和操作
声明ROS动态重新配置参数
至此添加完成
如果在devel/include文件夹下生成头文件说明创作消息成功
使用实例
发布者
#include <ros/ros.h>
#include <learning_topic/Person.h>
int main(int argc, char** argv )
{
ros::init(argc, argv, "person_publisher");
ros::NodeHandle n;
ros::Publisher person_info_publisher = n.advertise<learning_topic::Person>("/person_info", 10);
ros::Rate loop_rate(1);
while(ros::ok())
{
learning_topic::Person person_msg;
person_msg.name = "zhang";
person_msg.age = 21;
person_msg.sex = learning_topic::Person::male;
person_info_publisher.publish(person_msg);
ROS_INFO("Publish Person Info: name:%s age:%d sex: %d",person_msg.name.c_str(), person_msg.age, person_msg.sex);
loop_rate.sleep();
}
}
订阅者
#include <ros/ros.h>
#include <learning_topic/Person.h>
void personCallback(const learning_topic::Person::ConstPtr& msg)
{
ROS_INFO("Subscribe Person Info: name:%s age:%d sex: %d",
msg->name, msg->age, msg->sex);
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "person_subscriber");
ros::NodeHandle n;
ros::Subscriber person_info_subscriber = n.subscribe("/person_info",10,personCallback);
ros::spin();
return 0;
}
1.修改CMakeLists.txt
在build模块添加下面代码
add_executable(person_subscriber src/person_subscriber.cpp)
target_link_libraries(person_subscriber ${catkin_LIBRARIES})
add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)
add_executable(person_publisher src/person_publisher.cpp)
target_link_libraries(person_publisher ${catkin_LIBRARIES})
add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)
2.编译
回到工作空间
执行catkin_make
3.修改环境变量
source devel/setup.bash
4.执行
rosrun learning_topic person_publisher
出现以上错误,是因为没有运行roscore
打开roscore即可
执行结果
总结
使用的注意事项
需要在使用到自定义话题的节点的CMakeLists.txt部分中添加
add_dependencies(节点可执行目标文件 ${PROJECT_NAME}_generate_messages_cpp)
最后
以上就是坚强溪流为你收集整理的ros中话题消息topic的定义与使用简介1.定义msg文件2.在package.xml文件中添加功能包依赖3. 在CMakeLists.txt添加编译选项使用实例总结使用的注意事项的全部内容,希望文章能够帮你解决ros中话题消息topic的定义与使用简介1.定义msg文件2.在package.xml文件中添加功能包依赖3. 在CMakeLists.txt添加编译选项使用实例总结使用的注意事项所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复