1. 水下机器人运动建模基础
六自由度水下机器人(Underwater Vehicle)的运动建模是水下机器人控制领域的基础课题。这类机器人需要在复杂的水下环境中实现精确的轨迹跟踪,其动力学特性远比陆地机器人复杂。水下的流体动力效应、附加质量效应以及环境干扰都给建模带来了挑战。
在Matlab/Simulink环境下建立六自由度模型时,我们通常采用以下坐标系系统:
- 大地固定坐标系(NED坐标系):X轴指向正北,Y轴指向正东,Z轴垂直向下
- 机体坐标系:原点位于机器人重心,X轴指向机器人前进方向,Y轴指向右侧,Z轴垂直向下
动力学方程通常表示为:
code复制Mν̇ + C(ν)ν + D(ν)ν + g(η) = τ + τ_env
η̇ = J(η)ν
其中:
- M为惯性矩阵(包括刚体惯性和附加质量)
- C(ν)为科里奥利和向心力矩阵
- D(ν)为阻尼矩阵
- g(η)为恢复力/力矩向量
- τ为控制输入
- τ_env为环境干扰
- η=[x,y,z,φ,θ,ψ]^T为位置和姿态向量
- ν=[u,v,w,p,q,r]^T为线速度和角速度向量
- J(η)为坐标转换矩阵
实际建模时特别需要注意:水下机器人的附加质量效应不能忽略。当机器人在水中加速运动时,不仅需要加速机器人本身的质量,还需要加速周围一定体积的水,这部分"虚拟质量"会显著影响动力学特性。
1.1 Simulink建模关键模块
在Simulink中搭建六自由度模型时,我通常会建立以下子系统模块:
-
刚体动力学模块:
- 计算刚体惯性力、科里奥利力
- 使用6x6质量矩阵和速度向量进行矩阵运算
- 注意质量矩阵在机体坐标系中的表达
-
流体动力模块:
- 计算附加质量效应(使用6x6附加质量矩阵)
- 阻尼力计算(线性阻尼和非线性阻尼项)
- 通常需要根据实验数据或CFD仿真确定参数
-
恢复力模块:
- 计算重力和浮力产生的力和力矩
- 需要考虑机器人重心和浮心的相对位置
- 使用齐次变换矩阵处理不同坐标系下的力转换
-
环境干扰模块:
- 模拟水流、波浪等环境干扰
- 可加入随机扰动模拟真实水下环境
- 干扰模型通常简化为白噪声或有色
