打开MATLAB运行下面的脚本创建场景和飞机:
%打开一个STK应用实例
uiapp = actxserver('STK10.application');
%获取STK用户界面
root = uiapp.Personality2;
%显示界面
uiapp.visible = 1;
%创建一个新场景并设定时区
root.NewScenario('open_STK');
%设置时间日期格式为UTCG
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
root.UnitPreferences.Item('Distance').SetCurrentUnit('m');
aircraft = root.CurrentScenario.Children.New('eAircraft', 'MyAircraft');
aircraft.VO.Model.ModelData.set('Filename',
'STKData\VO\Models\Air\b-52_stratofortress.mdl');
route = aircraft.Route;
ptsArray = {37.5378,101,5000,20,5;
47.2602,30.5517,5000,20,5;
47.2602,30.5517,5000,20,5;
39.5378,14.2207,5000,20,5;};
route.SetPointsSmoothRateAndPropagate(ptsArray);
%Propagate the route
route.Propagate;
然后添加传感器:
%添加传感器
sensor1=aircraft.Children.New('eSensor','sensor1');
传感器指向默认是机体系(英式坐标系) Z轴。传感器具有独立子类和接口,可以用MATLAB做一些自动化设置。
STK中的传感器类型可以在传感器属性窗口下的Definition中设置:
默认类型是45°的简单圆锥体。STK中的传感器有以下几种类型,使用MATLAB命令行获取当前传感器类型:
sensor1.PatternType()
默认半顶角是45°。 半顶角越大,翻盖面积越大,例如改成60°读半顶角:
% 设置传感器类型为简单圆锥
%sensor1.SetPatternType('eSnSimpleConic');
% 设置圆锥体的半顶角
%sensor1.Pattern.set('ConeAngle',30);
% 设置角度分辨率
%sensor1.Pattern.set('AngularResolution',1);
复杂圆锥体由内外两个圆锥构成,通过调整两个圆锥的半顶角和底面圆周角度,可以构建复杂的探测区域,探测区域是夹在这两个圆锥体之间的空间区域。比如构建两个半顶角分别为30°和45°的探测圆锥体:
将底面圆周角度改为180°,得到一个马蹄铁形的探测区域:
使用MATLAB设定传感器类型为复杂圆锥体:
% 设置传感器类型为复杂圆锥体
sensor1.SetPatternType('eSnComplexConic');
% 设置内层圆锥体半顶角
sensor1.Pattern.set('InnerConeHalfAngle',30);
% 设置外层圆锥体半顶角
sensor1.Pattern.set('OuterConeHalfAngle',60);
% 设定底面圆周起始角度
sensor1.Pattern.set('MinimumClockAngle',30);
% 设置底面圆周终止角度
sensor1.Pattern.set('MaximumClockAngle',120);
调整水平和竖直两个方向的射线角度,可以得到不同的探测矩形,例如把水平角度改成60°:
接着把竖直方向改成15°:
使用MATLAB设置传感器类型为矩形探测器:
% 设置传感器类型为矩形
sensor1.SetPatternType('eSnRectangular');
% 设置水平方向射线角度
sensor1.Pattern.set('VerticalHalfAngle',20);
% 设置垂直方向射线角度
sensor1.Pattern.set('HorizontalHalfAngle',60);
合成孔径可以生成更复杂的探测空间,包括前后排除区和内部圆锥排除区,目的是增大对机身两侧的探测范围。例如将前排除区的角度范围改成60°:
接着将后排除区的角度改成80°:
调整射线角度的下限可以改变外层的覆盖范围,例如将min改成30°:
外层覆盖范围减小。将max改成60°,内层排除区覆盖范围增大:
SAR传感器还有一个选项是Track parent altitude,选中后传感器的高度自动设置为飞机的高度,不选中就是固定值。
使用MATLAB设置传感器类型为SAR:
% 设置传感器类型为合成孔径
sensor1.SetPatternType('eSnSAR');
% 传感器载机高度
sensor1.Pattern.set('ParentAltitude',10);
% 射线倾角起始值
sensor1.Pattern.set('MinElevationAngle',20);
% 射线倾角终止值
sensor1.Pattern.set('MaxElevationAngle',30);
% 前排除角度
sensor1.Pattern.set('ForeExclusionAngle',60);
% 后排除角度
sensor1.Pattern.set('AftExclusionAngle',60);
注意
在传感器属性窗口中选中Track parent altitude时:
sensor1.Pattern.set('ParentAltitude',10);
将会报错,因为这个时候ParentAltitude属性是只读的。
传感器指向可以在属性窗口的Pointing下设置:
Pointing Type 设置传感器指向类型,About Boresight设置传感器瞄准线是否跟着设定的指向旋转,hold为不跟随旋转,Rotate为跟随旋转,常用的传感器指向类型有:
调整方位角(Azimuth)和高低角(Elevation)可以改变传感器指向。例如
传感器指向变为:
使用MATLAB设定:
% 单独设置传感器指向为固定指向
sensor1.SetPointingType('eSnPtFixed');
%设置指向同时设定参数
%(1)高低角指向定位方法
% 设定高低角和方位角,第一个值是方位角,第二个值是高低角
%eAzElAboutBoresightRotate表示传感器瞄准线跟随旋转
sensor1.CommonTasks.SetPointingFixedAzEl(-30,30,'eAzElAboutBoresightRotate');
% 设定高低角和方位角,eAzElAboutBoresightHold表示传感器瞄准线不跟随旋转
sensor1.CommonTasks.SetPointingFixedAzEl(-30,30,'eAzElAboutBoresightHold');
%(2)欧拉角指向定位方法,旋转顺序是121,更多顺序定义参见:
% https://blog.csdn.net/anbuqi/article/details/120380097 4.矢量指向定位方法
sensor1.CommonTasks.SetPointingFixedEuler('e121',30,30,30);
%(3)四元数指向定位,参数顺序是:qx,qy,qz,qs
sensor1.CommonTasks.SetPointingFixedQuat(0.1,0.1,0.1,0);
%(4) 偏航、俯仰和滚转(YPR),参数顺序:旋转序列,yaw,pitch,roll,
sensor1.CommonTasks.SetPointingFixedYPR('ePRY',0.,-30,60)
默认参考系为机体系(英式)。
固定和在某个坐标系中固定的区别
固定指向:是指在空间中的指向固定不变,参考系是仿真环境的绝对坐标系。
在某个坐标系中固定指向:传感器的指向与这个坐标系无相对运动,但是这个参考坐标系可以相对于绝对坐标系运动。
使用MATLAB查看可以使用的坐标系:
sensor1.Pointing.AvailableAxes
在MATLAB中设定传感器指向和(1)中基本类似,只是多了一个坐标系定义:
%2.设定指向在某个坐标系中固定
%单独设置在某个坐标系中固定
sensor1.SetPointingType('eSnPtFixedAxes');
%(1)高低角指向定位方法
% 设定高低角和方位角,参数:参考坐标系,方位角,高低角
sensor1.CommonTasks.SetPointingFixedAxesAzEl('Aircraft/MyAircraft Body Axes',
-30,30,'eAzElAboutBoresightRotate');
%(2)欧拉角指定方位,参数:参考坐标系,旋转顺序,三个欧拉角
sensor1.CommonTasks.SetPointingFixedAxesEuler('Aircraft/MyAircraft Body Axes',
'e121',30,-30,30)
%(3)四元数
sensor1.CommonTasks.SetPointingFixedAxesQuat('Aircraft/MyAircraft Body Axes',
0.1,0.1,0.1,0)
%(4)姿态角
sensor1.CommonTasks.SetPointingFixedAxesYPR('Aircraft/MyAircraft Body Axes',
'ePRY',0.,-30,60)
设置为定轴转动时,传感器的指向将绕空间中某个固定轴转动:
%4.单独设定为切入高度,这一般用于航天中
sensor1.SetPointingType('eSnPtGrazingAlt');
%设定为切入高度同时设定参数,参数顺序:方位角偏移,高度
sensor1.CommonTasks.SetPointingGrazingAlt(60,10);