9 #ifndef CObservationGPS_H
10 #define CObservationGPS_H
66 typedef std::map<gnss::gnss_message_type_t, gnss::gnss_message_ptr>
message_list_t;
85 template <
class MSG_CLASS>
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());
157 operator bool(
void)
const {
return msgs.find(MSG_TYPE)!=msgs.end(); }
173 uint16_t gps_week,
double gps_sec,
174 const int leap_seconds_count ,
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
#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...
This class stores messages from GNSS or GNSS+IMU devices, from consumer-grade inexpensive GPS receive...
void swap(CObservationGPS &o)
void dumpToConsole(std::ostream &o=std::cout) const
Dumps the contents of the observation in a human-readable form to an std::ostream (default=console)
internal_msg_test_proxy< gnss::NMEA_RMC > has_RMC_datum
Evaluates as a bool; true if the corresponding field exists in messages.
mrpt::system::TTimeStamp getOriginalReceivedTimeStamp() const MRPT_OVERRIDE
By default, returns CObservation::timestamp but in sensors capable of satellite (or otherwise) accura...
bool has_satellite_timestamp
If true, CObservation::timestamp has been generated from accurate satellite clock....
internal_msg_test_proxy< gnss::TOPCON_PZS > has_PZS_datum
Evaluates as a bool; true if the corresponding field exists in messages.
void getSensorPose(mrpt::poses::CPose3D &out_sensorPose) const MRPT_OVERRIDE
A general method to retrieve the sensor pose on the robot.
mrpt::poses::CPose3D sensorPose
The sensor pose on the robot/vehicle.
bool hasMsgType(const gnss::gnss_message_type_t type_id) const
Returns true if the list CObservationGPS::messages contains one of the requested type.
void dumpToStream(mrpt::utils::CStream &out) const
Dumps the contents of the observation in a human-readable form to a given output stream.
MSG_CLASS & getMsgByClass()
Returns a reference to the message in the list CObservationGPS::messages of the requested class.
void getDescriptionAsText(std::ostream &o) const MRPT_OVERRIDE
Build a detailed, multi-line textual description of the observation contents and dump it to the outpu...
bool hasMsgClass() const
Like hasMsgType() but allows querying for message classes, from any of those derived from mrpt::obs::...
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
This is an overloaded member function, provided for convenience. It differs from the above function o...
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.
static bool GPS_time_to_UTC(uint16_t gps_week, double gps_sec, const int leap_seconds_count, mrpt::system::TTimeStamp &utc_out)
Return false on invalid input data.
void clear()
Empties this observation, clearing the container messages.
MSG_CLASS * getMsgByClassPtr()
Like CObservationGPS::getMsgByClass() but returns a NULL pointer if message is not found,...
message_list_t messages
The main piece of data in this class: a list of GNNS messages.
const mrpt::obs::gnss::gnss_message * getMsgByType(const gnss::gnss_message_type_t type_id) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
static bool GPS_time_to_UTC(uint16_t gps_week, double gps_sec, const int leap_seconds_count, mrpt::system::TTimeParts &utc_out)
This is an overloaded member function, provided for convenience. It differs from the above function o...
mrpt::obs::gnss::gnss_message * getMsgByType(const gnss::gnss_message_type_t type_id)
Returns a pointer to the message in the list CObservationGPS::messages of the requested type.
void setMsg(const MSG_CLASS &msg)
Stores a message in the list messages, making a copy of the passed object.
internal_msg_test_proxy< gnss::NMEA_GGA > has_GGA_datum
Evaluates as a bool; true if the corresponding field exists in messages.
mrpt::system::TTimeStamp originalReceivedTimestamp
The local computer-based timestamp based on the reception of the message in the computer.
const MSG_CLASS * getMsgByClassPtr() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Declares a class that represents any robot's observation.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
const Scalar * const_iterator
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
#define ASSERTMSG_(f, __ERROR_MSG)
gnss_message_type_t
List of all known GNSS message types.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
std::string BASE_IMPEXP format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
Proxy class for type-based testing existence of data inside CObservationGPS::messages.
internal_msg_test_proxy(message_list_t &msgs_)
GPS datum for TopCon's mmGPS devices: PZS.
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.
Pure virtual base for all message types.
The parts of a date/time (it's like the standard 'tm' but with fractions of seconds).