四元数船舶领域(Quaternion ship domain, QSD)由确定的四个元素构成:
R
f
o
r
e
,
R
a
f
t
,
R
s
t
a
r
b
,
R
p
o
r
t
R_{fore},R_{aft},R_{starb},R_{port}
Rfore,Raft,Rstarb,Rport
R f o r e R_{fore} Rfore 和 R a f t R_{aft} Raft 为船前部和船尾部, R p o r t R_{port} Rport 和 R s t a r b R_{starb} Rstarb 为船左舷和右舷。
Q S D QSD QSD是由连接这四个元素和内部区域的闭合曲线定义的区域,可以描述如下:
Q S D = { ( x , y ) ∣ f ( x , y ; Q ) ≤ 1 , Q = { R f o r e , R a f t , R s t a r b , R p o r t } } ( 1 ) QSD =\lbrace(x,y)|f(x,y;Q)\leq 1, Q= \lbrace R_{fore},R_{aft},R_{starb},R_{port}\rbrace\rbrace \quad(1) QSD={(x,y)∣f(x,y;Q)≤1,Q={Rfore,Raft,Rstarb,Rport}}(1)
其中 f ( ) f() f() 是 Q S D 的 QSD的 QSD的边界, Q Q Q 是四元数。
由于多边形和椭圆形在以前的船域中经常使用。因此在不失普遍性的前提下,QSD的边界可以用多边形和椭圆两种形状表示。
根据 Eq.(1), Q S D QSD QSD 的边界可以表示如下:
多边形:
Q
S
D
q
=
{
(
x
,
y
)
∣
f
q
(
x
,
y
;
Q
)
≤
1
,
Q
=
{
R
f
o
r
e
,
R
a
f
t
,
R
s
t
a
r
b
,
R
p
o
r
t
}
}
(
2
)
QSD_q =\lbrace(x,y)|f_q(x,y;Q)\leq 1, Q= \lbrace R_{fore},R_{aft},R_{starb},R_{port}\rbrace\rbrace \quad(2)
QSDq={(x,y)∣fq(x,y;Q)≤1,Q={Rfore,Raft,Rstarb,Rport}}(2)
椭圆形:
Q
S
D
c
e
=
{
(
x
,
y
)
∣
f
c
e
(
x
,
y
;
Q
)
≤
1
,
Q
=
{
R
f
o
r
e
,
R
a
f
t
,
R
s
t
a
r
b
,
R
p
o
r
t
}
}
(
3
)
QSD_{ce} =\lbrace(x,y)|f_{ce}(x,y;Q)\leq 1, Q= \lbrace R_{fore},R_{aft},R_{starb},R_{port}\rbrace\rbrace \quad(3)
QSDce={(x,y)∣fce(x,y;Q)≤1,Q={Rfore,Raft,Rstarb,Rport}}(3)
其中边界函数 f q f_{q} fq 和 f c e f_{ce} fce可以用下式表示:
f q ( x , y ; Q ) = 2 x ( 1 + s g n x ) R f o r e − ( 1 − s g n x ) R a f t + 2 y ( 1 + s g n y ) R s t a r b − ( 1 − s g n y ) R p o r t ( 4 ) f_q(x,y;Q) = \frac{2x}{(1+sgn x)R_{fore} - (1-sgn x)R_{aft}} + \frac{2y}{(1+sgn y)R_{starb} - (1-sgn y)R_{port}}\quad(4) fq(x,y;Q)=(1+sgnx)Rfore−(1−sgnx)Raft2x+(1+sgny)Rstarb−(1−sgny)Rport2y(4)
f c e ( x , y ; Q ) = ( 2 x ( 1 + s g n x ) R f o r e − ( 1 − s g n x ) R a f t ) 2 + ( 2 y ( 1 + s g n y ) R s t a r b − ( 1 − s g n y ) R p o r t ) 2 ( 5 ) f_{ce}(x,y;Q) = \left(\frac{2x}{(1+sgn x)R_{fore} - (1-sgn x)R_{aft}}\right)^2 + \left(\frac{2y}{(1+sgn y)R_{starb} - (1-sgn y)R_{port}}\right)^2 \quad(5) fce(x,y;Q)=((1+sgnx)Rfore−(1−sgnx)Raft2x)2+((1+sgny)Rstarb−(1−sgny)Rport2y)2(5)
其中
s
g
n
sgn
sgn 是如numpy.sign
类的符号函数:
s
g
n
(
x
)
=
{
1
x
≥
0
−
1
,
x
<
0
(
6
)
sgn(x) = \begin{cases} 1 & x \geq 0 \\ -1, & x < 0 \\ \end{cases} \quad(6)
sgn(x)={1−1,x≥0x<0(6)
根据 Eq.(4)和(5)可以发现,
Q
S
D
QSD
QSD的边界形状可以用一个参数
k
k
k 控制,含有参数
k
k
k 的
Q
S
D
QSD
QSD可以写作如下:
Q S D k = { ( x , y ) ∣ f k ( x , y ; Q ) ≤ 1 , Q = { R f o r e , R a f t , R s t a r b , R p o r t } , k ≥ 1 } ( 7 ) QSD_k =\lbrace(x,y)|f_k(x,y;Q)\leq 1, Q= \lbrace R_{fore},R_{aft},R_{starb},R_{port}\rbrace, k\geq1 \rbrace \quad(7) QSDk={(x,y)∣fk(x,y;Q)≤1,Q={Rfore,Raft,Rstarb,Rport},k≥1}(7)
f k ( x , y ; Q ) = ( 2 x ( 1 + s g n x ) R f o r e − ( 1 − s g n x ) R a f t ) k + ( 2 y ( 1 + s g n y ) R s t a r b − ( 1 − s g n y ) R p o r t ) k ( 8 ) f_{k}(x,y;Q) = \left(\frac{2x}{(1+sgn x)R_{fore} - (1-sgn x)R_{aft}}\right)^k + \left(\frac{2y}{(1+sgn y)R_{starb} - (1-sgn y)R_{port}}\right)^k \quad(8) fk(x,y;Q)=((1+sgnx)Rfore−(1−sgnx)Raft2x)k+((1+sgny)Rstarb−(1−sgny)Rport2y)k(8)
幂
k
k
k 决定了
Q
S
D
QSD
QSD的形状,而四元数
Q
(
i
.
e
.
R
f
o
r
e
,
R
a
f
t
,
R
s
t
a
r
b
,
R
p
o
r
t
)
Q(i.e. R_{fore},R_{aft},R_{starb},R_{port})
Q(i.e.Rfore,Raft,Rstarb,Rport)标识了船域大小。
因此可以通过参数
Q
Q
Q和
k
k
k合理地对
Q
S
D
QSD
QSD建模。
K i j i m a [ 1 ] Kijima^{[1]} Kijima[1] 等人用阻塞区参数估计公式(Estimation formulae for parameters of the blocking area)估计 Q Q Q 的横向和纵向半径。可以用下式表示:
{ R f o r e = ( 1 + 1.34 k A D 2 + ( k D T / 2 ) 2 ) L R a f t = ( 1 + 0.67 k A D 2 + ( k D T / 2 ) 2 ) L R s t a r b = ( 0.2 + k D T ) L R p o r t = ( 0.2 + 0.75 k D T ) L ( 9 ) \begin{cases} R_{fore} = \left(1+1.34 \sqrt{k^2_{AD}+(k_{DT}/2)^2 } \right) L\\ R_{aft} = \left(1+0.67 \sqrt{k^2_{AD}+(k_{DT}/2)^2 } \right) L \\ R_{starb} = (0.2 + k_{DT})L \\ R_{port}= (0.2 + 0.75k_{DT})L\\ \end{cases} \quad(9) ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧Rfore=(1+1.34kAD2+(kDT/2)2)LRaft=(1+0.67kAD2+(kDT/2)2)LRstarb=(0.2+kDT)LRport=(0.2+0.75kDT)L(9)
其中 L L L是本船长度, k A D k_{AD} kAD是进距距离(Advance)的增益, k D T k_{DT} kDT是旋回直径的增益。并且可以被定义为如下:
{ k A D = A D / L = 1 0 0.3591 lg V o + 0.0952 k D T = D T / L = 1 0 0.5441 lg V o − 0.0795 ( 10 ) \begin{cases} k_{AD} = A_D/L = 10^{0.3591 \lg {V_{o} + 0.0952} }\\ k_{DT} = D_T/L = 10^{0.5441 \lg{ V_{o} - 0.0795}}\\ \end{cases} \quad(10) {kAD=AD/L=100.3591lgVo+0.0952kDT=DT/L=100.5441lgVo−0.0795(10)
其中 V o V_o Vo是本船速度,用 节 表示。
旋回初径 D T D_T DT:3~6倍船长
相对旋回初径 D T / L D_T/L DT/L
旋回直径 D D D: 旋回初径的 0.9~1.2倍
进距 A D A_D AD:旋回初径的 0.6~1.2倍
# Python 实现后续补充
import numpy as np
import math
import matplotlib.pyplot as plt
L = 0.0863 # 以海里nm为单位 1节=1海里/小时=1.852公里/小时=0.514444m/s
DT = 5 * L # 相对旋回初径
D = 1.2 * DT # 旋回直径
AD = 1.2 * DT # 进距
# 进距和旋回直径增益
def Gain_k(v):
k_ad = 10**(0.3591*math.log10(v)+0.0952)
k_dt = 10**(0.5441*math.log10(v)-0.0795)
return k_ad, k_dt
# 计算四元数
def Quaternion(k_ad,k_dt):
r_fore = (1+1.34*math.sqrt(k_ad**2+(k_ad/2)**2))*L
r_aft = (1+0.67*math.sqrt(k_ad**2+(k_ad/2)**2))*L
r_starb = (0.2+k_dt)*L
r_port = (0.2+0.75*k_dt)*L
return r_fore, r_aft, r_starb, r_port
v = 20
k_ad, k_dt = Gain_k(v)
r_fore, r_aft, r_starb, r_port = Quaternion(k_ad,k_dt)
Q = [r_fore, r_aft, r_starb, r_port]
x = [[0,r_starb],[r_starb,0],[0,-r_port],[-r_port,0]]
y = [[r_fore,0],[0,-r_aft],[-r_aft,0],[0,r_fore]]
plt.figure(dpi=128)
plt.plot(x,y,color = 'r')
plt.scatter(0,0,marker='*')
plt.grid(True)
plt.grid(color='black', linestyle='--',linewidth=0.3,alpha=0.3)
plt.xlabel('x(n mile)')
plt.ylabel('y(n mile)')
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.show()
Refer
ence
[1]: Kijima, K. and Furukawa, Y. (2003). Automatic collision avoidance system using the concept of blocking area. Proceeding of IFAC Conference on Manoeuvring and Control of Marine Craft, Girona, Spain.
[2]: Wang N. An intelligent spatial collision risk based on the quaternion ship domain[J]. The Journal of Navigation, 2010, 63(4): 733.