这个例子比较了两体开普勒简化一般摄动-4 (SGP4)和简化深空摄动-4 (SDP4)轨道传播器预测的轨道。轨道传播器是一种求解器,用于计算运动主要受天体重力影响的物体的位置和速度。两体开普勒轨道传播器是基于相对两体模型的,该模型假定地球的重力场为球形,并忽略了第三体效应和其他环境扰动,因此是最不精确的。SGP4轨道传播器考虑了由地球几何阻力和大气阻力引起的长期和周期性轨道扰动,适用于轨道周期小于225分钟的近地卫星。SDP4轨道传播器以SGP4为基础,考虑了太阳和月球引力,适用于轨道周期大于等于225分钟的卫星。的默认轨道传播器satelliteScenario
轨道周期小于225分钟的卫星为SGP4,轨道周期小于225分钟的卫星为SDP4。
的方法创建卫星场景satelliteScenario
函数。设置开始时间为11-May-2020 12:35:38 PM UTC,停止时间为13-May-2020 12:35:38 PM UTCdatetime
函数。将采样时间设置为60秒。
开始时间= datetime(35 2020、5、11、12日,38);stopTime = startTime + days(2);sampleTime = 60;sc = satelliteScenario(开始时间、stopTime sampleTime)
sc =卫星场景与属性:StartTime: 11-May-2020 12:35:38 StopTime: 13-May-2020 12:35:38 SampleTime: 60观众:[0×0 matlabshared.卫星场景。卫星:[]地面站:[
从两行元素(TLE)文件向卫星场景添加三个卫星eccentricOrbitSatellite.tle
通过使用卫星
函数。TLE是一种数据格式,用于编码在特定时间定义的绕地物体的轨道元素。给第一颗卫星分配一个双体开普勒轨道传播器,给第二颗卫星分配SGP4,给第三颗卫星分配SDP4。
tleFile =“eccentricOrbitSatellite.tle”;tleFile satTwoBodyKeplerian =卫星(sc,...“名称”,“satTwoBodyKeplerian”,...“OrbitPropagator”,“two-body-keplerian”)
satTwoBodyKeplerian =卫星属性:名称:"satTwoBodyKeplerian" ID: 1圆锥传感器:[]Gimbals:[]发射器:[]接收器:[]访问:[]GroundTrack: [1×1 matlabshared.卫星场景。轨道:[1×1 matlabshared.satellitescenario.]轨道传播器:"two-body-kepler " markcolor: [1 0 0] marksize: 10 ShowLabel: 1 LabelFontColor: [1 0 0] LabelFontSize: 15
tleFile satSGP4 =卫星(sc,...“名称”,“satSGP4”,...“OrbitPropagator”,“sgp4”)
satSGP4 =卫星属性:名称:"satSGP4" ID: 2 ConicalSensors: [] Gimbals: [] transmitter: [] Receivers: [] access: [] GroundTrack: [1×1 matlabshared.卫星场景。轨道:[1×1 matlabshared.satellitescenario.]轨道传播器:"sgp4" markcolor: [1 0 0] marksize: 10 ShowLabel: 1 LabelFontColor: [1 0 0] LabelFontSize: 15
tleFile satSDP4 =卫星(sc,...“名称”,“satSDP4”,...“OrbitPropagator”,“sdp4”)
satSDP4 =卫星属性:名称:"satSDP4" ID: 3 ConicalSensors: [] Gimbals: [] transmitter: [] Receivers: [] access: [] GroundTrack: [1×1 matlabshared.卫星场景。轨道:[1×1 matlabshared.satellitescenario.]轨道传播器:"sdp4" markcolor: [1 0 0] marksize: 10 ShowLabel: 1 LabelFontColor: [1 0 0] LabelFontSize: 15
启动卫星场景查看器并通过使用satelliteScenarioViewer
函数。设置的可视化satTwoBodyKeplerian
红色,satSGP4
绿色,satSDP4
洋红色。
v = satelliteScenarioViewer (sc);satSGP4。markcolor = [0 1 0];satSGP4.Orbit。LineColor = [0 1 0];satSGP4。[0 1 0];satSDP4。markcolor = [1 0 1];satSDP4.Orbit。LineColor = [1 0 1]; satSDP4.LabelFontColor = [1 0 1];
把照相机的焦距调到satTwoBodyKeplerian
通过使用camtarget
函数。
camtarget (v, satTwoBodyKeplerian);
左键单击卫星场景查看器窗口内的任何位置,并在按住鼠标的同时移动鼠标来平移摄像机。使用滚轮调整缩放级别,将所有三个卫星带入视野。
通过使用玩
卫星场景下的功能。的玩
函数模拟指定的卫星场景开始时间
来StopTime
使用指定的步长SampleTime
,并在卫星场景查看器上播放结果。
玩(sc)
使用位于卫星场景查看器窗口底部的回放控件来控制回放速度和方向。再调一次焦距satTwoBodyKeplerian
通过使用camtarget
功能,并通过调整缩放级别将所有三个卫星带入视野。
camtarget (v, satTwoBodyKeplerian);
这三颗卫星的位置会随着时间的推移而发生变化。
利用该方法返回卫星在地心天体参照系(GCRF)中的位置和速度历史州
函数。
(positionTwoBodyKeplerian、velocityTwoBodyKeplerian、时间)=州(satTwoBodyKeplerian);[positionSGP4, velocitySGP4] =州(satSGP4);[positionSDP4, velocitySDP4] =州(satSDP4);
计算相对位置的大小satSGP4
和satSDP4
关于satTwoBodyKeplerian
通过使用vecnorm
函数。
sgp4RelativePosition = vecnorm(positionSGP4 - positionTwoBodyKeplerian,2,1);sdp4RelativePosition = vecnorm(positionSDP4 - positionTwoBodyKeplerian,2,1);
画出相对位置的大小,单位为千米satSGP4
和satSDP4
关于satTwoBodyKeplerian
通过使用情节
函数。
sgp4RelativePositionKm = sgp4RelativePosition / 1000;sdp4RelativePositionKm = sdp4RelativePosition / 1000;情节(时间、sgp4RelativePositionKm时间,sdp4RelativePositionKm)包含(“时间”) ylabel (“相对位置(公里)”)传说(“SGP4”,“SDP4”)
的初始相对位置satSGP4
是非零的吗satSDP4
是零是因为初始位置satTwoBodyKeplerian
和satSDP4
用SDP4轨道传播器计算TLE文件,satSGP4
采用SGP4轨道传播器进行计算。随着时间的推移,位置satSDP4
偏离的satTwoBodyKeplerian
因为前者的后续位置是用SDP4轨道传播子计算的,而后者的后续位置是用双体开普勒轨道传播子计算的。SDP4轨道传播器提供了更高的精度,因为与双体开普勒轨道传播器不同,它考虑了地球的扁率、大气阻力以及来自太阳和月球的引力。
计算相对速度的大小satSGP4
和satSDP4
关于satTwoBodyKeplerian
通过使用vecnorm
函数。
sgp4RelativeVelocity = vecnorm(velocityysgp4 - velocitytwobodykepler,2,1);sdp4RelativeVelocity = vecnorm(velocitySDP4 - velocitytwobodykepler,2,1);
画出相对速度的大小,单位是米/秒satSGP4
和satSDP4
关于satTwoBodyKeplerian
通过使用情节
函数。
情节(时间、sgp4RelativeVelocity时间,sdp4RelativeVelocity)包含(“时间”) ylabel (“速度偏差(m / s)”)传说(“SGP4”,“SDP4”)
的初始相对速度satSDP4
是零,因为就像初始位置,初始速度satTwoBodyKeplerian
和satSDP4
利用SDP4轨道传播器计算TLE文件。随着时间的推移,速度satSDP4
偏离的satTwoBodyKeplerian
因为在其他时间,速度satTwoBodyKeplerian
采用双体开普勒轨道传播器进行计算,与用于计算速度的SDP4轨道传播器相比精度较低satSDP4
.这些尖峰对应于近尖点(轨道上离地球质心最近的点),在那里速度误差的幅度是明显的。
图中的偏差是三个轨道传播器不同精度水平的结果。双体开普勒轨道传播器是最不精确的,因为它假设地球的重力场是球形的,也忽略了所有其他轨道扰动的来源。SGP4轨道传播器更精确,因为它考虑了地球的扁率和大气阻力。SDP4轨道传播器是三个卫星中最精确的,因为它还考虑了太阳和月球的引力,在这个例子中更明显,因为轨道周期大于225分钟,从而使卫星离地球更远。