GithubHelp home page GithubHelp logo

apokelier / collision-avoidance-with-drl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yufengzhe1/collision-avoidance-with-drl

0.0 0.0 0.0 463 KB

利用深度强化学习的方法实现多智能体间离散无交流的障碍避免。其中强化学习算法训练模型所需的数据集由最优互惠碰撞避免(Optimal Reciprocal Collision Avoidance, ORCA)算法生成。

License: MIT License

C++ 69.16% Python 30.84%

collision-avoidance-with-drl's Introduction

Collision-Avoidance-with-DRL

摘要

利用深度强化学习的方法实现多智能体间离散无交流的障碍避免。其中强化学习算法训练模型所需的数据集由最优互惠碰撞避免(Optimal Reciprocal Collision Avoidance, ORCA)算法生成。

基本原理及代码使用方式

1. 生成训练数据集

利用ORCA算法生成轨迹数据集。ORCA是经典的分布式底层避障算法,只要每个运动体都采用ORCA算法来进行避障,那么它们之间无需通信,即可分布式的求出每一个运动体的安全速度,而这个速度能确保运动体之间不发生碰撞。也就是说,某一个运动体在自身速度和其他运动体的速度已知的情况下,将在未来 δ 时间内有可能发生碰撞的速度完全排除在外,得到v(ORCA)速度集合,然后在其中选择一个与自身的最优速度最接近的速度

其中v是v(ORCA)速度集合中的元素。

代码位于ORCA文件夹。

运行环境:win10+vs2017+openGL库。

2. ORCA算法运行及可视化

运行main.cpp即可生成各运动体的轨迹坐标集,并实现避障过程的可视化,ORCA算法可视化效果如下

Visualization Video

3. 训练模型方法

CADRL算法,利用神经网络来估计状态值函数,将连续的动作离散化为35个可选的动作空间,通过最大化即时奖励与下一状态价值的和,来选取下一个动作。CADRL引入了价值网络(value network),该价值网络利用agent自身状态与其相邻agent的联合状态来训练模型。CADRL包含两部分:a)Deep V-Learning训练模型; b)CADRL利用训练好的模型进行防碰撞路径规划。

奖励

在两个智能体防碰撞路径规划情景下,奖励函数设计成二者间距离越远奖励越大,到达目的地奖励为1,碰撞奖励为-0.25,其他情况根据二者间距小于安全距离的程度在(-0.2,-0.1)的范围内定义。

Deep V-Learning算法

算法输入:ORCA生成的轨迹数据集集
算法输出:value network

首先,将输入的轨迹数据集处理成“状态-价值”对,初始化value network,并将其复制一份;然后在每一次迭代训练中利用CADRL算法来最大化 即时奖励与下一个状态的价值和(此时利用的是初始化的value network的复制版本)得到下一个状态值,然后利用新的状态值更新value network,最后输出经过训练的value network。

CADRL算法

算法输入:value network
算法输出:最大化即时奖励与下一状态所选择的动作,根据所选择的动作生成下一时刻状态。

首先进行速度滤波(便于后面计算中包含的求积分运算),然后用估计的动作计算下一个近似状态,计算奖励,利用ε-贪心算法在动作空间中选择动作最大化即时奖励与下一状态 。

4.CADRL算法运行

运行环境:Ubuntu16.04+Python3.7+pycharm+Pytorch。

进入CADRL-master文件夹

训练模型

利用GPU训练模型:

python train.py --config=configs/model.config --gpu

利用CPU训练模型

python train.py --config=configs/model.config

利用matplotlib.pyplot实现训练成果的可视化,运行方式

python visualize.py

多智能体无交流避障仿真视频

vedio_1 vedio_2

collision-avoidance-with-drl's People

Contributors

yufengzhe1 avatar neuxuanyuzheng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.