The AstSimulator tries to simulate flights and sensors the same way they behaive in real world. In one simulation scenario, there are some objects and they will interact with each other.
Space is a three-dimensional area the flight and sensor work in. It is equivalent to the earth surface and the space above it. All points used in simulation must be in this space, one point can be referred as a WGS-84 coordinate (aka. longitude and latitude) plus a level.
Flights or aircrafts fly in space.
Each flight has an internal fly model, which will control how the aircraft fly, including heading, speed, level, route, etc. Each flight will fly by its own, and can go to any point in space, it does't care if any sensor is "observing" it.
Currently, there are two types of fly model:
A sensor locates in space, and observes flights flying in its view.
There are different types of sensor, such as primary radar (PSR), conventional secondary radar (SSR), Mode-S secondary radar (Mode-S), automatic dependent surveillance - broadcast (ADS-B), multilateration (MLAT), each type has its very own characteristics. AstSimulator tries to simulate the behaviour of each type of sensor as in the real world.
Each sensor has a set of properties, such as location, SAC/SIC, coverage, silent cone, detection probability, so that two sensors of the same type can have a very different view of space and observes different flights.
Currently, there is one type of sensor:
Each sensor will generate standard ASTERIX output according to its observation of flights in its view, the category of ASTERIX depends on the sensor's type. Some sensor like ADS-B includes a property to choose which version of ASTERIX standard will be used.
Time makes flights and sensors move.
There are three different clocks in the simulator:
Simulation clock is used by flights in simulation scenario.
When a simulation starts to run, the simulation clock will start to run the same speed as the clock in real world. All flights in simulation scenario will calculate its "current" position and other fly vectors (heading, speed, level, ...) according to the "current" time in simulation clock.
User can change the speed of simulation clock to for example 5 times of real world clock. In this case, the flights in simulated world will still fly as their original speed, but from the real world observer's point of view, the flight is flying 5 times faster. Similarly, if you change the speed of simulation clock to 1/2 of real world clock, the flights will look like moving slower.
User can pause the running of simulation clock, in this case all flights will look like frozen in its position, until the simulation clock resumes.
User can even change the simulation clock moving backwards, in this case all flights will also look like moving backwards.
Running clock is used by sensors in simulation scenario.
Once a simulation starts to run, the running clock will start to run the same sapped as the clock in real world. User can not change the speed or pause/resume a running clock. The running clock will stop only when the whole simulation scenario is stopped.
Sensor will run in running clock, so that no matter how you change the simulation clock, the sensor will not be affected and keep on reporting flights with the same time period as in real world.
Real clock is UTC time in our real world.
When sensor generates an ASTERIX message, it will fill timestamp with current UTC time in real world. So that no matter when you start a simulation senario, and no matter how the simulation clock is modified, the timestamp in transmitted ASTERIX message is always the current UTC time.
This could help external system correctly handing the messages generated by AstSimulator. External system doesn't need to know anything of AstSimulator and can treat it as an ordinary surveillance data source. That's why you can use AstSimulator to test a real ATC system by mixing simulated flights with real flights.
The main window of AstSimulator is shown as below.
The main toolbar functions can be put into several groups.
Tool Button | Function Group | Description |
---|---|---|
Random | Flight Control | Create a random flight in simulation. |
Orbit | Flight Control | Create an orbit flight in simulation. |
ADS-B | Sensor Control | Create an ADS-B ground station in simulation. |
Start | Simulation Control | Start a simulation scenario. Both simulation clock and running clock will start when this button is clicked. |
Pause | Simulation Control | Pause or resume a simulation scenario. Only simulation clock will be paused when this button is clicked. |
Stop | Simulation Control | Stop a simulation scenario. Both simulation clock and running clock will stop when this button is clicked. |
Speed | Simulation Control | Change the speed of simulation clock. |
Flight | View Switch | Switch to flight list view, all flights in simulation scenario will be shown in this view. |
Sensor | View Switch | Switch to sensor list view, all sensors in simulation scenario will be shown in this view. |
Output | View Switch | Switch to sensor output view, the sensor output will be displayed in this view. |
Exit | N/A | Exit AstSimulator. |
The status bar shows status information of the simulation.
Item | Description | Example |
---|---|---|
General Message | Display general message of the application or simulation scenario | “Simulation started.” |
Simulation Clock | Display current time of simulation clock | “SIM 05:57:45” |
Running Clock | Display current time of running clock | “RUN 12:45:07” |
Real Clock | Display UTC time of OS clock | “UTC 23:01:57” |
In the center of main window, it displays switchable view. There are three views.
The detail of each view will be described in corresponding sections.
All flights created in simulation scenario are listed in this view. The information will update during the simulation.
All sensors defined in simulation scenario are listed in this view.
The output of selected sensor is shown in this view, both as raw format and decoded format.