Почему я получаю разницу между "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, могу ли я предложить немного другой подход?
- Значения TLE для космических объектов доступны по адресу: https://www.space-track.org/, поэтому зарегистрируйтесь там.
- Затем найдите положение спутника в 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:)