Calculating and Displaying TDOA in STK

« Go Back


QuestionCan you compute TDOA in STK?
You can compute time difference of arrival, or TDOA in STK using analysis workbench components between your objects of interest.  This article will go over how to compute TDOA between two satellites and one ground station.  The same steps can also be used for the reverse set-up of one satellite and two ground stations.  Basically you compute the time it takes a signal to get to each satellite from the one facility, using time = distance / rate, where the distance comes from the vector and the rate is the speed of light. So now you have two times, and you difference them and get the absolute value.
  1. Create two satellites and one facility.
  2. Open Analysis Workbench and go to the Vector Geometry tab. 
  3. On the facility, make a new vector to each satellite:
User-added image
4. On the facility, make the following Calculation components:
  1. Two Vector Magnitude calculations, one for each of the vectors created in step 3:
User-added image
b. Two Function(x) calculations, one using each of the scalar calculations created in step 4a with the following properties:
  1. Function:  a + b*x + c*x^2 + d*x^3
  2. x is scalar from step 4a, unit is meters
  3. Coefficients: a = 0, b = 3.33564e-9 (this is just 1/299,792,458 m/s which is the speed of light), c =0, d = 0
  4. Output: Dimension = Time, Unit = sec
User-added image
c. One Function(x,y) scalar calculation called TDOASigned (this will be the differences in time with positive or negative signs)
  1. Function:  ax - by
  2. x:  Time for one satellite from step 4b, y:  Time for second satellite from step 4b, all units = sec
  3. Coefficients: a = b = 1
  4. Output: Inherit dimension From x
d. One Function(x) scalar calculation called TDOA (we will now take the absolute value of the difference in time)
  1. Function = a*|b*x + c| + d
  2. x is scalar TDOASigned from step 4c, Unit = sec
  3. Coefficients: a = b = 1, c = d = 0
  4. Output: Inherit dimension from x
User-added image
You can report on the TDOA in the Report and Graph Manager by creating a new report or graph for the facility. Under the Scalar Calculations folder, expand the TDOA folder and move the Time and Scalar data providers over to the Report Contents.  If you create a report, you can increase the number of decimals displayed for the TDOA scalar by right clicking on the Scalar (sec) header and going to Scalar > Properties and increasing the number of decimal digits.  You can also change the notation from floating point to scientific.
Now that you have this calculation for a single point, you can make coverage contours too.
Create a coverage definition with the Grid Constraint options set to the facility object, pick the actual facility object instance, and check "use actual object on the grid points".  Make the Asset a Chain which you define to be Sat1-Facility-Sat2.  Make sure to compute the chain access.  Then add a FOM of type Scalar Calculation and pick your TDOA scalar. I used Average and a 300sec time step, and then set my animation contours based on the Grid Stats report for the FOM.
User-added image
These steps will work for any set of dynamic platforms mixed and matched.  The building of these Analysis Workbench components can also be automated through use of the API.  Please see our MATLAB code snippets for examples of creating components in Analysis Workbench.  The scenario created for this article is also attached for your reference
Resource File 1
Resource File 2