1. 课程导入与智能船舶仿真概览
智能船舶并不是“把汽车自动驾驶搬到船上”这么简单。它通常指通过感知、通信、导航、控制与决策系统的协同,使船舶在航行、靠离泊、避碰、能效管理等环节具备不同程度的自主能力。按照中国船级社等机构的通用划分,智能船舶能力常被拆分为智能航行、智能船体、智能机舱、智能能效、智能货物管理和智能集成平台等方向,并用辅助决策、部分自主、有条件自主、高度自主等层级描述自动化程度。理解这一点很关键:本课程后续搭建的每一个ROS2节点,最终都要落到某个具体能力方向上,而不是孤立地“跑一个demo”。
为什么要在仿真中开发智能船舶?真实船舶试验成本高、周期长、风险大:一次实船避碰试验可能涉及燃油、船员、码头窗口与安全审批,参数改错甚至会造成碰撞。仿真则允许我们在可控环境中反复注入风、浪、流、传感器噪声和他船行为,快速比较算法差异。更重要的是,仿真能提供“真值”——船舶真实位姿、目标真实距离、障碍物真实运动状态,这些在实船上往往难以直接获得,却是评估感知与控制算法精度的基准。因此,仿真不是演示工具,而是智能船舶研发中连接算法设计、验证与实船部署的关键环节。
ROS2在其中的角色,是“系统集成与通信的骨架”。智能船舶仿真通常包含船体动力学模型、环境扰动模型、传感器模型(GNSS、IMU、雷达、激光雷达、相机、AIS)、感知与规划控制算法、可视化与记录工具。ROS2以节点为单位组织这些模块,用话题(Topic)传递连续数据流,用服务(Service)处理请求响应,用动作(Action)管理长时任务,用参数(Parameter)配置模型与算法,用TF2维护船体、传感器、地图之间的坐标变换。相比ROS1,ROS2的DDS通信、QoS策略和多机分布式能力更贴近船舶多设备、多计算单元的实际情况。例如传感器数据可设置“尽力而为”的QoS以降低延迟,控制指令则可用“可靠”QoS保证不丢包——这类取舍正是船舶系统集成中必须掌握的工程判断。
上图把本课程要建立的系统心智模型压缩成四层:仿真环境层产生船舶运动与场景真值,传感器模型层把真值转换为带噪声和延迟的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)约定;角度以弧度为单位,逆时针为正;距离以米为单位,速度以米每秒为单位。凡涉及“左转/右转”“正负舵角”的描述,均以此约定为准。建立统一的参照系,是避免多节点联调时出现“方向反了”“符号错了”这类低级错误的第一步。