1. 课程导入与AUV仿真概览
自主水下航行器(Autonomous Underwater Vehicle,AUV)是一类无需脐带缆、依靠自身能源与控制系统在水下自主完成航行、探测与作业任务的无人潜航器。与遥控潜水器(ROV)不同,AUV 不依赖母船实时操控,其核心能力在于"感知—决策—控制"闭环全部在艇上完成。典型 AUV 由耐压壳体、推进与舵机系统、惯性导航与多普勒测速仪(DVL)、深度计、侧扫声呐或前视声呐、电池组与任务计算机组成。以常见的鱼雷形中型 AUV 为例,直径约 324 mm、长度 2~4 m、巡航速度 1~2 m/s、作业深度 100~300 m,这些量级参数决定了它的动力学特性与仿真建模的尺度。
AUV 的应用场景决定了仿真需求的多样性:海底地形测绘要求稳定的定高航行与侧扫声呐成像;水下管线巡检要求贴近管道的定距跟踪;海洋环境监测要求长航程的路径规划与能耗管理;军事与搜救领域则关注低噪声隐蔽航行与目标搜索。这些任务的共同点是——真实水下试验成本高、风险大、迭代慢。一次海上试验涉及船时、人员、布放回收与天气窗口,单次成本往往以万元计,而参数整定或控制算法的一次失败就可能导致设备丢失。因此,仿真成为 AUV 研发中不可替代的环节。
ROS2 与 Gazebo 在仿真中的分工
本课程采用 ROS2 与 Gazebo 组合构建仿真环境,二者职责清晰:Gazebo 负责"物理世界",包括刚体动力学、浮力与阻尼、推进器推力、传感器物理模型(IMU 噪声、DVL 波束、深度计压力)以及水下环境(水体密度、海流、能见度);ROS2 负责"信息世界",以节点、话题、服务、动作的分布式通信机制组织感知、控制与任务逻辑,并通过 ros2_control 框架把控制器输出转换为 Gazebo 中的推力指令。二者通过 gazebo_ros 桥接插件交换数据,形成"控制器—执行器—传感器—控制器"的闭环。
上图展示了本课程贯穿始终的系统结构。需要特别注意的是闭环中的方向约定:本课程统一采用 AUV 机体坐标系——x 轴指向艇艏、y 轴指向右舷、z 轴指向艇底,原点位于浮心;世界坐标系采用 Gazebo 默认的 ENU(东-北-天)约定。所有推力、速度、姿态角的正负号均以此为准,后续章节不再重复说明。若在 Gazebo 中观察到艇体下潜时深度值增大,是因为深度计以"向下为正"输出压力深度,这与 z 轴向上为正并不矛盾,需在状态估计节点中做符号转换。
从"能跑起来"到"跑得可信"
初学者常把仿真理解为"让模型动起来",但工程上真正有价值的是仿真可信度。一个可用的 AUV 仿真至少要在三个层面成立:几何与质量属性正确(否则浮力与姿态失真)、水动力参数合理(附加质量与阻尼决定响应快慢)、传感器模型带有真实噪声特性(否则滤波算法无法验证)。例如,若忽略附加质量,AUV 的纵向加速度响应会明显偏快,控制器在仿真中调好的增益搬到实艇上就可能振荡。因此本课程在建模阶段会明确给出参数来源与假设,并在结果分析中区分"仿真观测值"与"实艇预期值"。
课程目标与学习路径
完成本课程后,你应当能够独立完成以下任务:搭建含水下环境的 Gazebo 世界;用 URDF/Xacro 描述 AUV 并配置推进器与传感器插件;编写 ROS2 节点实现定深、定航向与航路点跟踪;用 rosbag2 记录并回放仿真数据;对控制效果做出定量判断。学习路径按"环境—模型—控制—任务—验证"推进:先打通 ROS2 与 Gazebo 的通信链路,再逐步增加物理真实度与任务复杂度。
| 阶段 | 核心内容 | 可观察的阶段性成果 |
|---|---|---|
| 环境搭建 | ROS2 发行版、Gazebo、gazebo_ros 桥接 | 空世界中生成一个立方体并收到 /odom 话题 |
| 模型构建 | URDF/Xacro、质量惯量、浮力与阻尼、传感器插件 | 艇体在水中静止时深度稳定、IMU 有合理噪声 |
| 控制实现 | 推力分配、PID 定深与定航向 | 阶跃指令下深度收敛且超调可量化 |
| 任务仿真 | 航路点跟踪、定高航行、rosbag2 记录 | 轨迹与规划航路点的偏差曲线 |
最后给出一个贯穿课程的示例参数集,便于你在动手时有一个可对照的起点(以下为教学假设值,非实测):艇体质量 45 kg、排水体积 0.046 m³(对应海水密度 1025 kg/m³ 时浮力约 461 N,略呈正浮力)、纵向附加质量取艇体质量的 0.1 倍、线性阻尼系数 20 N·s/m、单个推进器最大推力 30 N。用这些参数,你可以先估算稳态航速:当推力与阻尼平衡时 v = F/c = 30/20 = 1.5 m/s,与前述巡航速度量级吻合。这个简单估算会在后续章节被用来检验仿真结果是否"讲得通"——如果仿真中 30 N 推力跑出了 15 m/s,那一定是单位或阻尼参数出了问题。
带着这个闭环结构和一组可检验的参数,你就可以进入下一阶段的实际搭建了。