3. 船舶运动学与动力学建模基础
自主航行系统的决策、制导与控制都建立在同一个前提上:系统必须能在任意时刻回答“船现在处于什么运动状态、下一时刻会怎样”。这个回答来自船舶运动模型。本节不追求水动力学研究的完整严谨性,而是面向集成工程,讲清三件事:如何建立可用于实时计算的六自由度简化模型,如何从试验或实船数据中辨识操纵性参数,以及如何验证模型是否“够用”。
一、坐标系与六自由度状态定义
建模的第一步是统一参照系,否则后续所有符号都会混乱。工程上通常采用两个右手坐标系:大地坐标系(北-东-地,NED)用于描述船舶航迹与位置;船体坐标系(x 指向船首、y 指向右舷、z 指向龙骨下方)用于描述船体受力与相对运动。六自由度状态量为:
- 位置:北向位置 N、东向位置 E、垂向位置 D(下为正);
- 姿态:横摇角 φ、纵摇角 θ、艏向角 ψ(北偏东为正,顺时针);
- 速度:纵荡 u、横荡 v、垂荡 w(船体系);
- 角速度:横摇角速度 p、纵摇角速度 q、艏摇角速度 r。
需要特别强调符号约定:本文艏向角 ψ 以正北为 0、顺时针为正,与船体坐标系 z 轴向下构成右手系一致;横摇角 φ 以右舷下沉为正。集成时若飞控或雷达模块使用逆时针为正的数学约定,必须在接口层做一次显式转换,而不是在模型内部混用。
二、六自由度简化模型的结构
完整六自由度模型包含刚体惯性项、附加质量、阻尼、恢复力、推进与舵力、环境扰动力。对自主航行集成而言,通常做如下简化:忽略垂荡、纵摇、横摇的耦合动态(或将其降阶为准静态),保留纵荡、横荡、艏摇三自由度平面运动作为主模型,横摇仅作为安全约束量参与监控。这样得到的平面运动方程可写为:
m(u̇ − v·r) = X_prop + X_rudder + X_env
m(v̇ + u·r) = Y_rudder + Y_env
I_z·ṙ = N_rudder + N_env
运动学:
ṅ = u·cosψ − v·sinψ
ė = u·sinψ + v·cosψ
ψ̇ = r
其中 m 为含附加质量的等效质量,I_z 为含附加惯性矩的等效转动惯量。舵力与舵力矩常采用线性化形式 X≈0、Y = Y_δ·δ、N = N_δ·δ,δ 为舵角。这一组方程的计算量极小,适合在船载控制器中以 10~50 Hz 运行,是模型预测控制与状态估计器的常用内核。
三、操纵性参数辨识:从试验到参数集
简化模型中的关键参数包括等效质量与惯量、阻尼系数、舵效系数 Y_δ 与 N_δ,以及工程上常用的 Nomoto 一阶模型参数 K(回转性指数)与 T(追随性指数)。这些参数很难仅靠理论计算获得,必须通过辨识。典型做法如下:
1. 设计激励试验。最常用的是 10°/10° 与 20°/20° Z 形试验,以及 15°~35° 舵角下的定常回转试验。Z 形试验能同时激发艏摇动态与舵响应,是辨识 K、T 的标准输入。试验需记录时间同步的舵角 δ(t)、艏向角 ψ(t)、航速 u(t),采样率建议不低于 10 Hz。
2. 选择模型形式。若只关心艏向响应,可用 Nomoto 一阶模型 Ṫψ̇ + ψ̇ = K·δ,其离散形式便于递推最小二乘。若需同时描述横荡与漂角,则采用三自由度线性模型,待辨识参数向量为 θ = [Y_v, Y_r, N_v, N_r, Y_δ, N_δ]。
3. 参数估计。以三自由度模型为例,将方程整理为线性回归形式 y(k) = φ(k)ᵀ·θ + ε(k),其中 y 为加速度项(由速度差分得到),φ 为速度与舵角组成的回归向量。用递推最小二乘即可在线更新,示例代码框架如下:
# 示例:三自由度模型递推最小二乘(参数为教学假设值)
theta = np.zeros(6) # [Y_v, Y_r, N_v, N_r, Y_δ, N_δ]
P = np.eye(6) * 1e4
for k in range(1, len(t)):
phi = np.array([v[k], r[k], 0, 0, delta[k], 0]) # 横荡方程回归向量
y = (v[k] - v[k-1]) / dt
K = P @ phi / (1 + phi @ P @ phi)
theta = theta + K * (y - phi @ theta)
P = (np.eye(6) - np.outer(K, phi)) @ P
需要注意:速度差分对噪声敏感,实际工程中应先对 v、r 做低通滤波(截止频率约 1~2 Hz),或改用积分形式的回归方程以抑制噪声放大。辨识得到的参数应带有置信区间,若某参数标准差过大,说明该试验激励不足,需补充相应工况。
四、模型验证:判断“够用”而非“完美”
验证不是看拟合曲线是否漂亮,而是看模型在未参与辨识的数据上能否复现关键操纵特征。建议采用三级验证:
- 回放验证:用辨识数据本身回放,检查残差是否为零均值白噪声,主要排除系统性偏差;
- 交叉验证:用 10°/10° Z 形数据辨识,用 20°/20° 数据验证,观察艏向超调量与周期误差,工程上通常要求超调量误差小于 15%、稳态回转角速度误差小于 10%;
- 轨迹验证:在回转试验中比较模型预测轨迹与实测轨迹的横向偏差,若在 3 倍船长范围内则认为满足自主航行预测需求。
五、集成中的常见问题
实际集成时,模型误差往往不是来自方程本身,而是来自三处:一是坐标系转换遗漏,导致艏向角符号相反,表现为“船越控越偏”;二是参数随航速、吃水变化而未做插值,低速时舵效显著下降却仍用高速参数;三是环境扰动未建模,风流浪被误当作模型误差吸收进参数,造成参数漂移。建议在模型输出端保留一个扰动估计通道,将辨识参数与环境力解耦,并在不同航速点分别辨识、以查表方式调用。这样得到的简化模型既能满足实时性,又能在自主航行系统的预测与控制中保持可解释、可维护。