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 pipinstallPATH_TO_YOUR_DOWNLOADED_LIBRARY (endinginwhl)
檢查功能
運行 main_simulation.py 並檢查模擬是否開始,一個顯示火箭的窗口應該彈出。如果從終端運行,只需:
pythonmain_simulation.py
問題定義
介紹
這個小型項目的重點在於將經典控制方法與 AI 演算法進行比較和對比,以應用於連續控制問題。 這與動作空間離散的 lunar lander 不同。離散動作空間示例:
lunar_lander_horizontal_thrusters= {-1, -0.5,,0.5,1}
lunar_lander_vertical_thruster= {,0.5,1}
連續動作空間示例:
lunar_lander_left_thruster= [,1] (negated in code)
lunar_lander_right_thruster= [,1]
lunar_lander_vertical_thruster= [,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 有獨立的包。作者在設計原型和訓練模型時寫了一些非結構化的腳本,所以庫中有些未經測試的混亂代碼,在此作者表示歉意。另外,一些訓練好的模型存放在不同的目錄下。
從Python入門-如何成為AI工程師
BAT資深演算法工程師獨家研發課程
最貼近生活與工作的好玩實操項目
班級管理助學搭配專業的助教答疑
學以致用拿offer,學完即推薦就業
新人福利
關注 AI 研習社(okweiwu),回復1領取
【超過 1000G 神經網路 / AI / 大數據資料】
基於 Unity/OpenAI Gym/PyTorch/TF 的深度強化學習研究框架
※7 個開發者應該知道的機器學習相關 Github 項目
※論機器學習的可重複性危機
TAG:AI研習社 |