主要内容

轨道传播器的比较

本例比较了两体开普勒轨道、简化一般摄动-4 (SGP4)和简化深空摄动-4 (SDP4)轨道传播器预测的轨道。轨道传播器是一种计算物体位置和速度的解算器,该物体的运动主要受天体引力的影响。双体开普勒轨道传播器基于相对双体模型,该模型假设地球为球形重力场,忽略了第三体效应和其他环境扰动,因此精度最低。SGP4轨道传播器考虑了地球几何结构和大气阻力引起的长期和周期性轨道扰动,适用于轨道周期小于225分钟的近地卫星。SDP4轨道传播器在SGP4的基础上,考虑了太阳和月球引力,适用于轨道周期大于或等于225分钟的卫星。的默认轨道传播器satelliteScenario轨道周期小于225分钟的为SGP4,轨道周期小于225分钟的为SDP4。

创建卫星场景

方法创建卫星场景satelliteScenario函数。将开始时间设置为UTC时间11-May-2020 12:35:38 PM,停止时间设置为UTC时间13-May-2020 12:35:38 PMdatetime函数。设置采样时间为60秒。

startTime = datetime(2020,5,11,12,35,38);stopTime = startTime +天数(2);sampleTime = 60;sc = satellite escenario (startTime,stopTime,sampleTime)
sc = satellite escenario with properties: StartTime: 11-5-2020 12:35:38 StopTime: 13-5-5-2020 12:35:38 SampleTime: 60 AutoSimulate: 1 satellite: [1×0 matlabshare .satellite escenario.]卫星]地面站:[1×0 matlabshared.satellitescenario.]地面站]观众:[0×0 matlabshared.satellite escenario。自动显示:1

在“卫星”场景中添加卫星

从两行元素(TLE)文件向卫星场景添加三颗卫星eccentricOrbitSatellite.tle通过使用卫星函数。TLE是一种数据格式,用于在特定时间对地球轨道物体的轨道元素进行编码。将一个双体开普勒轨道传播器分配给第一颗卫星,SGP4分配给第二颗卫星,SDP4分配给第三颗卫星。

tleFile =“eccentricOrbitSatellite.tle”;satTwoBodyKeplerian =卫星(sc,tleFile,...“名称”“satTwoBodyKeplerian”...“OrbitPropagator”“two-body-keplerian”
satTwoBodyKeplerian =带有属性的卫星:名称:satTwoBodyKeplerian ID: 1 ConicalSensors: [1x0 matlabshared. Satellite esitario . properties]ConicalSensor] Gimbals: [1x0 matlabshared.satellitescenario.]发射机:[1x0 satcom.satellitescenario.]发射器]接收器:[1x0 satcom.satellitescenario.]接收端:[1x0 matlabshared.satellitescenario.]访问]GroundTrack: [1x1 matlabshared.satellitescenario.]轨道:[1x1 matlabshared.satellite场景。Orbit] OrbitPropagator:双体keplerian MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1 1] LabelFontSize: 15
satSGP4 = satellite(sc,tleFile,...“名称”“satSGP4”...“OrbitPropagator”“sgp4”
satSGP4 =带有属性的卫星:名称:satSGP4 ID: 2 ConicalSensors: [1x0 matlabshared. Satellite esitesscene .]ConicalSensor] Gimbals: [1x0 matlabshared.satellitescenario.]发射机:[1x0 satcom.satellitescenario.]发射器]接收器:[1x0 satcom.satellitescenario.]接收端:[1x0 matlabshared.satellitescenario.]访问]GroundTrack: [1x1 matlabshared.satellitescenario.]轨道:[1x1 matlabshared.satellite场景。orbitator: sgp4 MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1 1] LabelFontSize: 15
satSDP4 =卫星(sc,tleFile,...“名称”“satSDP4”...“OrbitPropagator”“sdp4”
satSDP4 = Satellite with properties: Name: satSDP4 ID: 3 ConicalSensors: [1x0 matlabshared. Satellite esitscene .]ConicalSensor] Gimbals: [1x0 matlabshared.satellitescenario.]发射机:[1x0 satcom.satellitescenario.]发射器]接收器:[1x0 satcom.satellitescenario.]接收端:[1x0 matlabshared.satellitescenario.]访问]GroundTrack: [1x1 matlabshared.satellitescenario.]轨道:[1x1 matlabshared.satellite场景。orbitator: sdp4 MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1 1] LabelFontSize: 15

想象卫星和它们的轨道

方法启动卫星场景查看器并可视化卫星场景satelliteScenarioViewer函数。的可视化设置satTwoBodyKeplerian红色,satSGP4绿色,和satSDP4洋红色。

v = satellite escenarioviewer (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,time] = states(satTwoBodyKeplerian);[positionSGP4,velocitySGP4] = state (satSGP4);[positionSDP4,velocitySDP4] = state (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”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示SGP4、SDP4。

初始的相对位置satSGP4非零和的satSDP4是因为初始位置是0吗satTwoBodyKeplerian而且satSDP4使用SDP4轨道传播器从TLE文件中计算,而satSGP4是使用SGP4轨道传播器计算的。久而久之,位置satSDP4偏离…的satTwoBodyKeplerian因为前者的后续位置是用SDP4轨道传播器计算的,而后者的后续位置是用双体开普勒轨道传播器计算的。SDP4轨道传播器提供了更高的精度,因为与双体开普勒轨道传播器不同,它考虑了地球的扁率、大气阻力以及来自太阳和月球的引力。

关于两体开普勒预测的相对速度大小图

计算相对速度的大小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”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示SGP4、SDP4。

的初始相对速度satSDP4是0,因为就像初始位置一样,初始速度satTwoBodyKeplerian而且satSDP4也是使用SDP4轨道传播器从TLE文件中计算出来的。随着时间的推移,速度satSDP4偏离…的satTwoBodyKeplerian因为在其他时间,速度satTwoBodyKeplerian采用双体开普勒轨道传播器计算,与SDP4轨道传播器计算速度相比,精度较低satSDP4.尖峰对应于近日点(轨道上离地球质心最近的点),在那里速度误差的幅度是明显的。

结论

图中的偏差是由于三个轨道传播器的精度水平不同造成的。双体开普勒轨道传播器是最不精确的,因为它假设地球的重力场是球形的,并且忽略了轨道扰动的所有其他来源。SGP4轨道传播器更精确,因为它考虑了地球的扁率和大气阻力。SDP4轨道传播器是三者中最精确的,因为它还考虑了太阳和月球引力,在这个例子中更为明显,因为轨道周期大于225分钟,从而使卫星远离地球。

另请参阅

对象

功能

相关的例子

更多关于