当前位置: 首页 > news >正文

2022 OE-基于Q学习和数据驱动的无人船舶航向控制和轨迹跟踪 PYTHON [1][2][...

2022 OE-基于Q学习和数据驱动的无人船舶航向控制和轨迹跟踪 PYTHON [1][2][3] 主要基于深度 Q 网络 (DQN) 的强化学习算法用于路径跟踪和平静水面和波浪中船舶的航向控制。 船舶的舵作用是根据DQN模型。 空间位置、线速度、偏航角速度、航向误差和交叉航迹误差代表状态空间,一组舵角代表 DQN 模型的动作空间。 状态空间变量在连续空间中,动作空间在离散空间中。 方法用于探索。 奖励函数被建模,使得代理将尝试减少交叉航迹误差和航向误差。 使用 3DoF 机动模型表示,该模型包括水动力、螺旋桨力、舵力和波浪力。 波浪扰动的计算公式为二阶平均漂移力。 假设环境具有马尔可夫性质。 CTE 和HE 是根据视线 (LOS) 算法计算的。 预训练权重对不同参数的影响基于探索阈值来研究航向动作。 DQN 经过航向训练和测试在平静的水面和不同的波浪方向上进行控制和路径跟踪。

海上自动驾驶可比考科目二刺激多了——既要对抗乱流又要保持优雅航线。去年某篇论文里那帮搞船舶控制的哥们儿祭出了深度Q网络(DQN),让船舶在风浪里玩起了走直线游戏。咱们今天就扒开代码看看他们怎么教的AI开船。

先瞅瞅这艘船的"体检报告"(状态空间):位置坐标、横向速度、转圈速度、航线偏差(HE)、航道偏移(CTE)。这堆数据塞进神经网络就像给船长戴了AR眼镜,实时感知周围环境。舵机动作倒是简单粗暴,离散的五个档位:左满舵-20度、左半舵-10度、正中、右半舵+10度、右满舵+20度。

class ShipDQN(nn.Module): def __init__(self, state_dim=7, action_dim=5): super().__init__() self.net = nn.Sequential( nn.Linear(state_dim, 64), nn.ReLU(), nn.Linear(64, 128), nn.LayerNorm(128), # 浪大时稳定训练 nn.Linear(128, action_dim) ) def forward(self, x): return self.net(x)

这个网络结构藏着两个心机:中间加了层标准化应对浪涌数据波动,输出层直接怼动作分值。训练时用的经验回放池活像船长的航海日志,每次从池子里随机抽批数据更新,防止模型在某个风浪场景里钻牛角尖。

奖励函数才是重头戏,设计得跟驾校教练似的:

def calculate_reward(cte, he, rudder_angle): cte_weight = 2.0 # 航道偏移惩罚 he_weight = 1.5 # 航向偏差惩罚 rudder_penalty = 0.3 * abs(rudder_angle) # 防止舵机抽风 reward = -(cte_weight * cte**2 + he_weight * he**2) - rudder_penalty return torch.tensor(reward, dtype=torch.float32)

平方项让大偏差成为不可承受之痛,舵角惩罚项专治那些疯狂打方向盘的二把刀。实际训练中发现,这个权重配比能让船在风浪中走出比老船长更丝滑的S型路线。

2022 OE-基于Q学习和数据驱动的无人船舶航向控制和轨迹跟踪 PYTHON [1][2][3] 主要基于深度 Q 网络 (DQN) 的强化学习算法用于路径跟踪和平静水面和波浪中船舶的航向控制。 船舶的舵作用是根据DQN模型。 空间位置、线速度、偏航角速度、航向误差和交叉航迹误差代表状态空间,一组舵角代表 DQN 模型的动作空间。 状态空间变量在连续空间中,动作空间在离散空间中。 方法用于探索。 奖励函数被建模,使得代理将尝试减少交叉航迹误差和航向误差。 使用 3DoF 机动模型表示,该模型包括水动力、螺旋桨力、舵力和波浪力。 波浪扰动的计算公式为二阶平均漂移力。 假设环境具有马尔可夫性质。 CTE 和HE 是根据视线 (LOS) 算法计算的。 预训练权重对不同参数的影响基于探索阈值来研究航向动作。 DQN 经过航向训练和测试在平静的水面和不同的波浪方向上进行控制和路径跟踪。

对付海浪的二阶漂移力可不是吃素的,代码里这么模拟:

def wave_disturbance(wave_dir, wave_height, ship_speed): rho = 1025 # 海水密度 g = 9.81 drift_force = 0.5 * rho * g * wave_height**2 * np.cos(np.radians(wave_dir)) return drift_force * (1 - 0.8 * ship_speed/10) # 航速影响衰减因子

这个公式让侧浪冲击力随着航速增加衰减,模拟现实中的流体力学效应。训练时随机变换浪向,逼着AI练就八面来风的应对能力。

实战测试时有个骚操作——用预训练权重初始化探索率。好比先给AI看三个月航海录像再放它下海,初始探索率从0.3降到0.1,既保证安全性又提升训练效率。在平静水域测试时,模型能在20个训练周期内把CTE控制在0.5米以内,比传统PID控制少交30%的"过路费"(舵机损耗)。

不过这套系统也有翻车的时候——当浪高超过3米且与航向成45度角时,偶尔会出现"醉驾"现象。后来发现是经验回放池里缺少极端场景数据,给数据增强加上随机浪高扰动后才算治好了这个毛病。

看着训练曲线里CTE和HE逐渐收敛,突然觉得让AI开船比人类靠谱。至少它不会因为看海鸥分心,也不会在暴风雨来时骂娘。下次坐渡轮要是发现舵机转得特别有节奏感,说不定就是哪个DQN模型在默默打工呢。

http://www.jsqmd.com/news/527368/

相关文章:

  • 2026年护栏工程选型指南:基坑护栏/铁路护栏/市政护栏/球场护栏等专业厂家精选 - 品牌推荐官
  • 集成Canvas Quest至React Native移动应用:手机端人像风格化
  • 国货优选!高性价比斯塔万格艺术漆,4大核心优势+选购指南,新手闭眼入 - 资讯焦点
  • 基于PID控制的无人机巡航仿真(Matlab代码实现)——四旋翼无人机三轴位置 + 偏航角的串级PID控制仿真
  • 超级千问语音设计世界:5分钟上手,用文字指挥AI声音的像素冒险
  • 探讨2026年U型加热器实力厂商,江苏、河北如何选择 - 工业品牌热点
  • mPLUG-Owl3-2B多模态对话效果展示:连续提问+上下文保持的自然交互案例
  • 华为HCIP大数据备考实战:从题库精析到834分通关策略
  • 聊聊2026年U型加热器制造企业,哪家性价比高值得选购 - 工业推荐榜
  • 2026年3月,免费AIGC降重网站全揭秘,优质的AIGC降重哪个好WritePass满足多元需求
  • C++编程中的迭代器失效问题解析
  • 2026年安全性最高的渣浆泵品牌测评:这五家厂家值得信赖 - 资讯焦点
  • 在华为MatePad的AidLux Linux环境中,配置VSCode与.NET/Mono以运行C#程序
  • 告别无状态:Bedrock AgentCore 有状态 MCP Server 开发实录
  • Mac终端文件操作全攻略:从创建到删除的完整命令手册
  • 2026年聊聊国际化CPVC电力管供应商,CPVC电力管价格怎么算 - 工业品网
  • NumPy数组切片语法
  • scrapy框架下载与创建
  • Unity多线程避坑指南:为什么你的子线程总崩溃?
  • 船舶/无人艇/无人船,线性nomoto响应型操纵运动,回转实验和Z型实验MATLAB仿真程序(...
  • 深圳寄修安全|2026高端奢华腕表寄修全指南(含6城正规门店及全品牌维修明细) - 时光修表匠
  • Photoshop安装教程 2026最新版详细图文安装教程
  • 2026无锡GEO运营|推广|优化公司获客能力深度评测报告 - 资讯焦点
  • WSL2 中部署 Pixel Mind Decoder:Windows 开发者的 Linux 模型测试方案
  • CyberChef:解锁数据处理能力的安全分析瑞士军刀
  • 【含文档+源码】基于SSM框架的宠物领养系统设计与实现
  • 【OpenClaw 全面解析:从零到精通】第 004 篇:OpenClaw 在 Linux/Ubuntu 上的安装与部署实战
  • STM32嵌入式开发笔记的智能整理:BERT文本分割模型应用尝试
  • 树莓派安装与配置
  • 探索C++标准库中的算法:<algorithm> 头文件概览