话题消息的定义与使用

话题消息的定义与使用_第1张图片

  1. 自定义话题消息

话题消息的定义与使用_第2张图片

  • 在learning_topic中创建msg文件夹,存放消息的相关定义
  • 进入msg,右键,打开终端
touch Person.msg

即可创建Person.msg文件
ros根据定义把它变成不同的C++和Python文件
话题消息的定义与使用_第3张图片

  • 这里的package.xml和CMakeLists.txt在learning_topic功能包下

  • 编译选项解读:
    图片中带省略号的那部分,意思是在函数括号最后面加上省略号后的部分

  • 编译依赖:依赖动态产生message的一个功能包
    运行依赖:依赖动态message_runtime运行时的一个依赖
    在这里插入图片描述

  • 将Person.msg为定义的消息接口,,针对这个文件来做编译
    第二句意思为编译Person.msg需要ROS已有的包std_msgs(String,uint8都是在里面定义的,文件里有注释说明)

  • catkin_package(…… message_runtime)
    在CA–这行,取消注释,往该行最后添加

catkin_make

编译后,可在devel/include/learning_topic中看到Person.h(可作为头文件调用)。
话题消息的定义与使用_第4张图片

  • 把person_publisher.cpp和person_subscriber.cpp放进learning_topic的src中
    话题消息的定义与使用_第5张图片
    话题消息的定义与使用_第6张图片

  • 将以下代码加入到learning_topic下的CMakeLists文件下
    最后一句使与头文件Person.h产生连接

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)
catkin_make
source devel/setup.bash 
roscore
rosrun learning_topic person_subscriber 
rosrun learning_topic person_publisher

把master关闭后,不影响通信,已连接,关系已创建
话题消息的定义与使用_第7张图片

你可能感兴趣的:(ROS笔记)