STK与Matlab的互联与应用_第1页
STK与Matlab的互联与应用_第2页
STK与Matlab的互联与应用_第3页
STK与Matlab的互联与应用_第4页
STK与Matlab的互联与应用_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STK与Matlab的互联与应用北京天问空间科技有限公司二〇一四年四月什么是互联?

前言通过STK的连接模块,实现STK与第三方应用程序(Matlab、VC、VB、Java、HTML等)的交互。为什么介绍与Matlab的互联?简单;够用为什么要互联?单独一方干不成或难度大,通过互联可充分发挥STK与第三方应用程序各自的优势。STK与Matlab互联——两个强大成熟商业软件的强强联合

前言注意:“站在两个巨人肩膀上”本身也很复杂,所以除非确有必要,否则就是杀鸡用牛刀,简单问题复杂化。

前言本课程的主要内容一、互联的设置与运行二、常用语句及语法简介三、具体应用实例

前言

一、互联的设置与运行一、互联的设置与运行1、STK8.0和Matlab6.5互联的设置1)先安装Matlab后安装STK的情况将STK安装目录下ToolboxLocal文件夹中的“agiCleanPath.m”、“agiInit.m”和“stkInit.m”复制到Matlab安装目录下的local文件夹中。之后步骤与1)相同启动STK和Matlab在Matlab中运行stkinit选择M文件位置(安装目录下的“Matlab”文件夹)选择Mex文件位置(安装目录下的“bin”文件夹)其他设置采用默认值(询问是否更改默认值时,选择“no”)2)先安装STK后安装Matlab的情况参考《STK在计算机仿真中的应用》、《STK在航天任务仿真分析中的应用》2、STK10和Matlab

2011互联的设置2)安装MatlabConnector将"STK安装目录\bin\Matlab"文件夹中的"agiCleanPath.m"、"agiInit.m"和"stkInit.m"复制到"Matlab安装目录\toolbox\local"文件夹中。1)如果先安装STK后安装Matlab3)运行RefreshMatlabPath选择32位MatlabSTK文件夹。4)启动Matlab和STK在Matlab中将当前目录更改到“Matlab安装目录\toolbox\local”下一、互联的设置与运行3、

互联的运行1)Matlab主动方式参考《STK在计算机仿真中的应用》、《STK在航天任务仿真分析中的应用》启动STK通过菜单栏进入“Tools>Options”选项,选中“Matlab”选项卡,单击其中的“Connect”按钮。启动STK和Matlab在Matlab中运行stkinit2)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设置对象的描述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产生动力学状态数据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向STK发送指令的便捷方式二、常用语句及语法简介1、接口函数STK提供超过200个Matlab格式化过封装好的命令。2、航天应用常用接口函数的使用1)初始化需要的接口函数stkInit——完成STK和Matlab的互联conid=stkOpen(stkDefaultHost);——返回互联成功的主机端口的连接句柄2)初始窗口管理ifstkValidScen==1

stkUnload('/*')end——如果已经有打开的场景,则关闭场景。二、常用语句及语法简介3)建立场景stkNewObj('/','Scenario','场景名称');——建立给定名称的场景。stkSetTimePeriod('10Apr200300:00:00.0','12Apr200300:00:00.0','GREGUTC');——设置场景的起止时间和采用的时间系统。stkSetEpoch('10Apr200300:00:00.0','GREGUTC');——设置场景的历元。stkSyncEpoch;——同步aeroToolbox和STK场景历元。rtn=stkConnect(conid,'Animate','Scenario/场景名称','SetValues"10Apr200300:00:00.0"600.1');——设置STK场景动画历元。rtn=stkConnect(conid,‘Animate’,‘Scenario/场景名称’,‘Reset’);——设置动画时间复位。二、常用语句及语法简介4)建立航天器stkNewObj('*/','Satellite','航天器名称');——建立卫星。stkSetPropClassical('objPath','propagator','coordSystem',tStart,tStop,dt,orbitEpoch,semimajorAxis,eccentricity,inclination,argOfPerigee,RAAN,meanAnomaly,coordEpoch)二、常用语句及语法简介

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–轨道历元。

semimajorAxis,eccentricity,inclination,argOfPerigee,RAAN,meanAnomaly–6个轨道根数。其中,若坐标系选为‘AlignmentAtEpoch’,RAAN为升交点地理经度,若坐标系选为‘J2000’,RAAN为升交点赤经。

coordEpoch–坐标历元,所有'...OfEpoch'选项均需提供对应的坐标历元。二、常用语句及语法简介若动力学模型选为“HPOP模型”,则还需要通过stkConnect函数设置各种力模型参数。stkConnect(conid,‘HPOP’,‘ObjectPath

’,‘力模型及参数')第一类力模型及参数:设置重力、第三体引力、太阳光压、固体潮、海潮、辐射压参数。语法:Force{ForceModel}<ModelParameters>二、常用语句及语法简介ForceModelModelParameters说明Gravity"<FilePath>"<MaxDegreeValue><MaxOrderValue><MaxDegreeValue>和<MaxOrderValue>取值为0.0~1000.0,<MaxOrderValue>必须小于等于<MaxDegreeValue>,并且都小于所选择的重力场文件的最高阶数。ThirdBodyGravity<CentralBodyName>{On|Off}{GravSource}[<UserGravValue>]{GravSource}有效值为Internal,FromCB,JPLDEFile或User,若选择User,用户自定义值需为正值。SolarRad{SolarRadState}[<Coeff><AreaMassRatio>][ShadowModel{ModelType}][BoundaryMitigation{On|Off}]{SolRadState}可设置为On或Off。如果设置为On,还需要设置-100.0~100.0的光压系数<Coeff>,和0.0~9999.00的面质比参数。<AreaMassRatioValue>。阴影模型参数{ModelType}]可取为空、圆柱或双圆锥。二、常用语句及语法简介ForceModelModelParameters说明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范围内,单位是米。RadiationPressure

Albedo{On|Off}Thermal{On|Off}Coefficient<CoeffValue>

AreaMassRatio<AMRValue>File"<FilePath>"<CoeffValue>为-100~100.0之间的实数。<AMRValue>为0.0~9999.0之间的实数,单位是m^2/kg。"<FilePath>"地面反射模型文件。二、常用语句及语法简介例子:stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','ForceGravity"C:\ProgramFiles\AGI\STK\STKData\CentralBodies\Earth\JGM3.grv"88');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','Force

SolarRadOff');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','Force

ThirdBodyGravitySunOff');stkConnect(conid,'HPOP','Scenario/场景名称/Satellite/航天器名称','Force

ThirdBodyGravityMoonOff');二、常用语句及语法简介第二类力模型及参数:设置大气密度模型及参数。语法:Drag{DragState}<Coeff><AreaMassRatio>{"AtmDensModel"}{DragState}设置为On或Off。设置为Off则不需要输入其他参数。设置为On时,<Coeff>为-10.0~10.0之间的实数,<AreaMassRatio>为0.0~9999.0之间的实数,{"AtmDensModel"}的有效输入值和相应的<Parameters>输入值见表所示。二、常用语句及语法简介{"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>""Jacchia-Roberts""CIRA1972""NRLMSISE2000""MSISE1990""MSIS1986""<UserModelName>""<FilePath>"二、常用语句及语法简介例如: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"');二、常用语句及语法简介5)建立地面站stkNewObj('*/','Facility','测站名称')——建立地面站。stkSetFacPosLLA('Scenario/场景名称/Facility/测站名称',[phi;namda;h])——设置地面站的经度、纬度和高度。stkConnect(conid,'SetConstraint','Scenario/场景名称/Facility/测站名称','ElevationAngleMin最低仰角值')——设置地面站的最低仰角。stkConnect(conid,‘SetConstraint’,‘Scenario/场景名称/Facility/测站名称’,‘RangeMax最大探测距离值');——设置地面站的最大探测距离。二、常用语句及语法简介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/测站名称')——输出航天器相对于测站的可见时间段。二、常用语句及语法简介7)关闭STK和Matlab连接上述1)~7)过程为利用STK/Matlab接口进行计算分析的常用或基本函数。stkClose(conid)注:STK和Matlab默认最多同时可创建2个连接,因此每次程序运行结束通常需要关闭连接,以免下次运行重新建立连接时个数超过限制。二、常用语句及语法简介

注意:Matlab接口函数在STK帮助文件中无法查询,最好的学习方式是在“STK安装目录\Matlab”目录中,打开各个函数看函数说明。3、“万能”接口函数stkExec二、常用语句及语法简介

可直接发送近600条STK的连接指令,涵盖场景设置、相对运动关系计算、图形显示等方方面面,可实现远多于Matlab其他封装好的接口函数功能。rtn=stkExec(conID,'conCmdStr')conID–连接句柄conCmdStr–指令

注意:stkConnect函数是该函数的封装或简化版本,与其功能一致但语法略有差异。建议采用stkExec进行指令发送,以便能与帮助文件中的指令语法严格对应。二、常用语句及语法简介

超过600条的连接指令怎么学习和掌握?1)通过模仿例句掌握常用语句。2)学会使用STK帮助文件。二、常用语句及语法简介例如,完成同样的建立卫星的工作,在完成互联得到连接句柄后,要想通过发送连接指令的方式,而不是Matlab封装命令的方式实现,可以用以下方式获得帮助。1)在STK9或SKT10的帮助文件“目录”项中,依次点开ExternalControlUsingConnect—ConnectCommandLibrary。(在STK8中对应的为IntegrationwithSTK—Connect—CommandListings)二、常用语句及语法简介

2)在ConnectCommandLibrary找到并点开ListingsbyObject,点选Vehicle类选项查看相关指令的说明Vehicle类包括适用于卫星、地面车辆、船、导弹和火箭的有关指令。二、常用语句及语法简介

3)找到并点开指令New查看语法说明和例子帮助文件语法说明二、常用语句及语法简介二、常用语句及语法简介根据帮助文件说明和附在最后的例子,可以看明白:New<ApplicationPath><ClassPath><NewObjectName>New指令名称。<ApplicationPath>应用程序路径,用斜杠/表示。<ClassPath>创建对象的类别路径,即指明创建对象为场景,或场景中的卫星,或场景中卫星上的传感器等。<NewObjectName>为创建对象起的名称。根据帮助,

生成场景的Matlab指令为

stkExec(conid,’New/Scenario

MyScenario’)

生成卫星的Matlab指令为

stkExec(conid,’New/Scenario/MyScenario/Satellite

MySat’)二、常用语句及语法简介

4)回到Vehicle目录,找到并点开指令SetStateClassical查看语法说明和例子二、常用语句及语法简介帮助文件语法说明二、常用语句及语法简介帮助文件语法说明二、常用语句及语法简介根据帮助,设定卫星轨道根数的Matlab指令为stkExec(conid,‘SetState*/Satellite/MySat

ClassicalHPOP"1Jul200712:00:00.0""1Jul200714:00:00.0"60J2000"1Jul200712:00:00.0"7163000.1370790.098.50.0139.7299360.0’)

二、常用语句及语法简介

如果希望熟练掌握通过“万能”函数发送连接指令的使用方式,最好能大体了解每一条连接指令的功能,需要用时可通过查询帮助确保语法正确。另外,与Astrogator有关的连接指令由于其语法相对于一般连接指令更加复杂,在STK帮助文件中单独列写,在字母排序的指令总表中也无法查到。Astrogatoe指令基本结构二、常用语句及语法简介

属性路径AttributePath

指令Command

属性Attribute

前缀Prefix

目标或场景路径ObjectorScenarioPath

操作令Operator

AstrogatorAstrogator_RM

SetValue

AddMCSSegmentControl

ApplyAllProfileChanges

ApplyCorrections

ApplyScript

ClearCorrections

ClearDWCGraphics

ClearMCSSegmentControls

DeleteSegment

DuplicateInsertSegment

……共22条操作令

MainSequenceSegmentList标识符之间用“.”例:stkExec(conid,’Astrogator

*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Epoch

0

EpSec’)

三、具体应用实例三、具体应用实例问题五:交会对接远距离导引精度分析

问题六:天基测控方案设计问题一:计算分析初始轨道根数误差与预报误差的关系问题二:计算分析磁暴对预报误差的影响问题三:计算星座对地面点的最大重访时间问题四:用“万能”接口函数实现更多互联控制基础应用高级应用三、具体应用实例问题一:计算分析初始轨道根数误差与预报误差的关系详细背景:对340km高度圆轨道,计算分析初始轨道根数误差对应的12小时位置预报误差。解决步骤:1)互联stkinit;%建立连接conid=stkOpen;%得到连接句柄(用于发送指令)delete(get(0,‘children’));%关闭其他绘图窗口scen_open=stkValidScen;%如果有已打开的场景,则自动关闭ifscen_open==1

stkUnload('/*')End三、具体应用实例2)建立场景%新建场景stkNewObj(‘/’,‘Scenario’,‘my_scenario’);

%设定时间stkSetTimePeriod(‘1Jun200200:00:00.00’,‘3Jun200200:00:00.00’,‘GREGUTC’);

%使aeroToolbox中函数的历元时间与场景一致stkSetEpoch('1Jun200200:00:00.00','GREGUTC');stkSyncEpoch;三、具体应用实例%设定场景动画开始时间rtn=stkConnect(conid,‘Animate’,‘Scenario/Plane’,‘SetValues“1Jun200200:00:00.00”600.1’);

%设定动画时间回到起始点rtn=stkConnect(conid,‘Animate’,‘Scenario/Plane’,‘Reset’);三、具体应用实例3)建立基准卫星轨道%新建卫星stkNewObj('*/','Satellite','SZ');%卫星积分起止时间、轨道历元时间、步长t_start=0;t_stop=24*3600;orbitEpoch=t_start;dt=60;%卫星初始轨道根数a=6717.2*1000;e=0.000598;i=42.403*pi/180;w=124.350*pi/180;Raan=356.102*pi/180;M=0*pi/180;三、具体应用实例%输入并积分卫星轨道stkSetPropClassical('*/Satellite/SZ',‘TwoBody','J2000',t_start,t_start+dt,dt,orbitEpoch,a,e,i,w,Raan,M);stkPropagate('*/Satellite/SZ',t_start,t_stop)%输出地心惯性系中的位置速度[T,r,v,cb]=stkEphemerisCBI('Scenario/Plane/Satellite/SZ',dt,t_start,t_stop);三、具体应用实例4)建立偏差卫星轨道%初值误差error_a=-10;error_e=0*3e-05;error_i=0*0.004*pi/180;error_Raan=0*0.004*pi/180;error_M=0*1*pi/180;error_w=0*0.001*pi/180-error_M;%输入并积分误差卫星轨道stkSetPropClassical('*/Satellite/SZ',‘TwoBody','J2000',t_start,t_start+dt,dt,orbitEpoch,a+error_a,e+error_e,i+error_i,w+error_w,Raan+error_Raan,M+error_M);stkPropagate('*/Satellite/SZ',t_start,t_stop)%输出地心惯性系中的位置速度[T,r_error,v_error,cb]=stkEphemerisCBI('Scenario/Plane/Satellite/SZ',dt,t_start,t_stop);三、具体应用实例5)计算相对基准轨道的偏差并绘图form=1:length(T)

i_r=r(:,m)/norm(r(:,m));

i_n=CrossProduct(r(:,m),v(:,m))/norm(CrossProduct(r(:,m),v(:,m)));

i_t=CrossProduct(i_n,i_r);

error_R_r(m)=DotProduct((r_error(:,m)-r(:,m)),i_r);

error_R_n(m)=DotProduct((r_error(:,m)-r(:,m)),i_n);

error_R_t(m)=DotProduct((r_error(:,m)-r(:,m)),i_t);

error_V_r(m)=DotProduct((v_error(:,m)-v(:,m)),i_r);

error_V_n(m)=DotProduct((v_error(:,m)-v(:,m)),i_n);

error_V_t(m)=DotProduct((v_error(:,m)-v(:,m)),i_t);endplot(T/3600,error_R_r/1000,‘r’,‘LineWidth’,3);holdon;plot(T/3600,error_R_t/1000,‘b’,‘LineWidth’,3);holdon;plot(T/3600,error_R_n/1000,‘g’,‘LineWidth’,3);holdon;三、具体应用实例6)关闭连接stkClose(conid)三、具体应用实例问题二:计算分析磁暴对预报误差的影响详细背景:对340km高度圆轨道,计算分析出现未预料的磁暴时,轨道预报误差变化。解决步骤:1)查找磁暴历史数据三、具体应用实例2)互联3)建立场景(选择2013年10月31日0:0:0作为起始时间)4)建立基准卫星轨道%输入并积分卫星轨道(必须选用HPOP模型)stkSetPropClassical('*/Satellite/SZ',‘HPOP,'J2000',t_start,t_start+dt,dt,orbitEpoch,a,e,i,w,Raan,M);%选择大气密度模型和大气阻力计算相关参数,其中空间环境参数采用固定值stkConnect(conid,'HPOP','Scenario/Plane/Satellite/SZ','DragOn2.00.0022"NRLMSISE2000"Manual1501502.667');%选择重力场模型stkConnect(conid,'HPOP','Scenario/Plane/Satellite/SZ','ForceGravity"C:\ProgramFiles\AGI\STK8\STKData\CentralBodies\Earth\JGM3.grv"88');三、具体应用实例%取消太阳光压、日月引力摄动因素影响stkConnect(conid,'HPOP','Scenario/Plane/Satellite/SZ','Force

SolarRadOff');stkConnect(conid,'HPOP','Scenario/Plane/Satellite/SZ','Force

ThirdBodyGravitySunOff');stkConnect(conid,'HPOP','Scenario/Plane/Satellite/SZ','Force

ThirdBodyGravityMoonOff');%积分卫星轨道并输出位置速度stkPropagate('*/Satellite/SZ',t_start,t_stop)[T,r,v,cb]=stkEphemerisCBI('Scenario/Plane/Satellite/SZ',dt,t_start,t_stop);三、具体应用实例5)建立磁暴条件下卫星轨道stkConnect(conid,'HPOP','Scenario/Plane/Satellite/SZ','DragOn2.00.0022"NRLMSISE2000"File"C:\ProgramFiles\AGI\STK8\DynamicEarthData\stkFluxGeoMag.fxm"');%积分卫星轨道并输出位置速度stkPropagate('*/Satellite/SZ',t_start,t_stop)[T,r_error,v_error,cb]=stkEphemerisCBI('Scenario/Plane/Satellite/SZ',dt,t_start,t_stop);三、具体应用实例6)计算相对基准轨道的偏差并绘图三、具体应用实例问题三:计算星座对地面点的最大重访时间详细背景:给定一个星座,计算分析两天时间内该星座对全球每一点的最大重访时间。解决步骤:1)互联2)建立场景三、具体应用实例%新建四颗卫星stkNewObj('*/','Satellite','sat1');stkNewObj('*/','Satellite','sat2');stkNewObj('*/','Satellite','sat3');stkNewObj('*/','Satellite','sat4');%设置起止时间、历元时刻、积分步长t_start=0;t_stop=2*(24*3600);dt=60;orbitEpoch=t_start;%基准星轨道根数a_MB=7000*1000;e_MB=0;i_MB=60*pi/180;w_MB=0*pi/180;Raan_MB=0*pi/180;M_MB=0*pi/180;3)建立卫星星座三、具体应用实例%输入并积分星座轨道stkSetPropClassical('*/Satellite/sat1','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_MB,e_MB,i_MB,w_MB,Raan_MB,M_MB);stkPropagate('*/Satellite/sat1',t_start,t_stop)stkSetPropClassical('*/Satellite/sat2','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_MB,e_MB,i_MB,w_MB,Raan_MB+pi/4,M_MB+pi);stkPropagate('*/Satellite/sat2',t_start,t_stop)stkSetPropClassical('*/Satellite/sat3','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_MB,e_MB,i_MB,w_MB,Raan_MB+pi/2,M_MB+2*pi);stkPropagate('*/Satellite/sat3',t_start,t_stop)stkSetPropClassical('*/Satellite/sat4','J2Perturbation','J2000',t_start,t_stop,dt,orbitEpoch,a_MB,e_MB,i_MB,w_MB,Raan_MB+3*pi/4,M_MB+pi/2);stkPropagate('*/Satellite/sat4',t_start,t_stop)三、具体应用实例%新建地面站stkNewObj('*/','Facility','Point');%循环计算fori=1:n_namda+1forj=1:n_phi+1%设置地面站经纬度坐标

namda=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/Test/Facility/Point',[phi;namda;0]);4)建立地面站,循环计算不同位置的最大重访时间三、具体应用实例%根据对地观测需求设置地面点最低跟踪仰角stkConnect(conid,'SetConstraint','Scenario/Test/Facility/Point','ElevationAngleMin50');%计算各星访问时间interval1=stkAccess('Scenario/Test/Satellite/sat1','Scenario/Test/Facility/Point');interval2=stkAccess('Scenario/Test/Satellite/sat2','Scenario/Test/Facility/Point');interval3=stkAccess('Scenario/Test/Satellite/sat3','Scenario/Test/Facility/Point');interval4=stkAccess('Scenario/Test/Satellite/sat4','Scenario/Test/Facility/Point');三、具体应用实例%计算最大重访时间,直至循环结束temp=0;ifsize(interval1)==[00]&size(interval2)==[00]&size(interval3)==[00]&size(interval4)==[00]

Z(i,j)=0;Elseifsize(interval1)~=[00]temp=[temp,interval1.start,interval1.stop];endifsize(interval2)~=[00]temp=[temp,interval2.start,interval2.stop];endifsize(interval3)~=[00]temp=[temp,interval3.start,interval3.stop];endifsize(interval4)~=[00]temp=[temp,interval4.start,interval4.stop];endtemp1=sort(temp(2:length(temp)));

Z(i,j)=max(diff(temp1))/3600;endendend三、具体应用实例三、具体应用实例问题四:通过“万能”接口函数实现更多互联控制详细背景:练习通过直接发送接口函数命令实现一般的Matlab封装接口函数无法实现的功能。具体是,通过发送Astrogator连接命令,设置卫星在近地点入轨,近地点高度200km,远地点高度600km,运行5圈后,在远地点变轨形成圆轨道。输出卫星轨道高度曲线。解决步骤:1)互联三、具体应用实例2)建立场景,命名为“my_scenario”stkExec(conid,'New/Scenariomy_scenario');三、具体应用实例3)建立卫星,命名为“my_sat”stkExec(conid,'New/*/Satellitemy_sat');三、具体应用实例4)设定卫星历元和轨道根数stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Epoch0EpSec');stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Keplerian.sma6771km');stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ecc0.02953');stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Keplerian.inc28deg');三、具体应用实例stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Keplerian.Raan0deg');stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Keplerian.w0deg');stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Initial_State.InitialState.Keplerian.TA0deg');三、具体应用实例三、具体应用实例5)设定卫星第一段积分的停止条件为“远地点”stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Propagate.StoppingConditions

Apoapsis');三、具体应用实例6)设定卫星第一段积分的停止条件中远地点经过次数为5stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Propagate.StoppingConditions.Apoapsis.RepeatCount5');三、具体应用实例7)添加一个“TargetSequence”段stkExec(conid,'Astrogator*/Satellite/my_sat

InsertSegment-Target_Sequence');三、具体应用实例8)在“TargetSequence”中添加“Maneuver”stkExec(conid,'Astrogator*/Satellite/my_sat

InsertSegment

MainSequence.SegmentList.Target_Sequence.SegmentList.-Maneuver');三、具体应用实例9)设定“Maneuver”的变轨控制目标为偏心率stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Target_Sequence.SegmentList.Maneuver.ResultsEccentricity');三、具体应用实例10)设定“Maneuver”的类型为“Impulsive”stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Target_Sequence.SegmentList.Maneuver.MnvrTypeImpulsive');三、具体应用实例11)设定姿态类型为“ThurstVector”stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Target_Sequence.SegmentList.Maneuver.AttitudeControlThrustVector');三、具体应用实例12)设定X方向(速度方向)速度增量为迭代自变量stkExec(conid,'Astrogator*/Satellite/my_sat

AddMCSSegmentControl

MainSequence.SegmentList.Target_Sequence.SegmentList.Maneuver

ImpulsiveMnvr.Cartesian.X')三、具体应用实例13)激活自变量stkExec(conid,'Astrogator*/Satellite/my_sat

SetMCSControlValue

MainSequence.SegmentList.Target_Sequence.Profiles.Differential_CorrectorManeuverImpulsiveMnvr.Cartesian.X

Activetrue');三、具体应用实例14)激活约束变量stkExec(conid,'Astrogator*/Satellite/my_sat

SetMCSConstraintValue

MainSequence.SegmentList.Target_Sequence.Profiles.Differential_CorrectorManeuverEccentricityActivetrue');三、具体应用实例15)设定偏心率迭代收敛精度为0.001stkExec(conid,'Astrogator*/Satellite/my_sat

SetMCSConstraintValue

MainSequence.SegmentList.Target_Sequence.Profiles.Differential_CorrectorManeuverEccentricityTolerance0.001');三、具体应用实例16)设定偏心率迭代目标为0stkExec(conid,'Astrogator*/Satellite/my_sat

SetMCSConstraintValue

MainSequence.SegmentList.Target_Sequence.Profiles.Differential_CorrectorManeuverEccentricityDesired0');三、具体应用实例17)“Action”类型选择为“Runactiveprofiles”stkExec(conid,'Astrogator*/Satellite/my_sat

SetValue

MainSequence.SegmentList.Target_Sequence.Action

Runactiveprofiles');三、具体应用实例18)在“TargetSequence”后插入“Propagate”段stkExec(conid,'Astrogator*/Satellite/my_sat

InsertSegment

MainSequence.SegmentList.-Propagate');三、具体应用实例19)设置“Propagate”积分停止时间为450分钟stkExec(conid,'Astrogator*/Satellite/my_sat

SetValueMainSequence.SegmentList.Propagate1.StoppingConditions.Duration.TripValue450min');三、具体应用实例20)运行并输出经度、纬度、高度stkExec(conid,'Propagate*/Satellite/my_sat"1Jul200712:00:00.000""2Jul200712:00:00.000"');stkExec(conid,'GraphCreate*/Satellite/my_satTypeDisplayStyle"LLAPosition"');问题五:交会对接远距离导引精度分析

针对给定的天地基测控资源和飞船远距离导引段变轨方案,分析不同测量手段、不同空间环境条件对应的远距离导引精度,以及各误差因素对远距离导引精度的影响,为测控资源优化配置与使用,以及轨控方案优化提供技术依据。工程背景:

解决步骤:

1.解决各次变轨前的轨控策略计算问题轨控策略计算:求解可规划的参数,使终端相对运动状态满足约束条件。三、具体应用实例注:由于涉及多层嵌套循环和迭代计算,且收敛判据复杂,单STK已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论