1. 项目概述
西工大"小黄船"是一款典型的小型无人水面艇(USV),其单桨单舵的推进系统设计在浅水区域作业中展现出独特优势。这类小型USV在执行环境监测、水文勘探等任务时,往往需要完成高精度的轨迹跟踪。然而,受限于其特殊的推进结构和复杂的水域环境,传统控制方法往往难以兼顾跟踪精度和动态性能。
本项目针对这一实际问题,提出了一种考虑动力学约束的自适应非线性模型预测控制(NMPC)方案。与常规方法相比,我们的创新点主要体现在三个方面:
- 建立了包含推进器动力学特性的3自由度船舶运动模型
- 设计了状态依赖的自适应权重调节机制
- 开发了完整的Python实现框架
提示:单桨单舵结构的特殊之处在于推进效率会随舵角变化,这是传统双推进器USV所没有的非线性特性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动力学建模与问题描述
2.1 坐标系定义
采用标准的船舶运动坐标系:
- 惯性坐标系{O-XY}:固定于地球表面
- 船体坐标系{b-xy}:原点位于船舶重心
两坐标系间的转换关系由位置(x,y)和艏向角ψ描述。这种双坐标系体系是船舶运动分析的基础。
2.2 3自由度运动模型
考虑横荡、纵荡和艏摇三个自由度,建立如下动力学方程:
code复制Mν̇ + C(ν)ν + Dν = τ
η̇ = J(ψ)ν
其中:
- M ∈ R³ˣ³为惯性矩阵
- C(ν) ∈ R³ˣ³为科里奥利力矩阵
- D ∈ R³ˣ³为阻尼矩阵
- τ = [X,Y,N]ᵀ为控制力/力矩
- η = [x,y,ψ]ᵀ为位置/姿态
- ν = [u,v,r]ᵀ为船体坐标系下的速度
2.3 推进器模型
小黄船采用单桨单舵配置,其推力特性可建模为:
code复制X = (1 - t)T
Y = (1 + a_H)T sinδ
N = (x_R + a_Hx_H)T sinδ
其中:
- T为螺旋桨推力
- δ为舵角
- t, a_H等为经验系数
- x_R, x_H为力臂参数
这个模型准确反映了舵角变化对横向力和转艏力矩的非线性影响。
3. 自适应NMPC设计
3.1 基本NMPC框架
构建如下优化问题:
code复制min J = ∑(η-η_ref)ᵀQ(η-η_ref) + νᵀRν + ΔτᵀSΔτ
s.t. 动力学方程
