Github 项目推荐 | SpaceX Falcon 9 Box2D 回收降落动作模拟器

这是一款 SpaceX Falcon 9 第一级火箭的垂直火箭着陆模拟器,该模拟器用 Python 3.5 开发并且在 OpenAI Gym 环境中编写。该模拟器采用的是 Box2D 物理引擎,环境和 Lunar Lander 类似。以下为演示动画:

https://www.youtube.com/watch?v=4_igzo4qNmQ

Github

https://github.com/arex18/rocket-lander

OpenAI Gym Environment

https://gym.openai.com/docs/

Lunar Lander:

https://gym.openai.com/envs/LunarLander-v2/

此代码可用于:

  • 模拟 PID 控制
  • 模拟 DDPG 控制
  • 模拟 MPC 控制

也可以用于(非通常用法):

  • 模拟进化策略算法(ES)
  • 函数逼近 Q-learning(FA Q-Learning)
  • 线性二次型调节器(LQR)

该项目主要贡献了模拟环境,其他的控制脚本在参考和文件中。

模拟代码在 environments 下。

快速开始

下载该库,然后用 pip 安装

前提

以下是运行该库所需的软件列表,Windows 用户请前往[Windows Python 扩展库](Python 扩展包的非官方 Windows 二进制文件)列表来安装 cvxpy 和其他任何失败的 pip 安装。

tensorflow
matplotlib
gym
numpy
Box2D
logging
pyglet
cvxpy
abc
concurrent

python pip install PATH_TO_YOUR_DOWNLOADED_LIBRARY (ending in whl)

检查功能

运行 main_simulation.py 并检查模拟是否开始,一个显示火箭的窗口应该弹出。如果从终端运行,只需:

python main_simulation.py

问题定义

介绍

这个小型项目的重点在于将经典控制方法与 AI 算法进行比较和对比,以应用于连续控制问题。 这与动作空间离散的 lunar lander 不同。离散动作空间示例:

lunar_lander_horizontal_thrusters = {-1, -0.5, 0, 0.5, 1}
lunar_lander_vertical_thruster = {0, 0.5, 1}

连续动作空间示例:

lunar_lander_left_thruster = [0, 1] (negated in code)
lunar_lander_right_thruster = [0, 1]
lunar_lander_vertical_thruster = [0, 1]

然而,大多数现实生活问题都存在于连续状态和连续行动空间中。状态和动作域都可以离散化,但在实际应用中会有各种限制。

所以该模拟器的目的就是为了实现连续空间的仿真。PID,MPC,ES 和 DDPG算法进行比较之后,DDPG 表现出了令人印象深刻的结果。DDPG 解决了 Q-learning 离散动作空间的限制。虽然有些复杂,但 DDPG 获得最高效率和最佳总体控制。

模拟状态和动作

在代码中,状态被定义为:

State = [x_pos, y_pos, x_vel, y_vel, lateral_angle, angular_velocity]
Actions = Fe, Fs, $psi$
  • Fe = Main Engine (vertical thruster) [0, 1]
  • Fs = Side Nitrogen Thrusters [-1, 1]
  • Psi = Nozzle angle [-NOZZLE_LIMIT, NOZZLE_LIMIT]

所有的模拟设置,限制,多边形,云,海等都在 constants.py 文件中被定义为常量。

控制器

控制器的代码存放于 control_and_ai 下,DDPG 有独立的包。作者在设计原型和训练模型时写了一些非结构化的脚本,所以库中有些未经测试的混乱代码,在此作者表示歉意。另外,一些训练好的模型存放在不同的目录下。

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

专栏 | 百度深度学习平台PaddlePaddle框架解析

机器之心专栏 来源:百度PaddlePaddle PaddlePaddle 是 2016 年 8 月底百度开源的深度学习平台,并且在短时间内迅速引发全球开发热度...

3965
来自专栏HBStream流媒体与音视频技术

MP4文件格式的解析,以及MP4文件的分割算法

1.1K12
来自专栏AI科技评论

开发 | 机器学习零基础?手把手教你用TensorFlow搭建图像分类器

AI科技评论按:Pete Warden是TensorFlow移动团队的技术负责人。曾在Jetpac担任首次技术官。Jetpac的深度学习技术经过优化,可在移动和...

3756
来自专栏祝威廉

SQL脚本实现算法模型的训练,预测

搜索团队正好需要计算一些词汇的相似性,这个用Word2Vec是很方便的。于是我立马安排算法团队帮个忙弄下。但回头想想,因为这么点事,打断了算法手头的工作,这简直...

1002
来自专栏Python爬虫与算法进阶

敲敲级简单的鉴别H图片的小程序

首先,来看一下程序运行结果的截图 ? 功能实现 一、下载SDK pip install qcloud_image 先贴出官方给的实例代码: #!/usr/bi...

3194
来自专栏磐创AI技术团队的专栏

YOLO_Online: 将深度学习最火的目标检测做成在线服务(附项目代码)

1494
来自专栏desperate633

comsol快速入门教程

我自己参照官网的教程,写了个比较通俗易懂的入门教程,字多图多慎看(大三的时候写的)。

1525
来自专栏小小詹同学

知乎大神爬取高颜值美女(Python爬虫+人脸检测+颜值检测)

这是一篇来自知乎大神的技术文章

87610
来自专栏开源项目

你真的会用 Issue 吗?

大家对 Issue 一定不陌生,它灵活又实用,可以用来做 Bug 跟踪、需求管理、项目管理、交流探讨、写文章…… 不少新用户在后台问我们,如何优雅地使用 Iss...

3035
来自专栏Crossin的编程教室

【每周一坑】缩小图片尺寸

之前我们的题目大多偏向解决数学问题,今天来一道偏应用的: 我们知道,通常来说一张图片的分辨率越高,它就越清晰,但文件占用的空间就越大。有时候我们并不需要那么高的...

3017

扫码关注云+社区

领取腾讯云代金券