1. 课程导入与海洋无人装备概览

海洋无人装备是当前海洋工程与智能装备领域发展最快的方向之一。所谓“无人”,并不是指完全脱离人,而是指装备在任务执行阶段能够自主航行、自主感知并自主完成既定作业,人则退到任务规划、监控与异常接管的位置。理解这一点很重要,因为它决定了我们后续学习 ROS2 时的关注重点:不是单纯写一个能跑的程序,而是构建一个能感知环境、做出决策、驱动执行机构并接受地面站监控的完整系统。

三类典型装备及其控制特征

从运动介质和作业方式看,海洋无人装备通常分为三类,它们的控制难点差异明显。

无人艇(USV)在水面航行,典型结构是双体或单体船体加螺旋桨/喷水推进器,常见执行机构为差速推进或舵桨组合。它的核心控制问题是航向保持、航迹跟踪和避障。由于水面存在风、浪、流扰动,且 GPS 信号可用,USV 通常采用“全局定位 + 局部避碰”的控制架构。一个典型的教学参数是:艇长 2~4 米、巡航速度 1~3 米/秒、航向控制周期 10~20 赫兹。

水下机器人(ROV)是有缆遥控水下机器人,通过脐带缆供电和通信,操作员实时操控。它通常配备多个推进器,可实现六自由度运动,但受缆绳约束,作业范围有限。ROV 的控制重点是姿态稳定、定深定航和机械臂协同作业,典型应用是水下结构物检查、阀门操作和打捞。

无人潜航器(AUV)是无缆自主潜航器,依靠自身电池和惯性/声学导航执行长航程任务,典型应用是海底地形测绘、水文调查和搜救。AUV 的最大挑战是水下无法使用 GPS,必须依靠惯性导航、多普勒测速仪和声学定位组合,且通信只能在上浮或水声链路条件下进行。因此 AUV 的控制系统更强调任务级自主和故障自处理能力。

海洋无人装备分类 · 控制特征 · 仿真需求 无人艇 USV 介质:水面 执行:差速推进 / 舵桨 定位:GPS + 惯导 难点:航迹跟踪、避障 水下机器人 ROV 介质:水下(有缆) 执行:多推进器六自由度 定位:声学 + 深度计 难点:姿态稳定、定深 无人潜航器 AUV 介质:水下(无缆) 执行:主推 + 舵面 定位:惯导 + DVL + 声学 难点:长航程自主、故障处理 ROS2 统一软件框架 节点通信 · 话题/服务/动作 · TF 坐标变换 · 仿真接口 感知与定位 传感器数据融合 状态估计 运动控制 航向/航迹/姿态 控制器设计 任务决策 行为状态机 异常处理 仿真验证 Gazebo / 水动力模型 场景回放

典型应用场景与仿真需求

不同装备对应不同任务,仿真需求也随之不同。USV 的典型任务是水面巡逻、水质采样和航道测绘,仿真时需要重点还原风浪流扰动、GPS 噪声和推进器响应延迟。ROV 的典型任务是水下结构检查与干预,仿真重点在于水下光学衰减、推进器推力分配和缆绳约束。AUV 的典型任务是长航程测绘,仿真重点在于惯性导航漂移、声学定位更新周期和能源约束。

这里要强调一个工程事实:海洋装备的实艇/实机试验成本高、风险大,一次海上试验动辄数万元且受天气窗口限制。因此仿真不是“可选项”,而是控制算法开发的主战场。一个合理的开发流程是:先在仿真中完成控制律验证和参数整定,再进入水池试验,最后才上海试。ROS2 之所以适合这一流程,是因为它提供了统一的节点通信机制和丰富的仿真接口,使同一套控制代码可以在仿真和实机之间切换。

本课程的学习路径

本课程以 ROS2 为核心工具,围绕“建模—感知—控制—仿真—验证”的主线展开。具体来说,前期会建立装备的运动学与动力学模型,用 URDF 描述刚体结构,用 Gazebo 搭建水下/水面环境;中期实现传感器数据接入、状态估计和控制器节点;后期完成航迹跟踪、避障和任务状态机的仿真验证。每一章都会给出可运行的示例参数和观察指标,例如航向误差收敛曲线、航迹跟踪的横向偏差、定深控制的稳态误差等。

学习建议:不要只停留在“能编译、能启动”的层面。每完成一个节点,都要问自己三个问题:输入是什么、输出是什么、在什么条件下会失效。这三个问题贯穿整个课程,也是后续排障的基础。

一个可对照的入门示例

为了让大家对后续内容有直观预期,这里给出一个简化的航向控制示例。假设 USV 的期望航向为 90°(正东),当前航向为 60°,航向误差为 30°。采用比例控制,比例增益 Kp = 0.8,则期望角速度为 24°/s。控制器输出到左右推进器的差速指令,左推 60%、右推 40%,形成转向力矩。在仿真中,我们观察航向角随时间的变化:若 5 秒内误差收敛到 ±2° 以内且无超调,则认为参数合理;若出现持续振荡,则需要降低 Kp 或加入微分项。

# 航向误差计算(示例,非实测)
error = target_heading - current_heading   # 60° → 90°,误差 30°
omega_cmd = Kp * error                     # 0.8 × 30 = 24 °/s
left_thrust  = base + omega_cmd * k_diff   # 差速分配
right_thrust = base - omega_cmd * k_diff

这个例子虽然简单,但它完整体现了“感知—计算—执行—观察”的闭环。后续章节会逐步把这一闭环扩展到航迹跟踪、避障和多装备协同。需要提醒的是,上述数值仅为教学示例,实际参数必须结合艇体惯量、推进器特性和水动力阻尼重新整定。

学习目标