본문 바로가기
항공우주/우주역학

궤도요소 (COE)로 부터 위치 및 속도벡터 계산

by 깊은대학 2023. 7. 31.

우주비행체의 위치벡터 및 속도벡터를 궤도요소(COE, classical orbital elements)로 변환할 수 있었다 (https://pasus.tistory.com/287). 이번에는 이와 반대로 궤도요소를 위치벡터와 속도벡터로 변환하는 방법에 대해서 알아보기로 하자.

시간 t=t0 에서 주어진 궤도요소 (a, e, i, Ω, ω, θ(t0)) 에서 위치벡터 r 과 속도벡터 v 를 구하는 과정은 두 단계로 나누어진다. 궤도중심좌표계(perifocal frame)에서 위치벡터와 속도벡터를 구하는 단계와 좌표변환을 통하여 ECI좌표계로 이들 벡터를 변환하는 단계이다.

 

 

먼저 궤도중심좌표계에서 위치벡터와 속도벡터를 구하는 단계이다.

다음 그림과 같이 (e^r, e^θ, e^z) 를 기저벡터로 하는 새로운 극좌표계 {q} 를 도입하기로 한다. e^r 축은 벡터 r 을 향하며 e^z 는 궤도중심좌표계 {p}p^3 와 동일하다.

 

 

극좌표계 {q} 에서 우주비행체의 위치벡터를 표현하면 다음과 같다.

 

(1)r=r e^r

 

여기서 거리 r 은 다음과 같이 궤도요소의 함수로 표현된다.

 

(2)r=p1+ecosθ

 

속도벡터는 식 (1)을 ECI좌표계에서 미분하면 된다. 궤도중심좌표계 {p} 는 ECI좌표계 {i} 대해서 고정이므로 속도벡터는 기본운동학방정식(BKE)을 이용하면 다음과 같이 계산된다 (https://pasus.tistory.com/121).

 

(3)v=idrdt=pdrdt=qdrdt+pωq×r

 

여기서  pωq=θ˙ p^3=θ˙ e^z 이므로 위 식은 다음과 같이 된다.

 

(4)v=r˙ e^r+rθ˙ e^θ

 

한편 각운동량 벡터는 h=r×v 이므로 식 (1)과 (4)를 이용하면 h=r2θ˙ p^3 이기 때문에 각운동량의 크기는 h=r2θ˙ 가 된다. 따라서

 

(5)rθ˙=hr

 

가 된다. h=μp 의 관계식과 식 (2)를 위 식에 대입하면

 

(6)rθ˙=μp(1+ecosθ)

 

가 된다. 식 (2)를 미분하면

 

(7)r˙=peθ˙sinθ(1+ecosθ)2=rθ˙esinθ1+ecosθ

 

가 되므로 식 (6)을 위 식에 대입하면

 

(8)r˙=μpesinθ

 

가 된다. 식 (6)과 (8)을 식 (4)에 대입하면 속도벡터는

 

(9)v=μpesinθ e^r+μp(1+ecosθ) e^θ

 

가 된다. 한편 좌표계 {p} 에서 {q} 로의 방향코사인행렬 (DCM)은

 

(10)Cqp=C(z,θ)=[cosθsinθ0sinθcosθ0001]

 

이므로 식 (1)과 (9)를 궤도중심좌표계로 표현하면 다음과 같다 (https://pasus.tistory.com/83).

 

(11)r=rcosθ p^1+rsinθ p^2v=μpsinθ p^1+μp(e+cosθ) p^2

 

식 (11)은 우주비행체의 위치벡터와 속도벡터를 궤도중심좌표계로 표현한 식이다.

 

 

이제 식 (11)을 ECI좌표계로 변환하면 된다. ECI좌표계 {i} 에서 궤도중심좌표계 {p} 로의 DCM은 다음 그림과 같이 연쇄적인 좌표축 회전으로 표현할 수 있다. 우선 ECI좌표계의 i^3 축으로 Ω 만큼 회전한 후, 돌아간 좌표계의 i^1 축으로 i 만큼 회전하고, 다시 돌아간 좌표계의 i^3 축으로 ω 만큼 회전하면 궤도중심좌표계로의 변환이 완성된다.

 

 

따라서

 

(12)Cpi=C(z,Ω) C(x,i) C(z,ω)=[cΩcωsΩcisωcΩsωsΩcicωsΩsisΩcω+cΩcisωsΩsω+cΩcicωcΩsisisωsicωci]

 

가 된다. 여기서 c=cos, s=sin 을 의미한다. 식 (11)과 (12)를 이용하여 위치벡터와 속도벡터를 ECI좌표계로 표현하면 다음과 같다.

 

(13)ri=Cpi rpvi=Cpi vp

 

여기서 벡터 rpvp 의 성분은 식 (11)의 축 성분이며 ri=[r1  r2  r3]Tvi=[v1  v2  v3]T 는 식 (14)의 축 성분을 성분으로 하는 벡터이다.

 

(14)r=r1 i^1+r2 i^2+r3 i^3v=v1 i^1+v2 i^2+v3 i^3

 

예를 들어서, 우주비행체의 궤도요소 (a, e, i, Ω, ω, θ) 가 다음과 같이 주어졌다면,

 

a=8788.1 km,     e=0.1712,     i=153.250Ω=255.300,     ω=20.070,     θ=28.450

 

위치벡터와 속도벡터는 각각 다음과 같이 계산된다.

 

r=6044.2 i^13491.6 i^2+2500.2 i^3 (km)v=3.4587 i^1+6.6171 i^2+2.5326 i^3 (km/sec)

 

다음은 궤도요소를 위치벡터와 속도벡터로 변환해 주는 매트랩 코드다.

 

function [r,v] = coe2rv(a,e,i,W,w,theta)

% [r,v]=coe2rv(a,e,i,W,w,theta)
% Converting orbital elements to vectors R and V in inertial frame,
%        where V=dR/dt in inertial frame.
% Input  (a, e, i, W, w, theta) in (km, sec) and degrees (p=a(1-e^2))
%        put undefined values as 0.
% Output (R, V) in km, km/s
%
% coded by st.watermelon

mu = 398600; % gravitational parameter km^3/s^2

p = a*(1-e^2);
theta = theta*pi/180;
sthe = sin(theta); 
cthe = cos(theta);
mup = sqrt(mu/p);

s_r = p/(1+e*cthe);
r_o = [s_r*cthe s_r*sthe 0]'; % in orbital frame
v_o = [-(mup*sthe) (mup*(e+cthe)) 0]';

C = eci2perifocal(i,W,w);
r = C*r_o;
v = C*v_o;

end

% DCM ECI to Perifocal
function C = eci2perifocal(i,W,w)

i = i*pi/180;
W = W*pi/180;
w = w*pi/180;

ci = cos(i); si = sin(i);
cW = cos(W); sW = sin(W);
cw = cos(w); sw = sin(w);

C1 = [cW -sW 0; sW cW 0; 0 0 1];
C2 = [1 0 0; 0 ci -si; 0 si ci];
C3 = [cw -sw 0; sw cw 0; 0 0 1];

C = C1*C2*C3;
end

 

 

댓글