Toby Tomkinson’s LEO simulator
This simulator runs on Windows using the Unity realtime development platform for Windows. It simulates approximate great circle routing through a LEO network between two selectable locations on Earth in real time. For its orbital simulation, the simulator reads a JSON file that originates from the satellitemap.space API (currently with the first generation Starlink constellation) and a text file that came from Celestrak. To simulate the Earth, it uses a NASA 3D model. Link start and end points can be chosen from a list condensed from simplemaps.com.
The simulator assumes that each of the Starlink satellites is capable of n outbound links and an unlimited number of inbound ones. Once start and end point of the desired link have been defined, the simulator computes a route through the satellite network between them in real time or on an accelerated time scale, with updates as satellites move.
Download the simulator from here. Unzip the file, enter the directory and start SatSim.exe.
The simulator does not really need configuration before it is started, however it does need an Internet connection to retrieve the required constellation files, and it does have a few settings you can tweak offline only.
The config.txt file
This resides under SatSim_Data/StreamingAssets and has the following content:
You may wish to play with the first two. CitiesFilename specifies the file that contains the locations to be plotted and offered as start and end points for links. The given file attempts to show all major cities and smaller population centres in remote areas. You can add additional locations here – the format is more or less self-explanatory.
The MinimumHopDistance requires the routing to restrict itself to forwarding hops that are at least the given number of kilometres away. This prevents routing loops should a packet be injected into a temporary cluster of satellites.
After start, the main screen appears with the configuration menu. The TAB key switches between input mode on the interface and Earth view only mode. The Satellite Route Interface has the following input elements:
- “N closest”: This is the number of “closest neighbours” that a satellite can send packets to, i.e., its number of outbound inter-satellite links. Default: 5
- “Update p/s”: Number of seconds (in real time) after which a new path is computed. Default: 1
- Country selectors for start and end points. Selecting a country here populates the location selection boxes on their right. Don’t like the selection you get or it’s missing your favourite spots? No problem: Add them in SatSim_Data/StreamingAssets/worldcities-condensed-150km.csv or make up your own CSV and point CitiesFilename in config.txt at it. Simple as that.
- “Return path”: This checkbox determines whether the simulator will compute a return path as well as a forward path. These are usually different.
- “Finding Route…”: Click this when you’re done and the simulator will go beavering away. Hit TAB to get away from the menu and into Earth only view mode.
- The path line renderer width slider lets you control the width of the paths that get plotted. Useful if you’re planning to take screenshots of the thing for presentations or publications.
The Satellite Interaction Interface lets you zoom in on a satellite or speed up the simulation by a given factor.
Running the simulator
Hit TAB to turn the configuration menu on or off. When off, the view can be controlled with the mouse similar to Google Earth. Mouse movement spins the globe, the mouse scroll wheel zooms in and out. Hitting the P key pauses the simulator – great if you want to take a screenshot. ESC terminates the program.
Whenever the simulator runs and computes paths, it outputs log entries for them in SatSim_Data/StreamingAssets/output.csv. Note that if you change the configuration (start and end), you may wish to delete this file as new entries simply get appended to old ones. The file records time, start, destination, start and destination coordinates, number of hops, great circle distance in km, path length in km and latency in ms.