Program Listing for File radio_measurement.h

Return to documentation for file (include/lupnt/measurements/radio_measurement.h)

#pragma once

#include "lupnt/measurements/comm_device.h"
#include "lupnt/numerics/math_utils.h"
#include "lupnt/physics/body.h"
#include "lupnt/physics/frame_converter.h"

namespace lupnt {

  Real ComputeOneWayRange(VecX r_tx, VecX r_rx, Real offset);

  Real ComputePseudorange(VecX r_tx, VecX r_rx, Real dt_tx, Real dt_rx, Real offset);

  Real ComputePseudorangerate(VecX r_tx, VecX r_rx, VecX v_tx, VecX v_rx, Real dt_tx_dot,
                              Real dt_rx_dot, Real offset);

  Real ComputeDopplerShift(VecX r_tx, VecX r_rx, VecX v_tx, VecX v_rx, Real dt_tx_dot,
                           Real dt_rx_dot, Real f, Real offset);

  Real ComputeOneWayRangeLTR(Real epoch_rx, Vec6 rv_tx, Vec6 rv_rx, Real dt_tx, Real dt_rx,
                             BodyData, BodyData rx_center_body, bool is_bodyfixed_tx,
                             bool is_bodyfixed_rx, Real hardware_delay);

  Real ComputeTwoWayRangeLTR(Real epoch_rx, Vec6 rv_target_tr, Vec6 rv_rx_tr,
                             BodyData target_center_body, BodyData rx_center_body,
                             bool is_bodyfixed_target, bool is_bodyfixed_rx, Real hardware_delay,
                             Real additional_delay = 0.0);

  Real ComputeOneWayRangeRateLTR(Real epoch_rx, Vec6 rv_tx_tr, Vec6 rv_rx_tr, Real dt_dot_tx,
                                 Real dt_dot_rx, BodyData target_center_body,
                                 BodyData rx_center_body, bool is_bodyfixed_target,
                                 bool is_bodyfixed_rx, Real hardware_delay, double T_I);

  Real ComputeTwoWayRangeRateLTR(Real epoch_rx, Vec6 rv_target_tr, Vec6 rv_rx_tr,
                                 BodyData target_center_body, BodyData rx_center_body,
                                 bool is_bodyfixed_target, bool is_bodyfixed_rx,
                                 Real hardware_delay, double T_I);

  double ComputePnRangeErrorCTL(double PRC_N0, double B_L_CTL, double T_c,
                                Modulation modulation_type = Modulation::BPSK);

  double ComputePnRangeErrorOL(double PRC_N0, double T_I, double T_c,
                               Modulation modulation_type = Modulation::BPSK);

  double ComputeRangeRateErrorOneWay(double B_L_carrier, double f_C, double T_s, double T_I,
                                     double PT_N0, double sigma_y_1s,
                                     Modulation modulation_type = Modulation::BPSK,
                                     double m_R = 0.0);

  double ComputeRangeRateErrorTwoWay(double B_L_carrier, double f_C, double T_s, double T_I,
                                     double PT_N0, double sigma_y_1s, double G,
                                     Modulation modulation_type = Modulation::BPSK,
                                     double m_R = 0.0);

}  // namespace lupnt