orbital_data_provider.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 <string>
7 #include <unordered_map>
8 #include <unordered_set>
9 #include <utility>
10 
13 #include <geographic_msgs/GeoPoint.h>
14 #include <gnss_info_msgs/SatelliteInfo.h>
15 #include <gnss_info_msgs/SatellitePosition.h>
16 #include <gnss_info_msgs/SatelliteSkyPosition.h>
17 #include <ros/time.h>
18 
19 namespace gnss_info
20 {
21 
26 {
27 public:
31  OrbitalDataProvider() = default;
32  virtual ~OrbitalDataProvider() = default;
33 
38  virtual std::string getName() const = 0;
39 
44  virtual bool isPrecise() const = 0;
45 
50  virtual bool isApproximate() const = 0;
51 
56  virtual std::pair<ros::Time, ros::Time> getTimeRange() const = 0;
57 
62  virtual std::unordered_set<std::string> getConstellations() const = 0;
63 
70  virtual bool load(const ros::Time& time, const cras::optional<bool>& precise) = 0;
71 
79  virtual bool load(const ros::Time& startTime, const ros::Time& endTime, const cras::optional<bool>& precise) = 0;
80 
87  virtual cras::expected<std::unordered_map<uint32_t, gnss_info_msgs::SatellitePosition>, std::string>
89  const std::unordered_map<uint32_t, gnss_info_msgs::SatelliteInfo>& satellites) = 0;
90 
98  virtual cras::expected<std::unordered_map<uint32_t, gnss_info_msgs::SatelliteSkyPosition>, std::string> getSkyView(
99  const geographic_msgs::GeoPoint& position,
100  const std::unordered_map<uint32_t, gnss_info_msgs::SatellitePosition>& positions,
101  double elevationMaskDeg) = 0;
102 };
103 
104 }
optional.hpp
gnss_info::OrbitalDataProvider::getTimeRange
virtual std::pair< ros::Time, ros::Time > getTimeRange() const =0
Get the time range in which this provider can provide information.
gnss_info::OrbitalDataProvider::~OrbitalDataProvider
virtual ~OrbitalDataProvider()=default
gnss_info::OrbitalDataProvider::isPrecise
virtual bool isPrecise() const =0
Return whether this provider works with precise orbit data.
gnss_info::OrbitalDataProvider::getName
virtual std::string getName() const =0
Get human-readable name of the provider.
gnss_info::OrbitalDataProvider::getConstellations
virtual std::unordered_set< std::string > getConstellations() const =0
Get the constellations handled by this provider.
gnss_info::OrbitalDataProvider::getECEFPositions
virtual cras::expected< std::unordered_map< uint32_t, gnss_info_msgs::SatellitePosition >, std::string > getECEFPositions(const ros::Time &time, const std::unordered_map< uint32_t, gnss_info_msgs::SatelliteInfo > &satellites)=0
Compute ECEF positions of the satellites at the given time.
gnss_info::OrbitalDataProvider::load
virtual bool load(const ros::Time &time, const cras::optional< bool > &precise)=0
Load data for the given time instant.
gnss_info::OrbitalDataProvider::OrbitalDataProvider
OrbitalDataProvider()=default
Constructing the provider should be a cheap and fast operation, ideally without internet access.
time
time
gnss_info::OrbitalDataProvider::isApproximate
virtual bool isApproximate() const =0
Return whether this provider works with approximate orbit data.
gnss_info
Definition: cache.h:15
expected.hpp
ros::Time
gnss_info::OrbitalDataProvider
Generic interface for various providers of GNSS satellite orbital data.
Definition: orbital_data_provider.h:25
gnss_info::OrbitalDataProvider::getSkyView
virtual cras::expected< std::unordered_map< uint32_t, gnss_info_msgs::SatelliteSkyPosition >, std::string > getSkyView(const geographic_msgs::GeoPoint &position, const std::unordered_map< uint32_t, gnss_info_msgs::SatellitePosition > &positions, double elevationMaskDeg)=0
Compute sky view (azimuths, elevations and distances) of satellites from the given receiver position.


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