9 #ifndef CObservationGPS_H 10 #define CObservationGPS_H 72 mrpt::poses::CPose3D sensorPose;
74 bool has_satellite_timestamp;
78 message_list_t messages;
85 template <class MSG_CLASS>
86 void setMsg(const MSG_CLASS &msg) {
92 template <
class MSG_CLASS>
bool hasMsgClass()
const {
return hasMsgType(static_cast<gnss::gnss_message_type_t>(MSG_CLASS::msg_type)); }
104 template <
class MSG_CLASS>
107 ASSERTMSG_(it!=messages.end(),
mrpt::format(
"[CObservationGPS::getMsgByClass] Cannot find any observation of type `%s`",
typeid(MSG_CLASS).name()));
109 return *
dynamic_cast<MSG_CLASS*
>(it->second.get());
112 template <
class MSG_CLASS>
115 ASSERTMSG_(it!=messages.end(),
mrpt::format(
"[CObservationGPS::getMsgByClass] Cannot find any observation of type `%s`",
typeid(MSG_CLASS).name()));
117 return *
dynamic_cast<const MSG_CLASS*
>(it->second.get());
121 template <
class MSG_CLASS>
124 return it==messages.end() ?
reinterpret_cast<MSG_CLASS*
>(NULL) : dynamic_cast<MSG_CLASS*>(it->second.get());
127 template <
class MSG_CLASS>
130 return it==messages.end() ?
dynamic_cast<MSG_CLASS*
>(NULL) : dynamic_cast<MSG_CLASS*>(it->second.get());
134 void dumpToConsole(std::ostream &o = std::cout)
const;
140 void getDescriptionAsText(std::ostream &o)
const MRPT_OVERRIDE;
154 template <mrpt::obs::gnss::gnss_message_type_t MSG_TYPE>
157 operator bool(
void)
const {
return msgs.find(MSG_TYPE)!=msgs.end(); }
172 static bool GPS_time_to_UTC(
173 uint16_t gps_week,
double gps_sec,
174 const int leap_seconds_count ,
176 static bool GPS_time_to_UTC(uint16_t gps_week,
double gps_sec,
const int leap_seconds_count,
mrpt::system::TTimeParts &utc_out);
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...
MSG_CLASS * getMsgByClassPtr()
Like CObservationGPS::getMsgByClass() but returns a NULL pointer if message is not found...
gnss::UTC_time TUTCTime
Deprecated, kept for backwards compatibility.
TopCon mmGPS devices: SATS, a generic structure for statistics about tracked satelites and their posi...
UTC (Coordinated Universal Time) time-stamp structure for GPS messages.
const MSG_CLASS * getMsgByClassPtr() const
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
gnss_message_type_t
List of all known GNSS message types.
gnss::Message_NMEA_RMC TGPSDatum_RMC
Deprecated, kept for backwards compatibility.
const Scalar * const_iterator
GPS datum for TopCon's mmGPS devices: PZS.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
bool hasMsgClass() const
Like hasMsgType() but allows querying for message classes, from any of those derived from mrpt::obs::...
internal_msg_test_proxy< gnss::NMEA_RMC > has_RMC_datum
Evaluates as a bool; true if the corresponding field exists in messages.
The parts of a date/time (it's like the standard 'tm' but with fractions of seconds).
internal_msg_test_proxy(message_list_t &msgs_)
Proxy class for type-based testing existence of data inside CObservationGPS::messages.
std::string BASE_IMPEXP format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
internal_msg_test_proxy< gnss::TOPCON_PZS > has_PZS_datum
Evaluates as a bool; true if the corresponding field exists in messages.
gnss::Message_TOPCON_SATS TGPSDatum_SATS
Deprecated, kept for backwards compatibility.
MSG_CLASS & getMsgByClass()
Returns a reference to the message in the list CObservationGPS::messages of the requested class...
gnss::Message_TOPCON_PZS TGPSDatum_PZS
Deprecated, kept for backwards compatibility.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
internal_msg_test_proxy< gnss::NMEA_GGA > has_GGA_datum
Evaluates as a bool; true if the corresponding field exists in messages.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Declares a class that represents any robot's observation.
Pure virtual base for all message types.
void setSensorPose(const mrpt::poses::CPose3D &newSensorPose) MRPT_OVERRIDE
A general method to change the sensor pose on the robot.
const MSG_CLASS & getMsgByClass() const
std::map< gnss::gnss_message_type_t, gnss::gnss_message_ptr > message_list_t
internal_msg_test_proxy< gnss::TOPCON_SATS > has_SATS_datum
Evaluates as a bool; true if the corresponding field exists in messages.
This class stores messages from GNSS or GNSS+IMU devices, from consumer-grade inexpensive GPS receive...
void getSensorPose(mrpt::poses::CPose3D &out_sensorPose) const MRPT_OVERRIDE
A general method to retrieve the sensor pose on the robot.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
#define ASSERTMSG_(f, __ERROR_MSG)
gnss::Message_NMEA_GGA TGPSDatum_GGA
Deprecated, kept for backwards compatibility.