한국군 최초의 정찰위성 1호가 2023년 12월 2일 발사에 성공하였다. 2024년에는 정찰위성 2호부터 4호까지 차례로 발사될 예정이라고 한다. 최근에는 전통적인 군사 영역은 물론이고 민간 영역에서도 우주 자산을 이용한 감시 및 정찰 활동이 빠르게 증가하고 있다.
참고로 감시(surveillance)와 정찰(reconnaissance)은 모두 정보 수집을 위한 활동이지만 시간과 임무의 구체성에서 차이가 있다. 감시는 주로 장기적으로 특정 지역이나 대상을 모니터링하여 정보를 수집하는 과정이다. 예를 들어 군사적인 목적으로 특정 지역을 지속적으로 관찰하는 것이 여기에 해당한다. 정찰은 일반적으로 특정 목적을 위한 한시적이고 전략적인 정보 수집에 중점을 둔다. 예를 들어 새로운 또는 알려지지 않은 지역의 상황을 파악하거나 적의 위치 등을 알아내는 것등이 이에 포함된다.
그렇다면 인공위성이 수행할 수 있는 감시정찰 영역은 어떻게 계산할 수 있을까.
먼저 인공위성의 고도가 큰 영향을 미칠 것이다. 고도가 높을 수록 인공위성이 수평선까지 '볼 수 있는' 시야 범위가 넓어지기 때문이다. 두번째는 인공위성 센서의 시야각(FOV, field of view)이다. 센서의 시야각이 넓을 수록 더 넓은 영역이 시야에 들어올 것이다. 실제 계산에는 특정 센서의 해상도, 대기 굴절, 타원형 지구의 곡률 등 세부적인 내용도 고려해야겠지만, 여기서는 원형 지구 가정하에 센서의 시야각과 인공위성의 고도를 통해 지표면에 닿는 센서의 범위를 이용하여 감시정찰 영역을 계산해보고자 한다.

위 그림에서 지구에 표시된 파란색 선은 궤도의 지상궤적(ground track)이다. A점은 인공위성의 위치를 지상에 투사시킨 점으로서 지표점(nadir)이다. 센서의 관측 중심선이 지표점을 향한다면 '센서가 볼 수 있는 영역'은 A점을 중심으로 한 노란색으로 빗금친 영역이다. 위성이 지구를 공전하고 있으므로 센서가 볼 수 있는 영역은 이동하면서 지상궤적을 중심으로 파란색 점선으로 표시된 일정 밴드폭을 형성할 것이다. 만약 센서의 관측 중심선이 약간 기울어져 C점을 향한다면 그 영역은 지상궤적에서 이격된 선을 중심으로 일정 밴드를 형성할 것이다.
이제 특정 싯점에서 형성되는 '센서가 볼 수 있는 영역', 즉 감시정찰 가능 영역을 계산해 보자.

위 그림에서 지구 표면에 두 개의 위치가 표시되어 있다. A점은 위성의 지표점(nadir)이고 B점은 위성 센서의 조준점이다.
여기서 목표는 위성의 고도와 센서의 시야각(FOV), 그리고 지표점(nadir)의 위치 좌표가 주어졌을 때, 지상 거리인
A점과 B점을 연결한 선을 포함하는 원을 기준으로 지구의 절단면을 그리면 아래 그림과 같다.

그림에서
지구 수평선의 조준각
피타고라스 정리를 이용하여
이제 여기서부터는 평면(plane)에서의 삼각함수 공식이 필요하다. 다음과 같은 삼각형이 있을 때, 세 각

제1코사인법칙은 다음과 같다.
여기서
제1코사인법칙 (5)를 이용하면
그림을 보면 정의상
지상 거리인
B점의 좌표를 계산하기 위해서는 구면(sphere)에서의 삼각함수 공식이 필요하다. 다음과 같은 삼각형이 구면에 있을 때, 세 각

코사인법칙은 다음과 같다.
지상 거리

B점의 위도
B점의 경도
또는 코사인법칙 (10) 에서
식 (12) 또는 (13)을 통하여
만약, 센서의 관측 중심선이 지표점(nadir)을 향하지 않고 기울어져 있다면 전체적인 기하학적 형상이 비대칭이 되어서 약간 더 복잡한 계산이 필요하다.

관측 중심선의 관측 중심각(center boresight angle)
그런 다음, 식 (6), (7), (8)을 이용하여 차례로
관측 중심선이 지면과 닿는 위치 C의 좌표
여기서
이다. 여기서
이고,
이다.
지금까지의 논의는 지구가 원형 구체라는 가정하에서 진행됐지만 실제로 지구는 적도면이 부풀어 오른 타원형 구체이므로 감시정찰 영역 계산에 있어서 약간의 오차가 내재되어 있다는 것을 알아야 한다.
정리하면 다음과 같다.
위성의 고도, 센서의 시야각이 주어졌을 때, 지상 거리는 다음과 같은 순서로 구할 수 있다.
[1] 식 (1)로
[2] 식 (2)로
[3] 식 (6)으로
[4] 식 (7)로
[5] 식 (8)로
[6] 가능한 방위각 (
이번에는 위성의 지표점(nadir)의 좌표, 고도, 센서의 시야각, 센서의 관측 중심각, 센서가 바라보는 방향각이 주어졌을 때, 지상 거리와 관측 중심의 지상 좌표는 다음과 같은 순서로 구할 수 있다.
[1] 식 (1)로
[2] 식 (2)로
[3] 식 (15)로
[4] 식 (6), (7), (8)로
[5]
[6] 식 (19)로
[7] 식 (18)로
[8] 식 (16)으로 관측 중심의 지상 좌표를 계산한다.
[9] 가능한 방위각
다음은 위 알고리즘을 매트랩 코드로 구현한 것이다.
surveillance.m
function [Lambda_hor, rho_hor, Lambda, lat_ctr, lon_ctr] = ...
surveillance(latA, lonA, h, fov, eta_ctr, beta_sens)
% surveillance ground range computation
% input:
% latA, lonA, h: latitude-longitude-height of nadir in (deg, km)
% fov: sensor field of view in deg
% eta_ctr: center boresight angle in deg
% beta_sens: sensor azimuth look-angle in deg
% output:
% Lambda_hor: maximum ground range in deg
% rho_hor: maximum slant range in km
% Lambda: ground range in deg
% lat_ctr, lon_ctr: latitude-longitude of center boresight in deg
%
% coded by st.watermelon
% constants
R_er = 6378.1363; % km
if nargin == 4
eta_ctr = 0;
beta_sens = 0;
elseif nargin == 5
beta_sens = 0;
end
% deg to rad
fov = fov*pi/180;
eta_ctr = eta_ctr*pi/180;
latA = latA*pi/180;
lonA = lonA*pi/180;
beta_sens = beta_sens*pi/180;
% horizon-boresight angle, eta_horizon
r_sat = R_er + h;
eta_hor = asin(R_er/r_sat);
% horizon-ground-range, Lambda_hor
Lambda_hor = acos(R_er/r_sat) * 180/pi;
% horizon slant range, rho_hor
rho_hor = r_sat*cos(eta_hor);
if eta_ctr == 0 % if sensor points nadir
% intermediate angle, gamma (>= pi/2)
eta = fov/2;
gamma = asin(r_sat*sin(eta)/R_er);
if gamma < pi/2
gamma = pi-gamma;
end
% slant range, rho
rho = R_er*cos(gamma) + r_sat*cos(eta);
% ground-range, Lambda (< pi/2)
Lambda = asin(rho*sin(eta)/R_er);
if Lambda >= pi/2
Lambda = pi-Lambda;
end
lat_ctr = latA*180/pi;
lon_ctr = lonA*180/pi;
Lambda = Lambda*180/pi;
else % if not
% max and min boresight angle, eta_max, eta_min
eta_max = eta_ctr + fov/2;
eta_min = eta_ctr - fov/2;
% intermediate angle, gamma (>= pi/2)
gamma_max = asin(r_sat*sin(eta_max)/R_er);
if gamma_max < pi/2
gamma_max = pi-gamma_max;
end
gamma_min = asin(r_sat*sin(eta_min)/R_er);
if gamma_min < pi/2
gamma_min = pi-gamma_min;
end
% slant range, rho_max, rho_min
rho_max = R_er*cos(gamma_max) + r_sat*cos(eta_max);
rho_min = R_er*cos(gamma_min) + r_sat*cos(eta_min);
% ground-range, Lambda_max, Lambda_min (< pi/2)
Lambda_max = asin(rho_max*sin(eta_max)/R_er);
if Lambda_max >= pi/2
Lambda_max = pi-Lambda_max;
end
Lambda_min = asin(rho_min*sin(eta_min)/R_er);
if Lambda_min >= pi/2
Lambda_min = pi-Lambda_min;
end
% total ground-range, Lambda_fov
Lambda_fov = Lambda_max - Lambda_min;
Lambda = Lambda_fov/2;
% ceteral line position
gamma_ctr = asin(r_sat*sin(eta_ctr)/R_er);
if gamma_ctr < pi/2
gamma_ctr = pi-gamma_ctr;
end
rho_ctr = R_er*cos(gamma_ctr) + r_sat*cos(eta_ctr);
Lambda_ctr = asin(rho_ctr*sin(eta_ctr)/R_er);
if Lambda_ctr >= pi/2
Lambda_ctr = pi-Lambda_ctr;
end
lat_ctr = asin(cos(Lambda_ctr)*sin(latA) ...
+sin(Lambda_ctr)*cos(latA)*cos(beta_sens));
del_lon_ctr = asin(sin(beta_sens)*sin(Lambda_ctr)/cos(lat_ctr));
lon_ctr = lonA+del_lon_ctr;
lat_ctr = lat_ctr*180/pi;
lon_ctr = lon_ctr*180/pi;
Lambda = Lambda*180/pi;
end
'항공우주 > 우주역학' 카테고리의 다른 글
섭동력을 받는 램버트 문제의 보정 해 (0) | 2024.04.12 |
---|---|
중력 영향권 (Sphere of Influence) (0) | 2024.01.08 |
램버트 문제 (Lambert’s problem)의 해 (0) | 2023.12.10 |
램버트 정리 (Lambert’s theorem) (0) | 2023.12.06 |
케플러 문제 (Kepler’s problem) - 5 (0) | 2023.12.02 |
댓글