RawRange.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
44 #ifndef NEW_RAW_RANGE_HPP
45 #define NEW_RAW_RANGE_HPP
46 
47 #include <utility>
48 
49 #include "Triple.hpp"
50 #include "Position.hpp"
51 #include "CommonTime.hpp"
52 #include "NavLibrary.hpp"
53 #include "NavSatelliteID.hpp"
54 #include "Position.hpp"
55 #include "EllipsoidModel.hpp"
56 #include "SVHealth.hpp"
57 #include "NavValidityType.hpp"
58 #include "NavSearchOrder.hpp"
59 
60 namespace gnsstk
61 {
63 
64 
113  class RawRange
114  {
115  public:
116 
143  static std::tuple<bool, double, Xvt> fromSvPos(
144  const Position& rxPos,
145  const Xvt& svXvt,
146  const EllipsoidModel& ellipsoid,
147  bool smallAngleApprox = false,
148  double seed = 0.07,
149  double threshold = 1.e-13,
150  int maxIter = 5
151  );
152 
181  static std::tuple<bool, double, Xvt> fromSvTransmit(
182  const Position& rxPos,
183  NavLibrary& navLib,
184  const NavSatelliteID& sat,
185  const CommonTime& transmit,
186  const EllipsoidModel& ellipsoid,
187  bool smallAngleApprox = false,
188  SVHealth xmitHealth = SVHealth::Any,
191  double seed = 0.07,
192  double threshold = 1.e-13,
193  int maxIter = 5
194  );
195 
196 
222  static std::tuple<bool, double, Xvt> fromReceive(
223  const Position& rxPos,
224  const CommonTime& receive,
225  NavLibrary& navLib,
226  const NavSatelliteID& sat,
227  const EllipsoidModel& ellipsoid,
228  bool smallAngleApprox = false,
229  SVHealth xmitHealth = SVHealth::Any,
232  double seed = 0.07,
233  double threshold = 1.e-13,
234  int maxIter = 5
235  );
236 
266  static std::tuple<bool, double, Xvt> fromNominalReceiveWithObs(
267  const Position& rxPos,
268  const CommonTime& receiveNominal,
269  double pseudorange,
270  NavLibrary& navLib,
271  const NavSatelliteID& sat,
272  const EllipsoidModel& ellipsoid,
273  bool smallAngleApprox = false,
274  SVHealth xmitHealth = SVHealth::Any,
277  );
278 
305  static std::tuple<bool, double, Xvt> fromSvTransmitWithObs(
306  const Position& rxPos,
307  double pseudorange,
308  NavLibrary& navLib,
309  const NavSatelliteID& sat,
310  const CommonTime& transmit,
311  const EllipsoidModel& ellipsoid,
312  bool smallAngleApprox = false,
313  SVHealth xmitHealth = SVHealth::Any,
316  );
317 
347  static std::tuple<bool, double, Xvt> fromNominalReceive(
348  const Position& rxPos,
349  const CommonTime& receiveNominal,
350  NavLibrary& navLib,
351  const NavSatelliteID& sat,
352  const EllipsoidModel& ellipsoid,
353  bool smallAngleApprox = false,
354  SVHealth xmitHealth = SVHealth::Any,
357  double seed = 0.7,
358  double threshold = 1.e-13,
359  int maxIter = 5
360  );
361 
399  static std::tuple<bool, CommonTime> estTransmitFromReceive(
400  const Position& rxPos,
401  const CommonTime& receive,
402  NavLibrary& navLib,
403  const NavSatelliteID& sat,
404  const EllipsoidModel& ellipsoid,
405  SVHealth xmitHealth = SVHealth::Any,
408  double seed = 0.07,
409  double threshold = 1.e-13,
410  int maxIter = 5
411  );
412 
459  static std::tuple<bool, CommonTime> estTransmitFromObs(
460  const CommonTime& receiveNominal,
461  double pseudorange,
462  NavLibrary& navLib,
463  const NavSatelliteID& sat,
464  SVHealth xmitHealth = SVHealth::Any,
467  );
468 
496  static std::tuple<double, Xvt> computeRange(
497  const Position& rxPos,
498  const CommonTime& receive,
499  const Xvt& svXvt,
500  const CommonTime& transmit,
501  const EllipsoidModel& ellipsoid,
502  bool smallAngleApprox=false
503  );
504 
533  static std::tuple<double, Xvt> computeRange(
534  const Position& rxPos,
535  const Xvt& svXvt,
536  double tof,
537  const EllipsoidModel& ellipsoid,
538  bool smallAngleApprox=false
539  );
540 
568  static std::tuple<double, Position> computeRange(
569  const Position& rxPos,
570  const CommonTime& receive,
571  const Position& svPos,
572  const CommonTime& transmit,
573  const EllipsoidModel& ellipsoid,
574  bool smallAngleApprox=false
575  );
576 
604  static std::tuple<double, Position> computeRange(
605  const Position& rxPos,
606  const Position& svPos,
607  double tof,
608  const EllipsoidModel& ellipsoid,
609  bool smallAngleApprox=false
610  );
611 
632  static Triple rotateECEF(
633  const Triple& vec,
634  double dt,
635  const EllipsoidModel& ellipsoid,
636  bool smallAngleApprox=false
637  );
638 
662  static Position rotateECEF(
663  const Position& vec,
664  double dt,
665  const EllipsoidModel& ellipsoid,
666  bool smallAngleApprox=false
667  );
668 
693  static Xvt rotateECEF(
694  const Xvt& xvt,
695  double dt,
696  const EllipsoidModel& ellipsoid,
697  bool smallAngleApprox=false
698  );
699 
700  }; // end class RawRange
701 
703 
704 } // namespace gnsstk
705 
706 #endif
gnsstk::RawRange::fromSvPos
static std::tuple< bool, double, Xvt > fromSvPos(const Position &rxPos, const Xvt &svXvt, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false, double seed=0.07, double threshold=1.e-13, int maxIter=5)
Definition: RawRange.cpp:57
gnsstk::RawRange::fromNominalReceive
static std::tuple< bool, double, Xvt > fromNominalReceive(const Position &rxPos, const CommonTime &receiveNominal, NavLibrary &navLib, const NavSatelliteID &sat, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User, double seed=0.7, double threshold=1.e-13, int maxIter=5)
Definition: RawRange.cpp:199
gnsstk::RawRange::fromNominalReceiveWithObs
static std::tuple< bool, double, Xvt > fromNominalReceiveWithObs(const Position &rxPos, const CommonTime &receiveNominal, double pseudorange, NavLibrary &navLib, const NavSatelliteID &sat, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User)
Definition: RawRange.cpp:242
SVHealth.hpp
gnsstk::RawRange::fromSvTransmit
static std::tuple< bool, double, Xvt > fromSvTransmit(const Position &rxPos, NavLibrary &navLib, const NavSatelliteID &sat, const CommonTime &transmit, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User, double seed=0.07, double threshold=1.e-13, int maxIter=5)
Definition: RawRange.cpp:90
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
NavSatelliteID.hpp
Position.hpp
gnsstk::SVHealth
SVHealth
Identify different types of SV health states.
Definition: SVHealth.hpp:52
gnsstk::NavValidityType
NavValidityType
Definition: NavValidityType.hpp:53
gnsstk::NavSearchOrder
NavSearchOrder
Specify the behavior of nav data searches in NavLibrary/NavDataFactory.
Definition: NavSearchOrder.hpp:51
gnsstk::Triple
Definition: Triple.hpp:68
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::RawRange::fromReceive
static std::tuple< bool, double, Xvt > fromReceive(const Position &rxPos, const CommonTime &receive, NavLibrary &navLib, const NavSatelliteID &sat, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User, double seed=0.07, double threshold=1.e-13, int maxIter=5)
Definition: RawRange.cpp:150
gnsstk::RawRange::fromSvTransmitWithObs
static std::tuple< bool, double, Xvt > fromSvTransmitWithObs(const Position &rxPos, double pseudorange, NavLibrary &navLib, const NavSatelliteID &sat, const CommonTime &transmit, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User)
Definition: RawRange.cpp:118
gnsstk::SVHealth::Any
@ Any
Use in searches when you don't care about the SV health.
gnsstk::RawRange::estTransmitFromReceive
static std::tuple< bool, CommonTime > estTransmitFromReceive(const Position &rxPos, const CommonTime &receive, NavLibrary &navLib, const NavSatelliteID &sat, const EllipsoidModel &ellipsoid, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User, double seed=0.07, double threshold=1.e-13, int maxIter=5)
Definition: RawRange.cpp:298
NavLibrary.hpp
gnsstk::NavLibrary
Definition: NavLibrary.hpp:944
gnsstk::NavValidityType::ValidOnly
@ ValidOnly
Only load/find nav messages that pass validity checks.
gnsstk::CommonTime
Definition: CommonTime.hpp:84
NavValidityType.hpp
example6.valid
valid
Definition: example6.py:20
gnsstk::Xvt
Definition: Xvt.hpp:60
gnsstk::RawRange
Definition: RawRange.hpp:113
CommonTime.hpp
Triple.hpp
gnsstk::Position
Definition: Position.hpp:136
NavSearchOrder.hpp
gnsstk::NavSearchOrder::User
@ User
Return the latest message before the search time.
gnsstk::EllipsoidModel
Definition: EllipsoidModel.hpp:56
gnsstk::RawRange::estTransmitFromObs
static std::tuple< bool, CommonTime > estTransmitFromObs(const CommonTime &receiveNominal, double pseudorange, NavLibrary &navLib, const NavSatelliteID &sat, SVHealth xmitHealth=SVHealth::Any, NavValidityType valid=NavValidityType::ValidOnly, NavSearchOrder order=NavSearchOrder::User)
Definition: RawRange.cpp:347
gnsstk::RawRange::computeRange
static std::tuple< double, Xvt > computeRange(const Position &rxPos, const CommonTime &receive, const Xvt &svXvt, const CommonTime &transmit, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false)
Definition: RawRange.cpp:371
gnsstk::RawRange::rotateECEF
static Triple rotateECEF(const Triple &vec, double dt, const EllipsoidModel &ellipsoid, bool smallAngleApprox=false)
Definition: RawRange.cpp:420
EllipsoidModel.hpp


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:40