欠驱动船舶轨迹跟踪的神经网络与滑模控制实践

1. 项目背景与核心挑战

船舶轨迹跟踪控制一直是航海自动化领域的重点研究方向。相比全驱动船舶,欠驱动船舶(指推进器数量少于自由度数的船舶)由于控制输入维度低于运动自由度,存在更强的非线性和耦合特性,这使得传统控制方法往往难以实现高精度跟踪。我在参与某型无人艇项目时,就曾遇到过在强风浪干扰下轨迹偏移超过5米的棘手情况。

这个项目要解决的核心问题是:如何在存在模型不确定性(如水动力参数变化)和外部扰动(如风浪流)的情况下,让欠驱动船舶依然能够精准跟踪预设轨迹。这涉及到三个关键技术难点:

  • 船舶动力学模型的强非线性特性
  • 系统状态(如横摇角速度)难以直接测量
  • 环境扰动具有时变、随机特性

2. 整体技术方案设计

2.1 神经网络观测器设计

针对状态不可测的问题,我们采用RBF神经网络构建状态观测器。具体实现时:

% RBF神经网络初始化示例
centers = linspace(-pi, pi, 10);  % 横摇角范围划分
width = 0.5;                     % 高斯函数宽度
net = newrb(centers, width);      % 创建RBF网络

注意:中心点数量需要根据船舶运动范围调整,过多会导致过拟合

观测器训练采用带遗忘因子的递推最小二乘法,我在实测中发现遗忘因子取0.95~0.99时,既能跟踪参数变化又不会过于敏感。

2.2 自适应滑模控制器

滑模面设计采用改进的指数趋近律:

s = e + λ∫e dt

其中λ的选择很关键,我的经验公式是:

lambda = 1/(2*T);  % T为系统响应时间常数

自适应律设计为:

η̂̇ = γ||s||

实测表明γ取值在0.1~1之间时,既能保证快速调节又不会引起抖振。

3. Matlab实现关键代码解析

3.1 船舶动力学建模

采用MMG分离型模型:

function dx = ship_model(t,x,u)
    % x=[u,v,r,x,y,psi] 状态向量
    % u=[δ, n] 控制输入(舵角、推进转速)
    
    % 水动力参数(需根据实船数据调整)
    m = 1200;   Izz = 1800;  Xu = -100;
    
    % 环境干扰模型
    wind = 0.2*sin(0.5*t); 
    
    % 状态方程
    dx(1) = (X_h + X_prop)/m - x(2)*x(3);
    ...
end

3.2 控制主循环实现

for k = 1:length(tspan)
    % 1. 状态观测
    x_hat = neural_observer(y_meas);
    
    % 2. 计算跟踪误差
    e = x_des(k,:) - x_hat;
    
    % 3. 自适应滑模控制
    s = e + lambda*e_int;
    u(k) = -K*s - eta_hat*sign(s);
    
    % 4. 参数更新
    eta_hat = eta_hat + gamma*norm(s)*dt;
    
    % 5. 系统仿真
    [~,x] = ode45(@(t,x)ship_model(t,x,u(k)), [0 dt], x0);
    x0 = x(end,:);
end

4. 实测效果与调参经验

4.1 典型测试场景

在3级海况(有义波高1.25m)下的正弦轨迹跟踪测试:

  • 最大位置误差:<1.5m
  • 航向保持精度:<3°
  • 控制量抖振幅度:<5%额定值

4.2 参数调节心得

  1. 滑模增益K :先设为系统惯性矩阵对角元素的2~3倍,再微调
  2. RBF网络结构 :输入层节点数应与状态维度一致,隐含层建议5~15个
  3. 采样周期 :应小于系统最小时间常数的1/10

5. 常见问题解决方案

5.1 抖振现象抑制

通过以下方法组合使用:

% 1. 边界层法替换sign函数
sat = @(s,phi) min(max(s/phi,-1),1); 

% 2. 增加低通滤波
[b,a] = butter(2, 0.1); 
u_filt = filter(b,a,u);

5.2 初始状态估计不准

采用两阶段启动策略:

  1. 前30秒使用PID控制
  2. 同时训练神经网络观测器
  3. 之后切换至自适应滑模控制

6. 工程应用建议

在实际船舶上部署时,需要特别注意:

  1. 传感器数据预处理(野值剔除、信号同步)
  2. 控制量输出限幅(保护执行机构)
  3. 在线参数微调机制(应对载货变化)

我在某型巡逻艇上的实施经验是:先用3~5个典型工况(直航、回转等)进行参数整定,再逐步扩展到全工况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值