Closed ChristopherRabotin closed 1 year ago
This is mostly implemented in #114 but lacks the thorough testing laid out here. When this issue is tackled, it will be to add the testing.
At the moment, there is a tracking device simulator trait defined as follows:
/// Tracking device simulator.
pub trait TrackingDeviceSim<MsrIn, Msr>: Configurable
where
MsrIn: State,
Msr: SimMeasurement,
DefaultAllocator: Allocator<f64, <Msr::State as State>::Size>
+ Allocator<f64, <Msr::State as State>::Size, <Msr::State as State>::Size>
+ Allocator<f64, <Msr::State as State>::VecLength>
+ Allocator<f64, Msr::MeasurementSize>
+ Allocator<f64, Msr::MeasurementSize, <Msr::State as State>::Size>
+ Allocator<f64, MsrIn::Size>
+ Allocator<f64, MsrIn::Size, MsrIn::Size>
+ Allocator<f64, MsrIn::VecLength>,
{
/// Returns the name of this tracking data simulator
fn name(&self) -> String;
/// Observes the input state and returns a measurement from itself to the input state, and returns None of the object is not visible.
fn measure<R: Rng>(&mut self, input: &MsrIn, rng: &mut R, cosm: Arc<Cosm>) -> Option<Msr>;
}
To allow estimation of noise parameters from these tracking devices, there should be a new function (or a new trait?) that can simulate a measurement either without any noise (NoiseModel::ZERO
-- probably const
) or with a fixed noise value. If it's a new trait, it should probably just be called TrackingDevice
.
Keep in mind that the ODP currently requires the devices to implement TrackingDeviceSim. This change will add a lot of code changes.
High level description
One reason why the simulation may need to account for the availability of ground stations is to ensure that the measurements used in the orbit determination process are realistic and accurate. If a ground station is not available at a certain time, then the simulation cannot generate any measurements from that station at that time. This can lead to gaps in the measurements, which can affect the accuracy of the orbit determination process.
Requirements
Nyx shall support light time delay in two way measurementsWill be done after #86 via https://github.com/anise-toolkit/anise.rs/issues/26Configurable
trait)Test plans
Overall, it is important to test a variety of different scenarios to ensure that the simulation handles the availability of ground stations correctly in all cases.
Design
API definition
Human: this does not adequately design a cadence and only includes a start time and a duration of availability. I think that the cadence can be generated using the
TimeSeries
iterator of hifitime (specify a start and end epoch and a step size).Detailed design
This structure is now generic over a
NoiseModel
type, which allows for different noise models to be used for different ground stations. The availability field is an Option type that allows for the specification of either a time range or a cadence for the availability of this ground station. If the availability field is None, then the ground station is always available.Human: the noise model likely need to be tied to the kind of data being generated. In this proposal, it will fail
When asked to write a NoiseModel trait for a Gauss Markov, ChatGPT proposes the following.
Human: this looks different to a Gauss Markov model from the NASA Navigation Filter Best Practices.
ChatGPT then proposes the following: