原标题:基于msg的ROS话题发布
原文来自:CSDN 原文链接:https://blog.csdn.net/Wolf_Young/article/details/102649190
一、创建工作空间
1、创建名为catkin_ws的工作空间
```cpp
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
cd ~/catkin_ws
catkin_make
''1234567891011
2、创建test功能包
cd ~/catkin_ws/src
catkin_create_pkg test roscpp rospy std_msgs12
3、创建msg文件
在~/catkin_ws/src/test/目录下新建文件夹msg,并编写msg文件如下:
int32 A
int32 B
int32 C123
4、更改package.xml文件夹
在~/catkin_ws/src/test/目录下,打开package.xml文件,添加如下语句:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>12
二、编写发布话题代码
在~/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;}12345678910111213141516171819202122232425
三、更改CMakeLists.txt文件
1、在find_package添加message_generation
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation)123456
2、找到注释的add_message_files,更改为
add_message_files(
FILES
test_msg1.msg #Message2.msg )12345
3、同上,更改generate_messages为
generate_messages(
DEPENDENCIES
std_msgs )1234
四、编译运行
打开终端,进入~/catkin_ws/工作空间下
cd ~/catkin_ws
catkin_make
##Ctrl+Alt+T重新打开一个终端
roscore
##Ctrl+Alt+T重新打开一个终端
rosrun test node_a
##Ctrl+Alt+T重新打开一个终端
rostopic echo /message12345678
1
1
1
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com