STK 航空仿真(四)传感器

1.添加传感器到飞机

打开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做一些自动化设置。

2. 常用传感器类型

STK中的传感器类型可以在传感器属性窗口下的Definition中设置:

 默认类型是45°的简单圆锥体。STK中的传感器有以下几种类型,使用MATLAB命令行获取当前传感器类型:

 sensor1.PatternType()

(1)简单圆锥体(simple conic

默认半顶角是45°。 半顶角越大,翻盖面积越大,例如改成60°读半顶角:

 使用MATLAB设定传感器类型为简单圆锥体:

% 设置传感器类型为简单圆锥
%sensor1.SetPatternType('eSnSimpleConic');
% 设置圆锥体的半顶角
%sensor1.Pattern.set('ConeAngle',30);
% 设置角度分辨率
%sensor1.Pattern.set('AngularResolution',1);

 (2)复杂圆锥体(Complex Conic)

复杂圆锥体由内外两个圆锥构成,通过调整两个圆锥的半顶角和底面圆周角度,可以构建复杂的探测区域,探测区域是夹在这两个圆锥体之间的空间区域。比如构建两个半顶角分别为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);

 (3)矩形探测器(Rectangular)

 

调整水平和竖直两个方向的射线角度,可以得到不同的探测矩形,例如把水平角度改成60°:

 接着把竖直方向改成15°

使用MATLAB设置传感器类型为矩形探测器:

% 设置传感器类型为矩形
sensor1.SetPatternType('eSnRectangular');
% 设置水平方向射线角度
sensor1.Pattern.set('VerticalHalfAngle',20);
% 设置垂直方向射线角度
sensor1.Pattern.set('HorizontalHalfAngle',60);

 (4)合成孔径(SAR)

 合成孔径可以生成更复杂的探测空间,包括前后排除区和内部圆锥排除区,目的是增大对机身两侧的探测范围。例如将前排除区的角度范围改成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属性是只读的。

 3. 传感器指向类型

传感器指向可以在属性窗口的Pointing下设置:

Pointing Type 设置传感器指向类型,About Boresight设置传感器瞄准线是否跟着设定的指向旋转,hold为不跟随旋转,Rotate为跟随旋转,常用的传感器指向类型有:

(1)与机身固定(Fixed)

 调整方位角(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)

(2)在某个坐标系中固定(Fixed in Axes)

 默认参考系为机体系(英式)。

固定和在某个坐标系中固定的区别

固定指向:是指在空间中的指向固定不变,参考系是仿真环境的绝对坐标系。

在某个坐标系中固定指向:传感器的指向与这个坐标系无相对运动,但是这个参考坐标系可以相对于绝对坐标系运动。

使用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)

(3)定轴转动(spinning)

设置为定轴转动时,传感器的指向将绕空间中某个固定轴转动:

(4)高度和方位角偏移(Grazing Alt)

%4.单独设定为切入高度,这一般用于航天中
 sensor1.SetPointingType('eSnPtGrazingAlt');
%设定为切入高度同时设定参数,参数顺序:方位角偏移,高度
 sensor1.CommonTasks.SetPointingGrazingAlt(60,10);

猜你喜欢

转载自blog.csdn.net/anbuqi/article/details/120435718