0.3.0
Loading...
Searching...
No Matches
Receiver.hpp
Go to the documentation of this file.
1// This file is part of INSTINCT, the INS Toolkit for Integrated
2// Navigation Concepts and Training by the Institute of Navigation of
3// the University of Stuttgart, Germany.
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
13
14#pragma once
15
16#include <functional>
17#include <memory>
18#include <optional>
19
23
25
27
28namespace NAV
29{
30
32template<typename ReceiverType>
34{
38 explicit Receiver(ReceiverType type, const std::vector<SatelliteSystem>& satelliteSystems)
39 : type(type), recvClk(satelliteSystems) {}
40
42 ReceiverType type;
44 Eigen::Vector3d e_posMarker = Eigen::Vector3d::Zero();
46 Eigen::Vector3d lla_posMarker = Eigen::Vector3d::Zero();
48 Eigen::Vector3d e_vel = Eigen::Vector3d::Zero();
52 std::unordered_map<Frequency, UncertainValue<double>> interFrequencyBias;
54 std::shared_ptr<const GnssObs> gnssObs = nullptr;
55
58 [[nodiscard]] Eigen::Vector3d e_calcPosARP(const Eigen::Vector3d& hen_delta = Eigen::Vector3d::Zero()) const
59 {
60 return trafo::e_posMarker2ARP(e_posMarker, gnssObs, hen_delta);
61 }
62
65 [[nodiscard]] Eigen::Vector3d lla_calcPosARP(const Eigen::Vector3d& hen_delta = Eigen::Vector3d::Zero()) const
66 {
68 }
69
75 [[nodiscard]] Eigen::Vector3d e_calcPosAPC(Frequency freq,
76 const std::string& antennaType,
77 const std::string& nameId,
78 const Eigen::Vector3d& hen_delta = Eigen::Vector3d::Zero()) const
79 {
80 return trafo::e_posARP2APC(e_calcPosARP(hen_delta), gnssObs, freq, antennaType, nameId);
81 }
82
88 [[nodiscard]] Eigen::Vector3d lla_calcPosAPC(Frequency freq,
89 const std::string& antennaType,
90 const std::string& nameId,
91 const Eigen::Vector3d& hen_delta = Eigen::Vector3d::Zero()) const
92 {
93 return trafo::lla_posARP2APC(lla_calcPosARP(hen_delta), gnssObs, freq, antennaType, nameId);
94 }
95};
96
97} // namespace NAV
GNSS Antenna related transformations.
Eigen::Vector3< typename Derived::Scalar > e_posMarker2ARP(const Eigen::MatrixBase< Derived > &e_posMarker, const std::shared_ptr< const GnssObs > &gnssObs, const Eigen::Vector3d &hen_delta=Eigen::Vector3d::Zero())
Converts a marker position to the antenna reference point position.
Definition Antenna.hpp:33
Eigen::Vector3< typename Derived::Scalar > lla_posARP2APC(const Eigen::MatrixBase< Derived > &lla_posARP, const std::shared_ptr< const GnssObs > &gnssObs, Frequency freq, const std::string &antennaType, const std::string &nameId)
Converts a antenna reference point position to the antenna phase center position.
Definition Antenna.hpp:125
Eigen::Vector3< typename Derived::Scalar > e_posARP2APC(const Eigen::MatrixBase< Derived > &e_posARP, const std::shared_ptr< const GnssObs > &gnssObs, Frequency freq, const std::string &antennaType, const std::string &nameId)
Converts a antenna reference point position position to the antenna phase center position.
Definition Antenna.hpp:89
Eigen::Vector3< typename Derived::Scalar > lla_posMarker2ARP(const Eigen::MatrixBase< Derived > &lla_posMarker, const std::shared_ptr< const GnssObs > &gnssObs, const Eigen::Vector3d &hen_delta=Eigen::Vector3d::Zero())
Converts a marker position to the antenna reference point position.
Definition Antenna.hpp:63
Frequency definition for different satellite systems.
GNSS Observation messages.
Receiver Clock information.
Values with an uncertainty (Standard Deviation)
Frequency definition for different satellite systems.
Definition Frequency.hpp:59
Receiver Clock information.
Definition ReceiverClock.hpp:32
std::shared_ptr< const GnssObs > gnssObs
Latest GNSS observation.
Definition Receiver.hpp:54
Eigen::Vector3d lla_posMarker
Marker Position in LLA frame [rad, rad, m].
Definition Receiver.hpp:46
Receiver(ReceiverType type, const std::vector< SatelliteSystem > &satelliteSystems)
Constructor.
Definition Receiver.hpp:38
Eigen::Vector3d lla_calcPosAPC(Frequency freq, const std::string &antennaType, const std::string &nameId, const Eigen::Vector3d &hen_delta=Eigen::Vector3d::Zero()) const
Marker position in LLA frame [rad, rad, m] (ARP + antenna phase center)
Definition Receiver.hpp:88
std::unordered_map< Frequency, UncertainValue< double > > interFrequencyBias
Inter frequency biases [s].
Definition Receiver.hpp:52
Eigen::Vector3d e_calcPosARP(const Eigen::Vector3d &hen_delta=Eigen::Vector3d::Zero()) const
Antenna Reference Point position in ECEF frame [m] (Marker + antennaDeltaNEU)
Definition Receiver.hpp:58
Eigen::Vector3d e_calcPosAPC(Frequency freq, const std::string &antennaType, const std::string &nameId, const Eigen::Vector3d &hen_delta=Eigen::Vector3d::Zero()) const
Marker position in ECEF frame [m] (ARP + antenna phase center)
Definition Receiver.hpp:75
Eigen::Vector3d lla_calcPosARP(const Eigen::Vector3d &hen_delta=Eigen::Vector3d::Zero()) const
Antenna Reference Point position in LLA frame [rad, rad, m] (Marker + antennaDeltaNEU)
Definition Receiver.hpp:65
ReceiverType type
Receiver Type.
Definition Receiver.hpp:42
Eigen::Vector3d e_posMarker
Marker Position in ECEF frame [m].
Definition Receiver.hpp:44
Eigen::Vector3d e_vel
Velocity in ECEF frame [m/s].
Definition Receiver.hpp:48
ReceiverClock recvClk
Estimated receiver clock parameters.
Definition Receiver.hpp:50