A new year is just around the corner, and Orolia released a new version of Skydel for the holiday season. Skydel version 21.11 (November 2021) introduces the data set concept and improvements to the plug-in SDK, allowing users to develop more advanced customization for their specific use cases. Click here for the release notes.
Skydel now lets you import multiple data sets and use them independently to create the navigation message and compute the satellite position. As a result, you can create discrepancies between ephemeris, almanac, and the actual satellite position. In previous versions of Skydel, these same effects could be achieved by adding errors to the trajectory, atmospheric delays, clock errors, PSR ramps, message modifications, etc. But sometimes, it is more convenient to simply import a set of data for different functions. For example, you can find test definitions in the 3GPP specifications that specify a different data set for the almanac.
Before explaining this new feature further, let’s take a step back to refresh our memory on how a GNSS receiver can determine its position using signals broadcasted from GNSS satellites.
The signals transmitted by GNSS satellites include a pattern known to the receiver, which allows pseudorange measurements. The range between the satellite and the receiver can be estimated when clock corrections and atmospheric delays are applied to the pseudorange. Using a simplified 2D representation, the receiver knows its position is somewhere on a circle around the satellite, and the radius is defined by the range.
The GNSS signals contain ephemeris and almanac information (amongst other things) to describe the satellite’s orbital trajectory. With that information, the receiver knows where the satellite was when the signal was transmitted. The receiver can narrow down its position by tracking the GNSS signals from multiple satellites, as illustrated again in the following simplified 2D drawing.
Trilateration is the technic used by receivers to determine their position using distances. Now imagine that the ephemeris and almanac information is imprecise or erroneous. The consequence is the satellite position is not accurately known to the receiver, and the circles no longer intersect at a precise point. It looks more like an area than a point.
Multiple factors can make this area larger, such as atmospheric effects, clock errors, erroneous ephemeris data, etc. All these error factors will impact the calculation of the pseudorange as well as the position of the satellites.
Skydel still allows you to add errors, and data sets are another way to achieve this. To add a data set, simply navigate the Data Sets menu: Settings → GPS (or any other constellation) → Data Sets. From there, click on Add Data Set button.
Once you add the data sets you want to use, click on the radio buttons to indicate Skydel how/where to use it. You can choose between Ephemeris, Almanac and Orbit. When you select ephemeris, you tell Skydel to use the information in this data set to fill the portions of the navigation message that pertains to the ephemeris. Idem for Almanac. And when you select Orbit, you tell Skydel to use this set to compute the satellite position, which immediately affects the pseudorange.
To limit the ripple effect in the GUI, you can tell Skydel which set is Active. Active simply means that other areas in the GUI which allow modifying the data will apply the modifications to the active data set. This way, the rest of the GUI remains mostly unchanged, and if you have only one data set (default), the behaviour is exactly as before. This also makes old scenarios forward compatible with the latest version of Skydel.
Orolia continues to improve on the plug-in SDK to allow users to develop better and more sophisticated plug-ins to customize and integrate Skydel into their elaborate testbeds.
Plug-ins are C++ libraries developed by anyone who wants to customize or add capabilities to Skydel. For example, the RTCM functionality was added to Skydel as a plug-in. Another good example of a plug-in is the IMU library developed by Orolia and provided as open-source. This plug-in will convert the simulated receiver position from ECEF to inertial, which users can customize to add errors to the inertial data to emulate the behavior of inertial sensors.
The plug-in interacts with Skydel through multiple interfaces called roles. Each role is specialized for a specific purpose. For example, the Skydel Position Observer Interface role will allow the plug-in to get the current simulated position at 1000Hz.
This version of Skydel introduces two roles:
- Skydel Radio Time Observer Interface
- Skydel Transmitter Observer Interface
The Skydel architecture works like a pipeline where several steps are done sequentially. The time it takes to go through this sequence is called the system latency. The plug-in is connected upstream in the sequence and operates in advance. In other words, it works on things that are not yet transmitted by the radio. Sometimes, the plug-in must control peripherals such as the turntable at a very precise moment to align the motion with the RF. For that reason, the Radio Time observer was created. It provides the precise radio time so the plug-in knows when or how long it should wait to perform tasks that need to be synchronized.
Skydel allows multiple virtual transmitters to be added to the scenario for jamming and spoofing use cases. These transmitters can have their own trajectories, transmit jamming signals, or even GNSS signals to spoof the receivers. The Transmitter observer allows the plug-in to get real-time data on all the transmitters in the scenario. This observer allowed Orolia to develop a terrain modeling plug-in that attenuates the propagation loss of transmitters according to the characteristics of the surrounding terrain.
To read more about Skydel plug-ins and to develop your own plug-ins, please visit this public GitHub repository here.
You can find plug-in documentation here.
Remember to renew your Skydel support before it expires. Active support will allow you to update your Skydel software to the latest release and get technical support.