1 Introduction

Near-Earth Asteroids (NEAs) are defined as those asteroids with a perihelion distance of less than 1.3 AU (astronomical unit). In recent years the interest in such objects has considerably increased, both for scientific and industrial purposes [1]: a better knowledge of the smaller bodies is essential to extend our understanding of the birth and evolution of the solar system; and the possibility to open up a wholly new market based on the exploitation of asteroid mineral resources is bringing around the birth of a new area of private space industry. Among NEAs, those with orbits crossing the Earth’s orbit and a semi-major axis larger than the Earth’s one are identified as members of the Apollo group. Such asteroids are quite interesting targets for mining ventures, as their relative proximity to the Earth makes them, in principle, easier to access than the other NEAs. In order to prepare properly for successful commercial exploitation of the awaiting riches, it is very likely that future space miners will want to carry out a number of exploratory missions, so to gather important information on the composition, size, shape, spin rate, etc. of the target bodies.

The study is aimed at assessing the requirements, the constraints and the feasibility, in terms of trajectory, of a prospecting mission capable to visit the largest possible number of Apollo asteroids with a single spacecraft. A visit is defined as a flyby at a distance sufficiently close so to allow for observation. The task is not trivial, due to the great number of the Apollo asteroids (Fig. 1), so to require the formulation of a dedicated method for the resolution of the optimization problem about the selection of targets. In our study, it is explicitly assumed that our prospector spacecraft is propelled by chemical rockets, contrary to several recent works in the literature, where a similar asteroid tour problem is studied for low-thrust propelled spacecraft, either electrical [2, 3], or solar-sailing [4]. Moreover, this type of optimization problem is often solved by heuristic genetic algorithms [5] that allow to evaluate a set of initial solutions, and, introducing “disorder” elements, are able to create new solutions following an evolutionary path. The computational cost for very complex problems is therefore reduced; however, the method does not guarantee that an acceptable solution will be found. In this paper, a deterministic building blocks approach [3] is adopted, dividing the optimization problem in two parts: a local optimization to determine the next target; a global optimization to select the best visiting sequence. Data of the Apollo asteroids (and Earth) are retrieved from [6] and [7], respectively, and are relative to an heliocentric-ecliptic reference frame in the epoch J2000. The asteroid database is daily-updated with data about new bodies discovered, so that the proposed algorithm might produce very different results at different times in the future. A first version of the algorithm has been implemented in MATLAB\(^{\textregistered }\) to analyze some test cases.

Fig. 1
figure 1

Apollo asteroids at a generic time in the heliocentric-ecliptic reference frame

2 Assumptions

The starting data are the set of Keplerian orbital elements \(\left\{ a,e,i,\varOmega ,\omega \right\} \) (respectively semi-major axis, eccentricity, inclination, longitude of the ascending node and argument of periapsis) and the epoch of osculation \(t_{\mathrm{ref}}\) with the relative asteroid position expressed by the mean anomaly \(M_{\mathrm{ref}}\), retrieved from [6]. Firstly, it is assumed that the asteroids trajectories are not affected by perturbations from other bodies (Keplerian orbits), so that the asteroid orbital elements stay constant during the mission. It can be seen from the distribution of these values among the asteroids (Fig. 2) that most of the asteroids have slightly inclined orbits; therefore it was chosen a trajectory lying on the ecliptic plane for the visiting spacecraft, in order to simplify the problem and to minimize inclination changes together with required propellant. With these assumptions, the problem is reduced to finding a step-by-step defined trajectory that starts from the Earth (after the escape) and intercepts the asteroids at their transit points on the ecliptic plane. Each overall trajectory’s segment, joining two asteroids and followed by the spacecraft, will be a Keplerian arc with the necessary properties. Moreover, in the heliocentric phase, all the maneuvers are assumed impulsive without considering mass changes of the spacecraft and neglecting the details of what happens during the flyby phase. The main idea is to use a building blocks approach [3], in which the design of a complex trajectory is the result of an assembly of optimal solutions to smaller problems, as will be explained later in detail.

Fig. 2
figure 2

Distribution of orbital parameters among Apollo asteroids, after data from [6]

3 Preliminary Phase

The first building block concerns the use of asteroids reference data (time, \(t_{\mathrm{ref}}\), and position, \(M_{\mathrm{ref}}\)) in order to determine the transit positions on the ecliptic plane. It can be easily seen that the condition of transit is expressed in terms of the related true anomaly \(\nu _{\mathrm{tr}}\) by considering the reference frame transformation from perifocal to the heliocentric–ecliptic:

$$\begin{aligned} {\left\{ \begin{array}{ll} x=r(\nu )\left[ \left( \cos \varOmega \cos \omega -\sin \varOmega \sin \omega \cos i\right) \cos \nu +\left( -\cos \varOmega \sin \omega -\sin \varOmega \cos \omega \cos i\right) \sin \nu \right] \\ y=r(\nu )\left[ \left( \sin \varOmega \cos \omega +\cos \varOmega \sin \omega \cos i\right) \cos \nu +\left( -\sin \varOmega \sin \omega +\cos \varOmega \cos \omega \cos i\right) \sin \nu \right] \\ z=r(\nu )\left[ \sin \omega \sin i \cos \nu +\cos \omega \sin i \sin \nu \right] \end{array}\right. }; \end{aligned}$$

with

$$\begin{aligned} r(\nu )=\frac{a\left( 1-e^2\right) }{1+e\cos \nu }; \end{aligned}$$

and imposing:

$$\begin{aligned}&z=0\ \Rightarrow \ \sin \omega \cos \nu _{\mathrm{tr}}+\cos \omega \sin \nu _{\mathrm{tr}} =0\ \Rightarrow \ \tan \nu _{\mathrm{tr}}=-\tan \omega \\&\quad \Rightarrow \ \left\{ \nu _{\mathrm{tr}}^{(1)}, \nu _{\mathrm{tr}}^{(2)}\right\} \in \left[ 0,2\pi \right) , \end{aligned}$$

with \(\nu _{\mathrm{tr}}^{(1)}<\nu _{\mathrm{tr}}^{(2)}\). Two values of true anomaly result from this equation, each of them related to the position and velocity vectors, \(\left\{ \mathbf{r} _{\mathrm{tr}}^{(1)},\mathbf{r} _{\mathrm{tr}}^{(2)}\right\} \) and \(\left\{ \mathbf{v} _{\mathrm{tr}}^{(1)},\mathbf{v} _{\mathrm{tr}}^{(2)}\right\} \), found by solving an initial value problem, the Direct Kepler’s Problem (DKP). It can be seen that the most of asteroids pass through the ecliptic plane at a distance from the Sun of about 1 AU, in a region named high-density transit zone (HDTZ) (Fig. 3)

Fig. 3
figure 3

Asteroid transition positions \(\mathbf{r} _{\mathrm{tr}}^{(1)}\) (left) and \(\mathbf{r} _{\mathrm{tr}}^{(2)}\) (right) on the ecliptic plane in the heliocentric-ecliptic reference frame

Four quantities are available to the user to choose as input parameters:

  • Mission lifetime \(\left[ t_0,t_{\mathrm{end}}\right] \): expressed by mission start and end times;

  • Mission area \(\left[ d_{\mathrm{min}},d_{\mathrm{max}} \right] \): expressed by spacecraft-Sun minimum and maximum distances;

  • Maximum consumption per maneuver \(\varDelta \text {v}_{\mathrm{max}}\): index of propellant management for a single spacecraft maneuver;

  • Maximum mission consumption \(\varDelta \text {v}_{\mathrm{tot}}\): index of the on-board propellant at the start of the mission.

In this part of the analysis only the first two parameters are used, while the others will be useful later. Mission lifetime is critical for knowing the order and the date of transits. In particular, this phase concerns only the first and the second transits according to a temporal order. For this purpose, the initial position of asteroids is found in terms of true anomaly \(\nu _0=\nu \left( t_0\right) \) by solving another initial value problem, the Reverse Kepler’s Problem (RKP). Hence, a new DKP is resolved with respect to the initial time \(t_0\) to determine the dates of transit. Assuming as notation that the apex roman number expresses temporal order, three cases must be considered (n is the asteroid mean motion):

  • Case 1

    $$\begin{aligned}&\text {if}\ 0<\nu _0<\nu _{\mathrm{tr}}^{(1)}\Rightarrow {\left\{ \begin{array}{ll} \mathbf{r} _{\mathrm{tr}}^{I}=\mathbf{r} _{\mathrm{tr}}^{(1)} \\ \mathbf{r} _{\mathrm{tr}}^{II}=\mathbf{r} _{\mathrm{tr}}^{(2)} \end{array}\right. }\\&\quad \Rightarrow {\left\{ \begin{array}{ll} t_{\mathrm{tr}}^{I}=t_0+\left( M_{\mathrm{tr}}^{(1)}-M_0\right) /n \\ t_{\mathrm{tr}}^{II}=t_0+\left( M_{\mathrm{tr}}^{(2)}-M_0\right) /n \end{array}\right. }; \end{aligned}$$
  • Case 2

    $$\begin{aligned}&\text {if}\ \nu _{\mathrm{tr}}^{(1)}<\nu _0<\nu _{\mathrm{tr}}^{(2)}\Rightarrow {\left\{ \begin{array}{ll} \mathbf{r} _{\mathrm{tr}}^{I}=\mathbf{r} _{\mathrm{tr}}^{(2)} \\ \mathbf{r} _{\mathrm{tr}}^{II}=\mathbf{r} _{\mathrm{tr}}^{(1)} \end{array}\right. }\\&\quad \Rightarrow {\left\{ \begin{array}{ll} t_{\mathrm{tr}}^{I}=t_0+\left( M_{\mathrm{tr}}^{(2)}-M_0\right) /n \\ t_{\mathrm{tr}}^{II}=t_0+\left( M_{tr}^{(1)}+2\pi -M_0\right) /n \end{array}\right. }; \end{aligned}$$
  • Case 3

    $$\begin{aligned}&\text {if}\ \nu _{\mathrm{tr}}^{(2)}<\nu _0<2\pi \Rightarrow {\left\{ \begin{array}{ll} \mathbf{r} _{\mathrm{tr}}^{I}=\mathbf{r} _{\mathrm{tr}}^{(1)} \\ \mathbf{r} _{\mathrm{tr}}^{II}=\mathbf{r} _{\mathrm{tr}}^{(2)} \end{array}\right. }\\&\quad \Rightarrow {\left\{ \begin{array}{ll} t_{\mathrm{tr}}^{I}=t_0+\left( M_{\mathrm{tr}}^{(1)}+2\pi -M_0\right) /n \\ t_{\mathrm{tr}}^{II}=t_0+\left( M_{\mathrm{tr}}^{(2)}+2\pi -M_0\right) /n \end{array}\right. }. \end{aligned}$$

Finally, with the purpose of reducing the computational cost, the asteroids that transit too far in time and in space will not be considered from now on. Therefore, the potentially observable asteroids are defined as the asteroids that transit at least once in the chosen area during the mission. They must satisfy the following conditions:

$$\begin{aligned} {\left\{ \begin{array}{ll} t_0<t_{\mathrm{tr}}^{I}<t_{\mathrm{end}}\quad \text {or}\quad t_0<t_{\mathrm{tr}}^{II}<t_{\mathrm{end}} \\ d_{\mathrm{min}}<|\mathbf{r} _{\mathrm{tr}}^{I}|<d_{\mathrm{max}} \quad \text {or}\quad d_{\mathrm{min}}<|\mathbf{r} _{\mathrm{tr}}^{II}|<d_{\mathrm{max}} \end{array}\right. }. \end{aligned}$$
(1)

The previous relations give the initial set of N asteroids that will be the subject of the algorithm in the next phases.

By indicating with \(N_{\mathrm{tot}}\) the total number of asteroids discovered and reported in [6], the preliminary phase can be summarized as follows.

figure a

4 Research Phase

This is the central core of the algorithm. Here, depending on the spacecraft position, the possible targets are determined. The starting variables are related to the current state of spacecraft: \(\left( t,\mathbf{r} ,\mathbf{v} \right) \). At each generic iteration, a new calculation of the next transit data is needed for all the asteroids. Hence, a general method that comprises various cases and sub-cases is adopted as follows:

  1. a.
    $$\begin{aligned} \text {if}\ t<t_{\mathrm{tr}}^{I}\Rightarrow {\left\{ \begin{array}{ll} t_{\mathrm{tr}}^{\mathrm{next}}=t_{\mathrm{tr}}^{I}\\ \mathbf{r} _{\mathrm{tr}}^{\mathrm{next}}=\mathbf{r} _{\mathrm{tr}}^{I}\\ \mathbf{v} _{\mathrm{tr}}^{\mathrm{next}}=\mathbf{v} _{\mathrm{tr}}^{I} \end{array}\right. }; \end{aligned}$$
  2. b.
    $$\begin{aligned}&\text {if}\ t>t_{\mathrm{tr}}^{I}\Rightarrow \lambda =(t-t_{\mathrm{tr}}^{I}) \ \text {div}\ T\nonumber \\&\quad \Rightarrow {\left\{ \begin{array}{ll} \text {if}\ t<t_{\mathrm{tr}}^{II}+\lambda T\Rightarrow {\left\{ \begin{array}{ll} t_{\mathrm{tr}}^{\mathrm{next}}=t_{\mathrm{tr}}^{I+2\lambda +1}=t_{\mathrm{tr}}^{II}+\lambda T\\ \mathbf{r} _{\mathrm{tr}}^{\mathrm{next}}=\mathbf{r} _{\mathrm{tr}}^{I+2\lambda +1} =\mathbf{r} _{\mathrm{tr}}^{II}\\ \mathbf{v} _{\mathrm{tr}}^{\mathrm{next}} =\mathbf{v} _{\mathrm{tr}}^{I+2\lambda +1}=\mathbf{v} _{\mathrm{tr}}^{II} \end{array}\right. }\\ \text {if}\ t>t_{\mathrm{tr}}^{II}+\lambda T\Rightarrow {\left\{ \begin{array}{ll} t_{\mathrm{tr}}^{\mathrm{next}}=t_{\mathrm{tr}}^{I+2\left( \lambda +1\right) } =t_{\mathrm{tr}}^{I}+\left( \lambda +1\right) T\\ \mathbf{r} _{\mathrm{tr}}^{\mathrm{next}}=\mathbf{r} _{\mathrm{tr}}^{I+2 \left( \lambda +1\right) }=\mathbf{r} _{\mathrm{tr}}^{I}\\ \mathbf{v} _{\mathrm{tr}}^{\mathrm{next}}=\mathbf{v} _{\mathrm{tr}}^{I+2 \left( \lambda +1\right) }=\mathbf{v} _{\mathrm{tr}}^{I} \end{array}\right. } \end{array}\right. } \end{aligned}$$
    (2)

where div represents the integer division operator, T is the asteroid period and \(\lambda \) is the number of periods elapsed since the first transition.

At this point it is convenient to introduce an observation area where the best trajectories linking spacecraft and asteroid’s transit positions are evaluated. A spacecraft-centered semi-circular area in direction of the spacecraft velocity vector has been chosen. The radius is assumed according to

$$\begin{aligned} \delta =c_1\min \left\{ |\mathbf{r} _{\mathrm{tr}}^{\mathrm{next}}-\mathbf{r} |\right\} , \end{aligned}$$
(3)

where \(c_1\) is an arbitrary scale factor. With the right choice of \(c_1\) it is possible to obtain a value of \(\delta \) that ensures to consider a good number of asteroids around the spacecraft (Fig. 4). In the current case a scale factor of one order of magnitude seems to be a reasonable assumption: \(c_1=10\).

Fig. 4
figure 4

Asteroids in the observation area during the initial step of the algorithm (spacecraft and Earth positions are the same). The mission area is defined as [1 AU, 1.5 AU], then the inner border corresponds to Earth’s orbit

From now on, there is the need of criteria forming a funnel structure (similar to local minimizers in [8]) to select the best targets. Firstly, only the asteroids that will perform the next transit inside the mission and the observation areas at the same time are considered:

$$\begin{aligned} {\left\{ \begin{array}{ll} |\mathbf{r} ^{\mathrm{next}}_{\mathrm{tr}}-\mathbf{r} |<\delta \\ d_{\mathrm{min}}<|\mathbf{r} ^{\mathrm{next}}_{\mathrm{tr}}|<d_{\mathrm{max}} \end{array}\right. }; \end{aligned}$$

Then, with the purpose to have orbits that stay as close as possible to the HDTZ, it is appropriate to choose only elliptical transfer orbits:

$$\begin{aligned} \varDelta t=\left( t^{\mathrm{next}}_{\mathrm{tr}}-t\right) >t_p, \end{aligned}$$

where \(\varDelta t\) is the transfer time and \(t_p\) is the transfer time for the parabolic orbit. Simultaneously, it is required to minimize transfer time between two consecutive flybys by choosing the arc trajectory as short as possible. From Lambert’s theory, there are four different elliptical trajectories that link two positions with a given transfer time. The selected trajectory arcs are those with

$$\begin{aligned} 0<\varDelta \nu<\pi \quad \text {and}\quad \varDelta t =\left( t^{\mathrm{next}}_{\mathrm{tr}}-t\right) <t_m, \end{aligned}$$

where \(\varDelta \nu \) is the swept true anomaly and \(t_m\) is the transfer time for the minimum energy elliptical orbit. In this way only the shortest arcs are considered. Figure 5 shows the differences between the chosen and the rejected orbits: as it can be seen, the trajectories depicted in magenta would imply abrupt changes of direction at the next maneuver in order to maintain the spacecraft in the mission area.

At this point, for all the remaining asteroids a boundary value problem, the Lambert’s Problem (LP), must be solved to get the transfer orbit parameters. Since the problem is ill-conditioned, it is better to make use of the universal variable formulation to achieve robustness. Hence, if two positions in space, \(\mathbf{r} \) and \(\mathbf{r} _{\mathrm{tr}}^{\mathrm{next}}\), linked by a trajectory with swept true anomaly \(\varDelta \nu \) and time \(\varDelta t\) are considered, the solution z of LP is obtained by the equation:

$$\begin{aligned} \sqrt{\mu _\odot }\varDelta t=\sqrt{\left( \frac{B}{C(z)}\right) ^3}S(z)+A\sqrt{B}; \end{aligned}$$

with

$$\begin{aligned}&A=\frac{\sqrt{r\ r_{\mathrm{tr}}^{\mathrm{next}}}\sin \varDelta \nu }{\sqrt{1-\cos \varDelta \nu }}; \quad B=r+r_{\mathrm{tr}}^{\mathrm{next}}+A\frac{\left( zS(z)-1\right) }{\sqrt{C(z)}};\\&C(z)=\sum _{j=0}^{\infty }\frac{\left( -z\right) ^j}{\left( 2j+2\right) !}; \quad S(z)=\sum _{j=0}^{\infty }\frac{\left( -z\right) ^j}{\left( 2j+3\right) !}. \end{aligned}$$

Then, the eccentricity and the semi-major axis of transfer orbit are obtained through

$$\begin{aligned} a_{\mathrm{tr}}=\frac{y}{zC(z)};\quad e_{\mathrm{tr}} =\sqrt{1-\frac{\left( 1-\cos \varDelta \nu \right) r\ r_{\mathrm{tr}}^{\mathrm{next}}}{y\ a_{\mathrm{tr}}}}. \end{aligned}$$

To compute the initial and final velocity vectors \(\left\{ \mathbf{v} _{\mathrm{tr}}^{\mathrm{in}},\mathbf{v} _{\mathrm{tr}}^{\mathrm{fin}}\right\} \) along the arc, the expressions of the Lagrangian coefficients (LC) are used:

$$\begin{aligned}&{\mathcal {F}}=1-\frac{r_{\mathrm{tr}}^{\mathrm{next}}\left( 1-\cos \varDelta \nu \right) }{a_{\mathrm{tr}}\left( 1-e_{\mathrm{tr}}^2\right) }; \quad {\mathcal {G}}=\frac{r\ r_{\mathrm{tr}}^{\mathrm{next}} \sin \varDelta \nu }{\sqrt{\mu _\odot a_{\mathrm{tr}}\left( 1-e_{\mathrm{tr}}^2\right) }};\\&\dot{{\mathcal {G}}}=1-\frac{r\left( 1-\cos \varDelta \nu \right) }{a_{\mathrm{tr}} \left( 1-e_{\mathrm{tr}}^2\right) }; \quad \dot{{\mathcal {F}}}=\frac{{\mathcal {F}}\dot{{\mathcal {G}}}-1}{{\mathcal {G}}}; \end{aligned}$$

obtaining:

$$\begin{aligned} \mathbf{v} _{\mathrm{tr}}^{\mathrm{in}}=\frac{1}{{\mathcal {G}}} \left( \mathbf{r} _{\mathrm{tr}}^{\mathrm{next}}-{\mathcal {F}} \mathbf{r} \right) \quad \text {and}\quad \mathbf{v} _{\mathrm{tr}}^{\mathrm{fin}} =\dot{{\mathcal {F}}}{} \mathbf{r} +\dot{{\mathcal {G}}}{} \mathbf{v} _{\mathrm{tr}}^{\mathrm{in}}. \end{aligned}$$

Finally, only the arc trajectories that are compatible with the spacecraft propellant consumption requirements are considered:

$$\begin{aligned} \varDelta \text {v}=|\mathbf{v} _{\mathrm{tr}}^{\mathrm{in}} -\mathbf{v} |<\varDelta \text {v}_{\mathrm{max}}. \end{aligned}$$
Fig. 5
figure 5

Short elliptical arcs are depicted in green, while not favourable orbits are in magenta. The rejected trajectory arcs have greater specific orbital energy that requires a larger \(\varDelta \text {v}\) for orbit insertion. Furthermore, the presence of a pronounced curvature would lead to an expensive maneuver to prevent the spacecraft from exiting the mission area

In many cases, depending on the choice of user inputs, it may happen that no suitable target is found inside the observation area. In such cases, the algorithm will restart the selection using an increased observation area of radius:

$$\begin{aligned} \delta _{\mathrm{new}}=c_2\delta \quad \text {up to}\quad \delta _{\mathrm{max}}=2d_{\mathrm{max}}; \end{aligned}$$
(4)

where \(c_2\) is an arbitrary magnification factor (in the current case \(c_2=2\)), while the imposed \(\delta \) maximum value corresponds to the limit case in which the observation radius is as wide as the maximum mission distance from the Sun.

Summing up, the funnel structure of the preliminary phase is:

figure b

At the end of the research phase, one of the final \(N_{\mathrm{fin}}\) asteroids must be selected as target, following criteria discussed in the next section. Let \(k=l\) be the index of the selected target, the next research phase iteration will have as input variables:

$$\begin{aligned} \left( t,\mathbf{r} ,\mathbf{v} \right) =\left( t_{\mathrm{tr},l}^{\mathrm{next}}, \mathbf{r} _{\mathrm{tr},l}^{\mathrm{next}},\mathbf{v} _{\mathrm{tr},l}^{\mathrm{next}}\right) . \end{aligned}$$

5 Implementation Strategy

Two possible paths are considered for the final selection of target. First, at every iteration the orbit with minimum \(\varDelta \text {v}\) can be chosen. This strategy provides a low computational cost and a local optimization but not a global one for the mission, so it can be used when quick results are wanted. In the latter strategy the research iteration is used with the purpose to determine all the possible trajectories combinations (breadth first search [3]), and then to find the best spacecraft orbit at the expense of a higher computational cost. In this way, a tree-structure result (Fig. 6) will be obtained; then, the combination of orbits that predicts the largest number of flybys and total minimum consumption, within the time limits of mission (brunch and prune approach), is selected [2]. In both cases, the procedure will stop working when it arrives at a time \(t>t_{\mathrm{end}}\) (time over) or when the total propellant consumption exceeds the expected one \(\varDelta \text {v}_{\mathrm{tot}}\) (propellant over).

Fig. 6
figure 6

Tree-structure diagram with \(\mathbf{N} _{\mathrm{bank}}=\left[ 2,1,2,2,0,11,1,14\right] \). The order of exploration of nodes is indicated by the bold numbers in circles

In the present version of the algorithm, the tree search strategy is used. Because of its high computational cost, it is necessary to reduce the number of instructions when it is possible. For this reason, during the research phase it is preferable to work on temporary sets of data and, at the end, collect only the useful results in bank carriers arrays. Hence, the funnel selection is done by eliminating the components of a temporary vector \(\mathbf{I} _{\mathrm{temp}}\), whose generic component is the asteroid list index in [6]. The remaining components are collected in a related bank carrier and will act as identifiers of the target. In particular, the main bank carriers are:

  • \(\mathbf{N} _{\mathrm{bank}}\): array whose i-th component is the number of possible targets found at the i-th iteration.

  • \(\mathbf{I} _{\mathrm{bank}}\): array whose i-th component is the list index of the i-th asteroid found since the beginning of the procedure. As already mentioned, its components play the role of identifiers of target.

  • \(\mathbf{t} _{\mathrm{bank}}\): array whose i-th component is the time of transit of the i-th target found since the beginning of the procedure.

  • \(\mathbf{r} _{\mathrm{bank}}\): array whose i-th component is the position vector of the i-th target found since the beginning of the procedure.

  • \(\left\{ \mathbf{v} _{\mathrm{bank}}^{\mathrm{in}}, \mathbf{v} _{\mathrm{bank}}^{\mathrm{fin}}\right\} \): arrays whose i-th component is respectively the initial and final velocity vector of the i-th maneuver found since the beginning of the procedure. These data are essential for the evaluation of consumption and the final selection of path.

  • \(\left\{ \mathbf{e} _{\mathrm{bank}},\ \mathbf{a} _{\mathrm{bank}} \right\} \): arrays whose i-th component is respectively the eccentricity and the semi-major axis of the i-th transfer orbit found since the beginning of the procedure.

  • \(\varDelta \varvec{\nu }_{\mathrm{bank}}\): array whose i-th component is the swept true anomaly during the i-th transfer orbit found since the beginning of the procedure.

All the aforementioned bank carriers are essential for the reconstruction of trajectory. In particular, at the end of the procedure, the array \(\mathbf{N} _{\mathrm{bank}}\) is fundamental for the codification of the tree-structured results into a matrix J. Let’s assume \(\mathbf{N} _{\mathrm{bank}}=\left[ N_1,N_2, \dots ,N_H\right] \), it can be noted that

$$\begin{aligned} L=\sum _{k}^{H} N_k, \end{aligned}$$

corresponds to the overall nodes number of the tree-structure, and, therefore, to the main size of the other bank carriers.

To explain the coding process, let’s introduce a parameter M, that represents the number of already converted nodes. The procedure starts with a matrix

$$\begin{aligned} J_0=\begin{pmatrix} 1&2&\dots&N_1 \end{pmatrix}, \end{aligned}$$

and a value of \(M_0=N_1\). From now on, the process continues iteratively. Let’s assume a generic form of the matrix at the ith iteration:

$$\begin{aligned} J_i=\begin{pmatrix} J_{11}&{}J_{12}&{}\dots &{}J_{1,\text {end}}\\ J_{21}&{}J_{22}&{}\dots &{}J_{2,\text {end}}\\ \vdots &{}\vdots &{}\ddots &{}\vdots \\ J_{\mathrm{end},1}&{}J_{\mathrm{end},2}&{}\dots &{}J_{\mathrm{end},\text {end}} \end{pmatrix}, \end{aligned}$$

with a given value of \(M_i<L\).

Every column (i.e. from index 1 to end) is replaced, by the following submatrix:

  1. a.

    if \(N_{\left( J_{\mathrm{end},j}+1\right) }\ne 0\) and \(J_{\mathrm{end},j}\ne 0\)

    $$\begin{aligned} \begin{pmatrix} J_{1j}&{}J_{1j}&{}\dots &{}J_{1j}\\ \vdots &{}\vdots &{}\ddots &{}\vdots \\ J_{\mathrm{end},j}&{}J_{\mathrm{end},j}&{}\dots &{}J_{\mathrm{end},j}\\ M+S+1&{}M+S+2&{}\dots &{}M+S+N_{\left( J_{\mathrm{end},j}+1\right) } \end{pmatrix}, \end{aligned}$$

    with

    $$\begin{aligned} S=\sum _{k=0}^{j-1}N_{\left( J_{\mathrm{end},k}+1\right) }, \end{aligned}$$
  2. b.

    if \(N_{\left( J_{\mathrm{end},j}+1\right) }=0\) or \(J_{\mathrm{end},j}=0\)

    $$\begin{aligned} \begin{pmatrix} J_{1j}\\ \vdots \\ J_{\mathrm{end},j}\\ 0 \end{pmatrix}, \end{aligned}$$

After a complete iteration there is a new row into the matrix and M is updated to a new value given by:

$$\begin{aligned} M_{i+1}=\max _{\left( i,j\right) } \left\{ J_{i,j}\right\} . \end{aligned}$$

For example, in relation to Fig. 6 the matrix appears as 4-by-27 in the following form:

$$\begin{aligned} J=\begin{pmatrix} 1&{}1&{}\dots &{}1&{}2&{}2&{}\dots &{}2\\ 3&{}3&{}\dots &{}3&{}4&{}5&{}\dots &{}5\\ 6&{}7&{}\dots &{}7&{}0&{}8&{}\dots &{}18\\ 19&{}20&{}\dots &{}33&{}0&{}0&{}\dots &{}0 \end{pmatrix}. \end{aligned}$$

The null terms in the matrix mean that the research phase did not produce any possible trajectory. Therefore, the columns with zero terms are deleted in order to obtain the best trajectories in terms of number of asteroids. Finally, the column with the corresponding minimum \(\varDelta \text {v}\), representing the best overall trajectory, is selected.

6 Main Results

The algorithm was tested with the following input values:

  • mission lifetime: \([t_0,t_{\mathrm{end}}]=[t_0,t_0+5\ \text {years}]\);

  • mission area: \([d_{\mathrm{min}},d_{\mathrm{max}}]=[1,1.5]\ \text {AU}\);

  • maximum consumption per maneuver: \(\varDelta \text {v}_{\mathrm{max}}=0.5\ \text {km/s}\);

  • maximum mission consumption: \(\varDelta \text {v}_{\mathrm{tot}}=5.5\ \text {km/s}\).

Several test cases have been tried with \(t_0\) ranging from \(1{\mathrm{st}}\) of January 2020 to \(1{\mathrm{st}}\) of January 2030 with a six months step. The best results have been obtained with a launch window in January 2024 (see Table 1), showing that is possible to consecutively reach 21 asteroids with a consumption of \(5.3\ \text {km/s}\). The final spacecraft trajectory is plotted in Fig. 7 (green). As expected, the trajectory lies in the HDTZ and has a smooth shape. Furthermore, for the same launch date, four other sequences consisting of 21 asteroids are obtained. One of these includes visits to asteroids with a completely different sequence (see Fig. 7; Table 1), with approximately the same \(\varDelta \text {v}\). As a result, it is possible to double the visits number by means of two prospector spacecrafts and with the same launch.

Fig. 7
figure 7

Spacecraft trajectories. The first plot represents the best trajectory for a launch on \(1{\mathrm{th}}\) January 2024, the latter one is the other possible trajectory with different target asteroids. The blue cross represents the starting position (Earth) and the red circles the target asteroids

Table 1 Two possible set of targets. Both cases present 21 asteroids, with a total consumption \(\varDelta \text {v}_{\mathrm{tot}} \approx 5.3\ \text {km/s}\)

7 Conclusions

The algorithm has shown very good performance and a moderate computational cost, allowing for its use in the context of an asteroid mining pre-Phase A study carried out internally at the University of Pisa. In addition to identifying the mission profile, the provided results have been quite helpful for the preliminary design of various spacecraft subsystems. For example, the evaluation of the relative velocity between spacecraft and asteroid was used to establish the requirements for the ADCS (Attitude Determination and Control System) during the prospecting phase.

The algorithm is based on several assumptions and its results are at a medium level of accuracy. Further and more advanced versions of the code, e.g., including perturbation models, can be developed to increase the accuracy. Also, the procedure can be applied to similar problems after some adaptations, e.g., to the analysis of a different pool of celestial bodies or, in general, to space missions in Earth orbit involving multiple targets (such as mission dedicated to the removal of space debris [9]. Two noteworthy databases can be mentioned as examples of other target groups:

  1. 1.

    the Near-Earth Object Human Space Flight Accessible Target Study (NHATS), introduced by [10], containing the possible NEA targets for a future manned mission; and

  2. 2.

    the Asteroid Lightcurve Database (LCDB) presented by [11], containing sets of data generated from observational informations with the purpose to determine less known quantities to characterize the asteroids.

These two databases could be integrated [4] to obtain a set of suitable targets for future manned missions, and then used in the algorithm to design a precursor unmanned prospecting mission.