open-space-toolkit-astrodynamics 13.1.0__py313-none-manylinux2014_x86_64.whl → 15.0.0__py313-none-manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/METADATA +4 -4
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/RECORD +59 -28
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/WHEEL +1 -1
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-313-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/__init__.pyi +785 -0
- ostk/astrodynamics/access.pyi +588 -0
- ostk/astrodynamics/conjunction/__init__.pyi +3 -0
- ostk/astrodynamics/conjunction/message/__init__.pyi +3 -0
- ostk/astrodynamics/conjunction/message/ccsds.pyi +723 -0
- ostk/astrodynamics/converters.pyi +54 -0
- ostk/astrodynamics/data/__init__.pyi +3 -0
- ostk/astrodynamics/data/provider.pyi +22 -0
- ostk/astrodynamics/dynamics.pyi +329 -0
- ostk/astrodynamics/event_condition.pyi +580 -0
- ostk/astrodynamics/flight/__init__.pyi +547 -0
- ostk/astrodynamics/flight/profile/__init__.pyi +102 -0
- ostk/astrodynamics/flight/profile/model.pyi +176 -0
- ostk/astrodynamics/flight/system.pyi +277 -0
- ostk/astrodynamics/guidance_law.pyi +282 -0
- ostk/astrodynamics/{libopen-space-toolkit-astrodynamics.so.13 → libopen-space-toolkit-astrodynamics.so.15} +0 -0
- ostk/astrodynamics/pytrajectory/__init__.pyi +3 -0
- ostk/astrodynamics/pytrajectory/pystate.py +2 -4
- ostk/astrodynamics/pytrajectory/pystate.pyi +63 -0
- ostk/astrodynamics/solver.pyi +232 -0
- ostk/astrodynamics/test/access/test_generator.py +130 -59
- ostk/astrodynamics/test/access/test_visibility_criterion.py +198 -0
- ostk/astrodynamics/test/data/provider/test_off_nadir.py +58 -0
- ostk/astrodynamics/test/dynamics/test_dynamics.py +1 -1
- ostk/astrodynamics/test/flight/system/test_propulsion_system.py +2 -11
- ostk/astrodynamics/test/flight/system/test_satellite_system.py +6 -14
- ostk/astrodynamics/test/flight/test_maneuver.py +49 -64
- ostk/astrodynamics/test/flight/test_profile.py +4 -2
- ostk/astrodynamics/test/flight/test_system.py +5 -15
- ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +31 -16
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +9 -1
- ostk/astrodynamics/test/test_display.py +11 -5
- ostk/astrodynamics/test/test_event_condition.py +4 -2
- ostk/astrodynamics/test/test_utilities.py +1 -1
- ostk/astrodynamics/test/test_viewer.py +70 -1
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py +136 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +9 -0
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +4 -2
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +25 -15
- ostk/astrodynamics/test/trajectory/test_propagator.py +21 -27
- ostk/astrodynamics/test/trajectory/test_segment.py +0 -1
- ostk/astrodynamics/test/trajectory/test_state_builder.py +1 -0
- ostk/astrodynamics/trajectory/__init__.pyi +1800 -0
- ostk/astrodynamics/trajectory/orbit/__init__.pyi +361 -0
- ostk/astrodynamics/trajectory/orbit/message/__init__.pyi +3 -0
- ostk/astrodynamics/trajectory/orbit/message/spacex.pyi +273 -0
- ostk/astrodynamics/trajectory/orbit/model/__init__.pyi +517 -0
- ostk/astrodynamics/trajectory/orbit/model/brouwerLyddaneMean.pyi +127 -0
- ostk/astrodynamics/trajectory/orbit/model/kepler.pyi +581 -0
- ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi +333 -0
- ostk/astrodynamics/trajectory/state/__init__.pyi +406 -0
- ostk/astrodynamics/trajectory/state/coordinate_subset.pyi +223 -0
- ostk/astrodynamics/viewer.py +32 -0
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/zip-safe +0 -0
@@ -0,0 +1,547 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
import numpy
|
3
|
+
import ostk.astrodynamics
|
4
|
+
import ostk.astrodynamics.trajectory
|
5
|
+
import ostk.core.type
|
6
|
+
import ostk.mathematics.curve_fitting
|
7
|
+
import ostk.mathematics.geometry.d3.object
|
8
|
+
import ostk.mathematics.geometry.d3.transformation.rotation
|
9
|
+
import ostk.physics.coordinate
|
10
|
+
import ostk.physics.time
|
11
|
+
import ostk.physics.unit
|
12
|
+
import typing
|
13
|
+
from . import profile
|
14
|
+
from . import system
|
15
|
+
__all__ = ['Maneuver', 'Profile', 'System', 'profile', 'system']
|
16
|
+
class Maneuver:
|
17
|
+
"""
|
18
|
+
|
19
|
+
Spacecraft Maneuver class.
|
20
|
+
Store an acceleration and mass flow rate profile of a spacecraft maneuver.
|
21
|
+
|
22
|
+
"""
|
23
|
+
__hash__: typing.ClassVar[None] = None
|
24
|
+
@staticmethod
|
25
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
26
|
+
...
|
27
|
+
@staticmethod
|
28
|
+
def constant_mass_flow_rate_profile(states: list[ostk.astrodynamics.trajectory.State], mass_flow_rate: ostk.core.type.Real) -> Maneuver:
|
29
|
+
"""
|
30
|
+
Create a maneuver from a constant mass flow rate profile.
|
31
|
+
|
32
|
+
Args:
|
33
|
+
instants (list[Instant]): An array of instants, must be sorted.
|
34
|
+
acceleration_profile (list[numpy.ndarray]): An acceleration profile of the maneuver, one numpy.ndarray per instant.
|
35
|
+
frame (Frame): A frame in which the acceleration profile is defined.
|
36
|
+
mass_flow_rate (float): The constant mass flow rate (negative number expected).
|
37
|
+
|
38
|
+
Returns:
|
39
|
+
Maneuver: The created maneuver.
|
40
|
+
"""
|
41
|
+
def __eq__(self, arg0: Maneuver) -> bool:
|
42
|
+
...
|
43
|
+
def __init__(self, states: list[ostk.astrodynamics.trajectory.State]) -> None:
|
44
|
+
"""
|
45
|
+
Constructor.
|
46
|
+
|
47
|
+
Args:
|
48
|
+
states (list[State]): An list of states, must be sorted, must include the CartesianPosition, CartesianVelocity, CartesianAcceleration and MassFlowRate subsets.
|
49
|
+
"""
|
50
|
+
def __ne__(self, arg0: Maneuver) -> bool:
|
51
|
+
...
|
52
|
+
def __repr__(self) -> str:
|
53
|
+
...
|
54
|
+
def __str__(self) -> str:
|
55
|
+
...
|
56
|
+
def calculate_average_specific_impulse(self, initial_spacecraft_mass: ostk.physics.unit.Mass) -> ostk.core.type.Real:
|
57
|
+
"""
|
58
|
+
Calculate the average specific impulse of the maneuver.
|
59
|
+
|
60
|
+
Args:
|
61
|
+
initial_spacecraft_mass (Mass): The initial mass of the spacecraft.
|
62
|
+
|
63
|
+
Returns:
|
64
|
+
float: The average specific impulse (s).
|
65
|
+
"""
|
66
|
+
def calculate_average_thrust(self, initial_spacecraft_mass: ostk.physics.unit.Mass) -> ostk.core.type.Real:
|
67
|
+
"""
|
68
|
+
Calculate the average thrust of the maneuver.
|
69
|
+
|
70
|
+
Args:
|
71
|
+
initial_spacecraft_mass (Mass): The initial mass of the spacecraft.
|
72
|
+
|
73
|
+
Returns:
|
74
|
+
float: The average thrust (N).
|
75
|
+
"""
|
76
|
+
def calculate_delta_mass(self) -> ostk.physics.unit.Mass:
|
77
|
+
"""
|
78
|
+
Calculate the delta mass of the maneuver.
|
79
|
+
|
80
|
+
Returns:
|
81
|
+
Mass: The delta mass (always positive) (kg).
|
82
|
+
"""
|
83
|
+
def calculate_delta_v(self) -> ostk.core.type.Real:
|
84
|
+
"""
|
85
|
+
Calculate the delta-v of the maneuver.
|
86
|
+
|
87
|
+
Returns:
|
88
|
+
float: The delta-v value (m/s).
|
89
|
+
"""
|
90
|
+
def get_interval(self) -> ostk.physics.time.Interval:
|
91
|
+
"""
|
92
|
+
Get the interval of the maneuver.
|
93
|
+
|
94
|
+
Returns:
|
95
|
+
Interval: The interval.
|
96
|
+
"""
|
97
|
+
def get_states(self) -> list[ostk.astrodynamics.trajectory.State]:
|
98
|
+
"""
|
99
|
+
Get the states.
|
100
|
+
|
101
|
+
Returns:
|
102
|
+
list[State]: The states.
|
103
|
+
"""
|
104
|
+
def is_defined(self) -> bool:
|
105
|
+
"""
|
106
|
+
Check if the maneuver is defined.
|
107
|
+
|
108
|
+
Returns:
|
109
|
+
bool: True if the maneuver is defined, False otherwise. (Always returns true).
|
110
|
+
"""
|
111
|
+
def to_tabulated_dynamics(self, frame: ostk.physics.coordinate.Frame = ..., interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> ...:
|
112
|
+
"""
|
113
|
+
Convert the maneuver to tabulated dynamics.
|
114
|
+
|
115
|
+
Args:
|
116
|
+
frame (Frame, optional): The frame in which the acceleration profile is defined. Defaults to the default acceleration frame.
|
117
|
+
interpolation_type (Interpolator.Type, optional): The interpolation type to use. Defaults to the default interpolation type.
|
118
|
+
|
119
|
+
Returns:
|
120
|
+
Tabulated: The tabulated dynamics.
|
121
|
+
"""
|
122
|
+
class Profile:
|
123
|
+
"""
|
124
|
+
|
125
|
+
Spacecraft Flight Profile.
|
126
|
+
|
127
|
+
|
128
|
+
"""
|
129
|
+
class Axis:
|
130
|
+
"""
|
131
|
+
|
132
|
+
The axis of the profile.
|
133
|
+
|
134
|
+
|
135
|
+
Members:
|
136
|
+
|
137
|
+
X : X axis
|
138
|
+
|
139
|
+
Y : Y axis
|
140
|
+
|
141
|
+
Z : Z axis
|
142
|
+
"""
|
143
|
+
X: typing.ClassVar[Profile.Axis] # value = <Axis.X: 0>
|
144
|
+
Y: typing.ClassVar[Profile.Axis] # value = <Axis.Y: 1>
|
145
|
+
Z: typing.ClassVar[Profile.Axis] # value = <Axis.Z: 2>
|
146
|
+
__members__: typing.ClassVar[dict[str, Profile.Axis]] # value = {'X': <Axis.X: 0>, 'Y': <Axis.Y: 1>, 'Z': <Axis.Z: 2>}
|
147
|
+
@staticmethod
|
148
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
149
|
+
...
|
150
|
+
def __eq__(self, other: typing.Any) -> bool:
|
151
|
+
...
|
152
|
+
def __getstate__(self) -> int:
|
153
|
+
...
|
154
|
+
def __hash__(self) -> int:
|
155
|
+
...
|
156
|
+
def __index__(self) -> int:
|
157
|
+
...
|
158
|
+
def __init__(self, value: int) -> None:
|
159
|
+
...
|
160
|
+
def __int__(self) -> int:
|
161
|
+
...
|
162
|
+
def __ne__(self, other: typing.Any) -> bool:
|
163
|
+
...
|
164
|
+
def __repr__(self) -> str:
|
165
|
+
...
|
166
|
+
def __setstate__(self, state: int) -> None:
|
167
|
+
...
|
168
|
+
def __str__(self) -> str:
|
169
|
+
...
|
170
|
+
@property
|
171
|
+
def name(self) -> str:
|
172
|
+
...
|
173
|
+
@property
|
174
|
+
def value(self) -> int:
|
175
|
+
...
|
176
|
+
class CustomTarget(Profile.Target):
|
177
|
+
"""
|
178
|
+
|
179
|
+
The custom target.
|
180
|
+
|
181
|
+
|
182
|
+
"""
|
183
|
+
@staticmethod
|
184
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
185
|
+
...
|
186
|
+
def __init__(self, orientation_generator: typing.Callable[[ostk.astrodynamics.trajectory.State], numpy.ndarray[numpy.float64[3, 1]]], axis: Profile.Axis, anti_direction: bool = False) -> None:
|
187
|
+
"""
|
188
|
+
Constructor.
|
189
|
+
|
190
|
+
Args:
|
191
|
+
orientation_generator (Callable[np.ndarray, State]]): The orientation generator, accepts a state and returns a size 3 array of directions.
|
192
|
+
axis (Profile.Axis): The axis.
|
193
|
+
anti_direction (bool): True if the direction is flipped, False otherwise. Defaults to False.
|
194
|
+
"""
|
195
|
+
@property
|
196
|
+
def orientation_generator(self) -> typing.Callable[[ostk.astrodynamics.trajectory.State], numpy.ndarray[numpy.float64[3, 1]]]:
|
197
|
+
"""
|
198
|
+
The orientation generator of the target
|
199
|
+
"""
|
200
|
+
class OrientationProfileTarget(Profile.Target):
|
201
|
+
"""
|
202
|
+
|
203
|
+
The alignment profile target.
|
204
|
+
|
205
|
+
|
206
|
+
"""
|
207
|
+
@staticmethod
|
208
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
209
|
+
...
|
210
|
+
def __init__(self, orientation_profile: list[tuple[ostk.physics.time.Instant, numpy.ndarray[numpy.float64[3, 1]]]], axis: Profile.Axis, anti_direction: bool = False) -> None:
|
211
|
+
"""
|
212
|
+
Constructor.
|
213
|
+
|
214
|
+
Args:
|
215
|
+
orientation_profile (list[Tuple[Instant, Vector3d]]): The orientation profile.
|
216
|
+
axis (Profile.Axis): The axis.
|
217
|
+
anti_direction (bool): True if the direction is flipped, False otherwise. Defaults to False.
|
218
|
+
"""
|
219
|
+
@property
|
220
|
+
def orientation_profile(self) -> list[tuple[ostk.physics.time.Instant, numpy.ndarray[numpy.float64[3, 1]]]]:
|
221
|
+
"""
|
222
|
+
The orientation profile of the target
|
223
|
+
"""
|
224
|
+
class Target:
|
225
|
+
"""
|
226
|
+
|
227
|
+
The target of the profile.
|
228
|
+
|
229
|
+
|
230
|
+
"""
|
231
|
+
@staticmethod
|
232
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
233
|
+
...
|
234
|
+
def __init__(self, type: Profile.TargetType, axis: Profile.Axis, anti_direction: bool = False) -> None:
|
235
|
+
"""
|
236
|
+
Constructor.
|
237
|
+
|
238
|
+
Args:
|
239
|
+
type (Profile.TargetType): The target type.
|
240
|
+
axis (Profile.Axis): The axis.
|
241
|
+
anti_direction (bool): True if the direction is flipped, False otherwise. Defaults to False.
|
242
|
+
"""
|
243
|
+
@property
|
244
|
+
def anti_direction(self) -> bool:
|
245
|
+
"""
|
246
|
+
True if the direction is flipped, False otherwise.
|
247
|
+
"""
|
248
|
+
@property
|
249
|
+
def axis(self) -> Profile.Axis:
|
250
|
+
"""
|
251
|
+
The axis of the target.
|
252
|
+
"""
|
253
|
+
@property
|
254
|
+
def type(self) -> Profile.TargetType:
|
255
|
+
"""
|
256
|
+
The type of the target.
|
257
|
+
"""
|
258
|
+
class TargetType:
|
259
|
+
"""
|
260
|
+
|
261
|
+
The target type of the profile.
|
262
|
+
|
263
|
+
|
264
|
+
Members:
|
265
|
+
|
266
|
+
GeocentricNadir : Geocentric nadir
|
267
|
+
|
268
|
+
GeodeticNadir : Geodetic nadir
|
269
|
+
|
270
|
+
Trajectory : Trajectory
|
271
|
+
|
272
|
+
Sun : Sun
|
273
|
+
|
274
|
+
Moon : Moon
|
275
|
+
|
276
|
+
VelocityECI : Velocity in ECI
|
277
|
+
|
278
|
+
VelocityECEF : Velocity in ECEF
|
279
|
+
|
280
|
+
OrbitalMomentum : Orbital momentum
|
281
|
+
|
282
|
+
OrientationProfile : Orientation profile
|
283
|
+
"""
|
284
|
+
GeocentricNadir: typing.ClassVar[Profile.TargetType] # value = <TargetType.GeocentricNadir: 0>
|
285
|
+
GeodeticNadir: typing.ClassVar[Profile.TargetType] # value = <TargetType.GeodeticNadir: 1>
|
286
|
+
Moon: typing.ClassVar[Profile.TargetType] # value = <TargetType.Moon: 4>
|
287
|
+
OrbitalMomentum: typing.ClassVar[Profile.TargetType] # value = <TargetType.OrbitalMomentum: 7>
|
288
|
+
OrientationProfile: typing.ClassVar[Profile.TargetType] # value = <TargetType.OrientationProfile: 8>
|
289
|
+
Sun: typing.ClassVar[Profile.TargetType] # value = <TargetType.Sun: 3>
|
290
|
+
Trajectory: typing.ClassVar[Profile.TargetType] # value = <TargetType.Trajectory: 2>
|
291
|
+
VelocityECEF: typing.ClassVar[Profile.TargetType] # value = <TargetType.VelocityECEF: 6>
|
292
|
+
VelocityECI: typing.ClassVar[Profile.TargetType] # value = <TargetType.VelocityECI: 5>
|
293
|
+
__members__: typing.ClassVar[dict[str, Profile.TargetType]] # value = {'GeocentricNadir': <TargetType.GeocentricNadir: 0>, 'GeodeticNadir': <TargetType.GeodeticNadir: 1>, 'Trajectory': <TargetType.Trajectory: 2>, 'Sun': <TargetType.Sun: 3>, 'Moon': <TargetType.Moon: 4>, 'VelocityECI': <TargetType.VelocityECI: 5>, 'VelocityECEF': <TargetType.VelocityECEF: 6>, 'OrbitalMomentum': <TargetType.OrbitalMomentum: 7>, 'OrientationProfile': <TargetType.OrientationProfile: 8>}
|
294
|
+
@staticmethod
|
295
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
296
|
+
...
|
297
|
+
def __eq__(self, other: typing.Any) -> bool:
|
298
|
+
...
|
299
|
+
def __getstate__(self) -> int:
|
300
|
+
...
|
301
|
+
def __hash__(self) -> int:
|
302
|
+
...
|
303
|
+
def __index__(self) -> int:
|
304
|
+
...
|
305
|
+
def __init__(self, value: int) -> None:
|
306
|
+
...
|
307
|
+
def __int__(self) -> int:
|
308
|
+
...
|
309
|
+
def __ne__(self, other: typing.Any) -> bool:
|
310
|
+
...
|
311
|
+
def __repr__(self) -> str:
|
312
|
+
...
|
313
|
+
def __setstate__(self, state: int) -> None:
|
314
|
+
...
|
315
|
+
def __str__(self) -> str:
|
316
|
+
...
|
317
|
+
@property
|
318
|
+
def name(self) -> str:
|
319
|
+
...
|
320
|
+
@property
|
321
|
+
def value(self) -> int:
|
322
|
+
...
|
323
|
+
class TrajectoryTarget(Profile.Target):
|
324
|
+
"""
|
325
|
+
|
326
|
+
The trajectory target.
|
327
|
+
|
328
|
+
|
329
|
+
"""
|
330
|
+
@staticmethod
|
331
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
332
|
+
...
|
333
|
+
def __init__(self, trajectory: ostk.astrodynamics.Trajectory, axis: Profile.Axis, anti_direction: bool = False) -> None:
|
334
|
+
"""
|
335
|
+
Constructor.
|
336
|
+
|
337
|
+
Args:
|
338
|
+
trajectory (Trajectory): The trajectory, required only if the target type is `Trajectory`.
|
339
|
+
axis (Profile.Axis): The axis.
|
340
|
+
anti_direction (bool): True if the direction is flipped, False otherwise. Defaults to False.
|
341
|
+
"""
|
342
|
+
@property
|
343
|
+
def trajectory(self) -> ostk.astrodynamics.Trajectory:
|
344
|
+
"""
|
345
|
+
The trajectory of the target. Required only if the target type is `Trajectory`.
|
346
|
+
"""
|
347
|
+
@staticmethod
|
348
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
349
|
+
...
|
350
|
+
@staticmethod
|
351
|
+
def align_and_constrain(alignment_target: Profile.Target, clocking_target: Profile.Target, angular_offset: ostk.physics.unit.Angle = ...) -> typing.Callable[[ostk.astrodynamics.trajectory.State], ostk.mathematics.geometry.d3.transformation.rotation.Quaternion]:
|
352
|
+
"""
|
353
|
+
Generate a function that provides a quaternion that aligns to the `alignment_target` and constrains to the `clocking_target` for a given state.
|
354
|
+
|
355
|
+
Args:
|
356
|
+
alignment_target (Profile.Target | Profile.TrajectoryTarget | Profile.OrientationProfileTarget | Profile.CustomTarget): The alignment target.
|
357
|
+
clocking_target (Profile.Target | Profile.TrajectoryTarget | Profile.OrientationProfileTarget | Profile.CustomTarget): The clocking target.
|
358
|
+
angular_offset (Angle): The angular offset. Defaults to `Angle.Zero()`.
|
359
|
+
|
360
|
+
Returns:
|
361
|
+
callable[Quaternion, State]: The custom orientation.
|
362
|
+
"""
|
363
|
+
@staticmethod
|
364
|
+
@typing.overload
|
365
|
+
def custom_pointing(orbit: ostk.astrodynamics.trajectory.Orbit, orientation_generator: typing.Callable[[ostk.astrodynamics.trajectory.State], ostk.mathematics.geometry.d3.transformation.rotation.Quaternion]) -> Profile:
|
366
|
+
"""
|
367
|
+
Create a custom pointing profile.
|
368
|
+
|
369
|
+
Args:
|
370
|
+
orbit (Orbit): The orbit.
|
371
|
+
orientation_generator (callable[Quaternion, State]): The orientation generator. Typically used in conjunction with `align_and_constrain`.
|
372
|
+
|
373
|
+
Returns:
|
374
|
+
Profile: The custom pointing profile.
|
375
|
+
"""
|
376
|
+
@staticmethod
|
377
|
+
@typing.overload
|
378
|
+
def custom_pointing(orbit: ostk.astrodynamics.trajectory.Orbit, alignment_target: Profile.Target, clocking_target: Profile.Target, angular_offset: ostk.physics.unit.Angle = ...) -> Profile:
|
379
|
+
"""
|
380
|
+
Create a custom pointing profile.
|
381
|
+
|
382
|
+
Args:
|
383
|
+
orbit (Orbit): The orbit.
|
384
|
+
alignment_target (Profile.Target): The alignment target.
|
385
|
+
clocking_target (Profile.Target): The clocking target.
|
386
|
+
angular_offset (Angle): The angular offset. Defaults to `Angle.Zero()`.
|
387
|
+
|
388
|
+
Returns:
|
389
|
+
Profile: The custom pointing profile.
|
390
|
+
"""
|
391
|
+
@staticmethod
|
392
|
+
def inertial_pointing(trajectory: ostk.astrodynamics.Trajectory, quaternion: ostk.mathematics.geometry.d3.transformation.rotation.Quaternion) -> Profile:
|
393
|
+
"""
|
394
|
+
Create an inertial pointing profile.
|
395
|
+
|
396
|
+
Args:
|
397
|
+
trajectory (Trajectory): The trajectory.
|
398
|
+
quaternion (Quaternion): The quaternion.
|
399
|
+
|
400
|
+
Returns:
|
401
|
+
Profile: The inertial pointing profile.
|
402
|
+
"""
|
403
|
+
@staticmethod
|
404
|
+
def local_orbital_frame_pointing(orbit: ostk.astrodynamics.trajectory.Orbit, orbital_frame_type: ostk.astrodynamics.trajectory.Orbit.FrameType) -> Profile:
|
405
|
+
"""
|
406
|
+
Create a profile aligned with the provided local orbital frame type.
|
407
|
+
|
408
|
+
Args:
|
409
|
+
orbit (Orbit): The orbit.
|
410
|
+
orbital_frame_type (OrbitalFrameType): The type of the orbital frame.
|
411
|
+
|
412
|
+
Returns:
|
413
|
+
Profile: The profile aligned with the local orbital frame.
|
414
|
+
"""
|
415
|
+
@staticmethod
|
416
|
+
def undefined() -> Profile:
|
417
|
+
"""
|
418
|
+
Create an undefined profile.
|
419
|
+
|
420
|
+
Returns:
|
421
|
+
Profile: The undefined profile.
|
422
|
+
"""
|
423
|
+
def __init__(self, model: typing.Any) -> None:
|
424
|
+
"""
|
425
|
+
Constructor.
|
426
|
+
|
427
|
+
Args:
|
428
|
+
model (Model): The profile model.
|
429
|
+
"""
|
430
|
+
def __repr__(self) -> str:
|
431
|
+
...
|
432
|
+
def __str__(self) -> str:
|
433
|
+
...
|
434
|
+
def access_model(self) -> ...:
|
435
|
+
"""
|
436
|
+
Access the profile model.
|
437
|
+
|
438
|
+
Returns:
|
439
|
+
Model: The profile model.
|
440
|
+
"""
|
441
|
+
def get_axes_at(self, instant: ostk.physics.time.Instant) -> ostk.physics.coordinate.Axes:
|
442
|
+
"""
|
443
|
+
Get the axes of the profile at a given instant.
|
444
|
+
|
445
|
+
Args:
|
446
|
+
instant (Instant): The instant.
|
447
|
+
|
448
|
+
Returns:
|
449
|
+
Frame: The axes of the profile at the given instant.
|
450
|
+
"""
|
451
|
+
def get_body_frame(self, frame_name: ostk.core.type.String) -> ostk.physics.coordinate.Frame:
|
452
|
+
"""
|
453
|
+
Get the body frame of the profile.
|
454
|
+
|
455
|
+
Args:
|
456
|
+
frame_name (str): The name of the frame.
|
457
|
+
|
458
|
+
Returns:
|
459
|
+
Frame: The body frame of the profile.
|
460
|
+
"""
|
461
|
+
def get_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
|
462
|
+
"""
|
463
|
+
Get the state of the profile at a given instant.
|
464
|
+
|
465
|
+
Args:
|
466
|
+
instant (Instant): The instant.
|
467
|
+
|
468
|
+
Returns:
|
469
|
+
State: The state of the profile at the given instant.
|
470
|
+
"""
|
471
|
+
def get_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[ostk.astrodynamics.trajectory.State]:
|
472
|
+
"""
|
473
|
+
Get the states of the profile at given instants.
|
474
|
+
|
475
|
+
Args:
|
476
|
+
instants (list): The instants.
|
477
|
+
|
478
|
+
Returns:
|
479
|
+
list: The states of the profile at the given instants.
|
480
|
+
"""
|
481
|
+
def is_defined(self) -> bool:
|
482
|
+
"""
|
483
|
+
Check if the profile is defined.
|
484
|
+
|
485
|
+
Returns:
|
486
|
+
bool: True if the profile is defined, False otherwise.
|
487
|
+
"""
|
488
|
+
class System:
|
489
|
+
"""
|
490
|
+
|
491
|
+
A flight system.
|
492
|
+
|
493
|
+
Provides the interface for flight systems.
|
494
|
+
|
495
|
+
.. warning:: This class is an abstract class and cannot be instantiated.
|
496
|
+
|
497
|
+
|
498
|
+
"""
|
499
|
+
__hash__: typing.ClassVar[None] = None
|
500
|
+
@staticmethod
|
501
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
502
|
+
...
|
503
|
+
@staticmethod
|
504
|
+
def undefined() -> System:
|
505
|
+
"""
|
506
|
+
Create an undefined system.
|
507
|
+
|
508
|
+
Returns:
|
509
|
+
System: The undefined system.
|
510
|
+
"""
|
511
|
+
def __eq__(self, arg0: System) -> bool:
|
512
|
+
...
|
513
|
+
def __init__(self, mass: ostk.physics.unit.Mass, geometry: ostk.mathematics.geometry.d3.object.Composite) -> None:
|
514
|
+
"""
|
515
|
+
Constructor.
|
516
|
+
|
517
|
+
Args:
|
518
|
+
mass (Mass): The mass of the system.
|
519
|
+
geometry (Composite): The geometry of the system.
|
520
|
+
"""
|
521
|
+
def __ne__(self, arg0: System) -> bool:
|
522
|
+
...
|
523
|
+
def __repr__(self) -> str:
|
524
|
+
...
|
525
|
+
def __str__(self) -> str:
|
526
|
+
...
|
527
|
+
def get_geometry(self) -> ostk.mathematics.geometry.d3.object.Composite:
|
528
|
+
"""
|
529
|
+
Get the geometry of the system.
|
530
|
+
|
531
|
+
Returns:
|
532
|
+
Composite: The geometry of the system.
|
533
|
+
"""
|
534
|
+
def get_mass(self) -> ostk.physics.unit.Mass:
|
535
|
+
"""
|
536
|
+
Get the mass of the system.
|
537
|
+
|
538
|
+
Returns:
|
539
|
+
Mass: The mass of the system.
|
540
|
+
"""
|
541
|
+
def is_defined(self) -> bool:
|
542
|
+
"""
|
543
|
+
Check if the system is defined.
|
544
|
+
|
545
|
+
Returns:
|
546
|
+
bool: True if the system is defined, False otherwise.
|
547
|
+
"""
|
@@ -0,0 +1,102 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
import ostk.astrodynamics.trajectory
|
3
|
+
import ostk.core.type
|
4
|
+
import ostk.physics.coordinate
|
5
|
+
import ostk.physics.time
|
6
|
+
import typing
|
7
|
+
from . import model
|
8
|
+
__all__ = ['Model', 'model']
|
9
|
+
class Model:
|
10
|
+
"""
|
11
|
+
|
12
|
+
A flight profile model.
|
13
|
+
|
14
|
+
|
15
|
+
"""
|
16
|
+
__hash__: typing.ClassVar[None] = None
|
17
|
+
@staticmethod
|
18
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
19
|
+
...
|
20
|
+
def __eq__(self, arg0: Model) -> bool:
|
21
|
+
...
|
22
|
+
def __ne__(self, arg0: Model) -> bool:
|
23
|
+
...
|
24
|
+
def __repr__(self) -> str:
|
25
|
+
...
|
26
|
+
def __str__(self) -> str:
|
27
|
+
...
|
28
|
+
def as_tabulated(self) -> ...:
|
29
|
+
"""
|
30
|
+
Cast the model to a tabulated model.
|
31
|
+
|
32
|
+
Returns:
|
33
|
+
Tabulated: The tabulated model.
|
34
|
+
"""
|
35
|
+
def as_transform(self) -> ...:
|
36
|
+
"""
|
37
|
+
Cast the model to a transform model.
|
38
|
+
|
39
|
+
Returns:
|
40
|
+
Transform: The transform model.
|
41
|
+
"""
|
42
|
+
def calculate_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
|
43
|
+
"""
|
44
|
+
Calculate the state of the model at a specific instant.
|
45
|
+
|
46
|
+
Args:
|
47
|
+
instant (Instant): The instant at which to calculate the state.
|
48
|
+
|
49
|
+
Returns:
|
50
|
+
State: The state of the model at the specified instant.
|
51
|
+
"""
|
52
|
+
def calculate_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[ostk.astrodynamics.trajectory.State]:
|
53
|
+
"""
|
54
|
+
Calculate the states of the model at specific instants. It can be more performant than looping `calculate_state_at` for multiple instants.
|
55
|
+
|
56
|
+
Args:
|
57
|
+
instants (list[Instant]): The instants at which to calculate the states.
|
58
|
+
|
59
|
+
Returns:
|
60
|
+
list[State]: The states of the model at the specified instants.
|
61
|
+
"""
|
62
|
+
def get_axes_at(self, instant: ostk.physics.time.Instant) -> ostk.physics.coordinate.Axes:
|
63
|
+
"""
|
64
|
+
Get the axes of the model at a specific instant.
|
65
|
+
|
66
|
+
Args:
|
67
|
+
instant (Instant): The instant at which to get the axes.
|
68
|
+
|
69
|
+
Returns:
|
70
|
+
numpy.ndarray: The axes of the model at the specified instant.
|
71
|
+
"""
|
72
|
+
def get_body_frame(self, frame_name: ostk.core.type.String) -> ostk.physics.coordinate.Frame:
|
73
|
+
"""
|
74
|
+
Get the body frame of the model with the specified name.
|
75
|
+
|
76
|
+
Args:
|
77
|
+
frame_name (str): The name of the body frame.
|
78
|
+
|
79
|
+
Returns:
|
80
|
+
Frame: The body frame of the model with the specified name.
|
81
|
+
"""
|
82
|
+
def is_defined(self) -> bool:
|
83
|
+
"""
|
84
|
+
Check if the model is defined.
|
85
|
+
|
86
|
+
Returns:
|
87
|
+
bool: True if the model is defined, False otherwise.
|
88
|
+
"""
|
89
|
+
def is_tabulated(self) -> bool:
|
90
|
+
"""
|
91
|
+
Check if the model is a tabulated model.
|
92
|
+
|
93
|
+
Returns:
|
94
|
+
bool: True if the model is a tabulated model, False otherwise.
|
95
|
+
"""
|
96
|
+
def is_transform(self) -> bool:
|
97
|
+
"""
|
98
|
+
Check if the model is a transform model.
|
99
|
+
|
100
|
+
Returns:
|
101
|
+
bool: True if the model is a transform model, False otherwise.
|
102
|
+
"""
|