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());
134 void dumpToConsole(std::ostream &o = std::cout)
const;
140 void getDescriptionAsText(std::ostream &o)
const MRPT_OVERRIDE;
157 operator bool(
void)
const {
return msgs.find(MSG_TYPE)!=msgs.end(); }
172 static bool GPS_time_to_UTC(
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...
internal_msg_test_proxy< gnss::NMEA_RMC > has_RMC_datum
Evaluates as a bool; true if the corresponding field exists in messages.
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.
MSG_CLASS & getMsgByClass()
Returns a reference to the message in the list CObservationGPS::messages of the requested class.
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.
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.
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.
void clear()
Clear the contents of this container.
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.
unsigned __int16 uint16_t
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).