Using ClockOffsetDriver with Bistatic measurements

Hello everyone,
First post here in the forum.
I am trying to generate bistatic (laser) ranges with BistaticRange objects and feeding them into a BatchLSEstimator to estimate the orbit. As both groundstations’ clocks might not be synchronized, a clock offset delta_t would add to the measured signal time of flight. To model and estimate this clock offset I tried using the ClockOffsetDriver of the Groundstation used to generate the bistatic ranges (I am using the Python wrapper):

...
delta_t = 10E-9

lon_zwd = radians(7.4652)
lat_zwd  = radians(46.8772)
alt_zwd  = 951.2
point_zwd = GeodeticPoint(lon_zwd, lat_zwd, alt_zwd)
frame_zwd = TopocentricFrame(earth, point_zwd, "Zimmerwald")
station_zwd = GroundStation(frame_zwd)
station_zwd.getClockOffsetDriver().setValue(delta_t)
station_zwd.getClockOffsetDriver().setSelected(True)

lon_grz = 15.493
lat_grz = 47.0671
alt_grz = 539.4
point_grz = GeodeticPoint(lon_grz, lat_grz, alt_grz)
frame_grz = TopocentricFrame(earth, point_grz, "Graz")
station_grz = GroundStation(frame_grz)

start_time = AbsoluteDate(2023, 7, 14, 0, 0, 0., UTC)
end_time = AbsoluteDate(2023, 7, 14, 3, 0, 0., UTC)
dt = 10.
bistatic_error = 10.
bistatic_weight = 0.8
sigma_range = 10.
seed = 42

noise_covariance_matrix = MatrixUtils.createRealDiagonalMatrix([sigma_range**2])
corr_noise = CorrelatedRandomVectorGenerator(noise_covariance_matrix, 1e-10,
                                             GaussianRandomGenerator(MersenneTwister(seed)))

obs_sat_b = ObservableSatellite(0)
bs_generator = Generator()
bs_generator.addPropagator(propagator)
bs_range_builder = BistaticRangeBuilder(corr_noise, station_zwd, station_grz, bistatic_error, bistatic_weight, obs_sat_b)
bool_detector = BooleanDetector.andCombine([zwd_ele_detector, grz_ele_detector])
bs_scheduler = EventBasedScheduler(bs_range_builder,
                                   FixedStepSelector(dt, UTC),
                                   propagator, bool_detector,
                                   SignSemantic.FEASIBLE_MEASUREMENT_WHEN_POSITIVE)
bs_generator.addScheduler(bs_scheduler)
...

For a time offset of 10 ns I would expect a shift in range of about 3 m. In practice, the measurements generated with and without the clock offset are identical.
Am I using the ClockOffsetDriver correctly? How could I model the station clock offset in Orekit in such a way it could also be estimated?
Cheers,
Pascal

Hello @pascal.sauer,

Welcome to the forum !!

Comparing the computation of signal time of flight in two-way Range and BiStaticRange, it looks like the ClockOffsetDriver is not used in BiStaticRange

You found a bug, thank you !! Could you please open an issue on the forge?

Cheers,
Maxime

Hello @MaximeJ,
Thank you for the warm welcome and the fast reply. I have opened an issue on the forge, as you advised.
Cheers,
Pascal

1 Like