一、创建工作空间
1、创建名为catkin_ws的工作空间
```cpp
mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make
''
2、创建test功能包
cd ~/catkin_ws/src
catkin_create_pkg test roscpp rospy std_msgs
3、创建msg文件
在~/catkin_ws/src/test/目录下新建文件夹msg,并编写test_msg1.msg文件如下:
int32 A
int32 B
int32 C
4、更改package.xml文件夹
在~/catkin_ws/src/test/目录下,打开package.xml文件,添加如下语句:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
二、编写发布话题代码
在~/catkin_ws/src/test/src/目录下,新建名为node_a.cpp的文件:
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "test/test_msg1.h"
#include <sstream>
int main(int argc , char **argv)
{
ros::init(argc,argv,"node_a");//创建节点node_a
ros::NodeHandle n; //创建句柄
ros::Publisher chatter_pub=n.advertise<test::test_msg1>("message",10);//发布话题名为message的话题消息,消息格式为test_msg1
ros::Rate loop_rate(10);
while(ros::ok())
{
test::test_msg1 msg;//初始化消息数据
msg.A=14;
msg.B=15;
msg.C=92;
ROS_INFO("node_a is publishing msg.A msg.B msg.C");
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
三、更改CMakeLists.txt文件
1、在find_package添加message_generation
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
2、找到注释的add_message_files,更改为
add_message_files(
FILES
test_msg1.msg
#Message2.msg
)
3、同上,更改generate_messages为
generate_messages(
DEPENDENCIES
std_msgs
)
4、找到注释的catkin_package添加
catkin_package(
CATKIN_DEPENDS ...... message_runtime
)
5、在CMakeLists.txt文末添加
add_executable(node_a src/node_a.cpp)
add_dependencies(node_a test_generate_message_cpp)
target_link_libraries(node_a ${catkin_LIBRARIES})
四、运行结果
编译运行之后的结果如下图所示: