前言】在人群之间导航的机器人通常使用避碰算法来实现安全高效的导航。针对人群中机器人的导航问题,本文采用强化学习SAC算法,并结合LSTM长短期记忆网络,提高移动机器人的导航性能。在我们的方法中,机器人使用奖励来学习避碰策略,这种方法可以惩罚干扰行人运动的机器人行为。

问题描述
状态 移动机器人在人群中的导航问题可描述为部分可观测马尔可夫决策过程(POMDP)。其中,机器人的状态为s_t = [so_t, sh_t ],由机器人可以观测到的状态 so_t 和机器人本身隐藏状态 sh_t 组成。其中,so_t表示为:

sh_t表示为:

动作 机器人的动作由平移和旋转速度组成,即:a_t=[w,v],在我们的方法中,设置机器人的动作为一种连续性动作。
奖励函数 奖励机器人达到其目标并惩罚机器人与行人碰撞或离行人太近。此外,设置一个基于势能的奖励塑造来引导机器人接近目标:

【训练策略】
长短期记忆网络(LSTM)可以接受可变大小的输入,因此我们将行人状态(so_t)编码为状态序列,作为LSTM的输入,其网络结构如下图所式:

LSTM 将相关信息存储在其隐藏状态中,并忘记输入中不太重要的部分。输入最终行人的状态后,我们可以将 LSTM 的最终隐藏状态作为该决策步骤的固定长度、编码的环境状态。在具有大量智能体状态的情况下,为了减轻智能体忘记早期状态的影响,将这些状态以与智能体的距离相反的顺序输入,这意味着距离最近的智能体对应最终的隐藏状态:hn。将hn与机器人自身的状态拼接joint_state=[self_state,hn],joint_state作为全连接网络的输入。
关于SAC_LSTM的Actor Critic网络结构参考下图,

策略的更新我们采用自动熵的SAC算法,关于SAC算法描述参考文献[3]。
关于Q网络和策略部分代码如下:

class DQFunc(nn.Module):def __init__(self, state_dim, action_dim, hidden_size, lstm_hidden_dim, self_state_dim):super(DQFunc, self).__init__()self.action_dim = action_dimself.self_state_dim = self_state_dimself.lstm_hidden_dim = lstm_hidden_dimself.lstm = nn.LSTM(state_dim - self_state_dim, lstm_hidden_dim, batch_first=True)self.linear1 = nn.Linear(action_dim + lstm_hidden_dim + self_state_dim, hidden_size)self.linear2 = nn.Linear(hidden_size, hidden_size)self.network1 = nn.Linear(hidden_size, 1)self.network2 = nn.Linear(hidden_size, 1)def forward(self, state, action):size = state.shapeself_state = state[:, 0, :self.self_state_dim]human_state = state[:, :, self.self_state_dim:]h0 = torch.zeros(1, size[0], self.lstm_hidden_dim)c0 = torch.zeros(1, size[0], self.lstm_hidden_dim)output, (hn, cn) = self.lstm(human_state, (h0, c0))hn = hn.squeeze(0)joint_state = torch.cat([hn, self_state], dim=1)action = action.reshape(-1, self.action_dim)x = torch.cat((joint_state, action), -1)x = torch.tanh(self.linear1(x))x = torch.tanh(self.linear2(x))x1 = self.network1(x)x2 = self.network2(x)return x1, x2
class PolicyNetGaussian(nn.Module):def __init__(self, state_dim, action_dim, hidden_size, self_state_dim, lstm_hidden_dim):super(PolicyNetGaussian, self).__init__()# print(state_dim)self.self_state_dim = self_state_dimself.lstm_hidden_dim = lstm_hidden_dimself.lstm1 = nn.LSTM(state_dim - self_state_dim, lstm_hidden_dim, batch_first=True)self.linear1 = nn.Linear(lstm_hidden_dim + self_state_dim, hidden_size)self.linear2 = nn.Linear(hidden_size, hidden_size)self.mean_linear = nn.Linear(hidden_size, action_dim)self.log_std_linear = nn.Linear(hidden_size, action_dim)def forward(self, state):# print(state)size = state.shape  # torch.Size([1, 5, 13])self_state = state[:, 0, :self.self_state_dim]  # torch.Size([1, 6])human_state = state[:, :, self.self_state_dim:]h0 = torch.zeros(1, size[0], self.lstm_hidden_dim)c0 = torch.zeros(1, size[0], self.lstm_hidden_dim)output, (hn, cn) = self.lstm1(human_state, (h0, c0))hn = hn.squeeze(0)  # torch.Size([1, 128])joint_state = torch.cat([self_state, hn], dim=1)x = torch.relu(self.linear1(joint_state))x = torch.relu(self.linear2(x))mean = self.mean_linear(x)log_std = self.log_std_linear(x)# weights initializelog_std = torch.clamp(log_std, -20, 2)return mean, log_std

训练结果
其中黄色圆形表示机器人,其余圆圈表示移动的行人。

参考文献
1.Collision Avoidance in Pedestrian-Rich Environments with Deep Reinforcement Learning
2.Motion Planning Among Dynamic, Decision-Making Agents with Deep Reinforcement Learning
3.Soft Actor-Critic Algorithms and Applications

基于强化学习SAC_LSTM算法的机器人导航相关推荐

  1. 强化学习3——基于强化学习的四足机器人运动控制

    一.问题描述 传统的机器人行走控制如图1所示. 图1 传统机器人运动控制框图 包括三个环:平衡控制.运动轨迹控制.电机控制.传统的控制需要利用外部的视觉信号以及机器人的传感器获取环境及自身的状态信息, ...

  2. 【论文笔记】基于强化学习的机器人手臂仿人运动规划方法

    文章目录 摘要 关键词 0 引言 学者研究 阶段一:采集运动数据,分析运动过程特征 阶段二:设计仿人变量.建立仿人标准和约束 阶段三:用智能算法提升仿人运动机器人性能 本文工作 1 问题描述及方法架构 ...

  3. [论文]基于强化学习的无模型水下机器人深度控制

    基于强化学习的无模型水下机器人深度控制 摘要 介绍 问题公式 A.水下机器人的坐标框架 B.深度控制问题 马尔科夫模型 A.马尔科夫决策 B.恒定深度控制MDP C.弯曲深度控制MDP D.海底追踪的 ...

  4. 基于强化学习的智能机器人路径规划算法研究(附代码)

    目录 一.摘要 二.路径规划技术的研究进展 1.研究现状 2.算法分类 2.1 全局路径规划算法 2.2 局部路径规划算法 三.本文采用的路径规划算法--强化学习 1. 概念 2. 与其他机器学习方式 ...

  5. 华为诺亚ICLR 2020满分论文:基于强化学习的因果发现算法

    2019-12-30 13:04:12 人工智能顶会 ICLR 2020 将于明年 4 月 26 日于埃塞俄比亚首都亚的斯亚贝巴举行,不久之前,大会官方公布论文接收结果:在最终提交的 2594 篇论文 ...

  6. 智能城市dqn算法交通信号灯调度_博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型...

    原标题:博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型 国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共 ...

  7. 【实践】基于强化学习的 Contextual Bandits 算法在推荐场景中的应用

    文章作者:杨梦月.张露露 内容来源:滴滴科技合作 出品平台:DataFunTalk 导读:本文是对滴滴 AI Labs 和中科院大学联合提出的 WWW 2020 Research Track 的 Or ...

  8. 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)

    强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...

  9. 基于强化学习的服务链映射算法

    2018年1月   <通信学报>    魏亮,黄韬,张娇,王泽南,刘江,刘韵洁 摘要 提出基于人工智能技术的多智能体服务链资源调度架构,设计一种基于强化学习的服务链映射算法.通过Q-lea ...

最新文章

  1. 如何解决企业邮件对国外的通信问题
  2. SAP修改已经释放的请求
  3. ln -s 的一个坑
  4. hibernate jpa_使用Hibernate(JPA)一键式删除
  5. MFC学习之路之多媒体 --(1) DirectShow
  6. 搭建高可用的redis集群,避免standalone模式带给你的苦难
  7. 微博feed系统的push和pull模式和时间分区拉模式架构探讨
  8. tyvj 1068 STR
  9. The DotNet Garbage Collection
  10. 【已解决】抱歉,由于某种原因,PowerPoint 无法加载D:\mathtype\Office Support\64\MathType(PowerPoint 2016).ppam加载项。
  11. openNLP--Sentence Detector
  12. Day04 dom详解及js事件
  13. 监听listview item兼容于checkbox/textview/imageview
  14. hive sql 替换指定的字符串
  15. 天堂2单机版服务器时间修改,L2Jserver版本天堂2进游戏公告的修改
  16. Maven系列第4篇:仓库详解
  17. 让你的编程不再乏味:「陪伴姬」来了!
  18. 利用GPO(组策略对象)批量控制域内主机
  19. Documentum常见问题4—如何通过vlink方式直接查看文档内容【转】
  20. MATLAB应用——曲线长度的求解

热门文章

  1. 我对光学相干层析成像的理解
  2. OpenSearch最新功能介绍
  3. 计算机显示找不到gpedit,Win7系统打开组策略提示找不到文件gpedit.msc怎么办
  4. Oracle存储过程基本语法 存储过程
  5. 互斥事件的概念和公式_高中数学典型例题分析与解答:互斥事件
  6. JAVA基础班入学考试试卷
  7. WAS上配置数据源连接失败
  8. 【踩坑】spconf.sty Latex样式模板的name包含下划线
  9. oracle pga建议值,对SGA和PGA的优化建议
  10. 查询建立连接的IP地址