OpenAI Gym for vertical rocket landing. Features full 2D physics engine and works like any other gym.
Project description
Rocket Landing Gym
Open AI Gym for vertical rocket landing containing an extensive tool to incorporate curriculum learning for your agents.
Installation
pip install rocketgym
Minimal usage
from rocketgym.environment import Environment
import random
env = Environment()
observation = env.reset()
done = False
while not done:
observation, reward, done, info = env.step(random.randint(0, 3))
env.render()
Environment
Rocket
Rocket is treated as a 2D free body. Its physics properties have been modeled after Falcon 9. By default rocket is spawned
State space
- Angle made with y-axis ($rad$): [$-\frac{\pi}{2},\frac{\pi}{2}$]
- Position Y ($m$): $[0,\infty]$
- Velocity X ($\frac{m}{s}$): $[-\infty,\infty]$
- Velocity Y ($\frac{m}{s}$): $[-\infty,\infty]$
- Angular velocity ($\frac{rad}{s}$): $[-\infty,\infty]$
Action space
At each timestep, rocket can perform one of the four actions:
- Left - rotate the engine to the left and set maximum thrust
- Mid - rotate the engine to the middle and set maximum thrust
- Right - rotate the engine to the right and set maximum thrust
- None - turn off thrust
Reward
Reward function takes multiple components into consideration:
- For each second, agent looses $0.3$.
- For impact with the ground, agent receives $15$.
- At impact, agent looses $0.5$ for each $rad$ off the vertical axis.
- At impact, agent looses $0.25$ for each $\frac{rad}{s}$ of angular velocity
- At impact, agent looses $1$ for each $\frac{m}{s}$ away from $-1\frac{m}{s}$ vertical velocity
- At impact, agent looses $0.25$ for each $\frac{m}{s}$ of horizontal velocity
Curriculum Learning
The best part about this gym. It allows you to alter the difficulty of the environment by changing things like initial height, action space etc.
Spawn height
from rocketgym.environment import Environment
env = Environment()
env.curriculum.set_fixed_height()
env.curriculum.set_random_height(1,5)
env.curriculum.enable_random_height()
env.curriculum.disable_random_height()
env.curriculum.enable_increasing_height(rate=0.05)
env.curriculum.disable_increasing_height()
Spawn orientation
env.curriculum.enable_random_starting_rotation()
env.curriculum.disable_random_starting_rotation()
Altering the reward function
env.curriculum.enable_x_velocity_reward()
env.curriculum.disable_x_velocity_reward()
Dashboard
This module enables saving flight logs. Logs will be saved in logs/plots
directory.
Sample usage
from rocketgym.dashboard import Dashboard
# Creating logger
dash = Dashboard()
# Saving flight log
dash.plot_log(env.rocket.flight_log, episode=0)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for rocketgym-0.0.13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cae85d0af2c00edce864e7dadc830563e3d24ef1a04ed46d40af87cb6c050fc |
|
MD5 | 6b8fe4949f3e616fb34cbfda8e2cb713 |
|
BLAKE2b-256 | e2e252761daf647416964a6e0761dc386cc0cca25ca6b255a5f13ad359459732 |