Simple Real-Time Data Integration
- Jul 13, 2020
- Blog Post
AGI products are commonly used in operations environments. When using System Tool Kit (STK) in an operations setting, people often want to bring in a real-time data feed of an asset’s position and attitude. There are two different methods for this: the STK Real-Time Tracking Technology (RT3) module or single-asset real time integration. RT3 is very useful when you have data feeds for many objects (more than 10) and can be used for thousands of objects at a time.
While this is great for some applications, many use cases have a data feed of only one or two assets at a time. In such a case, you can use an integration script instead. The goal of this article is to explain the basic process for ingesting real-time data for a single asset with a simple MATLAB script.
First, it is important to note where the documentation for these commands can be found. The STK programming interface help can be found here. The documentation for the point builder (to be discussed later) can be found here.
Ingesting real-time data basically comes down to three steps:
- establishing a connection to STK and your feed
- configuring real time properties for the assets
- assigning data values as they become available.
To keep this article concise, I won’t discuss the logistics of attaching to a specific data feed. This is because every data feed is different and you would need a custom reader regardless. The STK integration portion, however, is very straight forward. You can connect to STK with a simple command, which you can see below. This code also shows how to check for an open scenario and create a new one if one does not exist.
The second portion of this example will require a satellite that will be driven by real-time data. This means that the scenario properties and the satellite properties must be configured to accept real-time data. The code below will attach to an existing satellite or create a new one and change the necessary properties for position and attitude.
The final step in this process is to ingest the real-time data. You will need to call the commands shown below every time that a new point is made available from the data feed. The look-ahead and look-behind times, shown above, will keep the object propagating even if there is a lapse in the data. The commands shown below demonstrate how to determine the current time, set a new position point, and set a new attitude point.
The code shown above is for an LLA point and a quaternion. This code would be executed for each new point in the data feed. It is important to note that the attitude is not necessarily required, but the option is available if that data is available to you. Also, position points are not limited to LLA; points can also be defined in the ECF, ECI, and B1950 frame. While it may seem complicated at first, real-time integration is straightforward and easy to implement.
Hopefully this helped improve your understanding of the topic. But, AGI support is always available to help answer any follow-up questions. You can contact them at firstname.lastname@example.org.