I was trying to replicate the example
where the latency and the Doppler is calculated in a satellite scenario. I can replicate it perfectly, but when I try to substitute the Ground Station in the example for a Platform (i.e. a plane moving represented by a geoTrajectory), the delay output of the latency function comes out as all-NaN.
This is how I define my trajectory:
%% Aircraft Trajectory
waypoints = [... % Latitude (deg), Longitude (deg), Altitude (meters)
40.6289,-73.7738,3;...
40.6289,-75.4618,10000;...
40.6289,-78.8618,10000;...
];
timeOfArrival = duration([... % time (HH:mm:ss)
"00:00:00";...
"00:13:40";...
"10:00:00"]);
aircraft.trajectory = geoTrajectory(waypoints,seconds(timeOfArrival),AutoPitch=true,AutoBank=true);
This is how I add it to the scenario and create the access:
aircraft.obj = platform(mission.scenario,aircraft.trajectory);
ac = access(iridiumSatellites,aircraft.obj);
And then this is how I calculate the delay:
[delay,time] = latency(iridiumSatellites,gs);
The funny thing is that dopplershift function works just fine, and it is able to calculate observed doppler and doppler rate using the Platform object as the target, so I'm guessing there is something wrong with the latency function implementation.
EDIT 1 (6th May 24)
This approach presents other issues because if you consider the aircraft a satellite, the orbit will obey the laws of Kepler and its motion will be propagated around the Earth, but it works for the latency analysis. Of course this doesn't solve the issue but it lets you work in the meantime.
Another thing that I noticed is that the latency function takes considerably longer to run when the target is a platform than when I use the satellite workaround (it takes 11 seconds to run with a constellation of 66 source satellites at 3600 samples each and a target satellite object, whereas if I define the aircraft as a target platform object, it takes 95 seconds). I am guessing this reinforces my idea that the latency implementation might have a bug when targeting platform objects.