椭圆轨道的周期性运动轨道

2024-06-02 21:44
文章标签 运动 轨道 椭圆 周期性

本文主要是介绍椭圆轨道的周期性运动轨道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景介绍

本节将从轨道六根数的角度,探究目标星为椭圆轨道,追踪星周期性环绕目标的必要条件。根据航天动力学的原理,对于一个椭圆轨道,其轨道能量为

\varepsilon=-(\mu/2a)

对于能够不产生漂移的情况,绕飞编队的能量\varepsilon_{i}。对于追踪星到目标星的能量差,可以写

\delta\varepsilon=\varepsilon_{i}-\varepsilon=(V^{2}_{pi}/2-\mu/r_{Pi})-(V_{p}^2-\mu/r_p)

因此,对于零能量差的形式可以写为

V_{Pi}^{2}-V_{P}^{2}=2\mu(\frac{r_p-r_{pi}}{r_p r_{pi}})

通过使用下列离心率的关系

e=1-\frac{r_p}{a}

式中:r_p为轨道近地点位置,所以离心率偏差\delta e_{i}可以写为近地点角的偏差\delta r_{i},即

\delta e_{i}=e_i-e=(1-\frac{r_{pi}}{a})-(1-\frac{r_p}{a})=-(\delta r_i/a)

通过对上式修改,可以得到

\frac{V_{pi}}{V_p}=\sqrt{1-\frac{2\mu}{V_p^{2}}[\frac{\delta r_i}{a^2(1-e)(1-e_i)}]}=\sqrt{1+\frac{2\mu}{aV_p^{2}}[\frac{\delta e_{i}}{(1-e)(1-e_i)}]}

上述是微分能量的精确表达式,注意到V_{pi}e_i存在复杂的耦合关系。最后的表达式近似表达为

\frac{V_{pi}}{V_p}\approx1+\frac{\mu}{aV_p^2}[\frac{\delta e_i}{(1-e)^2}]

假设\left | \delta e_i \right | \ll1V_p\geq V_{cs}。在这里V_{cs}=\sqrt{\frac{\mu}{a}}是给定半长轴圆轨道的速度

V_p^2=\frac{\mu(1+e)}{a(1-e)}

所以V_p\geq V_{cs},对于任意0\leq e<1,等式被写为

\delta V_{pi}\approx\frac{\mu}{aV_p}[\frac{\delta e_i}{(1-e)^2}]=-\frac{\mu}{a^2V_p}[\frac{\delta r_i}{(1-e)^2}]=-\frac{n\delta r_{i}}{(1-e)^{\frac{3}{2}}(1+e)^{\frac{1}{2}}}

根据运动学关系\delta \boldsymbol{V}_{\textup{abs}}=\delta \boldsymbol{V}_{\textup{rel}}+\boldsymbol{\omega} \times \delta\boldsymbol{ r},在线性化的框架中,对于给定的几何形状,可以计算按到底层中心的参考的微分速度,在绝对惯性坐标系下,目标星在近地点的角速度

\omega =\dot{\theta }(0)=\frac{n(1+e)}{(1-e)^{\frac{3}{2}}(1+e)^{\frac{1}{2}}}

在目标星的相对坐标系,追踪星的速度可以写为

\delta V_{P_{\textup{abs}}}=-\frac{n(2+e)\delta r_i}{(1-e)^{\frac{3}{2}}(1+e)^{\frac{1}{2}}}

在VVLH坐标系下,初始条件满足关系式即为

\frac{z(0)}{x^{'}(0)}=\frac{n(2+e)}{(1+e)^{\frac{1}{2}}(1-e)^{\frac{3}{2}}}

二、STK仿真验证

下面这段代码,在之前TH方程的基础上,在STK添加VVLH报表后,进行仿真得到的结果

% 使用STK验证VVLH坐标系
clc;clear
uiApplication = actxGetRunningServer('STK12.application');
root = uiApplication.Personality2;
checkempty = root.Children.Count;
if checkempty ~= 0root.CurrentScenario.Unloadroot.CloseScenario;
end
root.NewScenario('VVLH');
StartTime = '26 Jan 2024 04:00:00.000';    % 场景开始时间
StopTime = '10 Feb 2024 04:00:00.000';     % 场景结束时间
root.ExecuteCommand(['SetAnalysisTimePeriod * "',StartTime,'" "',StopTime,'"']);
root.ExecuteCommand(' Animate * Reset');
SatName = 'Target';       %  SAR_   GX_   Sat_  GX_1_  SAR_1_
satellite = root.CurrentScenario.Children.New('eSatellite', SatName);
satellite.SetPropagatorType('ePropagatorAstrogator');   %  不设置的时候默认为二体模型  ePropagatorJ4Perturbation
satellite.Propagator;
Perigee=6378.137+500;
Ecc=0.1;
sma=Perigee/(1-Ecc);
Inc=30;
w=0;
RAAN=0;
TA=0;
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList Initial_State Propagate']);
InitialState=satellite.Propagator.MainSequence.Item(0);
%% 初始化卫星参数
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.CoordinateType Modified Keplerian']);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Epoch ',StartTime,' UTCG']);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.sma ',num2str(sma),' km']);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ecc ',num2str(Ecc)]);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.inc ',num2str(Inc),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.w ',num2str(w),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.RAAN ',num2str(RAAN),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.TA ',num2str(TA),' deg']);
%% 二体传播
Propagate=satellite.Propagator.MainSequence.Item(1);
Propagate.PropagatorName='Earth Point Mass';
root.ExecuteCommand(['Astrogator */Satellite/',SatName,' RunMCS']);% 插入目标星
SatName2 = 'Chaser';       %  SAR_   GX_   Sat_  GX_1_  SAR_1_
satellite2 = root.CurrentScenario.Children.New('eSatellite', SatName2);
satellite2.SetPropagatorType('ePropagatorAstrogator');   %  不设置的时候默认为二体模型  ePropagatorJ4Perturbation
satellite2.Propagator;
InitialState2=satellite2.Propagator.MainSequence.Item(0);
InitialState2.CoordSystemName='Satellite/Target VVLH';
Z=0.1;
n=sqrt(3.986e5/sma^3);
Vx1 =  n*(2+Ecc);
Vx2 = (1+Ecc)^(1/2)*(1-Ecc)^(3/2);
Vx  = Vx1/Vx2 * Z;InitialState2.Element.X=0;
InitialState2.Element.Y=0;
InitialState2.Element.Z=Z;
InitialState2.Element.Vx=Vx;
InitialState2.Element.Vy=0;
InitialState2.Element.Vz=0;
Propagate2=satellite2.Propagator.MainSequence.Item(1);
Propagate2.PropagatorName='Earth Point Mass';
root.ExecuteCommand(['Astrogator */Satellite/',SatName2,' RunMCS']);% 报告二颗卫星的三维关系
satellite.VO.OrbitSystems.InertialByWindow.IsVisible=0;
satellite2.VO.OrbitSystems.InertialByWindow.IsVisible=0;
satellite2.VO.OrbitSystems.Add('Satellite/Target VVLH System')
satellite.VO.Vector.RefCrdns.Item(2).Visible=1;targetdata=root.ExecuteCommand(['Report_RM */Satellite/Target  Style "VVLH" TimePeriod "26 Jan 2024 04:00:00.000" "26 Jan 2024 16:00:00.000" TimeStep 60']);
Num=targetdata.Count;
for j=1:Num-2struct=regexp(targetdata.Item(j),',','split');Tar_x(j)=str2double(struct{2});Tar_y(j)=str2double(struct{3});Tar_z(j)=str2double(struct{4});
end
%
figure(1)
plot(Tar_x(1:220),Tar_z(1:220));set(gca,'XDir','reverse');
set(gca,'YDir','reverse');
xlabel('X axis(km)','FontName','Times New Roman')
ylabel('Z axis(km)','FontName','Times New Roman')
title('e=0.1,Perigee=500km','FontName','Times New Roman')figure(2)
plot(Tar_x(1:220),Tar_y(1:220));set(gca,'XDir','reverse');
xlabel('X axis(km)','FontName','Times New Roman')
ylabel('Y axis(km)','FontName','Times New Roman')
title('e=0.1,Perigee=500km','FontName','Times New Roman')
grid on

这篇关于椭圆轨道的周期性运动轨道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025170

相关文章

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Unity3D 运动之Move函数和translate

CharacterController.Move 移动 function Move (motion : Vector3) : CollisionFlags Description描述 A more complex move function taking absolute movement deltas. 一个更加复杂的运动函数,每次都绝对运动。 Attempts to

运动耳机哪个牌子的质量好?五款口碑绝佳机型安利!

​喜欢户外活动的你,肯定是个有格调的人。想象一下,如果在户外的时候,能戴上一款耳机,不仅跟环境搭,还能让你享受到超棒的音乐,那感觉得多爽!开放式耳机就是为这个目的设计的,它不塞耳朵,戴着更舒服,音质也棒,让你在户外能更好地感受到周围自然的声音。这耳机现在超受欢迎,作为一个既爱户外又爱数码的发烧友,我自己也试过不少款,它们真的给我的户外探险加了不少分。接下来,我会跟大家分享这些耳机的亮点,帮你挑出自

生命在于运动

程序员和设计师大部分时间都坐在电脑前。有效的锻炼有助于他们更好地工作。 传统的: 当坐在电脑桌前的时候 脚触地。双手在肘部弯曲。打字时手应搁在桌子上。键盘和鼠标应在触手可及的地方。显示屏应在视线水平上,不高不低。光线最好应来自上方。即光线应该从天花板上照下来。每隔20分钟远眺。可降低眼睛长时间盯着近距离物体产生的疲劳。鼠标和手差不多大小。使用全尺寸符合人体工学的键盘。我个人比较喜欢Mi

(4)SVG-path中的椭圆弧A(绝对)或a(相对)

1、概念 表示经过起始点(即上一条命令的结束点),到结束点之间画一段椭圆弧 2、7个参数 rx,ry,x-axis-rotation,large-arc-flag,sweep-flag,x,y (1)和(2)rx,ry rx:椭圆的x轴半径(即水平半径) ry:椭圆的y轴半径(即垂直半径) 这两个参数好理解,就是椭圆的两条对称轴半径,相等即为圆 也可以写比例,写比例时默认用符合条件

周期性清除Spark Streaming流状态的方法

在Spark Streaming程序中,我们经常需要使用有状态的流来统计一些累积性的指标,比如各个商品的PV。简单的代码描述如下,使用mapWithState()算子: 现在的问题是,PV并不是一直累加的,而是每天归零,重新统计数据。要达到在凌晨0点清除状态的目的,有以下两种方法。 编写脚本重启Streaming程序 用crontab、Azkaban等在凌晨0点调度执行下面的Shell脚本

国内领先线上运动平台:如何借助AI技术实现业务腾飞与用户体验升级

&nbsp;“ 从智能训练到身体分析,再到辅助判决,AI技术正以惊人的速度渗透进体育和健身领域,为运动员和健身爱好者提供了前所未有的个性化体验。 ” AI,运动的智能伴侣 在巴黎奥运会上,AI技术的运用成为了焦点。它不仅为运动员提供了精准的训练指导,还通过对运动员身体状况的实时分析,帮助他们避免潜在的运动伤害,提升竞技状态。 同时,AI在辅助判决上的应用,确保了比赛的公平与

IMU腕带评估轮椅用户运动健康

近期,美国的研究团队利用惯性测量单元(IMU)和机器学习来准确评估手动轮椅使用者的运动健康状况,这在康复训练和慢性病管理领域具有广阔的应用前景。 研究小组将运用高性能的IMU传感器固定到轮椅使用者佩戴的手腕带上,用来监测并记录轮椅推进过程中的运动数据。实验设置了不同强度的六分钟推力测试,结果证实仅使用IMU传感器就能准确捕捉到轮椅使用者的速度、距离和节奏变化,为心血管健康评估提供

磁吸轨道灯的优缺点深度解析:为你的家居照明提供新选择

在现代家居装修中,照明设计已成为提升居住品质的重要一环。磁吸轨道灯作为一种新兴的照明解决方案,以其独特的灵活性和美观性逐渐受到市场的青睐。然而,任何产品都有其两面性,磁吸轨道灯也不例外。本文将深入探讨磁吸轨道灯的优缺点,并为你种草与无主灯设计相关的灵感,同时确保内容遵循各大平台的规范,避免任何违规营销行为。 磁吸轨道灯的优点 1. 高度灵活性 磁吸轨道灯的最大亮点在于其高度的灵活性。用户可

论文速读|基于手臂约束的轮腿机器人运动操控课程学习

项目地址:Arm-Constrained Curriculum Learning for Loco-Manipulation of the Wheel-Legged Robot 本文提出了一种用于轮腿机器人局部操控的强化学习框架,使它们能够在高度动态的情况下执行一系列复杂的操作任务。通过引入臂约束网络和奖励感知课程学习方法,解决了引入机械臂带来的稳定性、安全性和效率挑战。仿真和真实机器人实验