How to read latitude and longitude information from /GPSFix message in my bagfile?
Hi friends, i am having a bagfile containing /GPSFix information. i want to read and publish its information using gpsd. for that i used gpsd_client tutorial.
I have given rosbag node port number for gpsd_client otherwise it is showing error. When i run gpsd_client it says "GPSD opened" but my gpsd_subscriber is not printing latitude and longitude information.
Please help me to solve this problem.
This is my gpsd_client
mit@mit-HP-Pro-3330-SFF:~/Desktop/Bagfiles$ rostopic info /GPSFix
Type: gps_common/GPSFix
Publishers: None
Subscribers:
* /gps_subscriber (<a href="http://mit-HP-Pro-3330-SFF:33912/">http://mit-HP-Pro-3330-SFF:33912/</a>)
mit@mit-HP-Pro-3330-SFF:~/Desktop/Bagfiles$ rosrun gpsd_client gpsd_client _host:=localhost _port:=33912
[ INFO] [1374726241.992697318]: GPSd opened
This is my gpsd_subscriber
mit@mit-HP-Pro-3330-SFF:~/Desktop/gps_test$ rosrun gpsd_subscriber gpsTest
This is my gpsd_subscriber source code
#include <iostream>
#include <ros/ros.h>
#include <sensor_msgs/NavSatFix.h>
#include <sensor_msgs/NavSatStatus.h>
using namespace sensor_msgs;
void callback(const NavSatFixConstPtr &fix) {
if (fix->status.status == NavSatStatus::STATUS_NO_FIX) {
std::cout << "Unable to get a fix on the location." << std::endl;
return;
}
std::cout << "Current Latitude: " << fix->latitude << std::endl;
std::cout << "Current Longitude " << fix->longitude << std::endl;
}
int main(int argc, char **argv) {
ros::init(argc, argv, "gps_subscriber");
ros::NodeHandle nh;
ros::Subscriber gps_sub = nh.subscribe("/GPSFix", 1, callback);
ros::spin();
return 0;
}