ROS学习第四天
作者:
jinyc
,
2022-06-04 15:57:33
,
所有人可见
,
阅读 176
几乎所有的传感器,几乎都是按照固定频率发布消息这种通信方式来传输数据
#include <ros/ros.h>
#include <topic_demo/gps.h>
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle nh;
topic_demo::gps msg;
...
ros::Publisher pub = nh.advertise<topic_demo::gps>("gps_info", 1);
ros::Rate loop_rate(1.0);
while (ros::ok())
{
...
pub.publish(msg);
loop_rate.sleep();
}
return 0;
}
订阅topic方,设置完回调函数,还需要ros::spin()或者ros::spinOnce()才能真正使回调函数生效。
#include <ros/ros.h>
#include <topic_demo/gps.h>
#include <std_msgs/Float32.h>
void gpsCallback(const topic_demo::gps::ConstPtr &msg)
{
std_msgs::Float32 distance;
distance.data = sqrt(pow(msg->x,2)+pow(msg->y,2));
ROS_INFO("Listener: Distance to origin = %f, state: %s",distance.data,msg->state.c_str());
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "listener");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("gps_info", 1, gpsCallback);
ros::spin();
return 0;
}