orbital_data_manager.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: BSD-3-Clause
2 // SPDX-FileCopyrightText: Czech Technical University in Prague
3 
4 #pragma once
5 
6 #include <memory>
7 #include <string>
8 #include <unordered_map>
9 
11 #include <geographic_msgs/GeoPoint.h>
13 #include <gnss_info_msgs/DOP.h>
14 #include <gnss_info_msgs/SatellitesList.h>
15 #include <gnss_info_msgs/SatellitesPositions.h>
16 #include <gnss_info_msgs/SkyView.h>
17 #include <ros/time.h>
18 
19 namespace gnss_info
20 {
21 
22 struct OrbitalDataManagerPrivate;
23 
28 {
29 public:
31  virtual ~OrbitalDataManager();
32 
37  void addProvider(const std::shared_ptr<OrbitalDataProvider>& provider);
38 
44  bool load(const ros::Time& time);
45 
52  virtual bool load(const ros::Time& time, const cras::optional<bool>& precise);
53 
60  bool load(const ros::Time& startTime, const ros::Time& endTime);
61 
69  virtual bool load(const ros::Time& startTime, const ros::Time& endTime, const cras::optional<bool>& precise);
70 
77  cras::expected<gnss_info_msgs::SatellitesPositions, std::string> getPositions(
78  const ros::Time& time, const gnss_info_msgs::SatellitesList& satellites);
79 
87  virtual cras::expected<gnss_info_msgs::SatellitesPositions, std::string> getPositions(
88  const ros::Time& time, const gnss_info_msgs::SatellitesList& satellites, const cras::optional<bool>& precise);
89 
97  cras::expected<gnss_info_msgs::SkyView, std::string> getSkyView(
98  const geographic_msgs::GeoPoint& position, const gnss_info_msgs::SatellitesPositions& positions,
99  double elevationMaskDeg);
100 
109  virtual cras::expected<gnss_info_msgs::SkyView, std::string> getSkyView(
110  const geographic_msgs::GeoPoint& position, const gnss_info_msgs::SatellitesPositions& positions,
111  double elevationMaskDeg, const cras::optional<bool>& precise);
112 
118  virtual gnss_info_msgs::DOP computeDOP(
119  const std::unordered_map<uint32_t, gnss_info_msgs::SatelliteSkyPosition>& skyView) const;
120 
121 protected:
122  std::unique_ptr<OrbitalDataManagerPrivate> data;
123 };
124 
125 }
gnss_info::OrbitalDataManager::data
std::unique_ptr< OrbitalDataManagerPrivate > data
Private implementation details (PIMPL).
Definition: orbital_data_manager.h:122
gnss_info::OrbitalDataManager::computeDOP
virtual gnss_info_msgs::DOP computeDOP(const std::unordered_map< uint32_t, gnss_info_msgs::SatelliteSkyPosition > &skyView) const
Compute Dilution of Precision for the given sky view.
Definition: orbital_data_manager.cpp:189
gnss_info::OrbitalDataManager::~OrbitalDataManager
virtual ~OrbitalDataManager()
time
time
gnss_info::OrbitalDataManager::load
bool load(const ros::Time &time)
Load (and possibly download) data for the given time instant.
Definition: orbital_data_manager.cpp:68
gnss_info
Definition: cache.h:15
gnss_info::OrbitalDataManager::getPositions
cras::expected< gnss_info_msgs::SatellitesPositions, std::string > getPositions(const ros::Time &time, const gnss_info_msgs::SatellitesList &satellites)
Compute ECEF positions of the satellites at the given time.
Definition: orbital_data_manager.cpp:102
expected.hpp
orbital_data_provider.h
gnss_info::OrbitalDataManager::addProvider
void addProvider(const std::shared_ptr< OrbitalDataProvider > &provider)
Add the given provider to this manager and make its data available.
Definition: orbital_data_manager.cpp:226
gnss_info::OrbitalDataManager::getSkyView
cras::expected< gnss_info_msgs::SkyView, std::string > getSkyView(const geographic_msgs::GeoPoint &position, const gnss_info_msgs::SatellitesPositions &positions, double elevationMaskDeg)
Compute sky view (azimuths, elevations and distances) of satellites from the given receiver position.
Definition: orbital_data_manager.cpp:144
ros::Time
gnss_info::OrbitalDataManager::OrbitalDataManager
OrbitalDataManager()
Definition: orbital_data_manager.cpp:62
gnss_info::OrbitalDataManager
Manager of multiple providers of satellite orbital data.
Definition: orbital_data_manager.h:27


gnss_info
Author(s): Martin Pecka
autogenerated on Fri Nov 24 2023 03:50:35