Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "mrpt_bridge/GPS.h"
00017
00018
00019 namespace mrpt_bridge
00020 {
00021
00022
00023
00024 bool GPS::ros2mrpt(const sensor_msgs::NavSatFix &msg,
00025 CObservationGPS &obj)
00026 {
00027 mrpt::obs::gnss::Message_NMEA_GGA gga;
00028 gga.fields.altitude_meters = msg.altitude;
00029 gga.fields.latitude_degrees = msg.latitude;
00030 gga.fields.longitude_degrees = msg.longitude;
00031
00032 switch(msg.status.status)
00033 {
00034 case -1:
00035 gga.fields.fix_quality = 0;
00036 break;
00037 case 0:
00038 gga.fields.fix_quality = 1;
00039 break;
00040 case 2:
00041 gga.fields.fix_quality = 2;
00042 break;
00043 case 1:
00044 gga.fields.fix_quality = 3;
00045 break;
00046 default:
00047 gga.fields.fix_quality = 0;
00048
00049 }
00050 obj.setMsg(gga);
00051 return true;
00052 }
00053
00054
00055
00056
00057 bool GPS::mrpt2ros(const CObservationGPS &obj,
00058 const std_msgs::Header &msg_header,
00059 sensor_msgs::NavSatFix &msg)
00060 {
00061
00062 msg.header = msg_header;
00063
00064
00065
00066 if (obj.hasMsgClass<mrpt::obs::gnss::Message_NMEA_GGA>())
00067 {
00068 const mrpt::obs::gnss::Message_NMEA_GGA &gga =
00069 obj.getMsgByClass<mrpt::obs::gnss::Message_NMEA_GGA>();
00070 msg.altitude = gga.fields.altitude_meters;
00071 msg.latitude = gga.fields.latitude_degrees;
00072 msg.longitude = gga.fields.longitude_degrees;
00073
00076 switch(gga.fields.fix_quality)
00077 {
00078 case 0:
00079 msg.status.status = -1;
00080 break;
00081 case 1:
00082 msg.status.status = 0;
00083 break;
00084 case 2:
00085 msg.status.status = 2;
00086 break;
00087 case 3:
00088 msg.status.status = 1;
00089 break;
00090 default:
00091
00092 msg.status.status = 0;
00093 }
00094
00095 msg.status.service = 1;
00096
00097 }
00100 return true;
00101 }
00102 }
00103
00104
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132