一、工程结构
新的ros package book
二、定义 msg
编译后,在工作空间下的devel 中include 有头文件 book/Student.h
发布端
#include "ros/ros.h" #include "book/Student.h" #include <cstdlib> using namespace std; int main(int argc, char** argv) { // initial and name node ros::init(argc, argv, "node_MyMsgPub"); // 初始化节点名称 if(argc!=4) { cout<<"Error command parameter! "<<"please run command eg: "<<"rosrun book_message Book_MyMsgPub LiLei 180 160"<<endl; return 1; } //create mode handle ros::NodeHandle nh; // ros node handle 句柄 ros::Publisher myMsgPub = nh.advertise<book::Student>("MyMsg",100); //发布器 book::Student stdMsg; stdMsg.name = argv[1]; stdMsg.height = atof(argv[2]); stdMsg.weight = atof(argv[3]); ros::Rate rate(10); while(ros::ok) { myMsgPub.publish(stdMsg); rate.sleep(); } return 0; }
接收端口
#include "ros/ros.h" #include "book/Student.h" void MyMsgCallback(const book::Student &stdInfo) { ROS_INFO("student message: name:%s---height:%f---weight:%f ",stdInfo.name.c_str(),stdInfo.height ,stdInfo.weight); } int main(int argc, char ** argv) { // initial and name node ros::init(argc, argv, "node_MyMsgSub"); ros::NodeHandle nh; // create subscriber ros::Subscriber MyMsgSub = nh.subscribe("MyMsg",1000,&MyMsgCallback); ros::spin(); return 0; }