-
python sgp4 함수 사용하여 인공위성의 궤적 그리기항법연구실 2025. 12. 10. 17:01
SGP4(Simplified General Perturbations model 4)
TLE(Two Line Element)데이터를 입력으로 받아
위성의 위치와 속도를 예측하는 데 사용되는 수치 전파 모델으로
ECI좌표계를 사용한다.
지구를 공전하는 대부분의 저궤도(LEO)위성과 중궤도(MEO)위성의 궤도를
효율적이고 빠르게 예측하기 위해 개발되었다.
SGP4는 수치 적분과 같은 고전적인 정밀 궤도 전파 모델에 비해 정확도는 낮지만
계산 속도가 매우 빠르고 TLE라는 표준화된 데이터를 사용하므로
다수의 위성 궤도를 실시간으로 추적 및 예측하는데 가장 널리 사용된다.
TLE 데이터

실제로 관측된 위성의 위치를 SGP4 모델의
평균 궤도 요소(Mean Elements)형식으로 변환하여 저장한 텍스트 파일
그냥 위성의 궤도 정보를 담고 있는 간결한 텍스트 파일이란 것만 알면 되고
해석이 더욱 중요하니 해석을 좀 더 자세히 살펴보겠다.
LINE 1: 1 58463U 23185B 25343.84992862 .00003940 00000-0 31276-3 0 9998
LINE 2: 2 58463 97.6319 46.6132 0022186 252.5687 107.3112 15.00878825110886* 실제 운용중인 한국의 인공위성 KORSAT 7의 데이터를 가져왔다.
LINE 1(첫 번째 줄 해석)
열(Col) 값 항목 의미 1 1 Line Number 첫 번째 줄을 나타낸다 3-7 58463 Satellite Number NORAD 카탈로그 번호이다. (KORSAT-7의 식별번호이다.) 9 U Classification 분류코드 - U는 Unclassified, 비밀 등급이 아님 10-17 23185B International Designator 발사 정보로 *23 : 발사 연도, 185: 해당 연도의 185번째 발사체, *B 185번째 발사체의 두 번째 구성 요소 19-32 25343.84992862 Epoch Time TLE의 기준 시점, *25: 연도, 343.84992862 : 해당연도의 343일째 0.84992862 일 시각 34-43 .00003940 First Derivative 평균 운동 변화율 : 대기 항력 등으로 인한 위성 속도의 변화율 45-52 00000-0 Second Derivative 평균 운동의 2차 변화율 : first값의 미분 54-61 31276-3 BSTAR 항력 계수(B*) : 대기 밀도와 위성 단면적 관련 값 63 0 Ephemeris Type 사용된 궤도 전파 모델 유형 65-68 999 Element Number TLE가 갱신된 횟수 69 8 Checksum 데이터 무결성 검증을 위한 체크섬 열 (Col.) 값 항목 (영문) 의미 (핵심) 1 2 Line Number 두 번째 줄을 나타낸다. 3-7 58463 Satellite Number NORAD 카탈로그 번호 (LINE 1과 동일) 9-16 97.6319 Inclination 궤도 경사각 (i): 적도면과 궤도면이 이루는 각도입니다. 97.6319 [deg] 18-25 46.6132 Right Ascension 승교점 적경 (Omega): 적도면을 통과하는 노드의 경도 27-33 0022186 Eccentricity 이심률 (e): 궤도의 타원 정도
0.0022186 (소수점 앞에 .이 생략됨) ⟶ 거의 원에 가까운 궤도35-42 252.5687 Argument of Perigee 근지점 인자 (omega): 적도에서 근지점까지의 각도. 44-51 107.3112 Mean Anomaly 평균 근점 이각 (M): TLE 기준 시점에서의 위성 위치 (각도). 53-63 15.00878825 Mean Motion 평균 운동 (n): 위성이 하루에 지구를 도는 횟수 (15.00878825 궤도/일) 64-68 110886 Revolution No. TLE 기준 시점까지의 누적 공전 횟수입니다. 69 6 Checksum 데이터 무결성 검증을 위한 체크섬 (계산에 사용되지 않음)
TLE와 SGP4의 관계성
TLE와 SGP4, 그럼 긴밀한 관계의 알고리즘과 데이터는 어떻게 개발된 것일까 ?
1960년대 초, 미국 국방부(NORAD)는 수많은 인공위성 궤도 정보를 효율적으로 저장하고 배포할 필요가 있었다.
그런데 위성의 궤도 정보는 매일 갱신되고 그 인공위성의 개수가 한두개가 아니었기에 극도로 간결한 형식으로 표준화하여 배포하게된다.
그렇게 위성의 궤도 정보를 텍스트 2줄의 간결한 형식으로 표현하는 TLE가 만들어졌는데 ...
문제는 TLE가 너무 간결해서 이 데이터만으로는 대기 항력(Drag)이나 지구의 찌그러짐(J2)같은
섭동 효과를 반영하여 미래 궤도를 정확히 예측할 수 없었다.
그래서 TLE라는 간결한 평균 궤도 요소 데이터를 입력받아 실제 섭동으로 인한 궤도 변화를 고려하여
정확하고 효율적인 미래 궤도를 예측하기 위해 SGP4모델이 개발되었다.
따라서 TLE와 SGP4는 서로 상호의존적이고 TLE는 SGP4 모델에 의해 가장 잘 해석되도록 만들어졌다.
위성 궤도 정보 사이트
N2YO.com - real time satellite tracking
Select any satellite orbiting the Earth and check where it is located now
www.n2yo.com
아 너무 휘갈긴 (?) TLE를 이용해서 정밀한 인공위성 궤도를 예측하기 위해서는 정밀하게 섭동까지 보정해줄 수 있는 SGP4 알고리즘을 사용해야하구나 ! 를 알게 되었다.
SGP4알고리즘 사용하기
그럼 Python에서 실제로 TLE데이터를 가지고 SGP4 알고리즘을 사용하여 궤도를 그릴 때,
skyfield 라이브러리를 사용한다.
LINE1 = '1 58463U 23185B 25343.84992862 .00003940 00000-0 31276-3 0 9998' LINE2 = '2 58463 97.6319 46.6132 0022186 252.5687 107.3112 15.00878825110886' satellite = EarthSatellite(LINE1, LINE2, NAME, ts) geocentric = satellite.at(times)satellite라는 EarthSatellite객체를 생성할 때 TLE문자열을 SGP4 모델의 입력 형식에 맞게 파싱하고 알고리즘을 초기화한다.
geocentric에서는 satellite를 각 시간에 대해 SGP4알고리즘을 반복적으로 호출하여 위성의 ECI위치를 계산한다.
lat, lon, alt = geocentric.frame_latlon(itrs)SGP4는 ECI(지구 중심 관성)좌표를 반환하는데 해당 코드는 skyfield의 천문학 기능을 이용하여 ECI좌표를 사람들에게 익숙한 지리 좌표(위/경도)로 변환한다.

그리고 위성의 궤적을 그리면 이런 식으로 반환되는 것을 확인할 수 있다.
위성의 궤도 정보를 반환하는 데이터가 꽤나 많은 것 같다.
앞으로 배우는 내용 차근차근 정리해보아야겠다.
'항법연구실' 카테고리의 다른 글
앞으로 공부할 내용 (0) 2025.12.15 GPS raw 데이터 분석 - NMEA(GPGGA, GRPMC) (0) 2025.11.28 테일러 급수(Taylor Series) (0) 2025.11.19