roscpp:
topic_demo
功能描述:两个node,一个发布模拟的GPS信息(格式为自定义,包括坐标和工作状态),另一个接收并处理该消息(计算到原点的距离)
步骤:
1、package
2、msg
3、talker.cpp
4、listener.cpp
5、CMakeList.txt&package.xml
1. package
cd ~/catkin_ws/src
catkin_creat_pkg topic_demo roscpp rospy std_msgs
2. msg
cd topic_demo/
mkdir msg
cd msg
vi gps.msg
# gps.msg的文件格式如下:
float32 x
float32 y
string state
文件写完后先编译(catkin_make),随后会自动存放在:~/catkin_ws/devel/include/topic_demo/gps.h
所以之后在写头文件时,要把gps.h包含进去。
例如: #include.<topic_demo/gps.h>
topic_demo::gps msg;
3. talker.cpp
#include<ros/ros.h>
#include<topic_demo/gps.h>
int main(int argc,char**){
ros::int(argc,argc, "talker" ); //解析参数,命名节点
ros::NodeHandle nh; //创建句柄,实例化node
topic_demo::gps msg; //创建gps消息
msg.x=1.0;
msg.y=1.0;
msg.state= "working" ;
ros::Publisher pub = nh.advertise<topic_demo::gps>("gps_info",1); //创建publisher
ros::Rate loop_rate(1.0); //定义循环发布的频率
while(ros::ok()){
msg.x=1.03*msg.x; //以指数增长,每隔1s
msg.y=1.03*msg.y;
ROS INFO("Talker: GPS: x=%f,y=%f",msg.x,msg.y); //输出当前msg
pub.publish(msg); //发布消息
loop_rate.sleep(); //根据定义的发布频率,sleep
}
return 0;
}
4、listener.cpp
5、CMakeList.txt&package.xml