深度强化学习在滑膜无人船艇轨迹跟踪中的应用

(文献+程序)深度强化学习滑膜无人船艇轨迹跟踪 Python DDPG 1.ddpg+mpc 2.ddqn 3.ddqg RBF神经网络 无人车 无人机编队车辆控制 跟踪 轨迹规划 滑膜控制动态面, 跟踪sin正弦轨迹和圆轨迹 出图包括舵角变换 轨迹图MATLAB simulink仿真

最近在研究深度强化学习在无人船艇轨迹跟踪中的应用,感觉收获满满,来和大家分享一下😃。

(文献+程序)深度强化学习滑膜无人船艇轨迹跟踪 Python DDPG 1.ddpg+mpc 2.ddqn 3.ddqg RBF神经网络 无人车 无人机编队车辆控制 跟踪 轨迹规划 滑膜控制动态面, 跟踪sin正弦轨迹和圆轨迹 出图包括舵角变换 轨迹图MATLAB simulink仿真

咱这次主要聚焦在基于Python的DDPG算法上,也就是深度确定性策略梯度算法。这算法在无人船艇的控制里可算是大放异彩🧐。

一、DDPG + MPC

DDPG结合模型预测控制(MPC),那效果真的是杠杠的👍。MPC可以根据无人船艇当前的状态和未来的预测,提前规划出最优的控制策略。就好比下棋,能提前想好几步之后的走法。

python 复制代码
# 简单示意DDPG + MPC的部分代码结构
class DDPG_MPC_Agent:
    def __init__(self):
        self.actor = Actor()
        self.critic = Critic()
        self.mpc = MPC()

    def train(self):
        state = get_current_state()
        action = self.actor(state)
        next_state, reward, done = step(action)
        target_q = self.critic(next_state, self.actor(next_state))
        q_loss = F.mse_loss(self.critic(state, action), target_q)
        actor_loss = -self.critic(state, self.actor(state)).mean()
        self.optimizer_q.step(q_loss)
        self.optimizer_actor.step(actor_loss)
        self.mpc.update(action)

这里面,Actor网络负责输出控制动作,Critic网络评估当前状态和动作的价值,MPC则根据预测来调整控制策略。每次训练的时候,先获取当前状态,通过Actor得到动作,执行动作后获取新状态、奖励和是否结束。然后用Critic来计算目标Q值,通过均方误差损失来更新网络参数,同时MPC也会根据动作进行更新。

二、DDQN

双深度Q网络(DDQN)也是个有趣的玩意儿😜。它通过引入两个Q网络,一个用于选择动作,一个用于评估动作,有效解决了Q值估计的偏差问题。

python 复制代码
# DDQN代码简单示例
class DDQN_Agent:
    def __init__(self):
        self.online_q = QNetwork()
        self.target_q = QNetwork()

    def train(self):
        state = get_current_state()
        action = self.online_q.act(state)
        next_state, reward, done = step(action)
        target_q = self.target_q(next_state, self.online_q(next_state).detach().max(1)[1].unsqueeze(1))
        q_loss = F.mse_loss(self.online_q(state, action), target_q)
        self.optimizer_q.step(q_loss)

这里,onlineq**网络用于实时选择动作,target q网络用于稳定地评估动作价值。训练时,先从当前状态选择动作,执行后获取新状态等信息。然后用targetq**网络结合online q网络选出的动作索引来计算目标Q值,再通过均方误差损失更新online_q网络。

三、DDQG

深度确定性Q图网络(DDQG),它结合了深度Q网络和确定性策略梯度的优点,在处理连续动作空间时表现出色👏。

python 复制代码
# DDQG代码简单示意
class DDQG_Agent:
    def __init__(self):
        self.actor = Actor()
        self.critic = Critic()
        self.target_actor = Actor()
        self.target_critic = Critic()

    def train(self):
        state = get_current_state()
        action = self.actor(state)
        next_state, reward, done = step(action)
        target_action = self.target_actor(next_state)
        target_q = self.target_critic(next_state, target_action)
        q_loss = F.mse_loss(self.critic(state, action), target_q)
        actor_loss = -self.critic(state, self.actor(state)).mean()
        self.optimizer_q.step(q_loss)
        self.optimizer_actor.step(actor_loss)

这里有两个Actor网络和两个Critic网络,分别用于当前和目标网络。训练过程和DDPG类似,通过计算Q值损失和策略损失来更新网络参数。

四、RBF神经网络

径向基函数(RBF)神经网络在无人船艇轨迹跟踪里也发挥了重要作用。它可以很好地逼近复杂的非线性函数,比如无人船艇的动力学模型。

python 复制代码
# RBF神经网络简单示例
import numpy as np
from sklearn.neural_network import MLPRegressor

class RBF_Network:
    def __init__(self):
        self.model = MLPRegressor(hidden_layer_sizes=(100,), activation='tanh')

    def train(self, X, y):
        self.model.fit(X, y)

    def predict(self, X):
        return self.model.predict(X)

这里用sklearn里的MLPRegressor来构建RBF神经网络。通过训练输入数据X和输出数据y,网络就能学习到它们之间的关系,之后就可以对新的输入数据进行预测啦。

五、无人船艇轨迹跟踪实战

咱的无人船艇要跟踪sin正弦轨迹和圆轨迹,可有意思了😃。

舵角变换

舵角的变换直接影响着无人船艇的转向,从而实现轨迹跟踪。通过不断调整舵角,让无人船艇尽可能地沿着目标轨迹行驶。

轨迹图

MATLAB simulink仿真帮我们直观地展示了无人船艇的轨迹跟踪过程。看着无人船艇一点点地沿着正弦轨迹或圆轨迹行驶,真的超有成就感🤩。

matlab 复制代码
% MATLAB simulink仿真代码片段示例
sim('unmanned_boat_tracking');
figure;
plot(tout, yout(:,1), 'b', 'LineWidth', 2);
hold on;
plot(target_x, target_y, 'r--', 'LineWidth', 2);
xlabel('X Position (m)');
ylabel('Y Position (m)');
title('Unmanned Boat Trajectory Tracking');
legend('Actual Trajectory', 'Target Trajectory');
grid on;

这段代码通过sim函数运行仿真,然后用plot函数画出实际轨迹和目标轨迹,最后设置图表的标签、标题和图例等。

通过这些方法,深度强化学习在滑膜无人船艇轨迹跟踪中展现出了强大的能力,为无人船艇的自主控制提供了有效的解决方案。希望这篇分享能让大家对相关内容有更清楚的了解😁。

相关推荐
zx_7414848118 小时前
【计算机视觉入门】基于 dlib 与 OpenCV 的三大案例:人脸检测、年龄性别预测与疲劳检测
opencv·计算机视觉·dnn
中科院提名者14 天前
深度学习语音增强架构演进的具体原因,从DNN开始
深度学习·架构·dnn
在学了加油24 天前
阿尔茨海默病诊断(优化特征选择版)
人工智能·python·dnn
zhy295631 个月前
【DNN】Llama 3.2 1B模型LORA微调与QAIRT部署
人工智能·dnn·llama
萌动的小火苗1 个月前
深度神经网络中,梯度消失和梯度爆炸的根本原因是什么?有哪些解决方法?【文末含面试万能总结】
人工智能·python·深度学习·神经网络·dnn
Ivanqhz2 个月前
DRN(深度强化学习推荐网络)
人工智能·线性代数·机器学习·矩阵·dnn
Ivanqhz3 个月前
注意力机制
线性代数·算法·矩阵·哈希算法·dnn
zhy295633 个月前
【DNN】基于llama.cpp的Qwen3-0.6B量化部署微调
人工智能·lora·dnn·llama·qwen3
Together_CZ3 个月前
OpenCV 5.0 重磅发布:全面技术深度解析
图像处理·人工智能·opencv·计算机视觉·llm·dnn·推理
进击切图仔3 个月前
确保深度神经网络在训练过程中的数值稳定性
人工智能·机器学习·dnn