QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
GPSObservation.h
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
4
5#include <QtPositioning/QGeoPositionInfo>
6
8
11
13{
14 Unknown = 0,
15 MeanSeaLevel = 1,
16 Ellipsoid = 2
17};
18
21{
23
24 enum class PositionUse
25 {
27 Motion,
29 Gga
30 };
31
32 QGeoPositionInfo position;
34 quint64 sessionId = 0;
35 FixQuality fixQuality = FixQuality::Unknown;
36 // Coordinates can outlive a valid navigation solution.
37 std::optional<bool> receiverFixValid = std::nullopt;
38
40 std::optional<int> satellitesUsed;
41 std::optional<double> horizontalDop;
42 std::optional<double> altitudeEllipsoidMeters;
43
45 static GPSObservation fromNavigation(const GPSNavigationValues& navigation, quint64 receivedAtUs);
47 static GPSObservation fromSurveyedPosition(const GPSEllipsoidPosition& position, double accuracyMeters,
48 quint64 receivedAtUs);
50 [[nodiscard]] static double accuracyFromDop(double dop);
51
53 [[nodiscard]] std::optional<GPSObservation> projected(PositionUse use) const;
54 [[nodiscard]] bool hasNavigationSolution() const;
55 [[nodiscard]] bool usable() const;
56 [[nodiscard]] QGeoCoordinate coordinate() const;
57 [[nodiscard]] double heading() const;
58};
GPSAltitudeDatum
GPSFixQualities::GPSFixQuality GPSFixQuality
WGS84 geodetic position with ellipsoid height, not mean-sea-level altitude.
Receiver-independent data. Unknown metadata remains absent, never a manufactured zero.
std::optional< double > altitudeEllipsoidMeters
FixQuality fixQuality
double heading() const
QGeoPositionInfo position
static GPSObservation fromSurveyedPosition(const GPSEllipsoidPosition &position, double accuracyMeters, quint64 receivedAtUs)
A known antenna position, such as a fixed or surveyed RTK base, which receivers report as a time-only...
static GPSObservation fromNavigation(const GPSNavigationValues &navigation, quint64 receivedAtUs)
Converts a native receiver solution that arrived at receivedAtUs on the monotonic clock.
QGeoCoordinate coordinate() const
std::optional< GPSObservation > projected(PositionUse use) const
The owner separately enforces freshness and session authorization.
std::optional< int > satellitesUsed
bool hasNavigationSolution() const
quint64 monotonicTimestampUs
GPSAltitudeDatum altitudeDatum
std::optional< bool > receiverFixValid
bool usable() const
static double accuracyFromDop(double dop)
Nominal accuracy in meters for receivers that report only DOP (DOP x 5.1 m UERE x 2).
std::optional< double > horizontalDop