can I use satellite trajectories in the Sensor Fusion and Tracking Toolbox?

1 view (last 30 days)
I am trying to develop a simulation to evaluate the effectiveness of space-based bi-static radars. I would like to know if the Sensor Fusion and Tracking Tool can create or import satellite trajectories.

Answers (2)

Urmila Rajpurohith
Urmila Rajpurohith on 20 Aug 2019
You can refer to below documentation for creating trajectories using Phased array toolbox

Gael Goron
Gael Goron on 1 Nov 2019
Hi Peter,
There is no out of the box satellite trajectory models in Sensor Fusion and Tracking (as of R2019b).
However you can get to it with a little bit of work.
The idea would be to leverage the kinematicTrajectory system object. You can inherit from this class and override the method stepImpl. If you are not familiar with system objects, I recomment taking a look at this documentation page.
I am copying a code snippet of what this could look like to use keplerian trajectories:
classdef myTrajectory < kinematicTrajectory
properties
Mu = 398600.4405; % km^3 s^-2
end
methods(Access = protected)
function stepImpl(obj,~,~)
dt = 1/obj.SampleRate;
state = [obj.Position obj.Velocity]';
% Simple RK4 integration method:
k1 = keplerStateTransition(obj, state);
k2 = keplerStateTransition(obj, state + dt*k1/2);
k3 = keplerStateTransition(obj, state + dt*k2/2);
k4 = keplerStateTransition(obj, state + dt*k3);
state = state + dt*(k1+2*k2+2*k3+k4)/6;
obj.Position = state(1:3)';
obj.Velocity = state(4:6)';
end
function dstate = keplerStateTransition(obj,state)
x =state(1);
vx = state(4);
y=state(2);
vy = state(5);
z=state(3);
vz = state(6);
% keplerian motion model
mu = obj.Mu;
r = norm([x y z]);
g = mu/r^2;
dstate = [vx;vy;vz;-g*x/r;-g*y/r;-g*z/r];
end
end
end
In this code, I am using some properties from the parent kinematicTrajectory class: Position, Velocity and SampleRate.
You would then use this class by assigning it to platforms in a tracking scenario:
scene = trackingScenario;
spaceObject = platform(scene); % by default this platform has a kinematic trajectory
spaceObject.Trajectory = myTrajectory('Position',[8000, 0, 0], 'Velocity',[0, 7, 1.2]) % replace with new trajectory model (init values are dummies, note that they should be non zero)
This is just a starting point, of course you can try and adapt it to your needs.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!