Почему я получаю разницу между "lla2eci" и "sgp4.propagate" в Matlab?

У меня нет опыта в этой области, но за последние несколько дней я собрал код на Python, который отслеживает (надеюсь) ISS. Я посчитал, и эта сторона вещей работает, но только когда я вставляю положение спутника с помощью lla2eci в matlab. Чтобы получить правильный ответ, я беру широту и долготу подпункта спутника из текущих данных и конвертирую их в eci с помощью Matlab. Этот метод дает мне правильные углы обзора (азимут и возвышение) для МКС, и я подтвердил их с помощью метода pyephem с помощью iss.compute(home), где "home" - это мой lla.

Я сравниваю lla2eci от Matlab с тем, что дает мне satellite.propagate(...), и во время = 2019 12 16 8 53 19 я получаю следующие результаты:

Matlab lla2eci: x,y,z = (3873.9, -902.18, -4969.9)sgp4 распространение: x,y,z= (-4082.5, 3458.3, -4195.1)

Мне здесь чего-то не хватает! Любая помощь будет принята с благодарностью, и я рад ответить на любые вопросы, чтобы уточнить.

1 ответ

Глядя на вопрос, кажется, вы не учитываете высоту?

Поскольку ваша цель - отслеживать ISS с помощью кода на Python, могу ли я предложить немного другой подход?

  1. Значения TLE для космических объектов доступны по адресу: https://www.space-track.org/, поэтому зарегистрируйтесь там.
  2. Затем найдите положение спутника в python с помощью библиотек sgp4 ( https://pypi.org/project/sgp4/) и spacetrack ( https://pypi.org/project/spacetrack/).

Пример кода мог бы выглядеть так:

from sgp4.earth_gravity import wgs84
from sgp4.io import twoline2rv
from spacetrack import SpaceTrackClient 
from datetime import datetime

#generate TLE from database    
st = SpaceTrackClient('YOUR_USERNAME', 'YOUR_PASSWORD')
tle = st.tle_latest(norad_cat_id=[<ISS_NORAD_CAT_ID>], ordinal=1, format='tle')

line1 = tle[:69]
line2 = tle[70:-7]

#create satellite object
satellite = twoline2rv(line1, line2, wgs84)

date_time = datetime.utcnow()

#find position
sat_position, sat_velocity = satellite.propagate(date_time.year, date_time.month,... 
                   date_time.day, date_time.hour, date_time.minute, date_time.second)

Используйте собственное имя пользователя, пароль и идентификатор norad. добро пожаловать в stackru:)

Другие вопросы по тегам