Files
2026-06-09 12:31:53 +03:00

2.3 KiB
Raw Permalink Blame History

angular-motion-lib

Библиотека расчета программ управления угловым движением КА.

Библиотека создана как перенос расчетного контура из проекта OrbitalMotion/AISTPUUD/SurveyPUUD:

  • ConstOrientAISTPUUDConstOrientPUUD;
  • AzimuthAISTPUUDAzimuthPUUD;
  • SmoothSDIAISTPUUDSmoothSDIPUUD.

В новых классах нет префикса AIST. Вместо старого C++/Qt Ballistics используется существующая Kotlin-библиотека проекта PCP:

  • ballistics.orbitalPoints.timeStepper.AbstractStepper для выхода на заданное время;
  • ballistics.types.OrbitalPoint, Orientation, BLHPoint;
  • ballistics.utils.astro.AstronomerJ2000;
  • ballistics.utils.math.Vector3D, Matrix3D, Quaternion3D.

В текущей модели спутника используется одна центральная линия визирования. Номер линии визирования и отклонения боковых линий из расчетного API удалены.

Основной API:

val calculator = AngularMotionCalculatorFactory.create(
    mode = AngularMotionMode.AZIMUTH,
    stepper = stepper,
)

val result = calculator.calculate(
    SurveyId(
        t = startTimeSeconds,
        b = latitudeRad,
        l = longitudeRad,
        h = heightMeters,
        duration = 20.0,
        sdi = listOf(150.0),
        azimuth = azimuthRad,
    )
)

Примечания по переносу

  1. Временные параметры задаются в интегральных секундах, как в ballistics-lib.
  2. Углы задаются в радианах.
  3. Линейные параметры оптики в AngularMotionConfig сохранены в миллиметрах, как в исходном sBLS_KA.
  4. Расчет времени начала режима сохраняет подход calcTn: поиск корня на интервале t ± 180 с и округление к discreteTimes.
  5. Интервал успокоения рассчитывается обратной интерполяцией первых точек ПУУД, аналогично TauIntervalCalculator.