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

[B-Plane] B-평면 타켓팅 - 1

by 깊은대학 2025. 1. 30.

B-평면 타겟팅(B-plane targeting)은 우주 탐사에서 행성 플라이바이(flyby)나 행성의 접근 경로를 설계할 때 사용되는 중요한 개념이다. B-평면 타켓팅의 목표는 B-평면 상에서 특정 목표점을 맞추는 것이며 이 과정을 통해서 행성 플라이바이, 궤도 진입 (orbit insertion) 또는 행성 착륙 목표 지점 타겟팅의 조건을 만족시킬 수 있다.

또한 행성 간 임무를 수행하는 동안 우주비행체는 섭동력의 영향을 받아 궤도가 원하는 임무 궤도에서 벗어날 수 있으므로 현재 우주비행체의 상태벡터와 목표점 좌표를 바탕으로 오차를 보정하기 위한 궤적수정기동(TCM, trajectory correction manuever)을 설계하는 데에도 B-평면 타겟팅을 적용할 수 있다.

먼저 B-평면 타켓팅과 관련하여 유용한 3가지 알고리즘을 소개한다.
첫번째 알고리즘은 쌍곡선 초과속도(hyperbolic excess velocity) 벡터 v, 설계자가 목표로 하는 근지점(periapsis 또는 perigee)까지의 거리 rp 및 궤도의 경사각 i 가 입력으로 주어졌을 때, B-평면 파라미터를 계산하고 이를 기반으로 도착 쌍곡선 궤도를 결정하는 알고리즘이다. 이 알고리즘을 이용하면 B-평면 타겟팅을 위한 조준점(aim point)을 설정할 수 있다. 여기서 쌍곡선 초과속도 벡터는 행성간 비행단계의 결과로 얻어진다. 알고리즘은 다음과 같다.

0. 입력: v, rp, i

1. v 로 부터 B-평면 좌표축 S^,R^,T^ 을 계산한다.

            S^=v|v|,     T^=S^×N^|S^×N^|,     R^=S^×T^

2. S^ 으로부터 적경 (RA, right ascension) α 과 적위 (Dec, declination) δ 를 계산한다.

            α=tan1SySx,     δ=sin1Sz

3. rp, i 로 부터 Bϕ 를 계산한다.

            B=rp1+2μv2rp
            cos(ϕ)=cosicosδ

여기서 위 식에 의하면,

 

|cos(ϕ)|=|cosicosδ|1

 

이므로 |cosδ||cosi| 또는 |sinδ||sini| 을 만족해야 한다. 즉 |δ||i| 이어야 하므로 궤도의 경사각은 진입 점근선의 적위보다 크거나 같게 설정해야 한다.

4. Bϕ 로 부터 BT, BR 및 B-벡터를 계산한다.

            BT=Bcosϕ,     BR=Bsinϕ
            B=BTT^+BRR^

5. 도착 쌍곡선 궤도 파라미터를 계산한다.

      5-1. 에너지와 장반경 a 계산

            E=v22=μ2a

      5-2. 이심율 계산

            e=1rpa

      5-3. 무한대에서 실제비행각 계산

            θ=cos1(1e)

      5-4. 점근선의 각도 β 및 회전각 δ 계산

            β=cos1(1e),     δ=2sin1(1e)

 

 

다음은 이 알고리즘의 매트랩 코드다.

 

vri2bplane.m

 

function [bplane, hyper] = vri2bplane(vinf_vec, rp, i, mu)
%
% [bplane, hyper] = vri2bplane(vinf_vec, rp, i, mu)
% input
%   vinf_vec: excessive velocity vector wrt target planet
%   rp : perigee
%   i: inclination
%   mu: gravitational parameter of target planet (km^3/s^2)
%       Mars - 42 828
%       Venus - 324 900
%       Moon - 4903
%       Earth - 398 600
%
% output
%   bplane.S_hat: incoming asymptote vector
%   bplane.T_hat: B-plane axis
%   bplane.R_hat: 
%   bplane.B_vec: B-vector
%   bplane.BT: impact parameter (km)
%   bplane.BR
%   bplane.phi: B-vector angle (rad)
%
%   hyper.vinf: excessive velocity (km/s)
%   hyper.RA (rad)
%   hyper.Dec
%   hyper.a: SMA
%   hyper.e: ECC
%   hyper.rp: perigee
%   hyper.the_inf: true anomaly at inifinity
%   hyper.delta: turn angle
%   hyper.beta: asymptote angle
%
% (c) st.watermelon

% 1. B-plane axes
vinf = norm(vinf_vec);
S_hat = vinf_vec/vinf;
N_hat = [0 0 1]';
T_hat = cross(S_hat, N_hat);
T_hat = T_hat/norm(T_hat);
R_hat = cross(S_hat, T_hat);

% 2. asymptote RA and Dec
RA = atan2(S_hat(2), S_hat(1));
Dec = asin(S_hat(3));

% 3. B-plane paramters
B = rp*sqrt(1+2*mu/(vinf^2*rp));
phi = -acos(cos(i)/cos(Dec));
if Dec<0
    phi = -phi;
end

% 4. B-vector
BT = B*cos(phi);
BR = B*sin(phi);

B_vec = BT*T_hat + BR*R_hat;

% 5. hyperbolic parameters
% 5-1. energy and SMA
E = vinf^2/2;
a = -mu/(2*E);

% 5-2. eccentricity
e = 1-rp/a;

% 5-3. true anomaly at inifinity
the_inf = acos(-1/e);

% 5-4. turn angle and asymptote angle
delta = 2*asin(1/e);
beta = acos(1/e);



%%
% output

bplane.S_hat = S_hat;
bplane.T_hat = T_hat;
bplane.R_hat = R_hat; 
bplane.B_vec = B_vec;
bplane.BT = BT;
bplane.BR = BR;
bplane.phi = phi;

hyper.vinf = vinf;
hyper.RA = RA;
hyper.Dec = Dec;
hyper.a = a;
hyper.e = e;
hyper.rp = rp;
hyper.the_inf = the_inf;
hyper.delta = delta;
hyper.beta = beta;

 

 

 

첫번째 알고리즘이 목표로 하는 B-평면 파라미터를 계산하는 것이었다면, 두번째 알고리즘은 실제 우주비행체의 위치벡터 r 과 속도벡터 v 를 이용하여 B-평면과 쌍곡선궤도의 파라미터를 계산하는 알고리즘이다.

0. 입력 r, v

1. rv 로 부터 각운동량벡터 h 와 이심율벡터 e 를 계산한다.

            h=r×v,     e=1μ(v×hμrr)

2. 쌍곡선 초과속도 v 를 계산한다.

            v=v22μr

3. 장반경 a 와 경사각 i 를 계산한다.

            E=v22=μ2a,     cosi=N^hh

4. 실제비행각과 근지점을 계산한다.

            cosθ=erer,     rp=a(1e)

5. 최근접 도달 시간(TCA)을 계산한다.

            tanhF2=e1e+1tanθ2
            tTCA=(a)3μ(FesinhF)

6. 무한대에서 실제비행각을 계산한다.

            θ=cos1(1e)

7. 점근선의 각도 β 및 회전각 δ 를 계산한다.

            β=cos1(1e),     δ=2sin1(1e)

8. B-평면 좌표축 S^, R^, T^ 을 계산한다.

            S^=ee2+e21e2h×eh
            T^=S^×N^|S^×N^|,     R^=S^×T^

9. B 를 계산한다.

            B=S^×hv
            BT=BT^,     BR=BR^
            tanϕ=BRBT

10. S^ 으로부터 적경 (RA, right ascension) α 과 적위 (Dec, declination) δ 를 계산한다.

            α=tan1SySx,     δ=sin1Sz

다음은 이 알고리즘의 매트랩 코드다.

 

rv2bplane.m

 

function [bplane, hyper] = rv2bplane(r_vec, v_vec, mu)
%
% [bplane, hyper] = rv2bplane(r_vec, v_vec, mu)
% input
%   r_vec, v_vec : position and velocity vector (km, km/s) wrt target
%   mu: gravitational parameter of target planet (km^3/s^2)
%       Mars - 42 828
%       Venus - 324 900
%       Moon - 4903
%       Earth - 398 600
%
% output
%   bplane.S_hat: incoming asymptote vector
%   bplane.T_hat: B-plane axis
%   bplane.R_hat: 
%   bplane.B_vec: B-vector
%   bplane.BT: impact parameter (km)
%   bplane.BR
%   bplane.phi: angle (rad)
%
%   hyper.vinf: excessive velocity (km/s)
%   hyper.RA (rad)
%   hyper.Dec
%   hyper.a: SMA
%   hyper.e: ECC
%   hyper.i: inclination
%   hyper.the: true anomaly
%   hyper.rp: perigee
%   hyper.tca: time to closest approachs (sec)
%   hyper.the_inf: true anomaly at inifinity
%   hyper.delta: turn angle
%   hyper.beta: asymptote angle
%
% (c) st.watermelon


% 1. angluar momentum and eccentricity
r = norm(r_vec);
v = norm(v_vec);

h_vec = cross(r_vec, v_vec);
h = norm(h_vec);

e_vec = cross(v_vec, h_vec)/mu - r_vec/r;
e = norm(e_vec);

% 2. hyperbolic excessive velocity
vinf = sqrt(v^2-2*mu/r);

% 3. SMA and inlination
E = vinf^2/2;
a = -mu/(2*E);
i = acos([0 0 1]*h_vec/h);  

% 4. true anomaly and perigee
the=acos(e_vec'*r_vec/(e*r));
if (r_vec'*v_vec<0) the = -the; end

rp = a*(1-e);

% 5. TCA
tmp = sqrt((e-1)/(e+1))*tan(the/2);
F = 2*atanh(tmp);
tca = sqrt((-a)^3/mu)*(F-e*sinh(F));

% 6. true anomaly at infinity
the_inf = acos(-1/e);

% 7. asymptote angle and turn angle
beta = acos(1/e);
delta = 2*asin(1/e);

% 8. B-plane axes
S_hat = e_vec/e^2 + sqrt(e^2-1)/e^2 * cross(h_vec, e_vec)/h;
N_hat = [0 0 1]';
T_hat = cross(S_hat, N_hat);
T_hat = T_hat/norm(T_hat);
R_hat = cross(S_hat, T_hat);

% 9. B-vector
B_vec = cross(S_hat, h_vec)/vinf;
BT = B_vec'*T_hat;
BR = B_vec'*R_hat;

phi = atan2(BR, BT);

% asymptote RA and Dec
RA = atan2(S_hat(2), S_hat(1));
Dec = asin(S_hat(3));

% output

bplane.S_hat = S_hat;
bplane.T_hat = T_hat;
bplane.R_hat = R_hat; 
bplane.B_vec = B_vec;
bplane.BT = BT;
bplane.BR = BR;
bplane.phi = phi;

hyper.vinf = vinf;
hyper.RA = RA;
hyper.Dec = Dec;
hyper.a = a;
hyper.e = e;
hyper.i = i;
hyper.the = the;
hyper.rp = rp;
hyper.tca = tca;
hyper.the_inf = the_inf;
hyper.delta = delta;
hyper.beta = beta;

 

 

 

세번째는 플라이바이 또는 중력도움(gravity assist) 비행에 유용한 알고리즘으로서 진입과 진출 쌍곡선 초과속도 벡터인 v,inv,out 이 주어졌을 때, B-벡터와 근지점 거리 rp 를 구하는 알고리즘이다.

0. 입력 v,in, v,out

1. v,in 로 부터 S^ 를 계산한다.

            S^=v,in|v,in|

2. v,inv,out 로 부터 h^ 을 계산한다. h^h 와 같은 방향을 갖는 단위벡터다.

            h^=v,in×v,out|v,in×v,out|

3. R^, T^B^ 을 계산한다. B^ 은 B-백터와 같은 방향을 갖는 단위벡터다.

            T^=S^×N^|S^×N^|,     R^=S^×T^
            B^=S^×h^

4. 진입(incoming) 점근선과 진출(outgoing) 점근선 사이의 각도인 회전각(turn angle) δ 를 계산한다.

            cosδ=v,inv,out|v,in| |v,out|

5. 점근선의 각도 β 와 이심율 e 를 계산한다.

            β=πδ2,     cosβ=1e

6. rp 를 계산한다.

            e=1+rpv2μ        rp=μ|v,in|2(e1)

7. B 를 계산한다.

            B=μ|v,in|2e21
            B=B B^

 

 

'항공우주 > 우주역학' 카테고리의 다른 글

태양동기궤도(Sun Synchronous Orbit)  (0) 2025.02.23
[B-Plane] B-평면 타켓팅 - 2  (0) 2025.01.31
[B-Plane] 좌표변환  (0) 2025.01.04
[B-Plane] B-평면의 정의  (0) 2024.12.30
쌍곡선 궤도의 기하학  (0) 2024.12.27

댓글