计算之间的接近速度的飞机

61(30天)
aposta95
aposta95 2021年12月29日
编辑: aposta952021年12月29日
你好,我要计算所有成对的飞机的关闭速度确定冲突率。
假设我有这些轨迹数据表2架飞机,我如何计算的关闭速度(节)2飞机?
我看到这篇文章(https://gamedev.stackexchange.com/q/118162/)对计算关闭速度(第一个答案),但是很混乱的Matlab计算像这样和我的数据。
我明白在每个时间戳和计算两架飞机之间的距离除以时间(在本例中,4秒)产生的关闭时间。
Q1),但每架飞机记录时间不完全相同,所以这应该考虑“时间差”来计算距离。
Q2)也,飞机高度改变每一个时间戳。所以,如何计算关闭速度不同海拔之间吗?
如果时间差异问题已经解决了,我会计算对飞机使用半正矢之间的水平距离公式,和高度的垂直距离。然后我将使用毕达哥拉斯的定理来计算对角,对角线的距离除以时间产生关闭时间。这是否有意义吗?
这些都是我的问题. .任何帮助将不胜感激!
+我附加的样本数据2架飞机,这是一个结构体类型的数据,包括时间、经度、纬度、速度、航向、高度。
+ +每架飞机记录时间不完全相同,所以这次应该考虑差异来计算距离。
我将使用“半正矢”来计算两架飞机之间的距离。
(https://kr.mathworks.com/matlabcentral/fileexchange/27785-distance-calculation-using-haversine-formula)
注意:因为它是不允许上传原始数据公开,我手动更改这些值。
3评论
aposta95
aposta95 2021年12月29日
@Image分析师 是的,我附加的数据结构类型。
@Chunru 谢谢你的建议!

登录置评。

答案(1)

梅格诺亚
梅格诺亚 2021年12月29日
这是你要找的吗?
%值的位置和速度的飞机
t0_s = (12.0 * 3600.0 + 0.0 * 60.0 + 2.0;
12.0 * 3600.0 + 0.0 * 60.0 + 6.0;
12.0 * 3600.0 + 0.0 * 60.0 + 10.0)';
lon0_deg = (121.78 121.29 121.81);
lat0_deg = (38.27 38.27 38.26);
speed_knot = (513 511 510);
heading_deg = (173 173 173);
alt_m = 10 e3 *的(大小(lon0_deg));%近似与飞机表面
nplane =元素个数(lon0_deg);
%的速度转换为m / s
speed_m_per_s = 0.514444 * speed_knot;
%选择一次的快照
T_s = t0_s (1);
%找到平面位置的时差
delta_time_s = T_s - t0_s;
%在T_s找到每架飞机的位置
% http://www.movable-type.co.uk/scripts/latlong.html
%给定起始点,初始方位和距离找到位置
%使用这个发现同时每架飞机的位置
R_m = 6371.23 e3 + alt_m;地球半径% +高度的飞机
distance_m = speed_m_per_s。* delta_time_s;
latT_deg = asind(信德(lat0_deg)。* cos (distance_m / R_m) +
(cosd (lat0_deg)。* sin (distance_m / R_m))。* cosd (heading_deg));
lonT_deg = lon0_deg +
atan2d(信德(heading_deg)。*信德(distance_m / R_m)。* cosd (lat0_deg),
因为(distance_m / R_m)信德(lat0_deg)。*信德(latT_deg));
%的ECEF坐标找到飞机
ecef_pos = lla2ecef ([latT_deg lonT_deg alt_m”);
%认为飞机旅行在一个固定的高度
%速度ECEF坐标:
uNorth = speed_m_per_s。* cosd (heading_deg);
vEast = speed_m_per_s。*信德(heading_deg);
wDown = 0;
[U, V, W] = ned2ecefv (uNorth、vEast wDown, latT_deg, lonT_deg);
ecef_vel = [U ' V ' W '];
%找到关闭飞机相对于飞机的速度为每1
iplane = 2: nplane
deltaP_m = (ecef_pos (iplane:) -ecef_pos (1:));
unit_deltaP = deltaP_m /规范(deltaP_m);
deltaV_m_per_s = (ecef_vel (iplane:) -ecef_vel (1:));
closing_speed_m_per_s =点(deltaV_m_per_s unit_deltaP);
v_closing_m_per_s = closing_speed_m_per_s * unit_deltaP;
流(1,' % d飞机1关闭速度= % f m / s \ n 'iplane,
closing_speed_m_per_s);
结束

类别

找到更多的在制导、导航和控制(GNC)帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!