open-space-toolkit-astrodynamics 13.1.0__py311-none-manylinux2014_x86_64.whl → 15.0.0__py311-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-311-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 +58 -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 +65 -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 +1802 -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,785 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
import numpy
|
3
|
+
from ostk import astrodynamics as OpenSpaceToolkitAstrodynamicsPy
|
4
|
+
from ostk.astrodynamics.trajectory import State as PyState
|
5
|
+
from ostk import core as OpenSpaceToolkitCorePy
|
6
|
+
from ostk.core import container
|
7
|
+
from ostk.core import filesystem
|
8
|
+
import ostk.core.type
|
9
|
+
from ostk.core import type
|
10
|
+
from ostk import io as OpenSpaceToolkitIOPy
|
11
|
+
from ostk.io import URL
|
12
|
+
from ostk.io import ip
|
13
|
+
from ostk import mathematics as OpenSpaceToolkitMathematicsPy
|
14
|
+
from ostk.mathematics import curve_fitting
|
15
|
+
from ostk.mathematics import geometry
|
16
|
+
from ostk.mathematics import object
|
17
|
+
from ostk import physics as OpenSpaceToolkitPhysicsPy
|
18
|
+
import ostk.physics
|
19
|
+
from ostk.physics import Environment
|
20
|
+
from ostk.physics import Manager
|
21
|
+
from ostk.physics import Unit
|
22
|
+
import ostk.physics.coordinate
|
23
|
+
from ostk.physics import coordinate
|
24
|
+
import ostk.physics.coordinate.spherical
|
25
|
+
from ostk.physics import environment
|
26
|
+
import ostk.physics.environment.object
|
27
|
+
import ostk.physics.time
|
28
|
+
from ostk.physics import time
|
29
|
+
import ostk.physics.unit
|
30
|
+
from ostk.physics import unit
|
31
|
+
import typing
|
32
|
+
from . import access
|
33
|
+
from . import conjunction
|
34
|
+
from . import converters
|
35
|
+
from . import data
|
36
|
+
from . import dynamics
|
37
|
+
from . import event_condition
|
38
|
+
from . import flight
|
39
|
+
from . import guidance_law
|
40
|
+
from . import pytrajectory
|
41
|
+
from . import solver
|
42
|
+
from . import trajectory
|
43
|
+
__all__ = ['Access', 'Dynamics', 'Environment', 'EventCondition', 'GuidanceLaw', 'Manager', 'OpenSpaceToolkitAstrodynamicsPy', 'OpenSpaceToolkitCorePy', 'OpenSpaceToolkitIOPy', 'OpenSpaceToolkitMathematicsPy', 'OpenSpaceToolkitPhysicsPy', 'PyState', 'RootSolver', 'Trajectory', 'URL', 'Unit', 'access', 'conjunction', 'container', 'converters', 'coordinate', 'curve_fitting', 'data', 'dynamics', 'environment', 'event_condition', 'filesystem', 'flight', 'geometry', 'guidance_law', 'ip', 'object', 'pytrajectory', 'solver', 'time', 'trajectory', 'type', 'unit']
|
44
|
+
class Access:
|
45
|
+
"""
|
46
|
+
|
47
|
+
Object-to-object visibility
|
48
|
+
|
49
|
+
This class encapsulates the concept of visibility access between two trajectories.
|
50
|
+
|
51
|
+
|
52
|
+
"""
|
53
|
+
class Type:
|
54
|
+
"""
|
55
|
+
|
56
|
+
Access type.
|
57
|
+
|
58
|
+
|
59
|
+
Members:
|
60
|
+
|
61
|
+
Undefined : Undefined
|
62
|
+
|
63
|
+
Complete : Complete
|
64
|
+
|
65
|
+
Partial : Partial
|
66
|
+
"""
|
67
|
+
Complete: typing.ClassVar[Access.Type] # value = <Type.Complete: 1>
|
68
|
+
Partial: typing.ClassVar[Access.Type] # value = <Type.Partial: 2>
|
69
|
+
Undefined: typing.ClassVar[Access.Type] # value = <Type.Undefined: 0>
|
70
|
+
__members__: typing.ClassVar[dict[str, Access.Type]] # value = {'Undefined': <Type.Undefined: 0>, 'Complete': <Type.Complete: 1>, 'Partial': <Type.Partial: 2>}
|
71
|
+
@staticmethod
|
72
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
73
|
+
...
|
74
|
+
def __eq__(self, other: typing.Any) -> bool:
|
75
|
+
...
|
76
|
+
def __getstate__(self) -> int:
|
77
|
+
...
|
78
|
+
def __hash__(self) -> int:
|
79
|
+
...
|
80
|
+
def __index__(self) -> int:
|
81
|
+
...
|
82
|
+
def __init__(self, value: int) -> None:
|
83
|
+
...
|
84
|
+
def __int__(self) -> int:
|
85
|
+
...
|
86
|
+
def __ne__(self, other: typing.Any) -> bool:
|
87
|
+
...
|
88
|
+
def __repr__(self) -> str:
|
89
|
+
...
|
90
|
+
def __setstate__(self, state: int) -> None:
|
91
|
+
...
|
92
|
+
def __str__(self) -> str:
|
93
|
+
...
|
94
|
+
@property
|
95
|
+
def name(self) -> str:
|
96
|
+
...
|
97
|
+
@property
|
98
|
+
def value(self) -> int:
|
99
|
+
...
|
100
|
+
__hash__: typing.ClassVar[None] = None
|
101
|
+
@staticmethod
|
102
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
103
|
+
...
|
104
|
+
@staticmethod
|
105
|
+
def string_from_type(type: Access.Type) -> ostk.core.type.String:
|
106
|
+
"""
|
107
|
+
Returns a string representation of the Access type.
|
108
|
+
|
109
|
+
Args:
|
110
|
+
type (Access.Type): The type of the access.
|
111
|
+
|
112
|
+
Returns:
|
113
|
+
str: A string representation of the type.
|
114
|
+
"""
|
115
|
+
@staticmethod
|
116
|
+
def undefined() -> Access:
|
117
|
+
"""
|
118
|
+
Creates an undefined Access object.
|
119
|
+
|
120
|
+
Returns:
|
121
|
+
Access: An undefined Access object.
|
122
|
+
"""
|
123
|
+
def __eq__(self, arg0: Access) -> bool:
|
124
|
+
...
|
125
|
+
def __init__(self, type: Access.Type, acquisition_of_signal: ostk.physics.time.Instant, time_of_closest_approach: ostk.physics.time.Instant, loss_of_signal: ostk.physics.time.Instant, max_elevation: ostk.physics.unit.Angle) -> None:
|
126
|
+
"""
|
127
|
+
Constructs an Access object.
|
128
|
+
|
129
|
+
Args:
|
130
|
+
type (Access.Type): Type of the access (Complete, Partial, Undefined)
|
131
|
+
acquisition_of_signal (Instant): The instant when the signal is first acquired
|
132
|
+
time_of_closest_approach (Instant): The time of closest approach between objects
|
133
|
+
loss_of_signal (Instant): The instant when the signal is lost
|
134
|
+
max_elevation (Angle): The maximum elevation angle during the access
|
135
|
+
"""
|
136
|
+
def __ne__(self, arg0: Access) -> bool:
|
137
|
+
...
|
138
|
+
def __repr__(self) -> str:
|
139
|
+
...
|
140
|
+
def __str__(self) -> str:
|
141
|
+
...
|
142
|
+
def get_acquisition_of_signal(self) -> ostk.physics.time.Instant:
|
143
|
+
"""
|
144
|
+
Get the acquisition of signal of the access.
|
145
|
+
|
146
|
+
Returns:
|
147
|
+
Instant: The acquisition of signal of the access.
|
148
|
+
"""
|
149
|
+
def get_duration(self) -> ostk.physics.time.Duration:
|
150
|
+
"""
|
151
|
+
Get the duration of the access.
|
152
|
+
|
153
|
+
Returns:
|
154
|
+
Duration: The duration of the access.
|
155
|
+
"""
|
156
|
+
def get_interval(self) -> ostk.physics.time.Interval:
|
157
|
+
"""
|
158
|
+
Get the interval of the access.
|
159
|
+
|
160
|
+
Returns:
|
161
|
+
Interval: The interval of the access.
|
162
|
+
"""
|
163
|
+
def get_loss_of_signal(self) -> ostk.physics.time.Instant:
|
164
|
+
"""
|
165
|
+
Get the loss of signal of the access.
|
166
|
+
|
167
|
+
Returns:
|
168
|
+
Instant: The loss of signal of the access.
|
169
|
+
"""
|
170
|
+
def get_max_elevation(self) -> ostk.physics.unit.Angle:
|
171
|
+
"""
|
172
|
+
Get the maximum elevation of the access.
|
173
|
+
|
174
|
+
Returns:
|
175
|
+
Angle: The maximum elevation of the access.
|
176
|
+
"""
|
177
|
+
def get_time_of_closest_approach(self) -> ostk.physics.time.Instant:
|
178
|
+
"""
|
179
|
+
Get the time of closest approach of the access.
|
180
|
+
|
181
|
+
Returns:
|
182
|
+
Instant: The time of closest approach of the access.
|
183
|
+
"""
|
184
|
+
def get_type(self) -> Access.Type:
|
185
|
+
"""
|
186
|
+
Get the type of the access.
|
187
|
+
|
188
|
+
Returns:
|
189
|
+
Access.Type: The type of the access.
|
190
|
+
"""
|
191
|
+
def is_complete(self) -> bool:
|
192
|
+
"""
|
193
|
+
Check if the access is complete.
|
194
|
+
|
195
|
+
Returns:
|
196
|
+
bool: True if complete, False otherwise.
|
197
|
+
"""
|
198
|
+
def is_defined(self) -> bool:
|
199
|
+
"""
|
200
|
+
Check if the Access object is defined.
|
201
|
+
|
202
|
+
Returns:
|
203
|
+
bool: True if defined, False otherwise.
|
204
|
+
"""
|
205
|
+
class Dynamics:
|
206
|
+
"""
|
207
|
+
|
208
|
+
Abstract interface class for dynamics.
|
209
|
+
|
210
|
+
Can inherit and provide the virtual methods:
|
211
|
+
- is_defined
|
212
|
+
- get_read_coordinate_subsets
|
213
|
+
- get_write_coordinate_subsets
|
214
|
+
- compute_contribution
|
215
|
+
to create a custom dynamics class.
|
216
|
+
|
217
|
+
|
218
|
+
"""
|
219
|
+
@staticmethod
|
220
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
221
|
+
...
|
222
|
+
@staticmethod
|
223
|
+
def from_environment(environment: ostk.physics.Environment) -> list[Dynamics]:
|
224
|
+
"""
|
225
|
+
Create a list of `Dynamics` objects from an environment.
|
226
|
+
|
227
|
+
Args:
|
228
|
+
environment (Environment): The environment to create the dynamics from.
|
229
|
+
|
230
|
+
Returns:
|
231
|
+
dynamics (list[Dynamics]): The list of `Dynamics` objects created from the environment.
|
232
|
+
"""
|
233
|
+
def __init__(self, name: ostk.core.type.String) -> None:
|
234
|
+
"""
|
235
|
+
Construct a new `Dynamics` object.
|
236
|
+
|
237
|
+
Args:
|
238
|
+
name (str): The name of the dynamics.
|
239
|
+
|
240
|
+
Returns:
|
241
|
+
dynamics (Dynamics): The new `Dynamics` object.
|
242
|
+
"""
|
243
|
+
def __repr__(self) -> str:
|
244
|
+
...
|
245
|
+
def __str__(self) -> str:
|
246
|
+
...
|
247
|
+
def compute_contribution(self, instant: ostk.physics.time.Instant, state_vector: numpy.ndarray[numpy.float64[m, 1]], frame: ostk.physics.coordinate.Frame) -> numpy.ndarray[numpy.float64[m, 1]]:
|
248
|
+
"""
|
249
|
+
Compute the contribution of the dynamics at a given instant.
|
250
|
+
|
251
|
+
Args:
|
252
|
+
instant (Instant): The instant at which to compute the contribution.
|
253
|
+
state_vector (numpy.ndarray): The state vector at the instant.
|
254
|
+
frame (Frame): The reference frame in which to compute the contribution.
|
255
|
+
|
256
|
+
Returns:
|
257
|
+
contribution (numpy.ndarray): The contribution of the dynamics at the instant.
|
258
|
+
"""
|
259
|
+
def get_name(self) -> ostk.core.type.String:
|
260
|
+
"""
|
261
|
+
Get the name of the dynamics.
|
262
|
+
|
263
|
+
Returns:
|
264
|
+
name (str): The name of the dynamics.
|
265
|
+
"""
|
266
|
+
def get_read_coordinate_subsets(self) -> list[trajectory.state.CoordinateSubset]:
|
267
|
+
"""
|
268
|
+
Get the coordinate subsets that the dynamics reads.
|
269
|
+
|
270
|
+
Returns:
|
271
|
+
read_coordinate_subsets (Array<CoordinateSubset>): The coordinate subsets that the dynamics reads.
|
272
|
+
"""
|
273
|
+
def get_write_coordinate_subsets(self) -> list[trajectory.state.CoordinateSubset]:
|
274
|
+
"""
|
275
|
+
Get the coordinate subsets that the dynamics writes.
|
276
|
+
|
277
|
+
Returns:
|
278
|
+
write_coordinate_subsets (Array<CoordinateSubset>): The coordinate subsets that the dynamics writes.
|
279
|
+
"""
|
280
|
+
def is_defined(self) -> bool:
|
281
|
+
"""
|
282
|
+
Check if the dynamics is defined.
|
283
|
+
|
284
|
+
Returns:
|
285
|
+
is_defined (bool): True if the dynamics is defined, False otherwise.
|
286
|
+
"""
|
287
|
+
class EventCondition:
|
288
|
+
"""
|
289
|
+
|
290
|
+
An Event Condition defines a criterion that can be evaluated based on a current/previous state vectors and times
|
291
|
+
|
292
|
+
|
293
|
+
"""
|
294
|
+
class Target:
|
295
|
+
"""
|
296
|
+
|
297
|
+
The Event Condition Target.
|
298
|
+
|
299
|
+
|
300
|
+
"""
|
301
|
+
class Type:
|
302
|
+
"""
|
303
|
+
|
304
|
+
Event Condition Target type.
|
305
|
+
|
306
|
+
|
307
|
+
Members:
|
308
|
+
|
309
|
+
Absolute : Absolute
|
310
|
+
|
311
|
+
Relative : Relative to the provided State.
|
312
|
+
"""
|
313
|
+
Absolute: typing.ClassVar[EventCondition.Target.Type] # value = <Type.Absolute: 0>
|
314
|
+
Relative: typing.ClassVar[EventCondition.Target.Type] # value = <Type.Relative: 1>
|
315
|
+
__members__: typing.ClassVar[dict[str, EventCondition.Target.Type]] # value = {'Absolute': <Type.Absolute: 0>, 'Relative': <Type.Relative: 1>}
|
316
|
+
@staticmethod
|
317
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
318
|
+
...
|
319
|
+
def __eq__(self, other: typing.Any) -> bool:
|
320
|
+
...
|
321
|
+
def __getstate__(self) -> int:
|
322
|
+
...
|
323
|
+
def __hash__(self) -> int:
|
324
|
+
...
|
325
|
+
def __index__(self) -> int:
|
326
|
+
...
|
327
|
+
def __init__(self, value: int) -> None:
|
328
|
+
...
|
329
|
+
def __int__(self) -> int:
|
330
|
+
...
|
331
|
+
def __ne__(self, other: typing.Any) -> bool:
|
332
|
+
...
|
333
|
+
def __repr__(self) -> str:
|
334
|
+
...
|
335
|
+
def __setstate__(self, state: int) -> None:
|
336
|
+
...
|
337
|
+
def __str__(self) -> str:
|
338
|
+
...
|
339
|
+
@property
|
340
|
+
def name(self) -> str:
|
341
|
+
...
|
342
|
+
@property
|
343
|
+
def value(self) -> int:
|
344
|
+
...
|
345
|
+
__hash__: typing.ClassVar[None] = None
|
346
|
+
@staticmethod
|
347
|
+
def StringFromType(arg0: EventCondition.Target.Type) -> ostk.core.type.String:
|
348
|
+
"""
|
349
|
+
Enum as a string
|
350
|
+
|
351
|
+
Args:
|
352
|
+
type (EventConditionTarget.Type): The type of the target.
|
353
|
+
|
354
|
+
Returns:
|
355
|
+
string (str): Name of the enum as a string.
|
356
|
+
"""
|
357
|
+
@staticmethod
|
358
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
359
|
+
...
|
360
|
+
def __eq__(self, arg0: EventCondition.Target) -> bool:
|
361
|
+
...
|
362
|
+
@typing.overload
|
363
|
+
def __init__(self, value: ostk.core.type.Real, type: EventCondition.Target.Type = ...) -> None:
|
364
|
+
"""
|
365
|
+
Construct a new `EventConditionTarget` object.
|
366
|
+
|
367
|
+
Args:
|
368
|
+
value (float): The value of the target.
|
369
|
+
type (EventConditionTarget.Type): The type of the target. Defaults to EventConditionTarget.Type.Absolute.
|
370
|
+
|
371
|
+
Returns:
|
372
|
+
event_condition_target (EventConditionTarget): The new `EventConditionTarget` object.
|
373
|
+
"""
|
374
|
+
@typing.overload
|
375
|
+
def __init__(self, value: ostk.physics.unit.Length, type: EventCondition.Target.Type = ...) -> None:
|
376
|
+
"""
|
377
|
+
Construct a new `EventConditionTarget` object.
|
378
|
+
|
379
|
+
Args:
|
380
|
+
length (Length): The value of the target as a `Length`.
|
381
|
+
type (EventConditionTarget.Type): The type of the target. Defaults to EventConditionTarget.Type.Absolute.
|
382
|
+
|
383
|
+
Returns:
|
384
|
+
event_condition_target (EventConditionTarget): The new `EventConditionTarget` object.
|
385
|
+
"""
|
386
|
+
@typing.overload
|
387
|
+
def __init__(self, value: ostk.physics.unit.Angle, type: EventCondition.Target.Type = ...) -> None:
|
388
|
+
"""
|
389
|
+
Construct a new `EventConditionTarget` object.
|
390
|
+
|
391
|
+
Args:
|
392
|
+
angle (Angle): The value of the target as an `Angle`.
|
393
|
+
type (EventConditionTarget.Type): The type of the target. Defaults to EventConditionTarget.Type.Absolute.
|
394
|
+
|
395
|
+
Returns:
|
396
|
+
event_condition_target (EventConditionTarget): The new `EventConditionTarget` object.
|
397
|
+
"""
|
398
|
+
def __ne__(self, arg0: EventCondition.Target) -> bool:
|
399
|
+
...
|
400
|
+
@property
|
401
|
+
def type(self) -> EventCondition.Target.Type:
|
402
|
+
"""
|
403
|
+
The type of the target.
|
404
|
+
|
405
|
+
:type: Type
|
406
|
+
"""
|
407
|
+
@property
|
408
|
+
def value(self) -> ostk.core.type.Real:
|
409
|
+
"""
|
410
|
+
The value of the target.
|
411
|
+
|
412
|
+
:type: float
|
413
|
+
"""
|
414
|
+
@property
|
415
|
+
def value_offset(self) -> ostk.core.type.Real:
|
416
|
+
"""
|
417
|
+
The value offset of the target. Used for Relative targets.
|
418
|
+
|
419
|
+
:type: float
|
420
|
+
"""
|
421
|
+
@staticmethod
|
422
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
423
|
+
...
|
424
|
+
@typing.overload
|
425
|
+
def __init__(self, name: ostk.core.type.String, evaluator: typing.Callable[[trajectory.State], ostk.core.type.Real], target: EventCondition.Target) -> None:
|
426
|
+
"""
|
427
|
+
Construct a new `EventCondition` object.
|
428
|
+
|
429
|
+
Args:
|
430
|
+
name (str): The name of the event condition.
|
431
|
+
evaluator (callable): The evaluator that accepts a `State` and returns a float value.
|
432
|
+
target (EventConditionTarget): The target of the event condition.
|
433
|
+
|
434
|
+
Returns:
|
435
|
+
event_condition (EventCondition): The new `EventCondition` object.
|
436
|
+
"""
|
437
|
+
@typing.overload
|
438
|
+
def __init__(self, name: ostk.core.type.String, evaluator: typing.Callable[[trajectory.State], ostk.core.type.Real], target_value: ostk.core.type.Real) -> None:
|
439
|
+
"""
|
440
|
+
Construct a new `EventCondition` object.
|
441
|
+
|
442
|
+
Args:
|
443
|
+
name (str): The name of the event condition.
|
444
|
+
evaluator (callable): The evaluator that accepts a `State` and returns a float value.
|
445
|
+
target_value (float): The target of the event condition.
|
446
|
+
|
447
|
+
Returns:
|
448
|
+
event_condition (EventCondition): The new `EventCondition` object.
|
449
|
+
"""
|
450
|
+
def __repr__(self) -> str:
|
451
|
+
...
|
452
|
+
def __str__(self) -> str:
|
453
|
+
...
|
454
|
+
def get_evaluator(self) -> typing.Callable[[trajectory.State], ostk.core.type.Real]:
|
455
|
+
"""
|
456
|
+
Get the evaluator of the event condition.
|
457
|
+
|
458
|
+
Returns:
|
459
|
+
evaluator (str): The evaluator of the event condition.
|
460
|
+
"""
|
461
|
+
def get_name(self) -> ostk.core.type.String:
|
462
|
+
"""
|
463
|
+
Get the name of the event condition.
|
464
|
+
|
465
|
+
Returns:
|
466
|
+
name (str): The name of the event condition.
|
467
|
+
"""
|
468
|
+
def get_target(self) -> EventCondition.Target:
|
469
|
+
"""
|
470
|
+
Get the target of the event condition.
|
471
|
+
|
472
|
+
Returns:
|
473
|
+
target (EventConditionTarget): The target of the event condition.
|
474
|
+
"""
|
475
|
+
def is_satisfied(self, current_state: trajectory.State, previous_state: trajectory.State) -> bool:
|
476
|
+
"""
|
477
|
+
Check if the event condition is satisfied.
|
478
|
+
|
479
|
+
Args:
|
480
|
+
current_state (State): The current state.
|
481
|
+
previous_state (State): The previous state.
|
482
|
+
|
483
|
+
Returns:
|
484
|
+
is_satisfied (bool): True if the event condition is satisfied, False otherwise.
|
485
|
+
"""
|
486
|
+
def update_target(self, state: trajectory.State) -> None:
|
487
|
+
"""
|
488
|
+
Update the target value if the event condition is relative.
|
489
|
+
|
490
|
+
Args:
|
491
|
+
state (State): The state to calculate the relative target from.
|
492
|
+
"""
|
493
|
+
class GuidanceLaw:
|
494
|
+
"""
|
495
|
+
|
496
|
+
Guidance law base class.
|
497
|
+
|
498
|
+
A guidance law is a mathematical model that computes the acceleration
|
499
|
+
based on specific guidance law logic.
|
500
|
+
|
501
|
+
|
502
|
+
"""
|
503
|
+
@staticmethod
|
504
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
505
|
+
...
|
506
|
+
def __init__(self, name: ostk.core.type.String) -> None:
|
507
|
+
"""
|
508
|
+
Constructor.
|
509
|
+
|
510
|
+
Args:
|
511
|
+
name (str): The name of the guidance law.
|
512
|
+
"""
|
513
|
+
def calculate_thrust_acceleration_at(self, instant: ostk.physics.time.Instant, position_coordinates: numpy.ndarray[numpy.float64[3, 1]], velocity_coordinates: numpy.ndarray[numpy.float64[3, 1]], thrust_acceleration: ostk.core.type.Real, output_frame: ostk.physics.coordinate.Frame) -> numpy.ndarray[numpy.float64[3, 1]]:
|
514
|
+
"""
|
515
|
+
Compute the acceleration.
|
516
|
+
|
517
|
+
Args:
|
518
|
+
instant (Instant): Instant of computation.
|
519
|
+
position_coordinates (np.array): Position coordinates.
|
520
|
+
velocity_coordinates (np.array): Velocity coordinates.
|
521
|
+
thrust_acceleration (float): Thrust acceleration magnitude.
|
522
|
+
output_frame (Frame): The frame the acceleration is expressed in.
|
523
|
+
|
524
|
+
Returns:
|
525
|
+
np.array: The acceleration.
|
526
|
+
"""
|
527
|
+
def get_name(self) -> ostk.core.type.String:
|
528
|
+
"""
|
529
|
+
Get the name of the guidance law.
|
530
|
+
|
531
|
+
Returns:
|
532
|
+
str: The name of the guidance law.
|
533
|
+
"""
|
534
|
+
class RootSolver:
|
535
|
+
"""
|
536
|
+
|
537
|
+
A root solver is an algorithm for finding a zero-crossing of a function.
|
538
|
+
|
539
|
+
|
540
|
+
"""
|
541
|
+
class Solution:
|
542
|
+
"""
|
543
|
+
|
544
|
+
A root solver solution.
|
545
|
+
|
546
|
+
|
547
|
+
"""
|
548
|
+
@staticmethod
|
549
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
550
|
+
...
|
551
|
+
@property
|
552
|
+
def has_converged(self) -> bool:
|
553
|
+
"""
|
554
|
+
Whether the root solver has converged.
|
555
|
+
|
556
|
+
Type:
|
557
|
+
bool
|
558
|
+
"""
|
559
|
+
@has_converged.setter
|
560
|
+
def has_converged(self, arg0: bool) -> None:
|
561
|
+
...
|
562
|
+
@property
|
563
|
+
def iteration_count(self) -> int:
|
564
|
+
"""
|
565
|
+
The number of iterations required to find the root.
|
566
|
+
|
567
|
+
Type:
|
568
|
+
int
|
569
|
+
"""
|
570
|
+
@iteration_count.setter
|
571
|
+
def iteration_count(self, arg0: int) -> None:
|
572
|
+
...
|
573
|
+
@property
|
574
|
+
def root(self) -> ostk.core.type.Real:
|
575
|
+
"""
|
576
|
+
The root of the function.
|
577
|
+
|
578
|
+
Type:
|
579
|
+
float
|
580
|
+
"""
|
581
|
+
@root.setter
|
582
|
+
def root(self, arg0: ostk.core.type.Real) -> None:
|
583
|
+
...
|
584
|
+
@staticmethod
|
585
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
586
|
+
...
|
587
|
+
@staticmethod
|
588
|
+
def default() -> RootSolver:
|
589
|
+
"""
|
590
|
+
Return the default root solver.
|
591
|
+
|
592
|
+
Returns:
|
593
|
+
RootSolver: The default root solver.
|
594
|
+
"""
|
595
|
+
def __init__(self, maximum_iteration_count: int, tolerance: ostk.core.type.Real) -> None:
|
596
|
+
"""
|
597
|
+
Constructor.
|
598
|
+
|
599
|
+
Args:
|
600
|
+
int: The maximum number of iterations allowed.
|
601
|
+
float: The tolerance of the root solver.
|
602
|
+
"""
|
603
|
+
def __repr__(self) -> str:
|
604
|
+
...
|
605
|
+
def __str__(self) -> str:
|
606
|
+
...
|
607
|
+
def bisection(self, function: typing.Callable[[float], float], lower_bound: ostk.core.type.Real, upper_bound: ostk.core.type.Real) -> RootSolver.Solution:
|
608
|
+
"""
|
609
|
+
Solve the root of a function using the bisection method.
|
610
|
+
|
611
|
+
Args:
|
612
|
+
function (callable): The function to solve.
|
613
|
+
lower_bound (float): The lower bound of the root.
|
614
|
+
upper_bound (float): The upper bound of the root.
|
615
|
+
|
616
|
+
Returns:
|
617
|
+
RootSolverSolution: The solution to the root.
|
618
|
+
"""
|
619
|
+
def bracket_and_solve(self, function: typing.Callable[[float], float], initial_guess: ostk.core.type.Real, is_rising: bool) -> RootSolver.Solution:
|
620
|
+
"""
|
621
|
+
Bracket and solve the root of a function.
|
622
|
+
|
623
|
+
Args:
|
624
|
+
function (callable): The function to solve.
|
625
|
+
initial_guess (float): The initial guess for the root.
|
626
|
+
is_rising (bool): Whether the function is rising.
|
627
|
+
|
628
|
+
Returns:
|
629
|
+
RootSolverSolution: The solution to the root.
|
630
|
+
"""
|
631
|
+
def get_maximum_iteration_count(self) -> int:
|
632
|
+
"""
|
633
|
+
Get the maximum number of iterations allowed.
|
634
|
+
|
635
|
+
Returns:
|
636
|
+
int: The maximum number of iterations allowed.
|
637
|
+
"""
|
638
|
+
def get_tolerance(self) -> ostk.core.type.Real:
|
639
|
+
"""
|
640
|
+
Get the tolerance of the root solver.
|
641
|
+
|
642
|
+
Returns:
|
643
|
+
float: The tolerance of the root solver.
|
644
|
+
"""
|
645
|
+
def solve(self, function: typing.Callable[[float], float], lower_bound: ostk.core.type.Real, upper_bound: ostk.core.type.Real) -> RootSolver.Solution:
|
646
|
+
"""
|
647
|
+
Solve the root of a function.
|
648
|
+
|
649
|
+
Args:
|
650
|
+
function (callable): The function to solve.
|
651
|
+
lower_bound (float): The lower bound of the root.
|
652
|
+
upper_bound (float): The upper bound of the root.
|
653
|
+
|
654
|
+
Returns:
|
655
|
+
RootSolverSolution: The solution to the root.
|
656
|
+
"""
|
657
|
+
class Trajectory:
|
658
|
+
"""
|
659
|
+
|
660
|
+
Path followed by an object through space as a function of time.
|
661
|
+
|
662
|
+
|
663
|
+
"""
|
664
|
+
__hash__: typing.ClassVar[None] = None
|
665
|
+
@staticmethod
|
666
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
667
|
+
...
|
668
|
+
@staticmethod
|
669
|
+
@typing.overload
|
670
|
+
def ground_strip(start_lla: ostk.physics.coordinate.spherical.LLA, end_lla: ostk.physics.coordinate.spherical.LLA, ground_speed: ostk.physics.unit.Derived, start_instant: ostk.physics.time.Instant, celestial_object: ostk.physics.environment.object.Celestial = ..., step_size: ostk.physics.time.Duration = ...) -> Trajectory:
|
671
|
+
"""
|
672
|
+
Create a `Trajectory` object representing a ground strip.
|
673
|
+
Computes the duration as the geodetic distance / ground speed.
|
674
|
+
Instants are generated at a 1 second interval.
|
675
|
+
|
676
|
+
Args:
|
677
|
+
start_lla (LLA): The start LLA.
|
678
|
+
end_lla (LLA): The end LLA.
|
679
|
+
ground_speed (Derived): The ground speed.
|
680
|
+
start_instant (Instant): The start instant.
|
681
|
+
celestial_object (Celestial): The celestial object. Defaults to Earth.WGS84().
|
682
|
+
step_size (Duration): The step size. Defaults to 1 second.
|
683
|
+
|
684
|
+
Returns:
|
685
|
+
Trajectory: The `Trajectory` object representing the ground strip.
|
686
|
+
"""
|
687
|
+
@staticmethod
|
688
|
+
@typing.overload
|
689
|
+
def ground_strip(start_lla: ostk.physics.coordinate.spherical.LLA, end_lla: ostk.physics.coordinate.spherical.LLA, instants: list[ostk.physics.time.Instant], celestial_object: ostk.physics.environment.object.Celestial = ...) -> Trajectory:
|
690
|
+
"""
|
691
|
+
Create a `Trajectory` object representing a ground strip.
|
692
|
+
This method computes the duration as the geodetic distance / ground speed.
|
693
|
+
|
694
|
+
Args:
|
695
|
+
start_lla (LLA): The start LLA.
|
696
|
+
end_lla (LLA): The end LLA.
|
697
|
+
instants (list[Instant]): The instants.
|
698
|
+
celestial_object (Celestial): The celestial object. Defaults to Earth.WGS84().
|
699
|
+
|
700
|
+
Returns:
|
701
|
+
Trajectory: The `Trajectory` object representing the ground strip.
|
702
|
+
"""
|
703
|
+
@staticmethod
|
704
|
+
def position(position: ostk.physics.coordinate.Position) -> Trajectory:
|
705
|
+
"""
|
706
|
+
Create a `Trajectory` object representing a position.
|
707
|
+
|
708
|
+
Args:
|
709
|
+
position (Position): The position. Must be in the ITRF frame.
|
710
|
+
|
711
|
+
Returns:
|
712
|
+
Trajectory: The `Trajectory` object representing the position.
|
713
|
+
"""
|
714
|
+
@staticmethod
|
715
|
+
def undefined() -> Trajectory:
|
716
|
+
"""
|
717
|
+
Create an undefined `Trajectory` object.
|
718
|
+
|
719
|
+
Returns:
|
720
|
+
Trajectory: The undefined `Trajectory` object.
|
721
|
+
"""
|
722
|
+
def __eq__(self, arg0: Trajectory) -> bool:
|
723
|
+
...
|
724
|
+
@typing.overload
|
725
|
+
def __init__(self, model: typing.Any) -> None:
|
726
|
+
"""
|
727
|
+
Construct a `Trajectory` object from a model.
|
728
|
+
|
729
|
+
Args:
|
730
|
+
model (trajectory.Model): The model of the trajectory.
|
731
|
+
|
732
|
+
Returns:
|
733
|
+
Trajectory: The `Trajectory` object.
|
734
|
+
"""
|
735
|
+
@typing.overload
|
736
|
+
def __init__(self, states: list[...]) -> None:
|
737
|
+
"""
|
738
|
+
Construct a `Trajectory` object from an array of states.
|
739
|
+
|
740
|
+
Args:
|
741
|
+
states (list[State]): The states of the trajectory.
|
742
|
+
|
743
|
+
Returns:
|
744
|
+
Trajectory: The `Trajectory` object.
|
745
|
+
"""
|
746
|
+
def __ne__(self, arg0: Trajectory) -> bool:
|
747
|
+
...
|
748
|
+
def __repr__(self) -> str:
|
749
|
+
...
|
750
|
+
def __str__(self) -> str:
|
751
|
+
...
|
752
|
+
def access_model(self) -> ...:
|
753
|
+
"""
|
754
|
+
Access the model of the trajectory.
|
755
|
+
|
756
|
+
Returns:
|
757
|
+
Model: The model of the trajectory.
|
758
|
+
"""
|
759
|
+
def get_state_at(self, instant: ostk.physics.time.Instant) -> ...:
|
760
|
+
"""
|
761
|
+
Get the state of the trajectory at a given instant.
|
762
|
+
|
763
|
+
Args:
|
764
|
+
instant (Instant): The instant.
|
765
|
+
|
766
|
+
Returns:
|
767
|
+
State: The state of the trajectory at the given instant.
|
768
|
+
"""
|
769
|
+
def get_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[...]:
|
770
|
+
"""
|
771
|
+
Get the states of the trajectory at a given set of instants. It can be more performant than looping `calculate_state_at` for multiple instants.
|
772
|
+
|
773
|
+
Args:
|
774
|
+
instants (list[Instant]): The instants.
|
775
|
+
|
776
|
+
Returns:
|
777
|
+
list[State]: The states of the trajectory at the given instants.
|
778
|
+
"""
|
779
|
+
def is_defined(self) -> bool:
|
780
|
+
"""
|
781
|
+
Check if the trajectory is defined.
|
782
|
+
|
783
|
+
Returns:
|
784
|
+
bool: True if the trajectory is defined, False otherwise.
|
785
|
+
"""
|