轨道传播器的比较
这个例子比较了由双体开普勒系统、简化一般摄动-4 (SGP4)和简化深空摄动-4 (SDP4)轨道传播器预测的轨道。轨道传播器是计算一个物体的位置和速度的求解器,该物体的运动主要受来自天体的引力的影响。二体开普勒轨道传播器基于相对二体模型,该模型假设地球为球形重力场,忽略了第三体效应和其他环境扰动,因此是最不准确的。SGP4轨道传播器考虑了地球几何形状和大气阻力引起的长期和周期性轨道扰动,适用于轨道周期小于225分钟的近地卫星。SDP4轨道传播器在SGP4的基础上,通过考虑太阳和月球引力,适用于轨道周期大于或等于225分钟的卫星。的默认轨道传播器satelliteScenario
为SGP4,表示轨道周期小于225分钟的卫星,否则为SDP4。
创建卫星场景
创建一个卫星场景使用satelliteScenario
函数。将开始时间设置为11-May-2020 12:35:38 PM UTC,停止时间设置为13-May-2020 12:35:38 PM UTC,使用datetime
函数。设置采样时间为60秒。
开始时间= datetime(35 2020、5、11、12日,38);stopTime = startTime + days(2);sampleTime = 60;sc = satelliteScenario(开始时间、stopTime sampleTime)
sc = satitescenario带有属性:StartTime: 11-May-2020 12:35:38 StopTime: 13-May-2020 12:35:38 SampleTime: 60 AutoSimulate: 1 satellite: [1×0 matlabshared. satitescenario .]卫星]地面站:[1×0 matlabshared. satitescenario .]地面站]观众:[0×0 matlabshared.satellite itescenario.]查看器]汽车展:1
在卫星场景中添加卫星
在两行元素(TLE)文件的卫星场景中添加三颗卫星eccentricOrbitSatellite.tle
通过使用卫星
函数。TLE是一种数据格式,用于编码在特定时间定义的绕地球运行的物体的轨道元素。将双体开普勒轨道传播器分配给第一颗卫星,SGP4分配给第二颗卫星,SDP4分配给第三颗卫星。
tleFile =“eccentricOrbitSatellite.tle”;tleFile satTwoBodyKeplerian =卫星(sc,…“名称”,“satTwoBodyKeplerian”,…“OrbitPropagator”,“two-body-keplerian”)
satTwoBodyKeplerian = Satellite,其属性为:名称:satTwoBodyKeplerian ID: 1 ConicalSensors: [1x0 matlabshare . Satellite itescenario.]ConicalSensor] Gimbals: [1x0 matlabshared. satitescenario . matlabshared. satitescenario . matlabshared. matlabshared. satitescenario .]万向台]发射机:[1x0 satcom.satellite itescenario.]发射机]接收机:[1x0 satcom.satellite itescenario.]接收端]访问:[1x0 matlabshared.satellite itescenario.]访问]GroundTrack: [1x1 matlabshare .satellite escenario.]GroundTrack]轨道:[1x1 matlabshare .satellite itescenario.]轨道]orbitpropagation: two-body-keplerian MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15
tleFile satSGP4 =卫星(sc,…“名称”,“satSGP4”,…“OrbitPropagator”,“sgp4”)
satSGP4 =具有属性的卫星:名称:satSGP4 ID: 2 ConicalSensors: [1x0 matlabshared. satitescenario .]ConicalSensor] Gimbals: [1x0 matlabshared. satitescenario . matlabshared. satitescenario . matlabshared. matlabshared. satitescenario .]万向台]发射机:[1x0 satcom.satellite itescenario.]发射机]接收机:[1x0 satcom.satellite itescenario.]接收端]访问:[1x0 matlabshared.satellite itescenario.]访问]GroundTrack: [1x1 matlabshare .satellite escenario.]GroundTrack]轨道:[1x1 matlabshare .satellite itescenario.]轨道]轨道传播者:sgp4 MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15
tleFile satSDP4 =卫星(sc,…“名称”,“satSDP4”,…“OrbitPropagator”,“sdp4”)
satSDP4 =带有属性的卫星:Name: satSDP4 ID: 3 ConicalSensors: [1x0 matlabshare . Satellite escenario.]ConicalSensor] Gimbals: [1x0 matlabshared. satitescenario . matlabshared. satitescenario . matlabshared. matlabshared. satitescenario .]万向台]发射机:[1x0 satcom.satellite itescenario.]发射机]接收机:[1x0 satcom.satellite itescenario.]接收端]访问:[1x0 matlabshared.satellite itescenario.]访问]GroundTrack: [1x1 matlabshare .satellite escenario.]GroundTrack]轨道:[1x1 matlabshare .satellite itescenario.]Orbit] Orbit: sdp4 MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15
想象卫星和它们的轨道
启动卫星场景查看器,并通过使用satelliteScenarioViewer
函数。的可视化设置satTwoBodyKeplerian
红色,satSGP4
绿色,satSDP4
洋红色。
v = satelliteScenarioViewer (sc);satSGP4。MarkerColor = [0 1 0];satSGP4.Orbit。LineColor = [0 1 0];satSGP4。LabelFontColor = [0 1 0];satSDP4。MarkerColor = [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轨道传播器提供了更高的精度,因为与双体开普勒轨道传播器不同,它考虑了地球的扁率、大气阻力以及来自太阳和月球的引力。
相对速度相对于二体开普勒预测的Plot幅值
的相对速度的大小计算satSGP4
和satSDP4
关于satTwoBodyKeplerian
通过使用vecnorm
函数。
sgp4RelativeVelocity = vecnorm(velocitySGP4 - velocityTwoBodyKeplerian,2,1);sdp4RelativeVelocity = vecnorm(velocitySDP4 - velocityTwoBodyKeplerian,2,1);
的相对速度的大小,单位为米/秒satSGP4
和satSDP4
关于satTwoBodyKeplerian
通过使用情节
函数。
情节(时间、sgp4RelativeVelocity时间,sdp4RelativeVelocity)包含(“时间”) ylabel (“速度偏差(m / s)”)传说(“SGP4”,“SDP4”)
的初始相对速度satSDP4
0是因为就像初始位置一样,初始速度satTwoBodyKeplerian
和satSDP4
也是使用SDP4轨道传播器从TLE文件中计算出来的。随着时间的推移,的速度satSDP4
的偏离satTwoBodyKeplerian
因为在其他任何时候,速度satTwoBodyKeplerian
是使用双体开普勒轨道传播器计算的,与用于计算速度的SDP4轨道传播器相比,它的精度较低satSDP4
。尖峰对应的是周尖点(轨道上距离地球质心最近的点),在这里速度误差的大小是明显的。
结论
图中的偏差是由于三个轨道传播器的精度水平不同造成的。双体开普勒轨道传播器是最不准确的,因为它假设地球的重力场是球形的,也忽略了所有其他轨道扰动源。SGP4轨道传播器更为精确,因为它考虑了地球的扁率和大气阻力。SDP4轨道传播器是三种中最精确的,因为它还考虑了太阳和月球引力,在这个例子中更加明显,因为轨道周期大于225分钟,从而使卫星离地球更远。