1. 课程导入与智能船舶仿真概览

智能船舶并不是“把汽车自动驾驶搬到船上”这么简单。它通常指通过感知、通信、导航、控制与决策系统的协同,使船舶在航行、靠离泊、避碰、能效管理等环节具备不同程度的自主能力。按照中国船级社等机构的通用划分,智能船舶能力常被拆分为智能航行、智能船体、智能机舱、智能能效、智能货物管理和智能集成平台等方向,并用辅助决策、部分自主、有条件自主、高度自主等层级描述自动化程度。理解这一点很关键:本课程后续搭建的每一个ROS2节点,最终都要落到某个具体能力方向上,而不是孤立地“跑一个demo”。

为什么要在仿真中开发智能船舶?真实船舶试验成本高、周期长、风险大:一次实船避碰试验可能涉及燃油、船员、码头窗口与安全审批,参数改错甚至会造成碰撞。仿真则允许我们在可控环境中反复注入风、浪、流、传感器噪声和他船行为,快速比较算法差异。更重要的是,仿真能提供“真值”——船舶真实位姿、目标真实距离、障碍物真实运动状态,这些在实船上往往难以直接获得,却是评估感知与控制算法精度的基准。因此,仿真不是演示工具,而是智能船舶研发中连接算法设计、验证与实船部署的关键环节。

ROS2在其中的角色,是“系统集成与通信的骨架”。智能船舶仿真通常包含船体动力学模型、环境扰动模型、传感器模型(GNSS、IMU、雷达、激光雷达、相机、AIS)、感知与规划控制算法、可视化与记录工具。ROS2以节点为单位组织这些模块,用话题(Topic)传递连续数据流,用服务(Service)处理请求响应,用动作(Action)管理长时任务,用参数(Parameter)配置模型与算法,用TF2维护船体、传感器、地图之间的坐标变换。相比ROS1,ROS2的DDS通信、QoS策略和多机分布式能力更贴近船舶多设备、多计算单元的实际情况。例如传感器数据可设置“尽力而为”的QoS以降低延迟,控制指令则可用“可靠”QoS保证不丢包——这类取舍正是船舶系统集成中必须掌握的工程判断。

智能船舶ROS2仿真系统:分层结构与数据流 仿真环境层(Gazebo / 船舶动力学模型) 船体六自由度模型 风 / 浪 / 流扰动 航道与障碍物场景 推进与舵机执行器 真值位姿 / 碰撞检测 传感器模型层(ROS2 传感器节点) GNSS / IMU 激光雷达 毫米波雷达 视觉相机 AIS 接收 噪声与延迟注入 感知与决策层(算法节点) 目标检测与跟踪 多源融合定位 局部路径规划 避碰决策(COLREG) 航向 / 航速控制 通信与工具层(ROS2 中间件) DDS 话题 / QoS TF2 坐标变换 参数与生命周期 ros2 bag 记录 RViz2 可视化 真值 → 传感器仿真 传感器数据流 控制指令 / 状态 控制量回注船体模型 关键约定:船体坐标系取 x 轴指向船艏、y 轴指向左舷、z 轴向上;仿真真值仅用于评估,算法节点只能订阅传感器话题。 评估闭环:ros2 bag 记录 → 回放对比真值与估计轨迹 → 统计横向误差、避碰最小距离、指令延迟。

上图把本课程要建立的系统心智模型压缩成四层:仿真环境层产生船舶运动与场景真值,传感器模型层把真值转换为带噪声和延迟的ROS2话题,感知与决策层订阅这些话题并发布控制指令,通信与工具层负责数据分发、坐标变换、记录与可视化。注意图中那条红色虚线反馈:控制指令必须回注到船体动力学模型,仿真才会形成闭环。很多初学者只写了算法节点却忘了把指令接回模型,结果船“纹丝不动”,这恰恰是理解数据流方向的最好反面案例。

课程目标可以概括为三条主线。第一,能独立搭建一个可运行的智能船舶仿真场景:在Gazebo中加载船体模型与航道环境,配置风浪流参数,启动传感器节点并确认话题有数据。第二,能开发并集成ROS2功能节点:编写订阅传感器、发布控制指令的节点,正确设置QoS、坐标系与参数,用launch文件组织多节点启动。第三,能对仿真结果做出工程判断:用ros2 bag记录数据,回放后对比真值轨迹与算法估计轨迹,计算横向跟踪误差、最近会遇距离(DCPA)等指标,判断算法是否达到预期,而不是只看“画面好不好看”。

学习路径按“环境—数据—算法—评估”递进。前期先熟悉ROS2基本概念与工作空间,能在终端里用ros2 topic list、ros2 topic echo观察数据;随后进入船舶模型与传感器仿真,理解每个话题的消息类型和坐标系含义;中期实现感知、规划与控制节点,重点掌握TF2坐标变换和时间同步;后期做场景化综合实验,例如狭窄航道避碰、靠泊路径跟踪,并用记录数据完成评估报告。建议每个阶段都保留可复现的launch文件与参数文件,形成自己的实验资产。

入门阶段的一个实用习惯:每启动一个新节点,先用ros2 node list和ros2 topic hz /传感器话题确认节点在线、数据频率正常,再去看算法效果。频率异常往往比算法错误更早暴露配置问题,例如仿真步长与传感器更新率不匹配。

需要提前建立的一个工程观念是:仿真结果的可信度取决于模型与参数的合理性。船体质量、附加质量、阻尼系数、舵机响应时间都会显著影响操纵性;传感器噪声水平若设置得过于理想,算法在仿真中表现很好,实船却可能失效。因此本课程在示例中会明确标注哪些参数是“教学假设值”,并鼓励大家查阅船型资料或做参数敏感性对比。仿真不是追求“跑通”,而是追求“在合理假设下得到可解释、可复现、可迁移的结论”。

最后说明本课程的坐标系与单位约定,后续所有章节和图示保持一致:船体坐标系原点取船舶重心,x轴指向船艏,y轴指向左舷,z轴向上;世界坐标系采用东-北-天(ENU)约定;角度以弧度为单位,逆时针为正;距离以米为单位,速度以米每秒为单位。凡涉及“左转/右转”“正负舵角”的描述,均以此约定为准。建立统一的参照系,是避免多节点联调时出现“方向反了”“符号错了”这类低级错误的第一步。