博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

 ✅ 具体问题可以私信或扫描文章底部二维码。


(1)驾驶数据采集与循环作业评价方法研究

针对轮式装载机V型作业模式,采集了不同驾驶员的驾驶数据,分析了驾驶员的作业特点,并研究了装载机循环作业的优劣评价方法。通过构建驾驶数据采集系统,收集了熟练和非熟练驾驶员的V型作业模式数据。提取了循环作业的关键参数,如作业时长、行驶路程和制动滑摩功,并在不同作业循环和作业方式下对这些参数进行了深入分析。这些评价方法为自动驾驶轮式装载机的作业时长和行驶路程选择提供了理论依据

(2)整车动力学模型与无碰撞行驶轨迹规划

建立了能够反映轮式装载机操纵稳定性的整车动力学模型,并研究了满足装载机在工作区域正向/反向行驶状态下的无碰撞行驶轨迹规划方法。利用未来时刻的路径曲率信息和当前时刻的车辆状态信息,建立了动态偏差模型,并在此基础上构建了整车动力学模型。结合轮式装载机的车速、加速度、整车最小稳定转弯半径等驾驶数据,以最优快速随机扩展树算法(RRT*)和CC-Steer算法为数学基础,计算生成了同时考虑空间和时间因素,并具有避障功能且符合装载机实际作业行驶特点的轨迹点集

(3)自适应模型预测轨迹跟踪控制方法研究

基于装载机动力学模型和动态偏差模型,以时变状态下的路径曲率为扰动输入,以加速度和铰接角为控制输入,以车速、横向位置偏差和航向角偏差为输出,建立了满足装载机在工作区域行驶的自适应模型预测控制(AMPC)轨迹跟踪系统。利用构建的AMPC轨迹跟踪系统,进行了自动驾驶轮式装载机的轨迹跟踪仿真验证,实现了对路径曲率有自适应能力的AMPC轨迹跟踪控制

(4)基于深度强化学习的轨迹跟踪控制方法研究

以深度确定性策略梯度(DDPG)深度强化学习算法为数学基础,构建了四种不同类型的环境模型以及与环境模型相对应的四类DDPG智能体。通过基于试错机制的交互式学习,得到了不同环境模型下逼近于最优控制策略的DDPG智能体。以规划得到的V型作业行驶轨迹为目标,利用构建的深度强化学习轨迹跟踪系统,进行了不同环境下自动驾驶轮式装载机的轨迹跟踪仿真验证。摆脱了轨迹跟踪控制方法对车辆模型的依赖,实现了对新环境和新任务的具有自适应能力的深度强化学习轨迹跟踪控制

 

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import random

# 定义Actor网络
class Actor(nn.Module):
    def __init__(self, state_size, action_size, hidden_size):
        super(Actor, self).__init__()
        self.fc1 = nn.Linear(state_size, hidden_size)
        self.fc2 = nn.Linear(hidden_size, hidden_size)
        self.fc3 = nn.Linear(hidden_size, action_size)

    def forward(self, state):
        x = torch.relu(self.fc1(state))
        x = torch.relu(self.fc2(x))
        return torch.tanh(self.fc3(x))

# 定义Critic网络
class Critic(nn.Module):
    def __init__(self, state_size, action_size, hidden_size):
        super(Critic, self).__init__()
        self.fc1 = nn.Linear(state_size + action_size, hidden_size)
        self.fc2 = nn.Linear(hidden_size, hidden_size)
        self.fc3 = nn.Linear(hidden_size, 1)

    def forward(self, state, action):
        x = torch.relu(self.fc1(torch.cat([state, action], 1)))
        x = torch.relu(self.fc2(x))
        return self.fc3(x)

# 初始化Actor和Critic网络
actor = Actor(state_size=33, action_size=2, hidden_size=256)
critic = Critic(state_size=33, action_size=2, hidden_size=256)

# 定义优化器
actor_optimizer = optim.Adam(actor.parameters(), lr=1e-4)
critic_optimizer = optim.Adam(critic.parameters(), lr=1e-3)

# 定义损失函数
criterion = nn.MSELoss()

# 训练循环
for episode in range(num_episodes):
    for t in range(num_steps):
        # 选择动作
        state = env.reset()
        done = False
        while not done:
            # 根据当前状态选择动作
            action = actor(state)
            # 执行动作,获得下一个状态和奖励
            next_state, reward, done, _ = env.step(action)
            # 存储经验
            replay_buffer.append((state, action, reward, next_state, done))
            # 更新状态
            state = next_state
            # 训练网络
            if len(replay_buffer) > batch_size:
                sample = random.sample(replay_buffer, batch_size)
                states, actions, rewards, next_states, dones = zip(*sample)
                states = torch.tensor(states)
                actions = torch.tensor(actions)
                rewards = torch.tensor(rewards)
                next_states = torch.tensor(next_states)
                dones = torch.tensor(dones)
                # Critic更新
                with torch.no_grad():
                    next_actions = actor(next_states)
                    next_values = critic(next_states, next_actions)
                    expected_values = rewards + gamma * next_values * (1 - dones)
                current_values = critic(states, actions)
                loss = criterion(current_values, expected_values)
                critic_optimizer.zero_grad()
                loss.backward()
                critic_optimizer.step()
                # Actor更新
                predicted_values = critic(states, actor(states))
                actor_loss = -criterion(predicted_values, torch.zeros_like(predicted_values))
                actor_optimizer.zero_grad()
                actor_loss.backward()
                actor_optimizer.step()

Logo

更多推荐