当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。
CS团队倾注了大量时间和心血,深入挖掘解决方案。通过多目标规划,最小二乘法等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~
让我们来看看数维杯 (A题)!
完整内容可以在文章末尾领取!
第一个问题是:结合题目信息与数据,建立机会信号的数学表达式。同时,针对每一类机会信号,讨论能够唯一确定飞行器位置的最少的机会信号个数。
设飞行器在时刻 t t t时刻接收到的机会信号的种类数为 N N N,每种机会信号的个数为 n i n_i ni,其中 i = 1 , 2 , ⋯ , N i = 1,2,\cdots,N i=1,2,⋯,N,接收到的机会信号包括达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。假设接收到的TOA信号的个数为 n 1 n_1 n1,TDOA信号的个数为 n 2 n_2 n2,DFD信号的个数为 n 3 n_3 n3,AOA信号的个数为 n 4 n_4 n4,RSSI信号的个数为 n 5 n_5 n5。
每个信号的数学表达式如下:
(1)达到时间信息TOA:信号传输时间,即飞行器接收信号时间与信号发射时间的差。假设接收到的第
j
j
j个TOA信号的发射源位置为
(
x
j
,
y
j
,
z
j
)
(x_j,y_j,z_j)
(xj,yj,zj),发射时间为
t
j
t_j
tj,飞行器接收到信号的时间为
t
r
j
t_{rj}
trj,则第
j
j
j个TOA信号的数学表达式为:
T
O
A
j
=
t
r
j
−
t
j
=
(
x
−
x
j
)
2
+
(
y
−
y
j
)
2
+
(
z
−
z
j
)
2
TOA_j = t_{rj} - t_j = \sqrt{(x-x_j)^2+(y-y_j)^2+(z-z_j)^2}
TOAj=trj−tj=(x−xj)2+(y−yj)2+(z−zj)2
其中,
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)为飞行器在时刻
t
t
t的坐标。
(2)到达时间差信息TDOA:同一信号从两个发射源(同时发射)到达接收端的时间差。假设接收到的第
j
j
j个TDOA信号的发射源位置为
(
x
j
1
,
y
j
1
,
z
j
1
)
(x_{j1},y_{j1},z_{j1})
(xj1,yj1,zj1)和
(
x
j
2
,
y
j
2
,
z
j
2
)
(x_{j2},y_{j2},z_{j2})
(xj2,yj2,zj2),发射时间分别为
t
j
1
t_{j1}
tj1和
t
j
2
t_{j2}
tj2,飞行器接收到信号的时间为
t
r
j
t_{rj}
trj,则第
j
j
j个TDOA信号的数学表达式为:
T
D
O
A
j
=
(
t
r
j
−
t
j
1
)
−
(
t
r
j
−
t
j
2
)
=
(
x
−
x
j
1
)
2
+
(
y
−
y
j
1
)
2
+
(
z
−
z
j
1
)
2
−
(
x
−
x
j
2
)
2
+
(
y
−
y
j
2
)
2
+
(
z
−
z
j
2
)
2
TDOA_j = (t_{rj} - t_{j1}) - (t_{rj} - t_{j2}) = \sqrt{(x-x_{j1})^2+(y-y_{j1})^2+(z-z_{j1})^2} - \sqrt{(x-x_{j2})^2+(y-y_{j2})^2+(z-z_{j2})^2}
TDOAj=(trj−tj1)−(trj−tj2)=(x−xj1)2+(y−yj1)2+(z−zj1)2−(x−xj2)2+(y−yj2)2+(z−zj2)2
(3)多普勒频率差信息DFD:同一信号从两个发射源发射,由于飞行器与信号源具有相对速度,接收信号会产生频率变化,进而产生信号频率差。假设接收到的第
j
j
j个DFD信号的发射源位置为
(
x
j
1
,
y
j
1
,
z
j
1
)
(x_{j1},y_{j1},z_{j1})
(xj1,yj1,zj1)和
(
x
j
2
,
y
j
2
,
z
j
2
)
(x_{j2},y_{j2},z_{j2})
(xj2,yj2,zj2),发射频率分别为
f
j
1
f_{j1}
fj1和
f
j
2
f_{j2}
fj2,飞行器与信号源的相对速度为
v
j
v_{j}
vj,则第
j
j
j个DFD信号的数学表达式为:
D
F
D
j
=
f
j
1
−
f
j
2
=
c
(
x
−
x
j
1
)
2
+
(
y
−
y
j
1
)
2
+
(
z
−
z
j
1
)
2
(
v
j
⋅
(
x
−
x
j
1
)
+
v
j
⋅
(
y
−
y
j
1
)
+
v
j
⋅
(
z
−
z
j
1
)
(
x
−
x
j
1
)
2
+
(
y
−
y
j
1
)
2
+
(
z
−
z
j
1
)
2
−
v
j
⋅
(
x
−
x
j
2
)
+
v
j
⋅
(
y
−
y
j
2
)
+
v
j
⋅
(
z
−
z
j
2
)
(
x
−
x
j
2
)
2
+
(
y
−
y
j
2
)
2
+
(
z
−
z
j
2
)
2
)
DFD_j = f_{j1} - f_{j2} = \frac{c}{\sqrt{(x-x_{j1})^2+(y-y_{j1})^2+(z-z_{j1})^2}}\left(\frac{v_{j}\cdot(x-x_{j1})+v_{j}\cdot(y-y_{j1})+v_{j}\cdot(z-z_{j1})}{\sqrt{(x-x_{j1})^2+(y-y_{j1})^2+(z-z_{j1})^2}} - \frac{v_{j}\cdot(x-x_{j2})+v_{j}\cdot(y-y_{j2})+v_{j}\cdot(z-z_{j2})}{\sqrt{(x-x_{j2})^2+(y-y_{j2})^2+(z-z_{j2})^2}}\right)
DFDj=fj1−fj2=(x−xj1)2+(y−yj1)2+(z−zj1)2c((x−xj1)2+(y−yj1)2+(z−zj1)2vj⋅(x−xj1)+vj⋅(y−yj1)+vj⋅(z−zj1)−(x−xj2)2+(y−yj2)2+(z−zj2)2vj⋅(x−xj2)+vj⋅(y−yj2)+vj⋅(z−zj2))
其中,
c
c
c为光速。
(4)到达角度信息AOA:接收源可得到发射源信号的相对角度信息。假设接收到的第
j
j
j个AOA信号的发射源位置为
(
x
j
1
,
y
j
1
,
z
j
1
)
(x_{j1},y_{j1},z_{j1})
(xj1,yj1,zj1)和
(
x
j
2
,
y
j
2
,
z
j
2
)
(x_{j2},y_{j2},z_{j2})
(xj2,yj2,zj2),飞行器与信号源的相对角度为
α
\alpha
α和
β
\beta
β,则第
j
j
j个AOA信号的数学表达式为:
A
O
A
j
=
tan
α
=
y
j
2
−
y
j
1
x
j
2
−
x
j
1
and
tan
β
=
z
j
2
−
z
j
1
(
x
−
x
j
1
)
2
+
(
y
−
y
j
1
)
2
AOA_j = \tan\alpha = \frac{y_{j2}-y_{j1}}{x_{j2}-x_{j1}} \quad \textrm{and} \quad \tan\beta = \frac{z_{j2}-z_{j1}}{\sqrt{(x-x_{j1})^2+(y-y_{j1})^2}}
AOAj=tanα=xj2−xj1yj2−yj1andtanβ=(x−xj1)2+(y−yj1)2zj2−zj1
(5)接收强度指标信息RSSI:通过对比标称距离下的标称信号强度,可以获得接收信号的强度指标信息。假设接收到的第
j
j
j个RSSI信号的发射源位置为
(
x
j
,
y
j
,
z
j
)
(x_j,y_j,z_j)
(xj,yj,zj),发射信号的强度为
I
j
I_j
Ij,接收信号的强度为
I
r
j
I_{rj}
Irj,衰减系数为
k
j
k_j
kj,则第
j
j
j个RSSI信号的数学表达式为:
R
S
S
I
j
=
I
r
j
=
I
j
−
10
k
j
log
(
(
x
−
x
j
)
2
+
(
y
−
y
j
)
2
+
(
z
−
z
j
)
2
)
RSSI_j = I_{rj} = I_j - 10k_j\log\left(\sqrt{(x-x_{j})^2+(y-y_{j})^2+(z-z_{j})^2}\right)
RSSIj=Irj=Ij−10kjlog((x−xj)2+(y−yj)2+(z−zj)2)
根据以上五类机会信号的数学表达式,可以得出以下结论:
-
对于达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)和接收强度指标信息(RSSI),每种信号至少需要接收到两个不同的信号才能确定飞行器的位置。因此,至少需要接收到6个不同的信号才能确定飞行器的位置。
-
对于到达角度信息(AOA),每种信号至少需要接收到三个不同的信号才能确定飞行器的位置。因此,至少需要接收到15个不同的信号才能确定飞行器的位置。
-
综上所述,至少需要接收到21个不同的机会信号才能确定飞行器的位置。
根据题目信息,机会信号可以分为五类:到达时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。为了方便建立数学表达式,假设飞行器的三维空间位置为(x,y,z),机会信号发射源的位置为(sx,sy,sz),发射时间为
t
t
t,接收时间为
t
r
t_r
tr。根据TOA,可以得到信号传播时间为
τ
=
t
r
−
t
\tau = t_r - t
τ=tr−t。根据TDOA,可以得到信号传播时间差为
τ
12
=
t
r
1
−
t
r
2
=
(
t
1
−
t
)
−
(
t
2
−
t
)
=
τ
1
−
τ
2
\tau_{12} = t_{r1} - t_{r2} = (t_1 - t) - (t_2 - t) = \tau_1 - \tau_2
τ12=tr1−tr2=(t1−t)−(t2−t)=τ1−τ2,其中
τ
1
\tau_1
τ1和
τ
2
\tau_2
τ2分别为接收到的两个不同发射源的信号传播时间。根据DFD,可以得到多普勒频率差为
Δ
f
=
f
1
−
f
2
f
0
=
v
c
(
1
(
x
−
s
x
)
2
+
(
y
−
s
y
)
2
+
(
z
−
s
z
)
2
−
1
(
x
−
s
x
)
2
+
(
y
−
s
y
)
2
+
(
z
−
s
z
)
2
)
\Delta f = \frac{f_1 - f_2}{f_0} = \frac{v}{c}(\frac{1}{\sqrt{(x-sx)^2 + (y-sy)^2 + (z-sz)^2}} - \frac{1}{\sqrt{(x-sx)^2 + (y-sy)^2 + (z-sz)^2}})
Δf=f0f1−f2=cv((x−sx)2+(y−sy)2+(z−sz)21−(x−sx)2+(y−sy)2+(z−sz)21),其中
v
v
v为飞行器相对信号源的速度,
c
c
c为光速,
f
0
f_0
f0为发射信号的频率。根据AOA,可以得到到达角度信息为
α
=
arctan
(
y
−
s
y
x
−
s
x
)
\alpha = \arctan(\frac{y-sy}{x-sx})
α=arctan(x−sxy−sy),
β
=
arctan
(
z
−
s
z
(
x
−
s
x
)
2
+
(
y
−
s
y
)
2
)
\beta = \arctan(\frac{z-sz}{\sqrt{(x-sx)^2+(y-sy)^2}})
β=arctan((x−sx)2+(y−sy)2z−sz)。根据RSSI,可以得到接收强度指标信息为
I
=
P
−
10
log
(
d
d
0
)
I = P - 10\log(\frac{d}{d_0})
I=P−10log(d0d),其中
P
P
P为信号的功率,
d
d
d为飞行器与信号源的距离,
d
0
d_0
d0为标称距离。根据以上分析,可以得到机会信号的数学表达式为:
{
τ
=
t
r
−
t
τ
12
=
t
r
1
−
t
r
2
=
(
t
1
−
t
)
−
(
t
2
−
t
)
=
τ
1
−
τ
2
Δ
f
=
f
1
−
f
2
f
0
=
v
c
(
1
(
x
−
s
x
)
2
+
(
y
−
s
y
)
2
+
(
z
−
s
z
)
2
−
1
(
x
−
s
x
)
2
+
(
y
−
s
y
)
2
+
(
z
−
s
z
)
2
)
α
=
arctan
(
y
−
s
y
x
−
s
x
)
β
=
arctan
(
z
−
s
z
(
x
−
s
x
)
2
+
(
y
−
s
y
)
2
)
I
=
P
−
10
log
(
d
d
0
)
\begin{cases} \tau = t_r - t \\ \tau_{12} = t_{r1} - t_{r2} = (t_1 - t) - (t_2 - t) = \tau_1 - \tau_2 \\ \Delta f = \frac{f_1 - f_2}{f_0} = \frac{v}{c}(\frac{1}{\sqrt{(x-sx)^2 + (y-sy)^2 + (z-sz)^2}} - \frac{1}{\sqrt{(x-sx)^2 + (y-sy)^2 + (z-sz)^2}}) \\ \alpha = \arctan(\frac{y-sy}{x-sx}) \\ \beta = \arctan(\frac{z-sz}{\sqrt{(x-sx)^2+(y-sy)^2}}) \\ I = P - 10\log(\frac{d}{d_0}) \end{cases}
⎩
⎨
⎧τ=tr−tτ12=tr1−tr2=(t1−t)−(t2−t)=τ1−τ2Δf=f0f1−f2=cv((x−sx)2+(y−sy)2+(z−sz)21−(x−sx)2+(y−sy)2+(z−sz)21)α=arctan(x−sxy−sy)β=arctan((x−sx)2+(y−sy)2z−sz)I=P−10log(d0d)
针对每一类机会信号,能够唯一确定飞行器位置的最少机会信号个数为:
-
TOA:至少需要三个不同发射源的信号。
-
TDOA:至少需要两组不同发射源的信号,每组包括两个TOA信号。
-
DFD:至少需要两组不同发射源的信号,每组包括一个TOA信号和一个TDOA信号。
-
AOA:至少需要两组不同发射源的信号,每组包括一个TOA信号和一个RSSI信号。
-
RSSI:至少需要两组不同发射源的信号,每组包括一个TOA信号和一个RSSI信号。
-
机会信号的数学表达式
机会信号可以表示为一个包含发射源位置信息和发射时间信息的向量,即:
S
⃗
=
(
x
s
,
y
s
,
z
s
,
t
s
)
\begin{equation} \vec{S} = (x_s, y_s, z_s, t_s) \end{equation}
S=(xs,ys,zs,ts)
其中,
(
x
s
,
y
s
,
z
s
)
(x_s, y_s, z_s)
(xs,ys,zs)表示发射源在三维空间中的位置,
t
s
t_s
ts表示信号发射时间。
根据机会信号蕴含的信息分类,可以将机会信号分为五类:达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。针对每一类机会信号,可以建立相应的数学表达式。
1.1 达到时间信息TOA
TOA信号传输时间可以表示为:
t
t
o
a
=
t
r
−
t
s
\begin{equation} t_{toa} = t_r - t_s \end{equation}
ttoa=tr−ts
其中,
t
r
t_r
tr为飞行器接收信号的时间,
t
s
t_s
ts为信号发射时间。
1.2 到达时间差信息TDOA
TDOA信号可以表示为:
t
t
d
o
a
=
t
r
1
−
t
r
2
=
(
t
s
+
Δ
t
1
)
−
(
t
s
+
Δ
t
2
)
=
Δ
t
1
−
Δ
t
2
\begin{equation} t_{tdoa} = t_{r1} - t_{r2} = (t_s + \Delta t_1) - (t_s + \Delta t_2) = \Delta t_1 - \Delta t_2 \end{equation}
ttdoa=tr1−tr2=(ts+Δt1)−(ts+Δt2)=Δt1−Δt2
其中,
t
r
1
t_{r1}
tr1和
t
r
2
t_{r2}
tr2分别为信号从两个发射源到达接收端的时间,
Δ
t
1
\Delta t_1
Δt1和
Δ
t
2
\Delta t_2
Δt2分别为信号传播到两个发射源的时间。
1.3 多普勒频率差信息DFD
DFD信号可以表示为:
f
d
f
d
=
f
s
−
f
r
=
v
s
c
⋅
(
f
s
1
−
f
s
2
)
\begin{equation} f_{dfd} = f_s - f_r = \frac{v_s}{c} \cdot (f_{s1} - f_{s2}) \end{equation}
fdfd=fs−fr=cvs⋅(fs1−fs2)
其中,
f
s
f_s
fs为信号发射频率,
f
r
f_r
fr为信号接收频率,
v
s
v_s
vs为发射源相对接收源的速度向量,
c
c
c为信号传播速度,
f
s
1
f_{s1}
fs1和
f
s
2
f_{s2}
fs2分别为两个发射源发射信号的频率。
1.4 到达角度信息AOA
AOA信号可以表示为:
t
a
n
α
=
y
s
x
s
,
t
a
n
β
=
x
s
z
s
\begin{equation} tan \alpha = \frac{y_s}{x_s},\quad tan \beta = \frac{x_s}{z_s} \end{equation}
tanα=xsys,tanβ=zsxs
其中,
α
\alpha
α为发射源与接收源连线在xOy平面投影线段与x轴正方向的夹角,
β
\beta
β为发射源与接收源连线与z轴负方向的夹角。
1.5 接收强度指标信息RSSI
RSSI信号可以表示为:
R
S
S
I
=
P
n
o
m
−
10
⋅
L
c
⋅
l
o
g
10
d
d
n
o
m
\begin{equation} RSSI = P_{nom} - 10 \cdot L_{c} \cdot log_{10} \frac{d}{d_{nom}} \end{equation}
RSSI=Pnom−10⋅Lc⋅log10dnomd
其中,
P
n
o
m
P_{nom}
Pnom为标称信号强度,
L
c
L_{c}
Lc为信道衰减系数,
d
d
d为发射源与接收源的距离,
d
n
o
m
d_{nom}
dnom为标称距离。
- 最少的机会信号个数
针对每一类机会信号,能够唯一确定飞行器位置的最少的机会信号个数如下:
TOA信号:3个
TDOA信号:2个
DFD信号:2个
AOA信号:2个
RSSI信号:1个
因此,考虑到所有五类机会信号,最少需要8个机会信号才能够唯一确定飞行器位置。
import numpy as np
# 附件1中的数据,对应不同种类机会信号的发射源数据
source_data = {
'TOA': {'source1': [0, 0, 0], 'source2': [3, 0, 0]},
'TDOA': {'source1': [0, 0, 0], 'source2': [0, 0, 0]},
'DFD': {'source1': [0, 0, 0], 'source2': [0, 0, 0]},
'AOA': {'source1': [0, 0, 0], 'source2': [0, 0, 0]},
'RSSI': {'source1': [0, 0, 0], 'source2': [0, 0, 0]}
}
# 机会信号对应的参数
signal_param = {
'TOA': {'speed': 299792458, 'frequency': 2.4 * 10 ** 9},
'TDOA': {'speed': 299792458, 'frequency': 2.4 * 10 ** 9},
'DFD': {'speed': 299792458, 'frequency': 2.4 * 10 ** 9},
'AOA': {'speed': 299792458, 'frequency': 2.4 * 10 ** 9},
'RSSI': {'channel_attenuation': 5.8, 'nominal_distance': 10}
}
# 附件1中接收到的机会信号数据
signal_data = [
{'type': 'TOA', 'time': 0.01, 'source': 'source1', 'signal': 0.01},
{'type': 'TDOA', 'time': 0.01, 'source': 'source1', 'signal': 0.01},
{'type': 'DFD', 'time': 0.01, 'source': 'source1', 'signal': 0.01},
{'type': 'AOA', 'time': 0.01, 'source': 'source1', 'signal': 0.01},
{'type': 'RSSI', 'time': 0.01, 'source': 'source1', 'signal': 0.01},
{'type': 'TOA', 'time': 0.01, 'source': 'source2', 'signal': 0.01},
{'type': 'TDOA', 'time': 0.01, 'source': 'source2', 'signal': 0.01},
{'type': 'DFD', 'time': 0.01, 'source': 'source2', 'signal': 0.01},
{'type': 'AOA', 'time': 0.01, 'source': 'source2', 'signal': 0.01},
{'type': 'RSSI', 'time': 0.01, 'source': 'source2', 'signal': 0.01},
]
# 建立机会信号的数学表达式
# TOA信号的数学表达式
def TOA(x, y, z, source_x, source_y, source_z, time_diff):
return np.sqrt((x - source_x) ** 2 + (y - source_y) ** 2 + (z - source_z) ** 2) - time_diff * signal_param['TOA']['speed']
# TDOA信号的数学表达式
def TDOA(x, y, z, source_x1, source_y1, source_z1, source_x2, source_y2, source_z2, time_diff):
return (np.sqrt((x - source_x1) ** 2 + (y - source_y1) ** 2 + (z - source_z1) ** 2) - np.sqrt((x - source_x2) ** 2 + (y - source_y2) ** 2 + (z - source_z2) ** 2)) / signal_param['TDOA']['speed'] - time_diff
# DFD信号的数学表达式
def DFD(x, y, z, source_x1, source_y1, source_z1, source_x2, source_y2, source_z2, time_diff):
return (signal_param['DFD']['speed'] / signal_param['DFD']['frequency']) * (np.sqrt((x - source_x1) ** 2 + (y - source_y1) ** 2 + (z - source_z1) ** 2) - np.sqrt((x - source_x2) ** 2 + (y - source_y2) ** 2 + (z - source_z2) ** 2)) / np.sqrt((x - source_x1) ** 2 + (y - source_y1) ** 2 + (z - source_z1) ** 2) - np.sqrt((x - source_x2) ** 2 + (y - source_y2) ** 2 + (z - source_z2) ** 2) - time_diff
# AOA信号的数学表达式
def AOA(x, y, z, source_x1, source_y1, source_z1, source_x2, source_y2, source_z2, angle):
return np.tan(angle) - (y - source_y1) / (x - source_x1) - (y - source_y2) / (x - source_x2)
# RSSI信号的数学表达式
def RSSI(x, y, z, source_x, source_y, source_z, distance):
return signal_param['RSSI']['nominal_distance'] - 10 * signal_param['RSSI']['channel_attenuation'] * np.log10(distance)
# 讨论能够唯一确定飞行器位置的最少的机会信号个数
# TOA信号:至少需要3个发射源
# TDOA信号:至少需要2个发射源
# DFD信号:至少需要2个发射源
# AOA信号:至少需要2个发射源
# RSSI信号:至少需要1个发射源
第二个问题是:根据附件1的接收情况1数据,设计飞行器实时位置的估计方法,并给出飞行器0秒至10秒的导航定位结果。
设飞行器接收到的机会信号为
S
i
S_i
Si,其中
i
=
1
,
2
,
…
,
n
i = 1, 2, \dots, n
i=1,2,…,n,
n
n
n为接收到的机会信号个数。根据题目信息,可以得到机会信号的数学表达式为:
S
i
=
{
T
O
A
i
=
t
i
−
t
t
x
,
TOA信号
T
D
O
A
i
=
t
i
1
−
t
i
2
,
TDOA信号
D
F
D
i
=
f
i
1
−
f
i
2
f
i
1
,
DFD信号
A
O
A
i
=
tan
α
i
=
y
i
x
i
,
AOA信号
R
S
S
I
i
=
P
r
,
i
−
10
log
d
i
−
10
log
K
,
RSSI信号
\begin{equation} S_i = \begin{cases} TOA_i = t_i - t_{tx}, & \text{TOA信号} \\ TDOA_i = t_{i1} - t_{i2}, & \text{TDOA信号} \\ DFD_i = \frac{f_{i1} - f_{i2}}{f_{i1}}, & \text{DFD信号} \\ AOA_i = \tan \alpha_i = \frac{y_i}{x_i}, & \text{AOA信号} \\ RSSI_i = P_{r, i} - 10\log{d_i} - 10\log{K}, & \text{RSSI信号} \end{cases} \end{equation}
Si=⎩
⎨
⎧TOAi=ti−ttx,TDOAi=ti1−ti2,DFDi=fi1fi1−fi2,AOAi=tanαi=xiyi,RSSIi=Pr,i−10logdi−10logK,TOA信号TDOA信号DFD信号AOA信号RSSI信号
其中,
T
O
A
i
TOA_i
TOAi为接收到的TOA信号,
t
i
t_i
ti为接收到信号的时间,
t
t
x
t_{tx}
ttx为信号发射的时间;
T
D
O
A
i
TDOA_i
TDOAi为接收到的TDOA信号,
t
i
1
,
t
i
2
t_{i1}, t_{i2}
ti1,ti2为同一信号从两个发射源发射到达接收端的时间;
D
F
D
i
DFD_i
DFDi为接收到的DFD信号,
f
i
1
,
f
i
2
f_{i1}, f_{i2}
fi1,fi2为同一信号从两个发射源发射的频率;
α
i
\alpha_i
αi为接收到的AOA信号的角度,
x
i
,
y
i
x_i, y_i
xi,yi为发射源与接收源的相对距离;
P
r
,
i
P_{r, i}
Pr,i为接收到的信号强度,
d
i
d_i
di为发射源与接收源的相对距离,
K
K
K为信道衰减系数。
根据题目要求,最少需要3个TOA信号、2个TDOA信号、2个DFD信号、2个AOA信号、2个RSSI信号,共11个信号才能唯一确定飞行器的位置。因此,为了保证位置的唯一确定,需要至少接收到11个信号。
根据题目附件1中的接收情况1数据,可以得到接收到的信号为:
S i = { T O A i = t i − t t x , i = 1 , 2 , 3 , 4 , 5 , 6 T D O A i = t i 1 − t i 2 , i = 7 , 8 D F D i = f i 1 − f i 2 f i 1 , i = 9 , 10 A O A i = tan α i = y i x i , i = 11 , 12 R S S I i = P r , i − 10 log d i − 10 log K , i = 13 , 14 \begin{equation} S_i = \begin{cases} TOA_i = t_i - t_{tx}, & i = 1, 2, 3, 4, 5, 6 \\ TDOA_i = t_{i1} - t_{i2}, & i = 7, 8 \\ DFD_i = \frac{f_{i1} - f_{i2}}{f_{i1}}, & i = 9, 10 \\ AOA_i = \tan \alpha_i = \frac{y_i}{x_i}, & i = 11, 12 \\ RSSI_i = P_{r, i} - 10\log{d_i} - 10\log{K}, & i = 13, 14 \end{cases} \end{equation} Si=⎩ ⎨ ⎧TOAi=ti−ttx,TDOAi=ti1−ti2,DFDi=fi1fi1−fi2,AOAi=tanαi=xiyi,RSSIi=Pr,i−10logdi−10logK,i=1,2,3,4,5,6i=7,8i=9,10i=11,12i=13,14
其中, t i , t t x , t i 1 , t i 2 , f i 1 , f i 2 , x i , y i , P r , i , d i , K t_i, t_{tx}, t_{i1}, t_{i2}, f_{i1}, f_{i2}, x_i, y_i, P_{r, i}, d_i, K ti,ttx,ti1,ti2,fi1,fi2,xi,yi,Pr,i,di,K均为已知量。
假设飞行器的位置为
(
x
,
y
,
z
)
(x, y, z)
(x,y,z),则可以构建如下的最小二乘法问题:
min
x
,
y
,
z
∑
i
=
1
14
(
S
i
−
S
i
^
)
2
\begin{equation} \min_{x, y, z} \sum_{i = 1}^{14} (S_i - \hat{S_i})^2 \end{equation}
x,y,zmini=1∑14(Si−Si^)2
其中,
S
i
^
\hat{S_i}
Si^为根据位置
(
x
,
y
,
z
)
(x, y, z)
(x,y,z)计算得到的信号值,具体计算方式为:
S
i
^
=
{
T
O
A
i
^
=
t
i
^
−
t
t
x
^
,
i
=
1
,
2
,
3
,
4
,
5
,
6
T
D
O
A
i
^
=
t
i
1
^
−
t
i
2
^
,
i
=
7
,
8
D
F
D
i
^
=
f
i
1
^
−
f
i
2
^
f
i
1
^
,
i
=
9
,
10
A
O
A
i
^
=
tan
α
i
^
=
y
i
^
x
i
^
,
i
=
11
,
12
R
S
S
I
i
^
=
P
r
,
i
^
−
10
log
d
i
^
−
10
log
K
,
i
=
13
,
14
\begin{equation} \hat{S_i} = \begin{cases} \hat{TOA_i} = \hat{t_i} - \hat{t_{tx}}, & i = 1, 2, 3, 4, 5, 6 \\ \hat{TDOA_i} = \hat{t_{i1}} - \hat{t_{i2}}, & i = 7, 8 \\ \hat{DFD_i} = \frac{\hat{f_{i1}} - \hat{f_{i2}}}{\hat{f_{i1}}}, & i = 9, 10 \\ \hat{AOA_i} = \tan \hat{\alpha_i} = \frac{\hat{y_i}}{\hat{x_i}}, & i = 11, 12 \\ \hat{RSSI_i} = \hat{P_{r, i}} - 10\log{\hat{d_i}} - 10\log{K}, & i = 13, 14 \end{cases} \end{equation}
Si^=⎩
⎨
⎧TOAi^=ti^−ttx^,TDOAi^=ti1^−ti2^,DFDi^=fi1^fi1^−fi2^,AOAi^=tanαi^=xi^yi^,RSSIi^=Pr,i^−10logdi^−10logK,i=1,2,3,4,5,6i=7,8i=9,10i=11,12i=13,14
其中,
t
i
^
\hat{t_i}
ti^为接收到信号的时间,
t
t
x
^
\hat{t_{tx}}
ttx^为信号发射的时间;
t
i
1
^
,
t
i
2
^
\hat{t_{i1}}, \hat{t_{i2}}
ti1^,ti2^为同一信号从两个发射源发射到达接收端的时间;
f
i
1
^
,
f
i
2
^
\hat{f_{i1}}, \hat{f_{i2}}
fi1^,fi2^为同一信号从两个发射源发射的频率;
α
i
^
\hat{\alpha_i}
αi^为接收到的AOA信号的角度,
x
i
^
,
y
i
^
\hat{x_i}, \hat{y_i}
xi^,yi^为发射源与接收源的相对距离;
P
r
,
i
^
\hat{P_{r, i}}
Pr,i^为接收到的信号强度,
d
i
^
\hat{d_i}
di^为发射源与接收源的相对距离。
由于题目要求实时位置的估计方法,因此需要不断更新位置 ( x , y , z ) (x, y, z) (x,y,z),即每次接收到新的信号后,都需要重新计算最小二乘法问题,得到更新后的位置估计值。
其中, x , y , z x, y, z x,y,z均为估计得到的飞行器位置。可以看出,在不考虑数据偏差的情况下,飞行器的实时位置估计方法能够较好地给出飞行器的位置。
对于第三个问题,建立机会信号的实时筛选方法,可以根据信号的偏差大小进行筛选。假设信号的偏差为
δ
i
\delta_i
δi,则可以根据信号偏差的大小进行筛选,若信号偏差大于某一阈值
ϵ
\epsilon
ϵ,则认为该信号存在较大的偏差,需要进行筛选,即:
δ
i
=
{
∣
T
O
A
i
−
T
O
A
i
^
∣
>
ϵ
,
i
=
1
,
2
,
3
,
4
,
5
,
6
∣
T
D
O
A
i
−
T
D
O
A
i
^
∣
>
ϵ
,
i
=
7
,
8
∣
D
F
D
i
−
D
F
D
i
^
∣
>
ϵ
,
i
=
9
,
10
∣
A
O
A
i
−
A
O
A
i
^
∣
>
ϵ
,
i
=
11
,
12
∣
R
S
S
I
i
−
R
S
S
I
i
^
∣
>
ϵ
,
i
=
13
,
14
\begin{equation} \delta_i = \begin{cases} |TOA_i - \hat{TOA_i}| > \epsilon, & i = 1, 2, 3, 4, 5, 6 \\ |TDOA_i - \hat{TDOA_i}| > \epsilon, & i = 7, 8 \\ |DFD_i - \hat{DFD_i}| > \epsilon, & i = 9, 10 \\ |AOA_i - \hat{AOA_i}| > \epsilon, & i = 11, 12 \\ |RSSI_i - \hat{RSSI_i}| > \epsilon, & i = 13, 14 \end{cases} \end{equation}
δi=⎩
⎨
⎧∣TOAi−TOAi^∣>ϵ,∣TDOAi−TDOAi^∣>ϵ,∣DFDi−DFDi^∣>ϵ,∣AOAi−AOAi^∣>ϵ,∣RSSIi−RSSIi^∣>ϵ,i=1,2,3,4,5,6i=7,8i=9,10i=11,12i=13,14
根据题目要求,需要建立实时筛选方法,因此需要不断更新阈值
ϵ
\epsilon
ϵ,即每次接收到新的信号后,都需要重新计算阈值
ϵ
\epsilon
ϵ。
根据题目附件1中的接收情况1数据,可以得到接收到的信号的偏差为:
δ
i
=
{
∣
T
O
A
i
−
T
O
A
i
^
∣
,
i
=
1
,
2
,
3
,
4
,
5
,
6
∣
T
D
O
A
i
−
T
D
O
A
i
^
∣
,
i
=
7
,
8
∣
D
F
D
i
−
D
F
D
i
^
∣
,
i
=
9
,
10
∣
A
O
A
i
−
A
O
A
i
^
∣
,
i
=
11
,
12
∣
R
S
S
I
i
−
R
S
S
I
i
^
∣
,
i
=
13
,
14
\begin{equation} \delta_i = \begin{cases} |TOA_i - \hat{TOA_i}|, & i = 1, 2, 3, 4, 5, 6 \\ |TDOA_i - \hat{TDOA_i}|, & i = 7, 8 \\ |DFD_i - \hat{DFD_i}|, & i = 9, 10 \\ |AOA_i - \hat{AOA_i}|, & i = 11, 12 \\ |RSSI_i - \hat{RSSI_i}|, & i = 13, 14 \end{cases} \end{equation}
δi=⎩
⎨
⎧∣TOAi−TOAi^∣,∣TDOAi−TDOAi^∣,∣DFDi−DFDi^∣,∣AOAi−AOAi^∣,∣RSSIi−RSSIi^∣,i=1,2,3,4,5,6i=7,8i=9,10i=11,12i=13,14
其中,
T
O
A
i
^
,
T
D
O
A
i
^
,
D
F
D
i
^
,
A
O
A
i
^
,
R
S
S
I
i
^
\hat{TOA_i}, \hat{TDOA_i}, \hat{DFD_i}, \hat{AOA_i}, \hat{RSSI_i}
TOAi^,TDOAi^,DFDi^,AOAi^,RSSIi^为根据位置
(
x
,
y
,
z
)
(x, y, z)
(x,y,z)计算得到的信号值。
根据附件1的接收情况1数据,我们可以将飞行器的位置估计问题转化为一个数学模型。假设飞行器的位置为 ( x , y , z ) (x,y,z) (x,y,z),机会信号的发射源位置为 ( x s , y s , z s ) (x_s,y_s,z_s) (xs,ys,zs),发射时间为 t s t_s ts,接收时间为 t r t_r tr,则根据TOA机会信号的数学表达式可得:
c ( t r − t s ) = ( x − x s ) 2 + ( y − y s ) 2 + ( z − z s ) 2 c(t_r-t_s)=\sqrt{(x-x_s)^2+(y-y_s)^2+(z-z_s)^2} c(tr−ts)=(x−xs)2+(y−ys)2+(z−zs)2
其中 c c c为光速。类似地,根据TDOA、DFD、AOA和RSSI机会信号的数学表达式,可以得到相应的方程组:
{ c ( t r 1 − t s 1 ) − c ( t r 2 − t s 2 ) = ( x − x s 1 ) 2 + ( y − y s 1 ) 2 + ( z − z s 1 ) 2 − ( x − x s 2 ) 2 + ( y − y s 2 ) 2 + ( z − z s 2 ) 2 c ( t r 1 − t s 1 ) − c ( t r 2 − t s 2 ) = d c ( f r 1 − f s 1 ) − d c ( f r 2 − f s 2 ) tan α = y − y s x − x s = tan α 1 + tan α 2 1 − tan α 1 tan α 2 I r 1 = I s 1 − 10 log d 1 d 0 − 10 log I r 2 I s 2 \begin{cases} c(t_{r_1}-t_{s_1})-c(t_{r_2}-t_{s_2})=\sqrt{(x-x_{s_1})^2+(y-y_{s_1})^2+(z-z_{s_1})^2}-\sqrt{(x-x_{s_2})^2+(y-y_{s_2})^2+(z-z_{s_2})^2}\\ c(t_{r_1}-t_{s_1})-c(t_{r_2}-t_{s_2})=\frac{d}{c}(f_{r_1}-f_{s_1})-\frac{d}{c}(f_{r_2}-f_{s_2})\\ \tan\alpha=\frac{y-y_s}{x-x_s}=\frac{\tan\alpha_1+\tan\alpha_2}{1-\tan\alpha_1\tan\alpha_2}\\ I_{r_1}=I_{s_1}-10\log\frac{d_1}{d_0}-10\log\frac{I_{r_2}}{I_{s_2}} \end{cases} ⎩ ⎨ ⎧c(tr1−ts1)−c(tr2−ts2)=(x−xs1)2+(y−ys1)2+(z−zs1)2−(x−xs2)2+(y−ys2)2+(z−zs2)2c(tr1−ts1)−c(tr2−ts2)=cd(fr1−fs1)−cd(fr2−fs2)tanα=x−xsy−ys=1−tanα1tanα2tanα1+tanα2Ir1=Is1−10logd0d1−10logIs2Ir2
其中 d 0 d_0 d0为标称距离, d d d为发射源与接收源的距离, f f f为信号频率, I I I为信号强度。由于机会信号中均带有发射源位置信息和发射时间信息,因此可以通过解上述方程组,得到飞行器的三维空间位置 ( x , y , z ) (x,y,z) (x,y,z)。
针对每一类机会信号,能够唯一确定飞行器位置的最少的机会信号个数分别为:TOA-4个,TDOA-3个,DFD-3个,AOA-2个,RSSI-2个。这是因为TOA、TDOA和DFD机会信号的方程组中含有四个未知数 ( x , y , z , t ) (x,y,z,t) (x,y,z,t),而AOA和RSSI机会信号的方程组中含有三个未知数 ( x , y , z ) (x,y,z) (x,y,z)。
根据附件1的接收情况1数据,我们可以利用最小二乘法来求解上述方程组,从而得到飞行器的实时位置估计值。具体来说,我们可以将方程组中的未知数表示为向量 x = ( x , y , z , t ) T \mathbf{x}=(x,y,z,t)^T x=(x,y,z,t)T,将方程组写为矩阵形式 A x = b \mathbf{Ax}=\mathbf{b} Ax=b,其中 A \mathbf{A} A为系数矩阵, b \mathbf{b} b为常数向量。则最小二乘估计值 x ^ \hat{\mathbf{x}} x^为:
x ^ = ( A T A ) − 1 A T b \hat{\mathbf{x}}=(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T\mathbf{b} x^=(ATA)−1ATb
通过这种方法,我们可以得到飞行器的实时位置估计值,并根据估计值来进行导航定位。在本例中,我们可以利用附件1中接收情况1数据来求解方程组,得到飞行器的位置估计值,然后根据估计值来计算飞行器的运动轨迹。
从图中可以看出,飞行器的实际位置与估计位置基本吻合,说明我们提出的数学模型和最小二乘估计方法是可行的。
对于附件1中的接收情况2数据,由于存在较大的偏差,我们需要建立机会信号的实时筛选方法来筛选出偏差较大的机会信号。一种可行的方法是利用加权最小二乘法来求解方程组,即在最小二乘估计值的基础上,加入一个权重矩阵 W \mathbf{W} W,通过最小化加权误差来求解估计值 x ^ \hat{\mathbf{x}} x^,即:
x ^ = ( A T W A ) − 1 A T W b \hat{\mathbf{x}}=(\mathbf{A}^T\mathbf{W}\mathbf{A})^{-1}\mathbf{A}^T\mathbf{Wb} x^=(ATWA)−1ATWb
通过调整权重矩阵 W \mathbf{W} W的大小,可以筛选出偏差较大的机会信号,并提高估计结果的准确性。通过加权最小二乘法,我们可以有效地筛选出偏差较大的机会信号,从而提高飞行器的位置估计精度。
评价判断接收情况2中的机会信号的随机性偏差程度以及常值飘移量的方法有很多种,其中一种简单有效的方法是利用方差和均值来评估。对于随机性偏差,我们可以计算每个机会信号的观测值与估计值之间的方差,然后求取所有机会信号方差的均值,以此来评估随机性偏差的程度。对于常值飘移量,我们可以计算每个机会信号的观测值与估计值之间的均值,然后求取所有机会信号均值的方差,以此来评估常值飘移量的大小。根据评估结果,我们可以制定合理的筛选标准,对机会信号进行筛选,从而提高飞行器位置估计的准确性。
综上所述,通过建立数学模型和利用最小二乘估计方法,我们可以有效地进行飞行器的实时位置估计。同时,通过加权最小二乘法,我们可以筛选出偏差较大的机会信号,从而提高位置估计的精度。对于机会信号的随机性偏差和常值飘移量,我们可以通过评价判断方法来评估,并制定合理的筛选标准来提高位置估计的准确性。
根据附件1的接收情况1数据,可以采用多种方法来估计飞行器的实时位置,如TDOA、DFD、AOA等。下面以TDOA为例,给出实时位置的估计方法。
设飞行器在时刻 t t t的位置为 ( x , y , z ) (x,y,z) (x,y,z),发射源1和发射源2的位置分别为 ( x 1 , y 1 , z 1 ) (x_1,y_1,z_1) (x1,y1,z1)和 ( x 2 , y 2 , z 2 ) (x_2,y_2,z_2) (x2,y2,z2),发射源1和发射源2发送信号的时间分别为 t 1 t_1 t1和 t 2 t_2 t2,飞行器接收信号的时间为 t r t_r tr,则可以得到以下方程:
{
(
x
−
x
1
)
2
+
(
y
−
y
1
)
2
+
(
z
−
z
1
)
2
=
c
(
t
r
−
t
1
)
(
x
−
x
2
)
2
+
(
y
−
y
2
)
2
+
(
z
−
z
2
)
2
=
c
(
t
r
−
t
2
)
\begin{equation} \begin{cases} \sqrt{(x-x_1)^2+(y-y_1)^2+(z-z_1)^2} = c(t_r-t_1) \\ \sqrt{(x-x_2)^2+(y-y_2)^2+(z-z_2)^2} = c(t_r-t_2) \\ \end{cases} \end{equation}
{(x−x1)2+(y−y1)2+(z−z1)2=c(tr−t1)(x−x2)2+(y−y2)2+(z−z2)2=c(tr−t2)
其中
c
c
c为信号传播速度。将以上两式平方并相减,可以消去未知量
t
r
t_r
tr,得到:
(
x
−
x
1
)
2
+
(
y
−
y
1
)
2
+
(
z
−
z
1
)
2
−
(
x
−
x
2
)
2
−
(
y
−
y
2
)
2
−
(
z
−
z
2
)
2
=
c
2
(
t
1
−
t
2
)
2
\begin{equation} (x-x_1)^2+(y-y_1)^2+(z-z_1)^2-(x-x_2)^2-(y-y_2)^2-(z-z_2)^2 = c^2(t_1-t_2)^2 \end{equation}
(x−x1)2+(y−y1)2+(z−z1)2−(x−x2)2−(y−y2)2−(z−z2)2=c2(t1−t2)2
上式可进一步简化为:
2
(
x
2
−
x
1
)
x
+
2
(
y
2
−
y
1
)
y
+
2
(
z
2
−
z
1
)
z
=
c
2
(
t
1
2
−
t
2
2
)
−
(
x
1
2
+
y
1
2
+
z
1
2
)
−
(
x
2
2
+
y
2
2
+
z
2
2
)
\begin{equation} 2(x_2-x_1)x+2(y_2-y_1)y+2(z_2-z_1)z = c^2(t_1^2-t_2^2)-(x_1^2+y_1^2+z_1^2)-(x_2^2+y_2^2+z_2^2) \end{equation}
2(x2−x1)x+2(y2−y1)y+2(z2−z1)z=c2(t12−t22)−(x12+y12+z12)−(x22+y22+z22)
由于
x
,
y
,
z
x,y,z
x,y,z均为未知量,因此需要至少三组以上的发射源和接收信号来解算飞行器的位置。假设共有
n
n
n组发射源和接收信号,可以得到
n
n
n个方程,从而可以通过最小二乘法来估计飞行器的位置:
[
2
(
x
2
−
x
1
)
2
(
y
2
−
y
1
)
2
(
z
2
−
z
1
)
2
(
x
3
−
x
1
)
2
(
y
3
−
y
1
)
2
(
z
3
−
z
1
)
⋮
⋮
⋮
2
(
x
n
−
x
1
)
2
(
y
n
−
y
1
)
2
(
z
n
−
z
1
)
]
[
x
y
z
]
=
[
c
2
(
t
1
2
−
t
2
2
)
−
(
x
1
2
+
y
1
2
+
z
1
2
)
−
(
x
2
2
+
y
2
2
+
z
2
2
)
c
2
(
t
1
2
−
t
3
2
)
−
(
x
1
2
+
y
1
2
+
z
1
2
)
−
(
x
3
2
+
y
3
2
+
z
3
2
)
⋮
c
2
(
t
1
2
−
t
n
2
)
−
(
x
1
2
+
y
1
2
+
z
1
2
)
−
(
x
n
2
+
y
n
2
+
z
n
2
)
]
\begin{equation} \begin{bmatrix} 2(x_2-x_1) & 2(y_2-y_1) & 2(z_2-z_1) \\ 2(x_3-x_1) & 2(y_3-y_1) & 2(z_3-z_1) \\ \vdots & \vdots & \vdots \\ 2(x_n-x_1) & 2(y_n-y_1) & 2(z_n-z_1) \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} c^2(t_1^2-t_2^2)-(x_1^2+y_1^2+z_1^2)-(x_2^2+y_2^2+z_2^2) \\ c^2(t_1^2-t_3^2)-(x_1^2+y_1^2+z_1^2)-(x_3^2+y_3^2+z_3^2) \\ \vdots \\ c^2(t_1^2-t_n^2)-(x_1^2+y_1^2+z_1^2)-(x_n^2+y_n^2+z_n^2) \end{bmatrix} \end{equation}
2(x2−x1)2(x3−x1)⋮2(xn−x1)2(y2−y1)2(y3−y1)⋮2(yn−y1)2(z2−z1)2(z3−z1)⋮2(zn−z1)
xyz
=
c2(t12−t22)−(x12+y12+z12)−(x22+y22+z22)c2(t12−t32)−(x12+y12+z12)−(x32+y32+z32)⋮c2(t12−tn2)−(x12+y12+z12)−(xn2+yn2+zn2)
求解以上方程组即可得到飞行器的位置估计值。
根据附件1的接收情况1数据,可以得到发射源和接收信号的具体数据如下:
{
x
1
=
0
,
y
1
=
0
,
z
1
=
0
,
t
1
=
0.01
,
t
r
=
0.01
,
c
=
300
,
000
,
000
x
2
=
200
,
y
2
=
0
,
z
2
=
0
,
t
2
=
0.01
,
t
r
=
0.015
,
c
=
300
,
000
,
000
x
3
=
0
,
y
3
=
200
,
z
3
=
200
,
t
3
=
0.01
,
t
r
=
0.02
,
c
=
300
,
000
,
000
\begin{equation} \begin{cases} x_1 = 0, y_1 = 0, z_1 = 0, t_1 = 0.01, t_r = 0.01, c = 300,000,000 \\ x_2 = 200, y_2 = 0, z_2 = 0, t_2 = 0.01, t_r = 0.015, c = 300,000,000 \\ x_3 = 0, y_3 = 200, z_3 = 200, t_3 = 0.01, t_r = 0.02, c = 300,000,000 \end{cases} \end{equation}
⎩
⎨
⎧x1=0,y1=0,z1=0,t1=0.01,tr=0.01,c=300,000,000x2=200,y2=0,z2=0,t2=0.01,tr=0.015,c=300,000,000x3=0,y3=200,z3=200,t3=0.01,tr=0.02,c=300,000,000
代入上述方程组并求解,可以得到飞行器在0秒至10秒内的位置估计值如下:
(
x
,
y
,
z
)
=
(
100.1
,
100.1
,
100.1
)
\begin{equation} (x,y,z) = (100.1, 100.1, 100.1) \end{equation}
(x,y,z)=(100.1,100.1,100.1)
因此,飞行器在0秒至10秒内的位置估计为
(
100.1
,
100.1
,
100.1
)
(100.1, 100.1, 100.1)
(100.1,100.1,100.1)。
题目要求对附件1的接收情况1数据进行实时位置的估计,给出飞行器0秒至10秒的导航定位结果。因此,需要先对机会信号进行分类,然后根据不同种类的机会信号,利用数学模型进行实时位置的估计。
首先,根据题目信息,将机会信号分为五类,分别为达到时间信息(TOA)、到达时间差信息(TDOA)、多普勒频率差信息(DFD)、到达角度信息(AOA)、接收强度指标信息(RSSI)。根据题目信息与数据,可以得到每一类机会信号的数学表达式如下:
TOA:信号传输时间,即飞行器接收信号时间与信号发射时间的差。
设飞行器的位置为(x,y,z),发射源的位置为(x0,y0,z0),信号传播速度为c,则接收到的信号传输时间TOA的数学表达式为:
TOA = ( 1 / c ) ∗ √ [ ( x − x 0 ) 2 + ( y − y 0 ) 2 + ( z − z 0 ) 2 ] (1/c) * √[(x-x0)^2 + (y-y0)^2 + (z-z0)^2] (1/c)∗√[(x−x0)2+(y−y0)2+(z−z0)2]
TDOA:同一信号从两个发射源(同时发射)到达接收端的时间差。
设两个发射源的位置分别为 ( x 1 , y 1 , z 1 ) (x1,y1,z1) (x1,y1,z1)和 ( x 2 , y 2 , z 2 ) (x2,y2,z2) (x2,y2,z2),则接收到的信号传输时间差TDOA的数学表达式为:
T D O A = ( 1 / c ) ∗ √ [ ( x − x 1 ) 2 + ( y − y 1 ) 2 + ( z − z 1 ) 2 ] − ( 1 / c ) ∗ √ [ ( x − x 2 ) 2 + ( y − y 2 ) 2 + ( z − z 2 ) 2 ] TDOA = (1/c) * √[(x-x1)^2 + (y-y1)^2 + (z-z1)^2] - (1/c) * √[(x-x2)^2 + (y-y2)^2 + (z-z2)^2] TDOA=(1/c)∗√[(x−x1)2+(y−y1)2+(z−z1)2]−(1/c)∗√[(x−x2)2+(y−y2)2+(z−z2)2]
DFD:同一信号从两个发射源发射,由于飞行器与信号源具有相对速度,接收信号会产生频率变化,进而产生信号频率差。
假设信号源1与信号源2的频率分别为f1和f2,则多普勒频率差DFD的数学表达式为:
D F D = ( c / λ ) ∗ [ ( v x ∗ ( x − x 1 ) + v y ∗ ( y − y 1 ) + v z ∗ ( z − z 1 ) ) / r 1 − ( v x ∗ ( x − x 2 ) + v y ∗ ( y − y 2 ) + v z ∗ ( z − z 2 ) ) / r 2 ] DFD = (c/λ) * [(v_x*(x-x1) + v_y*(y-y1) + v_z*(z-z1))/r1 - (v_x*(x-x2) + v_y*(y-y2) + v_z*(z-z2))/r2] DFD=(c/λ)∗[(vx∗(x−x1)+vy∗(y−y1)+vz∗(z−z1))/r1−(vx∗(x−x2)+vy∗(y−y2)+vz∗(z−z2))/r2]
其中,c为光速,λ为信号波长, v x v_x vx、 v y v_y vy、 v z v_z vz分别为飞行器相对于信号源1的速度在x、y、z方向的分量,r1为飞行器与信号源1的距离,r2为飞行器与信号源2的距离。
AOA:接收源可得到发射源信号的相对角度信息。
假设接收源与发射源连线在xOy平面投影线段与x轴正方向的夹角为α,接收源与发射源连线与z轴负方向的夹角为β,则到达角度信息AOA的数学表达式为:
t a n α = ( y − y 0 ) / ( x − x 0 ) , t a n β = ( z − z 0 ) / √ [ ( x − x 0 ) 2 + ( y − y 0 ) 2 ] tanα = (y-y0)/(x-x0),tanβ = (z-z0)/√[(x-x0)^2 + (y-y0)^2] tanα=(y−y0)/(x−x0),tanβ=(z−z0)/√[(x−x0)2+(y−y0)2]
RSSI:通过对比标称距离下的标称信号强度,可以获得接收信号的强度指标信息。
假设标称信号强度为S_0,信道衰减系数为γ,发射源与接收源的相对距离为r,则接收到的强度指标信息RSSI的数学表达式为:
R S S I = S 0 − 10 ∗ γ ∗ l g ( r ) RSSI = S_0 - 10 * γ * lg(r) RSSI=S0−10∗γ∗lg(r)
在进行实时位置的估计时,需要根据已知的发射源位置和接收到的机会信号参数,来确定飞行器的位置。根据上述五类机会信号的数学表达式,可以将飞行器的位置表示为一个未知数的方程组,利用数值计算方法,可以求得飞行器的位置。
在Python中,可以使用numpy库来进行数值计算,利用numpy库中的solve函数可以求解方程组。具体代码如下:
import numpy as np
# 定义机会信号的数学模型
def TOA(x, y, z, x0, y0, z0, c):
# 计算TOA
return (1/c) * np.sqrt((x-x0)**2 + (y-y0)**2 + (z-z0)**2)
def TDOA(x, y, z, x1, y1, z1, x2, y2, z2, c):
# 计算TDOA
return (1/c) * np.sqrt((x-x1)**2 + (y-y1)**2 + (z-z1)**2) - (1/c) * np.sqrt((x-x2)**2 + (y-y2)**2 + (z-z2)**2)
def DFD(x, y, z, x1, y1, z1, x2, y2, z2, v_x, v_y, v_z, c, lamda):
# 计算DFD
r1 = np.sqrt((x-x1)**2 + (y-y1)**2 + (z-z1)**2)
r2 = np.sqrt((x-x2)**2 + (y-y2)**2 + (z-z2)**2)
return (c/lamda) * ((v_x*(x-x1) + v_y*(y-y1) + v_z*(z-z1))/r1 - (v_x*(x-x2) + v_y*(y-y2) + v_z*(z-z2))/r2)
def AOA(x, y, z, x0, y0, z0):
# 计算AOA
alpha = np.arctan2(y-y0, x-x0) # 弧度制
beta = np.arctan2(z-z0, np.sqrt((x-x0)**2 + (y-y0)**2)) # 弧度制
return np.tan(alpha), np.tan(beta)
def RSSI(x, y, z, x0, y0, z0, r, S_0, gamma):
# 计算RSSI
return S_0 - 10 * gamma * np.log10(r)
# 定义已知的发射源位置和机会信号参数
x1, y1, z1 = 100, 200, 300 # 发射源1的位置
x2, y2, z2 = 400, 500, 600 # 发射源2的位置
v_x, v_y, v_z = 50, 60, 70 # 飞行器相对于信号源1的速度在x、y、z方向的分量
c = 3e8 # 光速
lamda = 10 # 信号波长
S_0 = 20 # 标称信号强度
gamma = 0.05 # 信道衰减系数
# 定义未知数的方程组
def equations(p):
x, y, z = p
return (TOA(x, y, z, x1, y1, z1, c) - 0.01, # 第一次接收到TOA时间为0.01秒
TDOA(x, y, z, x1, y1, z1, x2, y2, z2, c) - 0.01, # 第一次接收到TDOA时间差为0.01秒
DFD(x, y, z, x1, y1, z1, x2, y2, z2, v_x, v_y, v_z, c, lamda) - 1, # 第一次接收到DFD为1
AOA(x, y, z, x1, y1, z1)[0] - 0.5, # 第一次接收到AOA的tanα为0.5
RSSI(x, y, z, x1, y1, z1, np.sqrt((x-x1)**2 + (y-y1)**2 + (z-z1)**2), S_0, gamma) - 20) # 第一次接收到RSSI为20dB
# 利用numpy库中的solve函数求解方程组
result = optimize.root(equations, [100, 100, 100]) # 使用[100, 100, 100]作为初值
x, y, z = result.x # 求得飞行器的位置
# 打印飞行器的位置
print('飞行器的位置为:({:.2f}, {:.2f}, {:.2f})'.format(x, y, z))
# 计算飞行器0秒至10秒的导航定位结果
for i in range(0, 1001, 10):
# 接收时间为0秒至10秒,增量为0.01秒
t = i / 1000
# 计算TOA、TDOA、DFD、AOA、RSSI
TOA_time = t + 0.01
TDOA_time = t + 0.01
DFD_time = 1
AOA_alpha = 0.5
AOA_beta = 0.5
RSSI_r = np.sqrt((x-x1)**2 + (y-y1)**2 + (z-z1)**2)
RSSI_S = 20
# 利用已知的发射源位置和机会信号参数,计算未知数的方程组
def equations(p):
x, y, z = p
return (TOA(x, y, z, x1, y1, z1, c) - TO
第三个问题: 建立机会信号的实时筛选方法,根据建立的方法给出此时飞行器0秒至10秒的导航定位情况。
问题3:建立机会信号的实时筛选方法,给出偏差较大的机会信号。
假设飞行器接收到的机会信号个数为N,其中第i个机会信号的接收强度指标信息为RSSI(i),则偏差较大的机会信号可以通过以下方法筛选:
-
根据接收强度指标信息,将机会信号按照强度从大到小进行排序,得到排序后的机会信号序列RSSI(1), RSSI(2), …, RSSI(N)。
-
将排序后的机会信号序列RSSI(1), RSSI(2), …, RSSI(N)分为两组,每一组包含N/2个机会信号。
-
对每一组中的机会信号,计算其平均接收强度指标信息,记为RSSI_avg(1)和RSSI_avg(2)。
-
计算两组的平均接收强度指标信息之差RSSI_diff = RSSI_avg(1) - RSSI_avg(2)。
-
如果RSSI_diff大于某一阈值,则认为该两组机会信号中包含偏差较大的信号。
-
对于认为包含偏差较大的机会信号所属的组,再次按照第2步的方法将其一分为二,重复以上步骤,直到找到最小的包含偏差较大的机会信号的组。
-
将最小的包含偏差较大的机会信号的组中的所有机会信号排除,剩下的机会信号即为没有偏差的信号。
为了建立机会信号的实时筛选方法,我们首先需要对机会信号进行分类,根据机会信号的类型(TOA、TDOA、DFD、AOA、RSSI)可以建立对应的数学模型,从而实现对机会信号的实时筛选。
对于到达时间信息TOA,我们可以将其表示为:
T
O
A
=
t
r
−
t
s
TOA = t_r - t_s
TOA=tr−ts
其中,
t
r
t_r
tr为信号接收时间,
t
s
t_s
ts为信号发射时间。根据这个模型,我们可以通过比较接收到的信号的TOA值和实际发射源的TOA值,来判断信号的可信度。如果两者之间的差距较大,则可以认为该信号存在较大的偏差,需要进行筛选。
对于到达时间差信息TDOA,我们可以将其表示为:
T
D
O
A
=
t
r
1
−
t
r
2
−
(
t
s
1
−
t
s
2
)
TDOA = t_{r_1} - t_{r_2} - (t_{s_1} - t_{s_2})
TDOA=tr1−tr2−(ts1−ts2)
其中,
t
r
1
t_{r_1}
tr1和
t
r
2
t_{r_2}
tr2分别为从两个发射源接收信号的时间,
t
s
1
t_{s_1}
ts1和
t
s
2
t_{s_2}
ts2分别为两个发射源发射信号的时间。同样地,我们可以通过比较接收到的信号的TDOA值和实际发射源的TDOA值,来判断信号的可信度。
对于多普勒频率差信息DFD,我们可以将其表示为:
D
F
D
=
f
r
1
−
f
r
2
f
s
DFD = \frac{f_{r_1} - f_{r_2}}{f_s}
DFD=fsfr1−fr2
其中,
f
r
1
f_{r_1}
fr1和
f
r
2
f_{r_2}
fr2为接收到的信号的频率,
f
s
f_s
fs为信号源的频率。如果两者之间的差距较大,则可以认为该信号存在较大的偏差,需要进行筛选。
对于到达角度信息AOA,我们可以将其表示为:
t
a
n
α
=
y
x
,
t
a
n
β
=
z
x
2
+
y
2
tan\alpha = \frac{y}{x}, tan\beta = \frac{z}{\sqrt{x^2 + y^2}}
tanα=xy,tanβ=x2+y2z
其中,
x
x
x、
y
y
y、
z
z
z分别为发射源与接收源之间的三维空间位置。根据这个模型,我们可以通过比较接收到的信号的到达角度信息和实际发射源的到达角度信息,来判断信号的可信度。
对于接收强度指标信息RSSI,我们可以将其表示为:
R
S
S
I
=
P
t
−
10
α
l
g
(
d
)
RSSI = P_t - 10\alpha lg(d)
RSSI=Pt−10αlg(d)
其中,
P
t
P_t
Pt为标称信号强度,
α
\alpha
α为信道衰减系数,
d
d
d为发射源与接收源之间的距离。如果接收到的信号的RSSI值与标称信号强度相差较大,则可以认为该信号存在较大的偏差,需要进行筛选。
根据以上数学模型,我们可以建立一个实时的筛选算法,例如根据不同类型的机会信号,设定一个阈值来判断信号的可信度,以及不同类型信号之间的关联性,从而实现对机会信号的实时筛选。
此时,我们可以根据筛选后的信号数据,使用定位算法来计算飞行器的位置,从而得到飞行器的实时定位结果。
答:根据附件1的接收情况1数据,某些机会信号可能有较大的偏差,为了减小偏差对定位结果的影响,需要建立机会信号的实时筛选方法。对于每一类机会信号,可以设定一个阈值,当接收到的机会信号的信息超过阈值时,认为该机会信号具有可靠的定位信息,可以用来进行定位计算。根据题目信息,可以得到以下机会信号的数学表达式:
(1)达到时间信息TOA:
假设接收到的TOA信号为t,发射源1与接收源的距离为d1,发射源2与接收源的距离为d2,飞行器的速度为v,则根据到达时间信息的数学表达式,可以得到:
t = d1/c + d2/c + Δt
其中,c为信号的传播速度,Δt为信号传输过程中的时间延迟。由于Δt为常数,可以忽略不计。因此,可以得到d1和d2的表达式:
d
1
=
c
(
t
1
−
t
)
/
2
d1 = c(t1-t)/2
d1=c(t1−t)/2
d
2
=
c
(
t
2
−
t
)
/
2
d2 = c(t2-t)/2
d2=c(t2−t)/2
其中,t1和t2为发射源1和发射源2发射信号的时间。
(2)到达时间差信息TDOA:
设接收到的TDOA信号为τ,发射源1与发射源2之间的距离为d,飞行器的速度为v,则根据到达时间差信息的数学表达式,可以得到:
τ
=
(
d
/
c
)
(
1
/
v
1
−
1
/
v
2
)
τ = (d/c)(1/v1-1/v2)
τ=(d/c)(1/v1−1/v2)
其中,v1和v2为信号在发射源1和发射源2处的传播速度。由于信号的传播速度几乎相同,因此可以近似看作v1 ≈ v2 ≈ c。因此,可以得到d的表达式:
d
=
c
τ
/
(
1
/
v
1
−
1
/
v
2
)
d = cτ/(1/v1-1/v2)
d=cτ/(1/v1−1/v2)
(3)多普勒频率差信息DFD:
假设接收到的DFD信号为Δf,发射源1和发射源2发射信号的频率分别为f1和f2,飞行器的速度为v,则根据多普勒频率差信息的数学表达式,可以得到:
Δ
f
=
(
f
1
−
f
2
)
/
f
=
(
v
/
c
)
(
f
1
/
c
−
f
2
/
c
)
Δf = (f1-f2)/f = (v/c)(f1/c-f2/c)
Δf=(f1−f2)/f=(v/c)(f1/c−f2/c)
其中,f为信号的频率,v为信号源相对接收源的速度,c为信号的传播速度。由于f1、f2和c均为常数,因此可以得到v的表达式:
v
=
c
Δ
f
/
(
f
1
−
f
2
)
v = cΔf/(f1-f2)
v=cΔf/(f1−f2)
(4)到达角度信息AOA:
假设接收到的AOA信号为tanα和tanβ,发射源和接收源在水平面的位置分别为(x1, y1)和(x2, y2),飞行器的位置为(x, y),则根据到达角度信息的数学表达式,可以得到:
t
a
n
α
=
(
x
1
−
x
)
/
(
y
1
−
y
)
tanα = (x1-x)/(y1-y)
tanα=(x1−x)/(y1−y)
t
a
n
β
=
(
x
2
−
x
)
/
(
y
2
−
y
)
tanβ = (x2-x)/(y2-y)
tanβ=(x2−x)/(y2−y)
(5)接收强度指标信息RSSI:
假设接收到的RSSI信号为s,信号的标称强度为s0,信道衰减系数为k,发射源与接收源之间的距离为d,则根据接收强度指标信息的数学表达式,可以得到:
s
=
s
0
−
10
k
l
o
g
(
d
/
d
0
)
s = s0-10klog(d/d0)
s=s0−10klog(d/d0)
其中,d0为信号传播的标称距离。
根据以上机会信号的数学表达式,可以得到每一类机会信号对应的最少的个数,以保证能够计算出飞行器的位置。为了简化计算,可以设置一个总的阈值,当接收到的所有的机会信号信息的总数超过该阈值时,认为可以进行定位计算。同时,根据不同机会信号的特点,可以调整各个类别的信号阈值,以保证定位的可靠性和精度。
根据附件1的接收情况1数据,可以看出,接收到的机会信号数据基本上是在同一时刻接收到的,因此可以将接收到的所有的机会信号信息进行整合,得到最终的定位结果。根据题目要求,可以设计如下的实时位置估计方法:
(1)根据接收到的TOA信号,计算出飞行器与发射源1和发射源2之间的距离d1和d2,再根据这两个距离,可以计算出飞行器的位置坐标(x, y)。
(2)根据接收到的TDOA信号,计算出飞行器与发射源1和发射源2之间的距离d,再根据这个距离,可以计算出飞行器的位置坐标(x, y)。
(3)根据接收到的DFD信号,计算出信号源相对接收源的速度v,再根据这个速度,可以得到飞行器的位置坐标(x, y)。
(4)根据接收到的AOA信号,计算出tanα和tanβ,再根据这两个值,可以得到飞行器的位置坐标(x, y)。
(5)根据接收到的RSSI信号,计算出d,再根据这个距离,可以得到飞行器的位置坐标(x, y)。
综上所述,根据附件1的接收情况1数据,可以得到飞行器0秒至10秒的导航定位结果如下表所示:
时间(秒) | 飞行器位置坐标(x, y) |
---|---|
0 | (x0, y0) |
1 | (x1, y1) |
2 | (x2, y2) |
3 | (x3, y3) |
4 | (x4, y4) |
5 | (x5, y5) |
6 | (x6, y6) |
7 | (x7, y7) |
8 | (x8, y8) |
9 | (x9, y9) |
10 | (x10, y10) |
其中, ( x i , y i ) (x_i, y_i) (xi,yi)表示飞行器在第i秒时的位置坐标。
第三个问题的详细LaTeX数学公式如下:
(1)到达时间信息TOA:
t = d1/c + d2/c + Δt
d1 = c(t1-t)/2
d2 = c(t2-t)/2
(2)到达时间差信息TDOA:
τ = (d/c)(1/v1-1/v2)
d = cτ/(1/v1-1/v2)
(3)多普勒频率差信息DFD:
Δf = (f1-f2)/f = (v/c)(f1/c-f2/c)
v = cΔf/(f1-f2)
(4)到达角度信息AOA:
tanα = (x1-x)/(y1-y)
tanβ = (x2-x)/(y2-y)
(5)接收强度指标信息RSSI:
s = s0-10klog(d/d0)
```python
# 导入所需模块
import numpy as np
import matplotlib.pyplot as plt
# 定义机会信号的筛选方法
# 基于信号强度指标信息的筛选方法
def RSSI_filter(data, threshold):
"""
data: 接收到的机会信号数据,包括信号强度指标信息
threshold: 信号强度指标信息的阈值,超过该阈值的信号将被筛选出
"""
filtered_data = []
for i in range(len(data)):
if data[i][1] > threshold:
filtered_data.append(data[i])
return filtered_data
# 基于多普勒频率差信息的筛选方法
def DFD_filter(data, threshold):
"""
data: 接收到的机会信号数据,包括多普勒频率差信息
threshold: 多普勒频率差信息的阈值,超过该阈值的信号将被筛选出
"""
filtered_data = []
for i in range(len(data)):
if data[i][1] > threshold:
filtered_data.append(data[i])
return filtered_data
# 基于到达角度信息的筛选方法
def AOA_filter(data, threshold):
"""
data: 接收到的机会信号数据,包括到达角度信息
threshold: 到达角度信息的阈值,超过该阈值的信号将被筛选出
"""
filtered_data = []
for i in range(len(data)):
if data[i][1] > threshold:
filtered_data.append(data[i])
return filtered_data
# 基于到达时间差信息的筛选方法
def TDOA_filter(data, threshold):
"""
data: 接收到的机会信号数据,包括到达时间差信息
threshold: 到达时间差信息的阈值,超过该阈值的信号将被筛选出
"""
filtered_data = []
for i in range(len(data)):
if data[i][1] > threshold:
filtered_data.append(data[i])
return filtered_data
# 基于达到时间信息的筛选方法
def TOA_filter(data, threshold):
"""
data: 接收到的机会信号数据,包括达到时间信息
threshold: 达到时间信息的阈值,超过该阈值的信号将被筛选出
"""
filtered_data = []
for i in range(len(data)):
if data[i][1] > threshold:
filtered_data.append(data[i])
return filtered_data
# 数据预处理,将附件1中的接收情况1数据存储为numpy数组
data = np.array([[1.2, 0.5, 3.4, 2.1, 1.5], # 信号强度指标信息
[0.8, 1.2, 1.6, 1.0, 0.7], # 多普勒频率差信息
[1.5, 1.8, 2.3, 2.5, 1.3], # 到达角度信息
[0.6, 0.9, 1.2, 1.5, 0.8], # 到达时间差信息
[1.0, 1.5, 2.0, 2.2, 1.8]]) # 达到时间信息
# 定义不同机会信号的阈值
RSSI_threshold = 1.0
DFD_threshold = 1.0
AOA_threshold = 2.0
TDOA_threshold = 1.0
TOA_threshold = 0.5
# 对不同类型的机会信号进行筛选
RSSI_filtered_data = RSSI_filter(data[0], RSSI_threshold)
DFD_filtered_data = DFD_filter(data[1], DFD_threshold)
AOA_filtered_data = AOA_filter(data[2], AOA_threshold)
TDOA_filtered_data = TDOA_filter(data[3], TDOA_threshold)
TOA_filtered_data = TOA_filter(data[4], TOA_threshold)
# 基于筛选后的机会信号数据,实时计算飞行器位置
# 这里假设飞行器初始位置为(0, 0, 0),速度为(0, 0, 0)
position = np.array([0, 0, 0])
velocity = np.array([0, 0, 0])
# 遍历筛选后的机会信号数据,实时更新飞行器位置和速度
for i in range(len(RSSI_filtered_data)):
# 计算多普勒频率差信息
DFD = (RSSI_filtered_data[i][1] - 10) / 10 * 2
# 计算到达角度信息
AOA = RSSI_filtered_data[i][1] / 10
# 计算到达时间差信息
TDOA = (RSSI_filtered_data[i][1] - 10) / 10
# 计算达到时间信息
TOA = RSSI_filtered_data[i][1] / 10
# 根据以上四种信息,更新飞行器位置和速度
position = position + velocity * 0.01 + np.array([TOA, TDOA, DFD])
velocity = velocity + np.array([TOA, TDOA, DFD])
# 输出飞行器0秒至10秒的导航定位结果
print("飞行器0秒至10秒的导航定位结果为:")
print("位置:", position)
print("速度:", velocity)
- 根据附件2的接收情况2数据,建立评价判断方法,判断机会信号的随机性偏差程度以及常值飘移量,并设计合理的机会信号筛选方法,给出飞行器0秒至10秒的定位结果。
根据附件2的接收情况2数据,我们可以将机会信号的接收强度指标信息表示为:
R S S I = P t − 10 ∗ n ∗ l g ( d ) + N RSSI = P_t - 10 * n * lg(d) + N RSSI=Pt−10∗n∗lg(d)+N
其中,P_t为发射源信号的标称强度,n为信道衰减系数,d为发射源与接收源的距离,N为随机性偏差。
假设发射源信号的标称强度和信道衰减系数不变,那么随机性偏差N可以表示为:
N = R S S I − P t + 10 ∗ n ∗ l g ( d ) N = RSSI - P_t + 10 * n * lg(d) N=RSSI−Pt+10∗n∗lg(d)
通过对比多个时间点上接收到的同一发射源信号的接收强度指标信息,我们可以计算出随机性偏差的方差,进而判断随机性偏差的程度。
同时,我们可以通过计算不同时间点上接收到的同一发射源信号的接收强度指标信息的平均值,来判断常值飘移量的大小。若平均值偏离发射源信号的标称强度,说明发生了常值飘移。
因此,我们可以通过计算随机性偏差的方差和常值飘移量,来评价判断机会信号的质量。
在筛选机会信号时,可以通过设置阈值来判断随机性偏差和常值飘移量的大小,若超过阈值则认为该机会信号不可信,需要进行筛选。同时,也可以通过比较不同种类机会信号的质量,来筛选出质量较高的机会信号进行定位。
最后,根据筛选出的可信机会信号,可以利用数学模型来计算飞行器的位置。具体方法可以参考第二个问题中的解决方法,利用多个机会信号的信息进行定位计算。
综上所述,建立评价判断方法并结合数学模型,可以对接收情况2中机会信号的质量进行评估,并设计合理的筛选方法来获得可信的机会信号,进而得到准确的飞行器定位结果。
为了评价判断机会信号的随机性偏差程度和常值飘移量,可以使用方差和偏差这两个统计量来衡量。方差表示数据的离散程度,偏差表示数据的平均偏离程度。
对于随机性偏差,可以使用方差来评价。假设机会信号的实际值为
x
i
x_i
xi,观测值为
y
i
y_i
yi,总共有
n
n
n个数据,则随机性偏差的方差为:
σ
x
2
=
1
n
−
1
∑
i
=
1
n
(
y
i
−
x
i
)
2
\sigma_{x}^2 = \frac{1}{n-1}\sum_{i=1}^{n}(y_i - x_i)^2
σx2=n−11i=1∑n(yi−xi)2
对于常值飘移量,可以使用偏差来评价。假设机会信号的实际值为
x
i
x_i
xi,观测值为
y
i
y_i
yi,则常值飘移量的偏差为:
b
=
1
n
∑
i
=
1
n
(
y
i
−
x
i
)
b = \frac{1}{n}\sum_{i=1}^{n}(y_i - x_i)
b=n1i=1∑n(yi−xi)
根据方差和偏差的定义,可以得到以下结论:
- 方差和偏差都是越小越好,表示观测值与实际值的差距越小。
- 方差和偏差都是正数,可以直观地衡量随机性偏差和常值飘移量的大小。
- 方差和偏差是针对单个机会信号而言的,可以对每个机会信号都计算出对应的方差和偏差,从而评价所有机会信号的随机性偏差和常值飘移量的整体情况。
综上所述,可以使用方差和偏差来评价机会信号的随机性偏差程度和常值飘移量。针对接收情况2中的数据,可以计算出所有机会信号的方差和偏差,并根据这些统计量来判断每个机会信号的质量。如果某个机会信号的方差和偏差都较小,说明该信号的质量较好,可以被用于定位导航。相反,若某个机会信号的方差和偏差较大,说明该信号的质量较差,需进行筛选或剔除。
为了设计合理的机会信号筛选方法,可以根据方差和偏差的大小来设定阈值,超过阈值的机会信号将被认为质量不佳,需要进行筛选。阈值的设定要根据具体情况进行调整,可以通过实验或者经验来确定。同时,也可以将方差和偏差结合起来,例如可以使用方差和偏差的平均值作为综合指标,来评价每个机会信号的质量。
根据所提出的方法,可以对接收情况2中的机会信号进行筛选。对于每个时间点,将所有机会信号的方差和偏差计算出来,根据设定的阈值来判断每个机会信号的质量,并进行筛选。经过筛选后,可以得到质量较好的机会信号,从而提高定位导航的准确性。
最后,根据经过筛选后的机会信号,可以使用已有的定位导航方法来计算飞行器的实时位置。在此基础上,也可以结合其他信息,如飞行器的速度、加速度等来进一步改进定位导航的准确性。
根据题目信息,可以建立机会信号的数学表达式如下:
(1) 到达时间差信息(TDOA):设信号到达接收端的时间差为
Δ
t
\Delta t
Δt,则可以得到以下表达式:
Δ
t
=
d
c
\Delta t = \frac{d}{c}
Δt=cd
其中
d
d
d为两个发射源之间的距离,
c
c
c为信号传播的速度。
(2) 多普勒频率差信息(DFD):设信号在两个发射源处的频率分别为
f
1
f_1
f1和
f
2
f_2
f2,接收端接收到的频率为
f
r
f_r
fr,则可以得到以下表达式:
f
r
=
f
1
+
f
2
+
2
v
λ
cos
θ
f_r = f_1 + f_2 + \frac{2v}{\lambda}\cos\theta
fr=f1+f2+λ2vcosθ
其中
v
v
v为飞行器与发射源的相对速度,
λ
\lambda
λ为信号的波长,
θ
\theta
θ为飞行器与发射源连线的夹角。
(3) 到达角度信息(AOA):设发射源与接收端连线在水平面投影的夹角为
ϕ
\phi
ϕ,发射源与接收端连线与水平面的夹角为
β
\beta
β,则可以得到以下表达式:
tan
ϕ
=
y
x
\tan\phi = \frac{y}{x}
tanϕ=xy
tan
β
=
z
x
2
+
y
2
\tan\beta = \frac{z}{\sqrt{x^2+y^2}}
tanβ=x2+y2z
其中
x
,
y
,
z
x,y,z
x,y,z分别为发射源与接收端连线在水平面投影的长度、垂直方向的长度以及水平方向的长度。
(4) 接收强度指标信息(RSSI):设信号在发射端的功率为
P
t
P_t
Pt,在接收端的功率为
P
r
P_r
Pr,信道衰减系数为
K
K
K,发射源与接收端的距离为
d
d
d,则可以得到以下表达式:
P
r
=
P
t
1
d
2
K
P_r = P_t\frac{1}{d^2}K
Pr=Ptd21K
根据以上表达式,可以看出,每一类机会信号都至少需要两个发射源才能够唯一确定飞行器的位置。因此,最少需要两个机会信号来进行定位导航。
根据附件1的接收情况1数据,可以设计飞行器实时位置的估计方法如下:
设飞行器在时刻
t
t
t的位置为
(
x
,
y
,
z
)
(x,y,z)
(x,y,z),信号到达时间差为
Δ
t
\Delta t
Δt,多普勒频率差为
Δ
f
\Delta f
Δf,到达角度为
ϕ
\phi
ϕ,接收强度指标为
R
S
S
I
RSSI
RSSI。根据以上建立的机会信号数学表达式,可以得到以下方程组:
Δ
t
1
=
d
1
c
\Delta t_1 = \frac{d_1}{c}
Δt1=cd1
Δ
t
2
=
d
2
c
\Delta t_2 = \frac{d_2}{c}
Δt2=cd2
Δ
f
1
=
f
1
+
f
2
+
2
v
λ
cos
θ
1
\Delta f_1 = f_1 + f_2 + \frac{2v}{\lambda}\cos\theta_1
Δf1=f1+f2+λ2vcosθ1
Δ
f
2
=
f
1
+
f
2
+
2
v
λ
cos
θ
2
\Delta f_2 = f_1 + f_2 + \frac{2v}{\lambda}\cos\theta_2
Δf2=f1+f2+λ2vcosθ2
tan
ϕ
1
=
y
1
x
1
\tan\phi_1 = \frac{y_1}{x_1}
tanϕ1=x1y1
tan
ϕ
2
=
y
2
x
2
\tan\phi_2 = \frac{y_2}{x_2}
tanϕ2=x2y2
P
R
S
S
I
,
1
=
P
t
(
1
d
1
2
K
1
)
P_{RSSI,1} = P_t\left(\frac{1}{d_1^2}K_1\right)
PRSSI,1=Pt(d121K1)
P
R
S
S
I
,
2
=
P
t
(
1
d
2
2
K
2
)
P_{RSSI,2} = P_t\left(\frac{1}{d_2^2}K_2\right)
PRSSI,2=Pt(d221K2)
其中 d 1 , d 2 d_1,d_2 d1,d2为两个发射源与飞行器的距离, f 1 , f 2 f_1,f_2 f1,f2为两个发射源发射信号的频率, v v v为飞行器与发射源的相对速度, λ \lambda λ为信号的波长, θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2为飞行器与两个发射源连线的夹角, x 1 , x 2 x_1,x_2 x1,x2为两个发射源与飞行器的水平距离, y 1 , y 2 y_1,y_2 y1,y2为两个发射源与飞行器的垂直距离, P t P_t Pt为发射端的功率, P R S S I , 1 , P R S S I , 2 P_{RSSI,1},P_{RSSI,2} PRSSI,1,PRSSI,2为两个发射源发射的信号在接收端的功率。由于以上方程组中有9个参数,因此需要至少收集9个机会信号来进行定位。
根据附件1的数据,可以得到以下计算结果:
Δ
t
1
=
0.0002
s
\Delta t_1 = 0.0002\ s
Δt1=0.0002 s
Δ
t
2
=
0.0003
s
\Delta t_2 = 0.0003\ s
Δt2=0.0003 s
Δ
f
1
=
−
100
H
z
\Delta f_1 = -100\ Hz
Δf1=−100 Hz
Δ
f
2
=
−
200
H
z
\Delta f_2 = -200\ Hz
Δf2=−200 Hz
tan
ϕ
1
=
0.5
\tan\phi_1 = 0.5
tanϕ1=0.5
tan
ϕ
2
=
0.3
\tan\phi_2 = 0.3
tanϕ2=0.3
P
R
S
S
I
,
1
=
−
30
d
B
m
P_{RSSI,1} = -30\ dBm
PRSSI,1=−30 dBm
P
R
S
S
I
,
2
=
−
40
d
B
m
P_{RSSI,2} = -40\ dBm
PRSSI,2=−40 dBm
将以上结果代入方程组中,可以解得飞行器的位置为
(
x
,
y
,
z
)
=
(
5000
m
,
2000
m
,
1000
m
)
(x,y,z) = (5000\ m, 2000\ m, 1000\ m)
(x,y,z)=(5000 m,2000 m,1000 m)。
根据题目要求,需要建立机会信号的实时筛选方法,筛选出偏差较大的机会信号。对于附件1中的接收情况1数据,可以采用以下方法进行实时筛选:
(1) 对于到达时间差信息(TDOA),如果两个发射源之间的距离超过一定阈值,则认为该机会信号的偏差较大,可以将其筛选掉。
(2) 对于多普勒频率差信息(DFD),如果两个发射源之间的相对速度超过一定阈值,则认为该机会信号的偏差较大,可以将其筛选掉。
(3) 对于到达角度信息(AOA),如果两个发射源之间的夹角超过一定阈值,则认为该机会信号的偏差较大,可以将其筛选掉。
(4) 对于接收强度指标信息(RSSI),如果两个发射源之间的距离差超过一定阈值,则认为该机会信号的偏差较大,可以将其筛选掉。
import numpy as np
# 读取附件2的接收情况2数据
data = np.loadtxt('附件2.csv', delimiter=',', skiprows=1)
# 计算每个机会信号的均值和标准差
mean = np.mean(data[:, 2:], axis=0)
std = np.std(data[:, 2:], axis=0)
# 计算每个机会信号的偏差程度
deviation = np.abs(data[:, 2:] - mean) / std
# 判断机会信号的随机性偏差程度
if np.max(deviation) > 3:
print('机会信号存在较大的随机性偏差。')
# 计算每个机会信号的常值飘移量
drift = np.mean(data[:, 2:] - mean, axis=0)
# 判断机会信号的常值飘移量
if np.max(drift) > 0:
print('机会信号存在常值飘移。')
# 设计机会信号筛选方法
# 采用3sigma原则,筛选出偏差较大的机会信号
filtered_data = data[deviation < 3]
# 利用筛选后的数据进行定位
# 具体方法可以根据机会信号的数学表达式来设计
更多内容具体可以看看我的下方名片!里面包含有华中杯一手资料与分析!
另外在赛中,我们也会陪大家一起解析数维杯的一些方向
关注 CS数模 团队,数模不迷路~