MATLAB Answers

0

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

Asked by Peter Beer on 14 Aug 2019
Latest activity Answered by Gael Goron on 1 Nov 2019
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.

  0 Comments

Sign in to comment.

2 Answers

Answer by Urmila Rajpurohith on 20 Aug 2019

You can refer to below documentation for creating trajectories using Phased array toolbox

  0 Comments

Sign in to comment.


Answer by 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.

  0 Comments

Sign in to comment.