0.4.1
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
9/// @file Receiver.hpp
10/// @brief Receiver information
11/// @author T. Topp (topp@ins.uni-stuttgart.de)
12/// @date 2023-12-21
13
14#pragma once
15
16#include <functional>
17#include <memory>
18#include <optional>
19
23
25
27
28namespace NAV
29{
30
31/// @brief Receiver information
32template<typename ReceiverType>
34{
35 /// @brief Constructor
36 /// @param type Receiver enum type
37 /// @param satelliteSystems Satellite systems to use
38 explicit Receiver(ReceiverType type, const std::vector<SatelliteSystem>& satelliteSystems)
39 : type(type), recvClk(satelliteSystems) {}
40
41 /// Receiver Type
42 ReceiverType type;
43 /// Marker Position in ECEF frame [m]
44 Eigen::Vector3d e_posMarker = Eigen::Vector3d::Zero();
45 /// Marker Position in LLA frame [rad, rad, m]
46 Eigen::Vector3d lla_posMarker = Eigen::Vector3d::Zero();
47 /// Velocity in ECEF frame [m/s]
48 Eigen::Vector3d e_vel = Eigen::Vector3d::Zero();
49 /// Estimated receiver clock parameters
51 /// Inter frequency biases [s]
52 std::unordered_map<Frequency, UncertainValue<double>> interFrequencyBias;
53 /// Latest GNSS observation
54 std::shared_ptr<const GnssObs> gnssObs = nullptr;
55
56 /// @brief Antenna Reference Point position in ECEF frame [m] (Marker + antennaDeltaNEU)
57 /// @param[in] hen_delta Additional height, east, north in [m]
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
63 /// @brief Antenna Reference Point position in LLA frame [rad, rad, m] (Marker + antennaDeltaNEU)
64 /// @param[in] hen_delta Additional height, east, north in [m]
65 [[nodiscard]] Eigen::Vector3d lla_calcPosARP(const Eigen::Vector3d& hen_delta = Eigen::Vector3d::Zero()) const
66 {
68 }
69
70 /// @brief Marker position in ECEF frame [m] (ARP + antenna phase center)
71 /// @param[in] freq Frequency of the observation
72 /// @param[in] antennaType Antenna type
73 /// @param[in] nameId NameId of the calling node for Log output
74 /// @param[in] hen_delta Additional height, east, north in [m]
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
83 /// @brief Marker position in LLA frame [rad, rad, m] (ARP + antenna phase center)
84 /// @param[in] freq Frequency of the observation
85 /// @param[in] antennaType Antenna type
86 /// @param[in] nameId NameId of the calling node for Log output
87 /// @param[in] hen_delta Additional height, east, north in [m]
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.
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
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
Receiver Clock information.
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