Examples
Examples are located in MDS Solaris installation directory: Help_API & Examples/Examples
MDS 1.6.0 examples
- Constraint Monitor and correction maneuver workflow
Creates two satellite groups — a chemical-propulsion cluster whose eccentricity and inclination constraints will be violated over time, and a microsatellite electric-propulsion fleet already below its SMA minimum. Demonstrates using the Constraint Monitor UI to detect violations, request a correction, and compute the maneuver via the Maneuver Calculator.
example_constraint_monitor_correction.py
- Lunar constellation
Simulates a Walker-Delta constellation orbiting the Moon, showcasing MDS multi-body constellation support and lunar coverage analysis utilities.
example_lunar_constellation.py
- Candidate maneuver comparison
Sets up a fleet with two independently propagated scenarios (main and maneuver branch) so the maneuvering and non-maneuvering results can be compared side-by-side in Grafana via Postgres.
- Real-time synchronization
Demonstrates a pattern for running the MDS simulation loop synchronized to wall-clock time using fixed-timestep stepping and API synchronization.
- Select planetary body
Demonstrates how to programmatically switch the simulation's central planetary body (Earth, Moon, Mars) via the API.
example_select_planetary_body.py
- Grafana data generation
Sets up a 6-satellite fleet, propagates a baseline scenario and a maneuver scenario (with continuous thrust applied to two satellites), calculates coverage for both, and streams all results to a Postgres database for side-by-side comparison in Grafana. Optionally integrates Space-track CDM data.
example_data_generation_for_grafana.py
MDS 1.5.0 examples
- Satellite appearance modification
Demonstrates how to change a satellite's metallic, roughness, emission, and base color material factors at runtime.
example_change_sat_appearance.py
- Inter-satellite and relay link budget
Simulates Sentinel-1A and the EDRS-A/C relay satellites, computing inter-satellite and space-to-ground link budgets with attitude changes per simulation phase and a final downlink speed plot.
- Lunar Reconnaissance Orbiter
Simulates the LRO in its Moon orbit with a working power subsystem (solar panels and batteries) that drives automatic pointing mode switching based on battery charge level.
- Manual control scenario
Sets up a Rendezvous and Proximity Operations scenario with a chaser and target satellite a few metres apart to demonstrate manual satellite control through the MDS interface.
example_manual_control_scenario.py
- Show and hide satellite
Demonstrates how to toggle a satellite and its orbit trail on and off using show_hide_satellite_and_orbit.
example_show_hide_satellite.py
- Sun intensity and brightness control
Demonstrates attitude maneuvers with interpolated angular rates, showing how to control sunlight strength and camera exposure settings at runtime.
example_sun_intensity_and_brightness.py
MDS 1.4.0 examples
- Constellation Design and Revisit Time calculations
This example demonstrates the capabilities of MDS to aid in designing a constellation. Two constellations are created, for each of them, the global and overlapping ground coverage is computed, as well as revisit times and ground station visit geometry. The results are exported in the Export folder, they are then visualized for both constellations to allow for direct comparison.
example_compute_fleet_coverage.py
- Communication, payload and power system integration
Although not utilizing new features, this example demonstrates the capability to integrate power, communications and payload subsystem integration. A mission manager balances between real-time prioritization of data gathering, downlink and maintaining sufficient power.
- TLE data generation and ingestion
This script shows the (as of MDS 1.4.0 experimental) TLE generation. Orbit raIsing is executed for two satellites and their resulting TLE's are created.
- Orbital decay
This example shows two satellites' orbits decaying due to the impact of drag. The satellites are configured to have two reference areas exposed to drag, thus they decay at different rates. Once the higher area satellite reached an altitude of 140km, it burns up and is thus removed from the simulation. This can be seen in the altitude history
- Ground asset modification
Demonstrates how to add different ground assets, control them over time and the flexibility to create/change ground asset locations in intertial frame coordinates.
- Load ISS TLE
Fetches the latest ISS TLE from Celestrak and loads it into MDS to propagate and visualize the ISS orbit.
- Toggle satellite labels
Creates a Walker-Delta constellation and demonstrates enabling and disabling satellite name labels in a spacecraft-centred view.
example_toggle_satellite_labels.py
MDS 1.3.0 examples
- MDSCamera class interface
Demonstrates the MDSCamera class, which performs automatic dependent parameter solving, calculates the camera intrinsic matrix for projection, and stores camera state for easy per-parameter changes.
example_camera_class_interface.py
- Camera depth capture
Demonstrates how to capture raw depth data (float buffer) from a camera attached to a satellite, useful for Vision-Based Navigation scenarios.
example_capture_camera_depth.py
- Synthetic dataset generation
Generates a labeled image dataset using pre-defined 3D keypoints on a satellite model, projected into camera images with bounding boxes and pose transformation matrices.
- Satellite Docking simulation
This is a broad example/demonstrator of the ability to perform close-proximity in MDS. A chaser satellite approaches a target, running a GNC loop, docks, transfers fuel and retreats. The prompt at the start of the script also allows to perform a failed docking where the chaser collides with the target.
- Thruster plume visualization
This example shows how to connect visual plumes to the thrusters on a satellite 3D model Thrust is then applied in different directions and the effects are visualized.
example_set_thruster_plumes.py
- Pose setting tutorial
A tutorial script that shows the blocks of setting/controlling the pose between two satellites. Allowing to vary attitudes, positions and illumination conditions and see how that impacts the view of the target satellite in the camera frame. Useful building blocks for synthetic visual data generation.
tutorial_set_relative_attitude.py * Constellation creation examples
Demonstrates how to create a constellation using Walker-Delta Patterns. And how to establish communication between these satellites.
example_create_walker_constellation.py
Load and save a constellation frm an OMM .xml format example_load_omm.py
- Power subsystem
Demonstrates how to configure the power subsystem for power budget calculation
- Controller examples
Starts a scenario with a tumbling satellite. After 5 seconds, detumbling is activated. Once this is achieved, a new guidance mode to point the satellite camera to nadir is used.
example_detumble_and_point_nadir.py
- dV Maneuver example
Demonstrates that dV maneuvers can now be directly applied in LVLH frame. example_thrust_event_lvlh.py
MDS 1.2.0 examples
- Sun-pointing satellite
Demonstrates a satellite switching to Sun-pointing mode mid-simulation while logging and plotting attitude telemetry.
- Capstone
Demonstrates how to add satellite to an Earth-Moon transfer orbit.
- Capture image
Demonstrates how to add satellite, attach a camera and generate the camera image.
example_capture_camera_image.py
- Event scheduler
Demonstrates how to create time, geolocation, altitude events for the satellite and execute thrust/pointing actions.
- Friendly stations
Demonstrates satellite and ground station communication.
- Get ground station state
Demonstrates how to retrieve geolocation data of a chosen ground station.
example_get_ground_station_state.py
- Get Link budget
Demonstrates how to set up satellite communication. Retrieves transmission data, Uplink, Downlink budget.
- Get planet state
Demonstrates how to retrieve position data for Mercury and the Moon.
- Get satellite state
Demonstrates how to get pose data for a chosen satellite.
- Rendezvous operation
Demonstrates how to set up and run a closed-loop 6DOF GNC algorithm. The chaser satellite approaches the target satellite and points its camera at the target.
- Match attitude
Demonstrates how to set up and run a closed-loop 3DOF GNC algorithm.
The controller implemented here tries to match the chaser attitude of the target spacecraft.
- Load configuration
Demonstrates how to load configuration (JSON) file.
- Handle MDS network callbacks
Demonstrates how to connect to MDS callback server. Prints various MDS events. Such as satellite maneuver, event scheduler events. Communication link establishment. Add satellites and Mission events through the MDS UI to observe the parsed callbacks.
example_mds_event_handler_client.py
- Physical camera
Demonstrates how to attach camera to satellite. Sets camera parameters and applies various camera effects, such as lens distortion, bloom, aperture, focus, shutter speed.
- Plot ground station passes
Demonstrates how to record satellite-ground station distance from the simulation and plot it via matplotlib.
- Save configuration
Demonstrates how to save current scene into a JSON file.
- Schedule maneuver
Demonstrates how to schedule a satellite thrust maneuver at a specific julian date.
- Set satellite pointing mode
Demonstrates how to set satellite to different pointing modes.
- Set satellite rotation
Demonstrates how to instantaneously update satellite attitude.
- Set satellite track
Demonstrates how to enable satellite track for a specific satellite.
- Set simulation timescale
Show how to set up simulation speed for a whole scene.
example_set_simulation_timescale.py
- Starlink satellite batch
Demonstrates how to load satellites from CSV format and enable communication between them.
- Satellite cone color
Demonstrates how to add sensor cone to satellite and change its color