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

(文献+程序)深度强化学习滑膜无人船艇轨迹跟踪 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函数画出实际轨迹和目标轨迹,最后设置图表的标签、标题和图例等。

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

相关推荐
Sherlock Ma8 天前
强化学习入门(2):DQN、Reinforce、AC、PPO
人工智能·深度学习·机器学习·自然语言处理·transformer·dnn·强化学习
学而要时习9 天前
深度神经网络到AI大语言模型:一场被“误认为突然发生”的技术演进
人工智能·语言模型·dnn
一招定胜负10 天前
OpenCV DNN 实战:快速实现实时性别年龄检测
人工智能·opencv·dnn
Pyeako11 天前
opencv计算机视觉--DNN模块实现风格迁移
python·opencv·计算机视觉·pycharm·dnn·预处理·风格迁移
一只大侠的侠14 天前
DNN深度神经网络实战
人工智能·神经网络·dnn
陈天伟教授16 天前
人工智能应用-机器视觉:AI 鉴伪 06.人脸控制技术
人工智能·神经网络·数码相机·生成对抗网络·dnn
柳鲲鹏16 天前
OpenCV: DNN超采样,性能差,只能整数
人工智能·opencv·dnn
小码hh16 天前
【PonitNet++】2. 点云输入深度神经网络前的常见表示形式
人工智能·神经网络·dnn
一招定胜负17 天前
OpenCV实战:DNN风格迁移与CSRT物体追踪
人工智能·opencv·dnn