9 #ifndef CObservationGPS_H
10 #define CObservationGPS_H
74 std::map<gnss::gnss_message_type_t, gnss::gnss_message_ptr>;
103 template <
class MSG_CLASS>
107 .set(
new MSG_CLASS(msg));
116 template <
class MSG_CLASS>
144 template <
class MSG_CLASS>
151 "[CObservationGPS::getMsgByClass] Cannot "
152 "find any observation of type `%s`",
153 typeid(MSG_CLASS).name()));
155 return *
dynamic_cast<MSG_CLASS*
>(it->second.get());
158 template <
class MSG_CLASS>
165 "[CObservationGPS::getMsgByClass] Cannot "
166 "find any observation of type `%s`",
167 typeid(MSG_CLASS).name()));
169 return *
dynamic_cast<const MSG_CLASS*
>(it->second.get());
174 template <
class MSG_CLASS>
180 ?
static_cast<MSG_CLASS*
>(
nullptr)
181 :
dynamic_cast<MSG_CLASS*
>(it->second.get());
184 template <
class MSG_CLASS>
190 ?
dynamic_cast<MSG_CLASS*
>(
nullptr)
191 :
dynamic_cast<MSG_CLASS*
>(it->second.get());
213 std::ostream& o)
const override;
234 template <mrpt::obs::gnss::gnss_message_type_t MSG_TYPE>
238 operator bool(
void)
const {
return msgs.find(MSG_TYPE) !=
msgs.end(); }
268 const int leap_seconds_count
276 uint16_t gps_week,
double gps_sec,
const int leap_seconds_count,
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
This class stores messages from GNSS or GNSS+IMU devices, from consumer-grade inexpensive GPS receive...
static bool GPS_time_to_UTC(uint16_t gps_week, double gps_sec, const int leap_seconds_count, mrpt::system::TTimeStamp &utc_out)
std::map< gnss::gnss_message_type_t, gnss::gnss_message_ptr > message_list_t
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.
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.
void getDescriptionAsText(std::ostream &o) const 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 dumpToStream(std::ostream &out) const
Dumps the contents of the observation in a human-readable form to a given output stream.
const MSG_CLASS & getMsgByClass() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
void swap(CObservationGPS &o)
bool hasMsgType(const gnss::gnss_message_type_t type_id) const
Returns true if the list CObservationGPS::messages contains one of the requested type.
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 nullptr pointer if message is not found,...
message_list_t messages
The main piece of data in this class: a list of GNNS messages.
mrpt::system::TTimeStamp getOriginalReceivedTimeStamp() const override
By default, returns CObservation::timestamp but in sensors capable of satellite (or otherwise) accura...
void clear()
Empties this observation, clearing the container messages.
void setSensorPose(const mrpt::poses::CPose3D &newSensorPose) override
A general method to change the sensor pose on the robot.
void setMsg(const MSG_CLASS &msg)
Stores a message in the list messages, making a copy of the passed object.
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.
internal_msg_test_proxy< gnss::NMEA_GGA > has_GGA_datum
Evaluates as a bool; true if the corresponding field exists in messages.
void getSensorPose(mrpt::poses::CPose3D &out_sensorPose) const override
A general method to retrieve the sensor pose on the robot.
mrpt::system::TTimeStamp originalReceivedTimestamp
The local computer-based timestamp based on the reception of the message in the computer.
void dumpToConsole(std::ostream &o) const
Dumps the contents of the observation in a human-readable form to an std::ostream (use std::cout to p...
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).
const Scalar * const_iterator
#define ASSERT_(f)
Defines an assertion mechanism.
#define ASSERTMSG_(f, __ERROR_MSG)
Defines an assertion mechanism.
std::string format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
#define INVALID_TIMESTAMP
Represents an invalid timestamp, where applicable.
mrpt::Clock::time_point TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
gnss_message_type_t
List of all known GNSS message types.
This namespace contains representation of robot actions and observations.
unsigned __int16 uint16_t
Proxy class for type-based testing existence of data inside CObservationGPS::messages.
internal_msg_test_proxy(message_list_t &msgs_)
internal_msg_test_proxy< MSG_TYPE > & operator=(const internal_msg_test_proxy< MSG_TYPE > &)
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).