UNPKG

ootk

Version:

Orbital Object Toolkit including Multiple Propagators, Initial Orbit Determination, and Maneuver Calculations.

92 lines (91 loc) 5 kB
/** * @author @thkruz Theodore Kruczek * @license AGPL-3.0-or-later * @copyright (c) 2025 Kruczek Labs LLC * * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the * terms of the GNU Affero General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later version. * * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>. */ import { EpochUTC, J2000, Kilometers, Vector3D } from '../main.js'; import { Thrust } from '../force/Thrust.js'; import { StateInterpolator } from '../interpolator/StateInterpolator.js'; import { ForceModel } from './../force/ForceModel.js'; export declare class Waypoint { epoch: EpochUTC; relativePosition: Vector3D<Kilometers>; constructor(epoch: EpochUTC, relativePosition: Vector3D<Kilometers>); /** * Return the perturbed error in a [maneuver] when compared against the * target [waypoint] given an initial [state], [forceModel], * [target] interpolator, and speculative relative maneuver * [components] _(m/s)_. * @param waypoint The waypoint to target. * @param maneuver The maneuver to perturb. * @param state The initial state of the interceptor. * @param forceModel The force model to use for propagation. * @param target The target interpolator. * @param components The speculative maneuver components. * @returns The perturbed error in the maneuver. */ static _error(waypoint: Waypoint, maneuver: Thrust, state: J2000, forceModel: ForceModel, target: StateInterpolator, components: Float64Array): number; /** * Generate a score function for refining perturbed [waypoint] maneuvers. * * The score function takes an array of speculative radial, intrack, and * crosstrack components _(m/s)_ and returns the propagated error from the * desired waypoint target. * @param waypoint The waypoint to target. * @param maneuver The maneuver to perturb. * @param state The initial state of the interceptor. * @param forceModel The force model to use for propagation. * @param target The target interpolator. * @returns A score function for refining maneuvers. */ static _refineManeuverScore(waypoint: Waypoint, maneuver: Thrust, state: J2000, forceModel: ForceModel, target: StateInterpolator): (components: Float64Array) => number; /** * Convert an array of [waypoints] into a maneuver sequence given an * [interceptor] state, [pivot] epoch for the first burn to arrive at the * first waypoint, and [target] ephemeris interpolator. * * Optional arguments are as follows: * - `preManeuvers`: maneuvers to execute before the pivot burn * - `postManeuvers`: maneuvers to execute after the last pivot burn * - `durationRate`: thruster duration rate _(s/m/s)_ * - `forceModel`: interceptor force model, defaults to two-body * - `refine`: refine maneuvers to account for perturbations if `true` * - `maxIter`: maximum refinement iterations per maneuver * - `printIter`: print debug information on each refinement iteration * @param interceptor The interceptor state. * @param pivot The epoch of the first burn. * @param waypoints The waypoints to target. * @param target The target interpolator. * @param preManeuvers The maneuvers to execute before the pivot burn. * @param postManeuvers The maneuvers to execute after the last pivot burn. * @param root0 The optional arguments. * @param root0.durationRate The thruster duration rate. * @param root0.forceModel The interceptor force model. * @param root0.refine Whether to refine maneuvers to account for perturbations. * @param root0.maxIter The maximum refinement iterations per maneuver. * @param root0.printIter Whether to print debug information on each refinement iteration. * @returns An array of maneuvers. */ static toManeuvers(interceptor: J2000, pivot: EpochUTC, waypoints: Waypoint[], target: StateInterpolator, preManeuvers: Thrust[] | null, postManeuvers: Thrust[] | null, { durationRate, forceModel, refine, maxIter, printIter, }?: { durationRate?: number; forceModel?: ForceModel; refine?: boolean; maxIter?: number; printIter?: boolean; }): Thrust[]; static _refineManeuvers(waypoints: Waypoint[], maneuvers: Thrust[], interceptor: J2000, forceModel: ForceModel, target: StateInterpolator, { maxIter, printIter, }?: { maxIter?: number; printIter?: boolean; }): Thrust[]; }