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)
Metadata
Release files for rocketgym 0.0.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rocketgym-0.0.13.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rocketgym-0.0.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.0 MB
Release files / rocketgym-0.0.13.tar.gz
| Download URL | rocketgym-0.0.13.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa6dfe7bd371d37b6e8ed23955367eda554f85efe80341bed80d95462f7e8b8b
|
|
BLAKE2b-256 checksum How to use checksums |
bbb722a05bccb176fc401f7d8b80f8f82943f2d87517b2586c9960ac28a798a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.7
|
Release files / rocketgym-0.0.13-py3-none-any.whl
| Download URL | rocketgym-0.0.13-py3-none-any.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8cae85d0af2c00edce864e7dadc830563e3d24ef1a04ed46d40af87cb6c050fc
|
|
BLAKE2b-256 checksum How to use checksums |
e2e252761daf647416964a6e0761dc386cc0cca25ca6b255a5f13ad359459732
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.7
|