代码包下载链接:https://github.com/yongzcong/communication_learn.git
内容:假设发布的数据包括三个值 x , y , z x,y,z x,y,z,首先定义msg数据格式;其次新建发布节点publisher,发布msg格式的数据;然后新建节点listener,订阅发布消息;最后,在rqt_plot中订阅发布的数据并可视化显示。
1、msg格式数据与编译文件
1.1 定义数据结构
进入工作空间:
/catkin_ws/src/note/
在note/msg建立文件类型文件test.msg
写入消息的类型:
float64 x
float64 y
float64 z
注意:msg的文件名,后面的cpp文件均需包含此文件。
1.2 CMakeLists.txt文件
cmake_minimum_required(VERSION 2.8.3)
project(note)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
geometry_msgs
)
add_message_files(FILES test.msg)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES learning_communication
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
# DEPENDS system_lib
)
include_directories(
include
${catkin_INCLUDE_DIRS}
)
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker ${PROJECT_NAME}_generate_messages_cpp)
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener ${PROJECT_NAME}_generate_messages_cpp)
1.3 package.xml文件
<?xml version="1.0"?>
<package format="2">
<name>note</name>
<version>0.0.0</version>
<description>The note package</description>
<maintainer email="hcx@todo.todo">hcx</maintainer>
<license>TODO</license>