




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STK与Matlab的接口及其在复杂航天任务仿真分析中的应用
STK实验室二零一一年八月STK与Matlab的接口及其STK实验室1主要内容1STK与Matlab接口简介2在复杂航天任务仿真分析中的应用使用STK与Matlab接口应用场合与必要性STK与Matlab互联的设置与接口函数库常用接口函数的使用循环——星座对地观测特性分析循环+嵌套迭代——交会对接对远距离导引精度分析迭代——交会对接目标飞行器调相分析主要内容1STK与Matlab接口简介2在复杂航天任21STK与Matlab接口简介—必要性STK与Matlab互联——两个强大成熟商业软件的强强联合1STK与Matlab接口简介—必要性STK与Matlab31STK与Matlab接口简介—必要性有效的工程应用例子——交会对接远距离导引精度论证1STK与Matlab接口简介—必要性有效的工程应用例子—41STK与Matlab接口简介—必要性远距离导引精度仿真分析流程图1STK与Matlab接口简介—必要性远距离导引精度仿真分51STK与Matlab接口简介—必要性应用效果高效(快)建模与修改快捷可靠(好)辅助实现关键技术环节突破高效+可靠->技术优势->话语权->地位1STK与Matlab接口简介—必要性应用效果高效(快61STK与Matlab接口简介—互联与接口函数STK与Matlab互联的初始设置参考《STK在计算机仿真中的应用》-复制文件“agiCleanPath.m”、“agiInit.m”和“stkInit.m”到指定目录-在Matlab中运行指令“stkinit”-选择M文件的位置-选择Mex文件的位置-选择默认的其他设置1STK与Matlab接口简介—互联与接口函数STK与M71STK与Matlab接口简介—互联与接口函数接口函数分类接口函数说明STKServerCommands(STK服务器命令)stkDefaultConID返回缺省的连接ID号stkDefaultHost返回缺省的主服务器stkSetDefaultHost设置与STK的远程连接ApplicationCommands(应用命令)stkAutoSave自动保存stkHomeDir返回STK安装目录stkCurrentDir返回当前目录stkSetCurrentDir设置当前目录stkObjNames返回STK对象名称stkTimerStart启动计时器stkTimer计时器时间GenericObjectCommands(普通对象命令)stkCentralBody返回坐标系中心体stkLoadObj导入对象stkSaveObj保存对象stkNewObj新建对象stkUnload卸载对象stkUnloadChildren卸载所有子对象stkRename重命名对象stkTimePeriod返回场景起止时间stkTimePeriodInSec返回场景起止时间,以秒为单位stkValidObj返回是否存在有效对象stkDescrip获取对象的描述stkSetDescrip设置对象的描述1STK与Matlab接口简介—互联与接口函数接口函数分81STK与Matlab接口简介—互联与接口函数ScenarioCommands(场景命令)stkAnimTime返回当前STK动画时间stkEpoch返回STK场景历元stkSetEpoch设置STK场景历元stkSetEpochInSec改变STK场景历元,以秒为单位stkSyncEpoch同步aeroToolbox和STK场景历元stkConvertDate转换日期格式stkSetTimePeriod设置场景起止时间stkSetTimePeriodInSec设置场景起止时间,以秒为单位stkScenFilePath返回STK场景文件目录stkValidScen返回是否存在有效场景BasicVehicleData(基本飞行器数据)stkTimePeriod返回航天器或场景起止时间stkTimePeriodInSec返回航天器或场景起止时间,以秒为单位stkSetTimePeriod设置航天器或场景起止时间SatellitePropagators(卫星属性)stkSetPropCart设置笛卡尔坐标形式的卫星运动参数stkSetPropClassical设置经典轨道根数形式的卫星运动参数stkSetPropEqui设置第二类无奇点根数形式的卫星运动参数stkSetPropSGP4设置SGP4形式的卫星运动参数stkPropagate卫星轨道积分计算VehiclePositionandVelocity(飞行器的位置速度)stkPosVelCBF获取中心体固连坐标系下的位置速度stkPosVelCBI获取惯性坐标系下的位置速度stkEphemerisCBF获取中心体固连坐标系下的星历stkEphemerisCBI获取惯性坐标系下的星历stkSetEphemerisCBF设置中心体固连坐标系下的星历stkSetEphemerisCBI设置惯性坐标系下的星历stkLoadEphemeris从文件中载入星历stkSaveEphemerisCBF保存中心体固连坐标系下的星历stkSaveEphemerisCBI保存惯性坐标系下的星历stkSaveDynState将工作空间中所有数据保存成.mat文件stkDynState产生动力学状态数据1STK与Matlab接口简介—互联与接口函数Scenar91STK与Matlab接口简介—互联与接口函数VehicleAttitude(飞行器姿态)stkAttitudeCBF获取中心体固连坐标系中的姿态四元数stkAttitudeCBI获取惯性坐标系中姿态四元数stkSetAttitudeCBF设置中心体固连坐标系中的姿态四元数stkSetAttitudeCBI设置惯性坐标系中姿态四元数stkLoadAttitude从文件中载入姿态数据stkSaveAttitudeCBF保存中心体固连坐标系中的姿态stkSaveAttitudeCBI保存惯性坐标系中姿态BasicVehicleAttitudeTypes(飞行器基本姿态类型)stkSetAttBasic设置基本姿态类型stkSetAttSpinSun设置自旋轴指向太阳stkSetAttSpinNadir设置自旋轴指向天底stkSetAttYawNadir设置偏航轴指向天底stkSetAttSpinning设置自旋轴为给定方向stkSetAttFixed设置惯性系中姿态stkAttOffset设置姿态偏移量Aircraft,GroundVehicleandShipPropagators(飞机,车辆与船舰属性)stkSetWaypoints设置路径点stkLoadWaypoints载入路径点文件stkSetGreatArcStart设置起始时间MissilePropagators(导弹运动积分)stkSetPropBallistic设置弹道导弹积分参数FacilitiesandTargets(设施与目标)stkPosVelCBF返回中心体固连坐标系中的位置stkSetFacPosCBF设置中心体固连坐标系中设施的位置stkSetFacPosLLA设置设施的经度、纬度、高度AreaTargets(面目标)stkGetBoundary设置面目标边界STKTools(STK工具)stkAccess返回过境时间段stkReport生成目标报告stkAccReport生成过境报告stkFindData从报告中提取数据ConnectCommands(连接指令)stkOpen打开STK连接stkClose关闭STK连接stkExec向STK发送指令stkConnect连接指令发送函数1STK与Matlab接口简介—互联与接口函数Vehicl101STK与Matlab接口简介—常用接口函数1)初始化需要的接口函数stkinit——完成STK和Matlab的互联和初始化conid=stkOpen(stkDefaultHost);——返回互联成功的主机端口的连接句柄2)初始窗口管理ifstkValidScen==1stkUnload('/*')end——如果已经有打开的场景,则关闭场景。1STK与Matlab接口简介—常用接口函数1)初始化需要111STK与Matlab接口简介—常用接口函数也可以通过交互提示进行窗口管理,如:scen_open=stkValidScen;ifscen_open==1rtn=questdlg('Closethecurrentscenario?');if~strcmp(rtn,'Yes')stkClose(conid)returnelsestkUnload('/*')endend——如果已经有打开的场景,则弹出提示对话框,询问是否要关闭现有场景。1STK与Matlab接口简介—常用接口函数也可以通过交互121STK与Matlab接口简介—常用接口函数3)建立场景stkNewObj('/','Scenario','场景名称');——建立给定名称的场景。stkSetTimePeriod('10Apr200300:00:00.0','12Apr200300:00:00.0','GREGUTC');——设置场景的起止时间和采用的时间系统。stkSetEpoch('10Apr200300:00:00.0','GREGUTC');——设置场景的历元。注:在STK输出的各类报告中,时间起点将以该历元作为时间零点。1STK与Matlab接口简介—常用接口函数3)建立场景131STK与Matlab接口简介—常用接口函数stkSyncEpoch;——同步aeroToolbox和STK场景历元。注:aeroToolbox函数库包含“安装盘:\ProgramFiles\AGI\STK\Matlab”目录下各种atb开头的内部函数,可以与STK场景历元保持独立。STK场景时间发生改变时,通过调用该语句可保持二者时间同步。rtn=stkConnect(conid,'Animate','Scenario/场景名称','SetValues"10Apr200300:00:00.0"600.1');rtn=stkConnect(conid,'Animate','Scenario/场景名称','Reset');——设置STK场景动画历元。1STK与Matlab接口简介—常用接口函数stkSync141STK与Matlab接口简介—常用接口函数4)建立航天器stkNewObj('*/','Satellite','航天器名称');——建立卫星。最基础最常用的接口函数:stkSetPropClassical语法:stkSetPropClassical('objPath','propagator','coordSystem',tStart,tStop,dt,orbitEpoch,semimajorAxis,eccentricity,inclination,argOfPerigee,RAAN,meanAnomaly,coordEpoch)1STK与Matlab接口简介—常用接口函数4)建立航天器151STK与Matlab接口简介—常用接口函数objPath–有效路径。Propagator–选用的动力学模型,可选择为‘TwoBody’,‘J2Perturbation’,‘J4Perturbation’,‘HPOP’or‘PODS’,分别表示“二体”、“J2摄动”、“J4摄动”、“HPOP模型”或“PODS模型”,区分大小写。coordSystem–选用的坐标系,可选择为‘Fixed’,‘J2000’,‘MeanOfDate’,‘MeanOfEpoch’,‘TrueOfDate’,‘TrueOfEpoch’,‘B1950’,‘TEMEOfDate’,‘TEMEOfEpoch’,‘AlignmentAtEpoch’,区分大小写。tStart,tStop–起止时刻,以相对于历元时刻的秒为单位。dt–积分步长,以秒为单位。orbitEpoch–轨道历元。1STK与Matlab接口简介—常用接口函数objPath161STK与Matlab接口简介—常用接口函数semimajorAxis,eccentricity,inclination,argOfPerigee,RAAN,meanAnomaly–6个轨道根数。其中,若坐标系选为‘AlignmentAtEpoch’,RAAN为升交点地理经度,若坐标系选为‘J2000’,RAAN为升交点赤经。coordEpoch–坐标历元,所有'...OfEpoch'选项均需提供对应的坐标历元。同样重要的接口函数:stkSetPropCart语法:stkSetPropCart('objPath','propagator','coordSystem',tStart,tStop,dt,orbitEpoch,pos,vel,coordEpoch)1STK与Matlab接口简介—常用接口函数semimaj171STK与Matlab接口简介—常用接口函数若动力学模型选为“HPOP模型”,则还需要通过stkConnect函数设置各种力模型参数。第一类:“HPOPforcemodel”设置重力、第三体引力、太阳光压、固体潮、海潮、辐射压参数。第二类:“HPOPdragmodel”设置大气密度模型及参数。1STK与Matlab接口简介—常用接口函数若动力学模型选181STK与Matlab接口简介—常用接口函数第一类:“HPOPforcemodel”语法:HPOP<ObjectPath>Force{ForceModel}<ModelParameters>其中,<>中的参数表示需要用户根据具体目录安装或参数使用情况设置的,{}中的参数表示STK固有的关键字,例如:stkConnect(conid,'HPOP','Scenario/场景名/Satellite/航天器名','ForceSolarRadOff')其中,<ObjectPath>为'Scenario/场景名/Satellite/航天器名',{ForceModel}为SolarRad,<ModelParameters>为Off。1STK与Matlab接口简介—常用接口函数第一类:“HP191STK与Matlab接口简介—常用接口函数{ForceModel}和<ModelParameters>的可选参数如表所示。{ForceModel}<ModelParameters>说明Gravity"<FilePath>"或<MaxDegreeValue>或<MaxOrderValue><MaxDegreeValue>和<MaxOrderValue>取值为0.0~1000.0,<MaxOrderValue>必须小于等于<MaxDegreeValue>,并且都小于所选择的重力场文件的最高阶数。ThirdBodyGravity<CentralBodyName>{On|Off}{GravSource}[<UserGravValue>]{GravSource}有效值可通过CB,JPL的DE文件或用户自定义设置,用户自定义值需为正值。SolarRad{SolarRadState}[<Coeff><AreaMassRatio>][ShadowModel{ModelType}][BoundaryMitigation{On|Off}]{SolRadState}可设置为On或Off。如果设置为On,还需要设置-100.0~100.0的光压系数<Coeff>,和0.0~9999.00的面质比参数<AreaMassRatioValue>。阴影模型参数{ModelType}]可取为空、圆柱或双圆锥。SolidTides{Full|Permanent|Off}[IncTimeDep{On|Off}][MinAmplitude<Amplitude>]如果设置为Off则不需要再输入其他参数。<Amplitude>在0.0~1.0范围内,单位是米。如果输入Permanent则只考虑与时间不相关的永久固体潮部分,如果输入Full则考虑全部固体潮。OceanTides{On|Off}[MaxDegree<MaxDegreeValue>][MaxOrder<MaxOrderValue>][MinAmplitude<Amplitude>]如果设置为Off不需要再输入其他参数。<MaxDegreeValue>为2~30之间的整数,<MaxOrderValue>为0~30之间的整数,<Amplitude>在0.0~1.0范围内,单位是米。RadiationPressureAlbedo{On|Off}Thermal{On|Off}Coefficient<CoeffValue>AreaMassRatio<AMRValue>File"<FilePath>"<CoeffValue>为-100~100.0之间的实数。<AMRValue>为0.0~9999.0之间的实数,单位是m^2/kg。"<FilePath>"地面反射模型文件。1STK与Matlab接口简介—常用接口函数{ForceM201STK与Matlab接口简介—常用接口函数stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','ForceGravity"C:\ProgramFiles\AGI\STK\STKData\CentralBodies\Earth\JGM3.grv"88');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','ForceSolarRadOff');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','ForceThirdBodyGravitySunOff');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','ForceThirdBodyGravityMoonOff');1STK与Matlab接口简介—常用接口函数stkConn211STK与Matlab接口简介—常用接口函数第二类:“HPOPdragmodel”语法:HPOP<ObjectPath>Drag{DragState}<Coeff><AreaMassRatio>{"AtmDensModel"}其中,<>与{}中的参数的含义不变。{DragState}设置为On或Off。设置为Off则不需要输入其他参数。设置为On时,<Coeff>为-10.0~10.0之间的实数,<AreaMassRatio>为0.0~9999.0之间的实数,{"AtmDensModel"}的有效输入值和相应的<Parameters>输入值见表所示。1STK与Matlab接口简介—常用接口函数第二类:“HP221STK与Matlab接口简介—常用接口函数{"AtmDensModel"}<Parameters>"Harris-Priester"附加参数可通过手工或flux/geomag文件输入:Manual<AverageF10.7>File"<FilePath>""1976Standard"N/A"Jacchia1960"N/A"Jacchia1971"附加参数可通过手工或flux/geomag文件输入:Manual<DailyF10.7><AverageF10.7><GeoMagIndex>File"<FilePath>""Jacchia1970""Jacchia-Roberts""CIRA1972""NRLMSISE2000""MSISE1990""MSIS1986""<UserModelName>""<FilePath>"1STK与Matlab接口简介—常用接口函数{"AtmDe231STK与Matlab接口简介—常用接口函数例如:stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','DragOn2.20.0022"NRLMSISE2000"Manual1501502.667');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','DragOn2.00.0022"NRLMSISE2000"File"C:\ProgramFiles\AGI\STK\DynamicEarthData\stkFluxGeoMag.fxm"');1STK与Matlab接口简介—常用接口函数例如:241STK与Matlab接口简介—常用接口函数5)建立地面站stkNewObj('*/','Facility','测站名称')——建立地面站。stkSetFacPosLLA('Scenario/场景名称/Facility/测站名称',[phi;namda;h])——设置地面站的经度、纬度和高度。stkConnect(conid,'SetConstraint','Scenario/场景名称/Facility/测站名称','ElevationAngleMin最低仰角值')——设置地面站的最低仰角。stkConnect(conid,‘SetConstraint’,‘Scenario/场景名称/Facility/测站名称’,‘RangeMax最大探测距离值');——设置地面站的最大探测距离。1STK与Matlab接口简介—常用接口函数5)建立地面站251STK与Matlab接口简介—常用接口函数6)输出计算结果stkPropagate('*/Satellite/航天器名称',t_start,t_stop)[T,r,v,cb]=stkEphemerisCBI('Scenario/场景名称/Satellite/航天器名称',dt,t_start,t_stop)——运行航天器并输出给定起止时间内的惯性坐标系位置和速度。注:输出航天器位置、速度之前必须运行stkPropagate函数,否则力模型参数设置不生效。interval=stkAccess('Scenario/场景名称/Satellite/航天器名称','Scenario/场景名称/Facility/测站名称')——输出航天器相对于测站的可见时间段。1STK与Matlab接口简介—常用接口函数6)输出计算结261STK与Matlab接口简介—常用接口函数7)关闭STK和Matlab连接采用接口函数输出的数据上虽然不如手工设置时形式多样,但因为可以在Matlab环境下通过编程进行数据处理,依然可以获得多种需要的计算结果,并且可实现手工设置无法完成的循环计算和多重迭代功能。上述1)~6)过程为利用STK/Matlab接口进行计算分析的常用或基本函数。stkClose(conid)注:STK和Matlab最多同时可创建2个连接,因此每次程序运行结束通常需要关闭连接,以免下次运行重新建立连接时个数超过限制。1STK与Matlab接口简介—常用接口函数7)关闭STK272在复杂航天任务分析中的应用—循环循环——星座对地观测特性分析设某一对地观测卫星星座含多颗星,各星之间通过保持一定的几何构型,实现对某一特定区域的重点观测。在系统设计阶段,需要分析对某种给定的构型,星座对某一特定区域进行观测时,各星观测该区域的时间间隔特性,如该特定区域重访时间间隔平均值、最大值等。对某一给定点,通过手工设置STK中各类参数可计算和输出星座中各星访问该地点的时间间隔,但对于某一给定区域,需要在该区域内密集采样,采用手工输入输出方式已不再可能,因此需要通过Matlab作为计算引擎调用STK循环计算。
以下给出计算过程和结果。2在复杂航天任务分析中的应用—循环循环——星座对地观测特性282在复杂航天任务分析中的应用—循环1)初始化并关闭所有打开的窗口%初始化stkinitremMachine=stkDefaultHost;%关闭所有打开的窗口delete(get(0,'chiSatren'));conid=stkOpen(remMachine);scen_open=stkValidScen;ifscen_open==1stkUnload('/*')end2在复杂航天任务分析中的应用—循环1)初始化并关闭所有打开292在复杂航天任务分析中的应用—循环2)建立场景、航天器和测站%建立场景并设置场景属性stkNewObj('/','Scenario','RemoteSensor');stkSetTimePeriod('1Jan201000:00:00.0','5Jan201000:00:0.0','GREGUTC');stkSetEpoch('1Jan201000:00:00.0','GREGUTC');stkSyncEpoch;rtn=stkConnect(conid,'Animate','Scenario/RemoteSensor','SetValues"1Jan201000:00:00.0"600.1');rtn=stkConnect(conid,'Animate','Scenario/RemoteSensor','Reset');%建立航天器和测站stkNewObj('*/','Satellite','Sat1');stkNewObj('*/','Satellite','Sat2');stkNewObj('*/','Satellite','Sat3');stkNewObj('*/','Satellite','Sat4');stkNewObj('*/','Facility','Station');2在复杂航天任务分析中的应用—循环2)建立场景、航天器和302在复杂航天任务分析中的应用—循环3)设置星座中各卫星的属性t_start=0;t_stop=4*(24*3600);dt=60;orbitEpoch=t_start;a_sat=7000*1000;e_sat=0;i_sat=60;w_sat=0;Raan_sat=0;M_sat=0;stkSetPropClassical('*/Satellite/Sat1','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_sat,e_sat,i_sat,w_sat,Raan_sat,M_sat);stkPropagate('*/Satellite/Sat1',t_start,t_stop)stkSetPropClassical('*/Satellite/Sat2','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_sat,e_sat,i_sat,w_sat,Raan_sat+pi/4,M_sat+pi);stkPropagate('*/Satellite/Sat2',t_start,t_stop)stkSetPropClassical('*/Satellite/Sat3','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_sat,e_sat,i_sat,w_sat,Raan_sat+pi/2,M_sat+2*pi);stkPropagate('*/Satellite/Sat3',t_start,t_stop)stkSetPropClassical('*/Satellite/Sat4','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_sat,e_sat,i_sat,w_sat,Raan_sat+3*pi/4,M_sat+pi);stkPropagate('*/Satellite/Sat4',t_start,t_stop)2在复杂航天任务分析中的应用—循环3)设置星座中各卫星的312在复杂航天任务分析中的应用—循环4)循环计算区域内各点的重访时间间隔及最大值namda_min=0;namda_max=2*pi;n_namda=40;deta_namda=(namda_max-namda_min)/n_namda;phi_min=-60*pi/180;phi_max=60*pi/180;n_phi=30;deta_phi=(phi_max-phi_min)/n_phi;fori=1:n_namda+1forj=1:n_phi+1remain=(n_namda+1)*(n_phi+1)-(i-1)*(n_phi+1)-jnamda=namda_min+(i-1)*deta_namda;X(i,j)=namda*180/pi;phi=phi_min+(j-1)*deta_phi;Y(i,j)=phi*180/pi;
stkSetFacPosLLA('Scenario/RemoteSensor/Facility/Station',[phi;namda;0]);2在复杂航天任务分析中的应用—循环4)循环计算区域内各点的322在复杂航天任务分析中的应用—循环stkConnect(conid,'SetConstraint','Scenario/RemoteSensor/Facility/Station','ElevationAngleMin56.8164');interval1=stkAccess('Scenario/RemoteSensor/Satellite/Sat1','Scenario/RemoteSensor/Facility/Station');interval2=stkAccess('Scenario/RemoteSensor/Satellite/Sat2','Scenario/RemoteSensor/Facility/Station');interval3=stkAccess('Scenario/RemoteSensor/Satellite/Sat3','Scenario/RemoteSensor/Facility/Station');interval4=stkAccess('Scenario/RemoteSensor/Satellite/Sat4','Scenario/RemoteSensor/Facility/Station');2在复杂航天任务分析中的应用—循环stkConnect(c332在复杂航天任务分析中的应用—循环ifsize(interval1)==[00]&size(interval2)==[00]&size(interval3)==[00]&size(interval4)==[00]Z(i,j)=20;else
temp1=[interval1.start,interval2.start,interval3.start,interval4.start,interval1.stop,interval2.stop,interval3.stop,interval4.stop];temp2=sort(temp1);Z(i,j)=max(diff(temp2))/3600;endendend2在复杂航天任务分析中的应用—循环if342在复杂航天任务分析中的应用—循环5)绘制计算结果并关闭连接save('mat')set(gcf,'color',[1,1,1])figuresurf(X,Y,Z)xlabel('namda/deg')ylabel('phi/deg')stkClose(conid)2在复杂航天任务分析中的应用—循环5)绘制计算结果并关闭连352在复杂航天任务分析中的应用—迭代迭代——交会对接目标飞行器调相分析交会对接任务中,目标飞行器在飞船入轨前2~3个月先行入轨,目标飞行器入轨后在一天时间内通过两次变轨进入某一高度的近圆轨道,之后通过大气衰减和主动变轨,使2~3个月后飞船入轨时刻目标飞行器轨道的相位、高度和偏心率满足要求。在任务分析阶段,需要根据给定的空间环境设计目标飞行器的圆化轨道高度,在后续2~3个月的时间内尽可能通过大气衰减作用满足各种终端约束条件,减少主动变轨的能量消耗。第4圈变轨第13圈变轨2在复杂航天任务分析中的应用—迭代迭代——交会对接目标飞行362在复杂航天任务分析中的应用—迭代为了重点说明STK/Matlab接口的使用,对上述设计进行简化,假定不进行调整相位、高度和偏心率的变轨,设计过程简化为迭代搜索满足飞船入轨时刻相位约束条件的目标飞行器圆化轨道的高度,为单层迭代过程。需要补充说明的是,在STK中尽管Astrogator模式可实现一定功能的迭代,但在Astrogator模式下空间环境参数无法根据需要进行设置,并且难以设定某些特殊的约束条件,这种情况下可以利用Matlab的编程能力通过STK/Matlab接口实现迭代求解。以下给出计算过程。2在复杂航天任务分析中的应用—迭代372在复杂航天任务分析中的应用—迭代1)初始化和并关闭所有打开的窗口与前述过程相同,不再重复。2)建立场景和航天器目标飞行器入轨后,在第4圈近地点变轨抬高远地点高度,在第13圈远地点变轨进入圆轨道,之后进入大气衰减自由飞行阶段。以下建立场景后,再建立3个航天器分别用于不同阶段的轨道预报。stkNewObj('/','Scenario','GM');stkSetTimePeriod(‘6Sep20112:11:53',6Dec20112:11:53','GREGUTC');stkSetEpoch(6Sep20112:11:53','GREGUTC');stkSyncEpoch;rtn=stkConnect(conid,'Animate','Scenario/GM','SetValues"6Sep20112:11:53"600.1');rtn=stkConnect(conid,'Animate','Scenario/GM','Reset');stkNewObj('*/','Satellite','MB_1');stkNewObj('*/','Satellite','MB_2');stkNewObj('*/','Satellite','MB_3');2在复杂航天任务分析中的应用—迭代1)初始化和并关闭所有打382在复杂航天任务分析中的应用—迭代3)外推至第4圈近地点%设置J2000坐标系中初始轨道根数t_start_1=0;t_stop_1=0.187*(24*3600);dt=60;orbitEpoch=t_start_1;coordEpoch=t_start_1;a_MB=6645999;e_MB=0.01129;i_MB=42.747;w_MB=124.342;Raan_MB=7.309;M_MB=0;2在复杂航天任务分析中的应用—迭代3)外推至第4圈近地点%392在复杂航天任务分析中的应用—迭代%选用HPOP模型,设置大气密度模型、重力场模型、光压和第三体摄动模型。stkSetPropClassical('*/Satellite/MB_1','HPOP','AlignmentAtEpoch',t_start_1,t_stop_1,dt,orbitEpoch,a_MB,e_MB,i_MB,w_MB,Raan_MB,M_MB,coordEpoch);stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_1','DragOn2.20.0039"NRLMSISE2000"Manual1501502.667');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_1','ForceGravity"C:\ProgramFiles\AGI\STK\STKData\CentralBodies\Earth\JGM3.grv"88');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_1','ForceSolarRadOff');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_1','ForceThirdBodyGravitySunOff');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_1','ForceThirdBodyGravityMoonOff');stkPropagate('*/Satellite/MB_1',t_start_1,t_stop_1)[T_MB_1,r_MB_1,v_MB_1,cb]=stkEphemerisCBI('Scenario/GM/Satellite/MB_1',dt,t_start_1,t_stop_1);2在复杂航天任务分析中的应用—迭代%选用HPOP模型,设402在复杂航天任务分析中的应用—迭代4)迭代求解第4圈近地点变轨速度增量(或求解圆化轨道高度)%采用牛顿迭代法求解,约束条件为第89天目标飞行器轨道面与飞船入轨点共面时刻的相位在114°±10°范围内。deta_v_2=9;error=100;whileabs(error)>1
Cal_remain;index_RG=find(T_interp>89);error=beta_interp(index_RG(1))-114
deta_v_2=deta_v_2+error/3600;End其中,Cal_remain为需要循环计算的用户自定义子函数,用于计算给定一个第4圈近地点变轨速度增量后,从第4圈近地点变轨外推至第13圈远地点并进行轨道圆化变轨后的轨道,轨道外推一直到第89天目标飞行器轨道面与飞船入轨点共面时刻。输出结果外共面时刻的相位。2在复杂航天任务分析中的应用—迭代4)迭代求解第4圈近地点412在复杂航天任务分析中的应用—迭代Cal_remain子函数为:%第4圈变轨外推至第13圈变轨pos_2=r_MB_1(:,length(r_MB_1));vel_2=v_MB_1(:,length(v_MB_1));ix=vel_2/norm(vel_2);ir=pos_2/norm(pos_2);iz=CrossProduct(ir,ix)/norm(CrossProduct(ir,ix));iy=CrossProduct(ix,iz);thita_2=0;vel_2=vel_2+deta_v_2*(cos(thita_2)*ix+sin(thita_2)*iy);t_start_2=t_stop_1;t_stop_2=0.782*(24*3600);dt=60;orbitEpoch=t_start_2;stkSetPropCart('*/Satellite/MB_2','HPOP','J2000',t_start_2,t_stop_2,dt,orbitEpoch,pos_2,vel_2)stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_2','DragOn2.20.0039"NRLMSISE2000"Manual1501502.667');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_2','ForceGravity"C:\ProgramFiles\AGI\STK\STKData\CentralBodies\Earth\JGM3.grv"88');2在复杂航天任务分析中的应用—迭代Cal_remain子422在复杂航天任务分析中的应用—迭代stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_2','ForceSolarRadOff');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_2','ForceThirdBodyGravitySunOff');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_2','ForceThirdBodyGravityMoonOff');stkPropagate('*/Satellite/MB_2',t_start_2,t_stop_2)[T_MB_2,r_MB_2,v_MB_2,cb]=stkEphemerisCBI('Scenario/GM/Satellite/MB_2',dt,t_start_2,t_stop_2);%第13圈变轨外推至飞船入轨时刻pos_3=r_MB_2(:,length(r_MB_2));vel_3=v_MB_2(:,length(v_MB_2));u_e=3.986005e+014;ix=vel_3/norm(vel_3);ir=pos_3/norm(pos_3);iz=CrossProduct(ir,ix)/norm(CrossProduct(ir,ix));iy=CrossProduct(ix,iz);it=CrossProduct(iz,ir);vel_3=sqrt(u_e/norm(pos_3))*it;2在复杂航天任务分析中的应用—迭代stkConnect(c432在复杂航天任务分析中的应用—迭代t_start_3=T_MB_2(length(T_MB_2));t_stop_3=92*(24*3600);dt=60;orbitEpoch=t_start_3;stkSetPropCart('*/Satellite/MB_3','HPOP','J2000',t_start_3,t_stop_3,dt,orbitEpoch,pos_3,vel_3)stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_3','DragOn2.20.0039"NRLMSISE2000"Manual1501502.667');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_3','ForceGravity"C:\ProgramFiles\AGI\STK\STKData\CentralBodies\Earth\JGM3.grv"88');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_3','ForceSolarRadOff');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_3','ForceThirdBodyGravitySunOff');stkConnect(conid,'HPOP','Scenario/GM/Satellite/MB_3','ForceThirdBodyGravityMoonOff');stkPropagate('*/Satellite/MB_3',t_start_3,t_stop_3)[T_MB_3,r_MB_3,v_MB_3,cb]=stkEphemerisCBI('Scenario/GM/Satellite/MB_3',dt,t_start_3,t_stop_3);2在复杂航天任务分析中的应用—迭代t_start_3=T_442在复杂航天任务分析中的应用—迭代%计算共面时刻相位T_MB_all=[T_MB_1,T_MB_2(2:length(T_MB_2)),T_MB_3(2:length(T_MB_3))]'/(24*3600);R_MB_all=[r_MB_1,r_MB_2(:,2:length(r_MB_2)),r_MB_3(:,2:length(r_MB_3))]';V_MB_all=[v_MB_1,v_MB_2(:,2:length(v_MB_2)),v_MB_3(:,2:length(v_MB_3))]';data_RGD=load('data_pos_RGD.m');%读入入轨点在惯性系中的位置。
T_RGD_all=data_RGD(:,1);r_RGD_all=data_RGD(:,2:4);step_window=1/60/24;t_start=0;t_end=92;T=[t_start:step_window:t_end]';index1=find(T_MB_all>t_start&T_MB_all<t_end);R_MB=[interp1(T_MB_all(index1),R_MB_all(index1,1),T),interp1(T_MB_all(index1),R_MB_all(index1,2),T),interp1(T_MB_all(index1),R_MB_all(index1,3),T)];V_MB=[interp1(T_MB_all(index1),V_MB_all(index1,1),T),interp1(T_MB_all(index1),V_MB_all(index1,2),T),interp1(T_MB_all(index1),V_MB_all(index1,3),T)];index2=find(T_RGD_all>t_start&T_RGD_all<t_end);R_RGD=[interp1(T_RGD_all(index2),r_RGD_all(index2,1),T),interp1(T_RGD_all(index2),r_RGD_all(index2,2),T),interp1(T_RGD_all(index2),r_RGD_all(index2,3),T)];2在复杂航天任务分析中的应用—迭代%计算共面时刻相位452在复杂航天任务分析中的应用—迭代j=1;fori=1:length(T)AngMomentum_MB=CrossProduct(R_MB(i,:),V_MB(i,:))/norm(CrossProduct(R_MB(i,:),V_MB(i,:)));alpha(i)=acos(Dotproduct(R_RGD(i,:)/norm(R_RGD(i,:)),AngMomentum_MB'))*180/pi;beta(i)=acos(Dotproduct(R_RGD(i,:)/norm(R_RGD(i,:)),R_MB(i,:)/norm(R_MB(i,:))))*180/pi;ifDotProduct(CrossProduct(R_RGD(i,:),R_MB(i,:)),AngMomentum_MB)<=0beta(i)=-beta(i);endifi>1&alpha(i)<90&alpha(i-1)>90index(j)=i;T_interp(j)=interp1([alpha(i),alpha(i-1)],[T(i),T(i-1)],90);
beta_interp(j)=interp1([T(i),T(i-1)],[beta(i),beta(i-1)],T_interp(j));j=j+1;endend2在复杂航天任务分析中的应用—迭代j=1;462在复杂航天任务分析中的应用—迭代5)绘制计算结果并关闭连接%迭代收敛后,将迭代结果对应的轨道主要特征绘制出来。set(gcf,'color',[1,1,1])subplot(2,1,1)holdon;plot(T_interp,beta_interp,'k.',T_interp,beta_interp,'k');holdon;plot([0t_end],[104,104],'r',[0t_end],[114,114],'g',[0t_end],[124,124],'r')axis([0,t_end,-180,180])subplot(2,1,2)h=(sqrt(R_MB_all(:,1).^2+R_MB_all(:,2).^2+R_MB_all(:,3).^2)-6378140)/1000;plot(T_MB_all,h,'k');holdon;plot([0t_end],[332,332],'g','LineWidth',2)axis([0,t_end,300,400])holdon;stkClose(conid)2在复杂航天任务分析中的应用—迭代5)绘制计算结果并关闭连472在复杂航天任务分析中的应用—迭代飞船入轨时刻相位取值范围飞船入轨时刻目标飞行器相位需要的终点轨道高度初始圆轨道高度2在复杂航天任务分析中的应用—迭代飞船入轨时刻飞船入轨时刻482在复杂航天任务分析中的应用—循环+嵌套迭代循环+嵌套迭代——交会对接对远距离导引精度分析入轨第1次变轨(抬高近地点)第2次变轨(修正轨道面)第3次变轨(抬高远地点)第4次变轨(抬高近地点)第5次变轨(组合修正)导引终点目标飞船2在复杂航天任务分析中的应用—循环+嵌套迭代循环+嵌套迭代492在复杂航天任务分析中的应用—循环+嵌套迭代远距离导引的终端约束为:在给定时刻,飞船与目标飞行器共面,处于比目标飞行器轨道略低的近圆轨道上,且相对目标飞行器相位满足要求。上述约束条件的数学描述即为给定时刻飞船相对于目标飞行器的相对位置和相对速度满足给定要求(标称值及误差范围)。可用于规划的变量即为各次变轨的时刻及变轨速度增量。为减少可变因素并简化工程实施,变轨时刻通常选择在近地点或远地点,变轨速度增量限定为水平方向(轨道面修正除外)。由于各次变轨均会对终点状态产生影响,因此每次变轨规划都是后续剩余变轨规划变量的统一综合规划。2在复杂航天任务分析中的应用—循环+嵌套迭代502在复杂航天任务分析中的应用—循环+嵌套迭代远距离导引精度分析具体计算过程可分为两个层次的循环或迭代:最外层循环为误差样本空间中循环多次采样
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 林业考试题库及答案
- 声波的产生与接收机制试题及答案
- Unit 2 Strong mind词汇+阅读 教学设计 2024-2025学年沪教版英语七年级上册
- 施工常见问题处理协议
- 福建事业单位考试考前注意事项试题及答案
- 统计师考试信息可视化题目及答案
- 档案系统维护及管理试题及答案
- 汽车类对口测试题及答案
- 清华大学语文试题及答案
- 【9物(科)第一次月考】安徽省合肥市第四十二中学中铁国际城校区2023-2024学年下学期九年级第一阶段检测物理
- 2025-2030中国露酒行业市场深度分析及发展趋势与投资战略研究报告
- 生产车间5S管理制度
- 2025交管12123学法减分考试题库和答案
- T-JDFA 02-2024 江苏省转型融资主体认定评价标准
- 2025年开封大学单招职业倾向性测试题库汇编
- 2023学年杭州市余杭区七年级语文下学期期中考试卷附答案解析
- 贵州省县中新学校计划项目2025届高三下学期开学联考语文试题及答案
- 2023-2024年护师类之护师初级基础试题库和答案要点
- 《道路交通安全法》课件完整版
- 加快形成农业新质生产力
- 演员经纪合同法律风险-洞察分析
评论
0/150
提交评论