ADAM::Trajectory Optimizer
This tool calculates interplanetary transfer trajectories between solar system bodies using Lambert's problem solver. This is only a demonstration and has limitations. For instance, we limit the computation window and step size to ensure reasonable response times.
To use the service at scale, with less restrictions, or for programmatic API access please send us an email.
Step 1: Select Bodies and Time Windows
Choose the departure and arrival bodies for your trajectory optimization calculation, along with their respective time windows. Bodies can be selected from various catalogs including asteroids, planets, and spacecraft.
Departure Body
Launch Time Window
Date Format
Earliest Launch Time
Date in your local format
Latest Launch Time
Date in your local format
Arrival Body
Arrival Time Window
Date Format
Earliest Arrival Time
Date in your local format
Latest Arrival Time
Date in your local format
Bodies not selected. Use the forms above to search for and select both departure and arrival bodies before proceeding with trajectory optimization analysis.
Step 2: Configure Transfer Parameters
Set the time window and computational parameters for your trajectory optimization analysis. The earliest launch time and latest arrival time define the search space for potential transfers.
Please credit Asteroid Institute, ADAM::Trajectory Optimizer b612.ai when using results from Trajectory Optimizer and any additional ADAM services.
Frequently Asked Questions
- What is this?
- How does it work?
- What data sources are available?
- What are SPICE files and how are they used?
- When should I use each data source?
- How accurate are these calculations?
- What does RA and Dec represent and why are they only available for some departure bodies?
- Why are some solutions not displaying in the preview?
What is this?
ADAM::Trajectory Optimizer is a tool used to calculate and visualize spacecraft transfer trajectories between solar system bodies. This is a demo of the tool which puts some limitations on the inputs such as time range and computational complexity to ensure reasonable response times.
How does it work?
The service uses Lambert's problem solver to compute transfer trajectories between two selected bodies. You can select departure and arrival bodies from various catalogs (SBDB, Scout, NEOCC, Horizons, SPICE, or custom files), specify the time window for analysis, and configure other parameters like step size and solver tolerance. The results include porkchop plots showing transfer opportunities and downloadable trajectory data. This tool is built on top of the open-source adam_core library .
What data sources are available?
The Trajectory Optimizer service supports multiple data sources for solar system body orbital information:
JPL Small Body Database (SBDB): Contains orbital elements for most known asteroids and comets. Enter an asteroid/comet designation (e.g., '2024 YR4' or '99942') to find its orbital data. More info Note: Less accurate for objects with known non-gravitational parameters (e.g., Yarkovsky effect) as our ASSIST implementation doesn't currently handle non-gravitational forces.
ESA NEOCC: The Near-Earth Object Coordination Centre provides European data on orbits, including objects that are not near-Earth. Enter the object designation as it appears in their database (e.g., '2024AB' or a numbered asteroid). Note: Less accurate for objects with known non-gravitational parameters (e.g., Yarkovsky effect) as our ASSIST implementation doesn't currently handle non-gravitational forces.
JPL Horizons: Provides ephemeris data for planets, moons, spacecraft, asteroids, and comets. Enter an object designation or spacecraft name (e.g., 'Mars Barycenter', 'Voyager 1', '2024 YR4'). This service queries the Horizons system for orbital elements. Horizons web interface | Horizons API documentation
SPICE: Provides high-precision ephemeris data for planets and major bodies. Select from the predefined list of supported bodies with their corresponding NAIF ID numbers. The SPICE files available are DE440.bsp and sb441-n16.bsp, provided by our Python packages naif_de440
and jpl-small-bodies-de441-n16
respectively.
Custom Files: Allow you to provide a public link to an adam_core.orbits.Orbits file. This feature requires special access - contact us at adam@b612foundation.org for information.
What are SPICE files and how are they used?
SPICE (Spacecraft, Planet, Instrument, C-matrix, Events) is a NASA/JPL information system that provides geometric and time-related data for space missions. In our Trajectory Optimizer service, we use two specific SPICE files:
DE440.bsp: This is a planetary ephemeris file that contains precise positions and velocities of major solar system bodies (planets, the Moon, etc.) over a long time span. It's provided through our naif_de440
Python package.
sb441-n16.bsp: This file contains ephemeris data for the 16 largest asteroids in the solar system. It's provided through our jpl-small-bodies-de441-n16
Python package.
These SPICE files enable high-precision calculations for trajectory transfers involving major planets and the largest asteroids, ensuring accurate modeling of gravitational influences during transfer calculations.
When should I use each data source?
Choose your data source based on the type of body and precision requirements:
Use SPICE for: Major planets, planet barycenters, the Moon, and the 16 largest asteroids.
Use JPL Horizons for: Any solar system body including planets, moons, asteroids, comets, and spacecraft. If you select Horizons, we will use their ephemeris service to generate the departure and arrival states over the dates selected.
Use SBDB for: Known asteroids and comets when you have their designation. Quick access to orbital elements for small bodies. If you select SBDB, we will use the ASSIST propagator get the departure and arrival states over the dates selected.
Use ESA NEOCC for: alternative orbit solutions for known asteroids and comets. Note that NEOCC is particular about the designation format (e.g. no spaces). If you select NEOCC, we will use the ASSIST propagator to get the departure and arrival states over the dates selected.
Note: For the 16 largest asteroids (Ceres, Vesta, Pallas, etc.), we recommend using SPICE or Horizons rather than SBDB/NEOCC, as our propagator includes these bodies as perturbers and will not propagate them correctly.
How accurate are these calculations?
The accuracy depends on several factors. The accuracy of location of the departure and arrival bodies depends on the source. Both Horizons and SPICE use n-body gravitational models developed by NASA/JPL. For other sources, we use the ASSIST propagator which includes the major planets and the 16 largest asteroids as perturbers and also takes into account effects of general relativity, Sun and Earth harmonics. The transfer solutions are generated using an implementation of the Lambert's problem solver in the adam_core library. These solutions are 2-body and function as a starting place for more refined mission planning. The cartesian states for the departure and arrival bodies should be quite accurate and are generated from their respective sources or using the ASSIST propagator.
Note on Non-gravitational Forces: SBDB and NEOCC sources will not be as accurate for objects that have known non-gravitational acceleration parameters, such as the Yarkovsky effect. This is because we do not currently handle non-gravitational forces in our implementation of the ASSIST integrator. While ASSIST does have non-gravitational support, we intend to add this functionality in future updates. JPL Horizons and SPICE should include non-gravitational forces.
What does RA and Dec represent and why are they only available for some departure bodies?
RA and Dec represent the right ascension and declination from the origin of the departure body at the time of departure. These are calculated using the unit vector of the solution departing velocity. For the time being, these are only provided if the departure body is one of the following:
- SOLAR_SYSTEM_BARYCENTER = 0
- MERCURY_BARYCENTER = 1
- VENUS_BARYCENTER = 2
- EARTH_MOON_BARYCENTER = 3
- MARS_BARYCENTER = 4
- JUPITER_BARYCENTER = 5
- SATURN_BARYCENTER = 6
- URANUS_BARYCENTER = 7
- NEPTUNE_BARYCENTER = 8
- SUN = 10
- MERCURY = 199
- VENUS = 299
- EARTH = 399
- MOON = 301
- MARS = 499
- JUPITER = 599
- SATURN = 699
- URANUS = 799
- NEPTUNE = 899
Why are some solutions not displaying in the preview?
Some solutions are hyperbolic or have extremely high eccentricities. The SpaceKit orbit viewer is based on Keplerian elements and struggles to display these orbits. There are plans to add support for hyperbolic orbits in the future.