.. _program_listing_file_measurements_crosslink_measurement.h: Program Listing for File crosslink_measurement.h ================================================ |exhale_lsh| :ref:`Return to documentation for file ` (``measurements/crosslink_measurement.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include "lupnt/core/definitions.h" #include "lupnt/measurements/measurement.h" #include "lupnt/measurements/measurement_utils.h" namespace lupnt { class IslCrosslinkMeasurement : public MeasurementClone { public: struct Config { int sub_state_size = 8; int n_links = 0; int idx_position = 0; int idx_velocity = 3; int idx_clock_bias = 6; int idx_clock_drift = 7; std::vector anchor_pos_mci; std::vector anchor_vel_mci; double sigma_range_m = 1.0; double sigma_range_rate_mps = 1.0e-3; double sigma_pseudorange_m = 200.0; bool include_anchor_doppler = false; double sigma_anchor_doppler_mps = 1.0e-3; bool include_time_transfer = false; double sigma_time_transfer_m = 1.0; bool include_frequency_transfer = false; double sigma_frequency_transfer_mps = 1.0e-3; }; IslCrosslinkMeasurement() = default; explicit IslCrosslinkMeasurement(Config config) : config_(std::move(config)) {} const Config& GetConfig() const { return config_; } void SetConfig(const Config& config) { config_ = config; } MeasData Compute(const State& x, MatXd* H = nullptr) const override; private: Config config_; int NumRows() const; VecX Model(const VecX& x) const; MatXd Covariance() const; }; } // namespace lupnt